<?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>209779</bug_id>
          
          <creation_ts>2020-03-30 14:52:00 -0700</creation_ts>
          <short_desc>[ECMA-402] Implement Intl.DisplayNames</short_desc>
          <delta_ts>2020-08-10 11:12:03 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215327</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213425</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shane Carr">sffc</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>andy</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>feliziani.emanuele</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</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>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635756</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Carr">sffc</who>
    <bug_when>2020-03-30 14:52:00 -0700</bug_when>
    <thetext>Intl.DisplayNames is at Stage 3 in TC39; it is on track to reach Stage 4 in 2020.  V8 has had it ready to ship for some time, and SpiderMonkey plans to implement it soon.

As usage of Intl.DisplayNames 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.DisplayNames 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.DisplayNames.  Implementing Intl.DisplayNames is largely a matter of adding the glue between JavaScript and ICU4C, as WebKit already does for other Intl types.

Proposal repo: https://github.com/tc39/proposal-intl-displaynames</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635834</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-30 16:39:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/61079776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667233</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 13:02:11 -0700</bug_when>
    <thetext>Ugh, DisplayNames tests in test262 have many bugs...
While the draft says that we should throw TypeError if option.type is not defined, test262 is not following to that, as a result, almost all tests are failing with TypeError :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667234</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 13:04:45 -0700</bug_when>
    <thetext>It seems that the current draft lacks the description about Dialect names v.s. Standard names.
As a result, SpiderMonkey and V8 prototypes do not agree the results for language types.

https://github.com/tc39/proposal-intl-displaynames/issues/20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667269</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 14:01:13 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; Ugh, DisplayNames tests in test262 have many bugs...
&gt; While the draft says that we should throw TypeError if option.type is not
&gt; defined, test262 is not following to that, as a result, almost all tests are
&gt; failing with TypeError :(

Filed https://github.com/tc39/test262/issues/2682.
I guess we should have &quot;language&quot; fallback for &quot;type&quot; option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667410</commentid>
    <comment_count>5</comment_count>
      <attachid>403154</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 18:35:26 -0700</bug_when>
    <thetext>Created attachment 403154
WIP, but it is now working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667411</commentid>
    <comment_count>6</comment_count>
      <attachid>403155</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 18:37:30 -0700</bug_when>
    <thetext>Created attachment 403155
WIP, but it is now working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667413</commentid>
    <comment_count>7</comment_count>
      <attachid>403157</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 18:42:54 -0700</bug_when>
    <thetext>Created attachment 403157
WIP, but it is now working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667430</commentid>
    <comment_count>8</comment_count>
      <attachid>403157</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-29 19:44:05 -0700</bug_when>
    <thetext>Comment on attachment 403157
WIP, but it is now working

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

Just a few early comments.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:67
&gt; +Vector&lt;String&gt; IntlDisplayNames::localeData(const String&amp;, size_t)
&gt; +{
&gt; +    return { };
&gt; +}

I suppose you could write this inline? Unless you feel it&apos;s clearer this way.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:117
&gt; +    if (typeString.isNull())
&gt; +        throwTypeError(globalObject, scope, &quot;type must be a string&quot;_s);

I think this is strictly &quot;must not be undefined&quot;, right?
(We&apos;d&apos;ve already thrown if it&apos;s not string-coercible.)

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:216
&gt; +static bool isUnicodeVariantSubtag(StringView string)

Any reason for leaving this one `static`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667435</commentid>
    <comment_count>9</comment_count>
      <attachid>403157</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 20:05:14 -0700</bug_when>
    <thetext>Comment on attachment 403157
WIP, but it is now working

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:67
&gt;&gt; +}
&gt; 
&gt; I suppose you could write this inline? Unless you feel it&apos;s clearer this way.

Sounds good. maybe, we should just pass lambda.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:117
&gt;&gt; +        throwTypeError(globalObject, scope, &quot;type must be a string&quot;_s);
&gt; 
&gt; I think this is strictly &quot;must not be undefined&quot;, right?
&gt; (We&apos;d&apos;ve already thrown if it&apos;s not string-coercible.)

Right. Changed

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:216
&gt;&gt; +static bool isUnicodeVariantSubtag(StringView string)
&gt; 
&gt; Any reason for leaving this one `static`?

Since it is not used outside of IntlLocale, but exposing it would be nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667438</commentid>
    <comment_count>10</comment_count>
      <attachid>403165</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 20:10:08 -0700</bug_when>
    <thetext>Created attachment 403165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667440</commentid>
    <comment_count>11</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-29 20:19:11 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #9)
&gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:216
&gt; &gt;&gt; +static bool isUnicodeVariantSubtag(StringView string)
&gt; &gt; 
&gt; &gt; Any reason for leaving this one `static`?
&gt; 
&gt; Since it is not used outside of IntlLocale, but exposing it would be nice.
&gt; Fixed.

Oh oops, I hadn&apos;t noticed that these were in IntlLocale and not IntlObject! I had them as static here because they weren&apos;t used elsewhere, but I figured we&apos;d move them to IntlObject if they became needed, alongside isUnicodeLocaleIdentifierType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667442</commentid>
    <comment_count>12</comment_count>
      <attachid>403165</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 20:20:12 -0700</bug_when>
    <thetext>Comment on attachment 403165
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:148
&gt; +        UDISPCTX_CAPITALIZATION_NONE,

It is possible that we should use UDISPCTX_CAPITALIZATION_FOR_STANDALONE instead of UDISPCTX_CAPITALIZATION_NONE.
ICU test cases show that UDISPCTX_CAPITALIZATION_NONE is effective if the display-name is date value (like, &quot;Juillet 2008&quot; v.s. &quot;juillet 2008&quot;) while currently we are not supporting date values in DisplayNames.
What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667455</commentid>
    <comment_count>13</comment_count>
      <attachid>403170</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 21:14:19 -0700</bug_when>
    <thetext>Created attachment 403170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667457</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-29 21:22:49 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; Comment on attachment 403165 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403165&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:148
&gt; &gt; +        UDISPCTX_CAPITALIZATION_NONE,
&gt; 
&gt; It is possible that we should use UDISPCTX_CAPITALIZATION_FOR_STANDALONE
&gt; instead of UDISPCTX_CAPITALIZATION_NONE.
&gt; ICU test cases show that UDISPCTX_CAPITALIZATION_NONE is effective if the
&gt; display-name is date value (like, &quot;Juillet 2008&quot; v.s. &quot;juillet 2008&quot;) while
&gt; currently we are not supporting date values in DisplayNames.
&gt; What do you think of?

RelativeTimeFormat uses UDISPCTX_CAPITALIZATION_FOR_STANDALONE, but there too, the difference was unclear (and I think V8 and SM didn&apos;t agree either).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667459</commentid>
    <comment_count>15</comment_count>
      <attachid>403165</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 21:24:17 -0700</bug_when>
    <thetext>Comment on attachment 403165
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:148
&gt;&gt;&gt; +        UDISPCTX_CAPITALIZATION_NONE,
&gt;&gt; 
&gt;&gt; It is possible that we should use UDISPCTX_CAPITALIZATION_FOR_STANDALONE instead of UDISPCTX_CAPITALIZATION_NONE.
&gt;&gt; ICU test cases show that UDISPCTX_CAPITALIZATION_NONE is effective if the display-name is date value (like, &quot;Juillet 2008&quot; v.s. &quot;juillet 2008&quot;) while currently we are not supporting date values in DisplayNames.
&gt;&gt; What do you think of?
&gt; 
&gt; RelativeTimeFormat uses UDISPCTX_CAPITALIZATION_FOR_STANDALONE, but there too, the difference was unclear (and I think V8 and SM didn&apos;t agree either).

I think, given that,

1. UDISPCTX_CAPITALIZATION_FOR_STANDALONE makes date format better (&quot;Juillet 2008&quot; case)
2. Intl.DisplayFormat will support date related types in the future (dayPeriod etc.)

maybe we should use UDISPCTX_CAPITALIZATION_FOR_STANDALONE here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667463</commentid>
    <comment_count>16</comment_count>
      <attachid>403170</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-29 21:28:56 -0700</bug_when>
    <thetext>Comment on attachment 403170
Patch

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

r=me with a bunch of nitpicks.

I feel sad about not being able to flip the test262 flag, since it usually reveals some easily overlooked edge cases -- were you able to confirm behavior with the cases that aren&apos;t in need of fixing? Either way, it&apos;s still at Stage 3, so there&apos;s time for us to help polish the details. :)

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:117
&gt; +        throwTypeError(globalObject, scope, &quot;type must not be an undefined&quot;_s);

nit: s/an //

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:153
&gt; +        // Always disable ICU SUBSTITUTE since it does not match against what the spec defines. ICU has some special substitute rules, for exapmle, language &quot;en-AA&quot;

spelling: &quot;exapmle&quot;

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:185
&gt; +        // 5. If ! IsWellFormedCurrencyCode(code) is false, throw a RangeError exceptipon.

Comically, this spec section consistently uses the misspelling &quot;exceptipon&quot;. :P

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:216
&gt; +            return throwTypeError(globalObject, scope, &quot;Failed to query a display names.&quot;_s);

nit: s/names/name/

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:222
&gt; +        // https://tc39.es/proposal-intl-displaynames/#sec-Intl.DisplayNames.prototype.of

I think this particular link should be at the top of the function.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:268
&gt; +        ASSERT(code.isAllASCII());

Doesn&apos;t seem like you need to assert this outside canonicalizeCodeForDisplayNames since you&apos;re asserting it inside, immediately before use.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:281
&gt; +        ASSERT(code.isAllASCII());

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:293
&gt; +        ASSERT(code.isAllASCII());

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:305
&gt; +        // https://tc39.es/proposal-intl-displaynames/#sec-Intl.DisplayNames.prototype.of

I think this particular link should be at the top of the function.

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:308
&gt; +        return throwTypeError(globalObject, scope, &quot;Failed to query a display names.&quot;_s);

nit: s/names/name/

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.h:76
&gt; +    String m_locale;
&gt; +    CString m_localeCString;

Is it really best to store both?
(Maybe it is; I&apos;m just surprised.)

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:227
&gt; +bool isUnicodeLanguageId(StringView string)

We should probably check about &quot;root&quot; and &quot;_&quot; separator support, since V8 and SM are in (possibly intentional) conflict with UTS35 here.
(Not necessarily a blocker for this patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667467</commentid>
    <comment_count>17</comment_count>
      <attachid>403170</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 21:42:08 -0700</bug_when>
    <thetext>Comment on attachment 403170
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:117
&gt;&gt; +        throwTypeError(globalObject, scope, &quot;type must not be an undefined&quot;_s);
&gt; 
&gt; nit: s/an //

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:153
&gt;&gt; +        // Always disable ICU SUBSTITUTE since it does not match against what the spec defines. ICU has some special substitute rules, for exapmle, language &quot;en-AA&quot;
&gt; 
&gt; spelling: &quot;exapmle&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:185
&gt;&gt; +        // 5. If ! IsWellFormedCurrencyCode(code) is false, throw a RangeError exceptipon.
&gt; 
&gt; Comically, this spec section consistently uses the misspelling &quot;exceptipon&quot;. :P

Oh, interesting!

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:216
&gt;&gt; +            return throwTypeError(globalObject, scope, &quot;Failed to query a display names.&quot;_s);
&gt; 
&gt; nit: s/names/name/

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:222
&gt;&gt; +        // https://tc39.es/proposal-intl-displaynames/#sec-Intl.DisplayNames.prototype.of
&gt; 
&gt; I think this particular link should be at the top of the function.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:268
&gt;&gt; +        ASSERT(code.isAllASCII());
&gt; 
&gt; Doesn&apos;t seem like you need to assert this outside canonicalizeCodeForDisplayNames since you&apos;re asserting it inside, immediately before use.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:281
&gt;&gt; +        ASSERT(code.isAllASCII());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:293
&gt;&gt; +        ASSERT(code.isAllASCII());
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:305
&gt;&gt; +        // https://tc39.es/proposal-intl-displaynames/#sec-Intl.DisplayNames.prototype.of
&gt; 
&gt; I think this particular link should be at the top of the function.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:308
&gt;&gt; +        return throwTypeError(globalObject, scope, &quot;Failed to query a display names.&quot;_s);
&gt; 
&gt; nit: s/names/name/

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.h:76
&gt;&gt; +    CString m_localeCString;
&gt; 
&gt; Is it really best to store both?
&gt; (Maybe it is; I&apos;m just surprised.)

Currently I&apos;m having this since ucurr_getName requires it every time. It would be possible that we can remove storing this if the type is not currency. For now, I&apos;ve put FIXME for the further optimizations.

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:227
&gt;&gt; +bool isUnicodeLanguageId(StringView string)
&gt; 
&gt; We should probably check about &quot;root&quot; and &quot;_&quot; separator support, since V8 and SM are in (possibly intentional) conflict with UTS35 here.
&gt; (Not necessarily a blocker for this patch.)

Sounds nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667472</commentid>
    <comment_count>18</comment_count>
      <attachid>403174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-29 22:07:34 -0700</bug_when>
    <thetext>Created attachment 403174
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667664</commentid>
    <comment_count>19</comment_count>
      <attachid>403221</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-30 12:11:29 -0700</bug_when>
    <thetext>Created attachment 403221
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667720</commentid>
    <comment_count>20</comment_count>
      <attachid>403240</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-30 13:48:57 -0700</bug_when>
    <thetext>Created attachment 403240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667744</commentid>
    <comment_count>21</comment_count>
      <attachid>403243</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-30 14:41:00 -0700</bug_when>
    <thetext>Created attachment 403243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667824</commentid>
    <comment_count>22</comment_count>
      <attachid>403261</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-30 21:43:22 -0700</bug_when>
    <thetext>Created attachment 403261
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667856</commentid>
    <comment_count>23</comment_count>
      <attachid>403274</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-30 23:40:41 -0700</bug_when>
    <thetext>Created attachment 403274
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668121</commentid>
    <comment_count>24</comment_count>
      <attachid>403274</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-07-01 18:47:28 -0700</bug_when>
    <thetext>Comment on attachment 403274
Patch for landing

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

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:138
&gt; +#if HAVE(ICU_U_LOCALE_DISPLAY_NAMES)

Do we really need an #if here?

&gt; Source/JavaScriptCore/runtime/IntlDisplayNames.cpp:180
&gt; +#if HAVE(ICU_U_LOCALE_DISPLAY_NAMES)

This one seems more reasonable, though it still feels a bit odd to have the #elsif be a TypeError path if it&apos;s unreachable code.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:169
&gt; +    UNUSED_PARAM(createDisplayNamesConstructor);

Probably better to #if the function itself? Otherwise there&apos;s UNUSED_VARIABLE too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672745</commentid>
    <comment_count>25</comment_count>
      <attachid>404623</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-17 17:19:23 -0700</bug_when>
    <thetext>Created attachment 404623
Rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672787</commentid>
    <comment_count>26</comment_count>
      <attachid>404640</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-18 04:14:29 -0700</bug_when>
    <thetext>Created attachment 404640
Rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673278</commentid>
    <comment_count>27</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-20 15:48:19 -0700</bug_when>
    <thetext>Since this feature is behind the flag, I think I should just land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673327</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-20 17:04:16 -0700</bug_when>
    <thetext>Committed r264639: &lt;https://trac.webkit.org/changeset/264639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673330</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-20 17:11:21 -0700</bug_when>
    <thetext>Committed r264640: &lt;https://trac.webkit.org/changeset/264640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403154</attachid>
            <date>2020-06-29 18:35:26 -0700</date>
            <delta_ts>2020-06-29 18:37:41 -0700</delta_ts>
            <desc>WIP, but it is now working</desc>
            <filename>bug-209779-20200629183525.patch</filename>
            <type>text/plain</type>
            <size>76689</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi5iYzA2NjI1ZWYyZTE5MTY2
MzUxYjJhY2QwMjY0ZDQ0MGZiMmNmZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lczo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmluaXRp
YWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjpvZiBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6
OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5oLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3I6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEaXNwbGF5
TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0
ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlRnVuY09mKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmguCisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVn
aW9uU3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlVmFyaWFudFN1YnRhZyk6CisgICAg
ICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlSWQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExv
Y2FsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjppbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRpc3BsYXlOYW1lc1N0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9PcHRp
b25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFk
aW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBj
MjU5MTA4NmViYWM3MjIwNjZhODY0NDVmYWMyMTFkZWY4MDMwNWUwLi5iZDVhMGFiMTA2MTZhNDAy
ZGEyMDQ4ZDQzODNkN2YzNmY4OGE1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC03MCw2ICs3MCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJD
RVMKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCBhNjVjZmQ1YTkwYmM4NWJjNzAyNTFjZjBkZGYxNDE0NWRlOWVj
ZjA3Li5kMGQ4ZGZkYzQ4YTM1ZTgyMTdmN2MwMzQxYzBmZTAzYmI0M2UwNDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtMTM4LDYgKzEzOCw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAkKFBS
T0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggNzljZGU0ZWU1MDdlMTNmNmZmN2ZhNzgwMGRjNjQ1Y2JmODk0MWM2Ny4uMmJkZjVi
MmM4MjJhNmQ5ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjcs
NiArMjcsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LgogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0ludGxMb2NhbGVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDEwZjlmZWM1MWRjZTQ4Njg2ZmY4NzQ1YmVhYTRiNWI1ZDVi
MTAzM2QuLmMxZmY1ZTYyNDczNTA2OGNmZjRjMTJlNGNmNDhjZGM0ZmEwYTY1N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTksNiArMTU5LDggQEAg
T0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBc
CiAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIFwKICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IubHV0LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Zjg1MWMxMTcyYzZlMDRlYWI4Mzg4YzIyODBkYTUw
ODQzYTYzYmRkLi5jMDY2M2Q3ZjYwZjk5ZGYxZDQxZGVmZWNkYzU2ZTljZTU0OTJjYzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxOSw2ICsxODE5LDkgQEAKIAkJRTM0RURC
RjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZy
YW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNEY5MzBFMjMyMkQ4ODIwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RjkzMEMyMzIyRDg4MTAw
MkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi87IH07CiAJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNE
NiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzUz
QzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLzsgfTsKKwkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJE
RjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1
NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUw
M0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1RDM4RjIyNDQ2ODc3MDA4
RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1
dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTgyOCw2ICsxODMxLDggQEAKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYw
MUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0
M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzYzN0VFOTIzNkU1NkIw
MDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1l
Q29uc3RhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5s
dXQuaCAqLzsgfTsKKwkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5sdXQuaCAqLzsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5ODE4IC8qIFdhc21PTUdG
b3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFu
LmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0
NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5ODUs
NiArNDk5MCwxMiBAQAogCQlFMzRGOTMwQjIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW5lcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQg
LyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1MDcwODkxREM0OUJCNjAw
ODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5
TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTgyNEFBNENCNjAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTkyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYg
LyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTU1Qjg5
MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1RDM4RDIyNDQ2ODZCMDA4RjFBRDYgLyog
R2xvYmFsRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDAxLDYgKzUwMTIsOCBAQAogCQlFMzVFMDM2
MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYzN0VFNzIz
NkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIg
LyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzZCNDgwMTIzRTk1NzM4MDBFNEE2NkUgLyogVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RTIyRjhENjExMDBEMDk4
MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNt
T01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjc2Nyw2ICs2NzgwLDggQEAKIAkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkg
LyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDczMUI0REMxQzYw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlB
MTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1
dC5oICovLAorCQkJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTEyNTg0NkMxQjQ1QTM2MDAw
Q0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlBMTI1
ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAq
LywKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLApA
QCAtNzI2Miw2ICs3Mjc3LDEyIEBACiAJCQkJQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTE1ODdENkIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTE1ODdE
NkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovLAor
CQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmNwcCAqLywK
KwkJCQlFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovLAor
CQkJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3IuY3BwICovLAorCQkJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzUzQzExOTI0QUE0Q0I2MDAzRkJERjMgLyogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8sCisJCQkJRTM1M0MxMUIyNEFBNENCNzAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLywKIAkJCQlBM0FGRjkyRDI0NUEz
Q0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5jcHAgKi8sCiAJCQkJQTNBRkY5MkIyNDVBM0NGOTAw
QzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLywKIAkJCQlBM0FGRjkyRjI0NUEzQ0ZCMDBDOUJBM0Ig
LyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTk3NTIsNiArOTc3MywxMSBAQAog
CQkJCUExNTg3RDc1MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3
RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3Bs
YXlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYzIC8q
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2NUYz
M0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzY1RjMzQjI0QUE2MjNCMDBD
OTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzA1MDJhMzRhNjY1YTg1MGNhZDZhZmY5Y2Fm
NWM0YzhkNzRjMjcwNS4uMWI0ZmJmN2NjYWM0N2U5ZTBkODI4NGQ2NjM1ODE4MTIxY2FlMGY4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODE0LDYgKzgxNCw5IEBAIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3Bw
CitydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZS5jcHAKIHJ1bnRpbWUv
SW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZiYS4uM2E0OTdl
MDc0YTkwZTBiMTE5NTg2YmZhMDhkNDgzZWIzMDk0MjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zNCw2ICszNCw3IEBA
CiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhEYXRlKSBcCiAgICAgbWFjcm8oRGF0
ZVRpbWVGb3JtYXQpIFwKKyAgICBtYWNybyhEaXNwbGF5TmFtZXMpIFwKICAgICBtYWNybyhFcnJv
cikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjMWU5Njg0ZWY3NjYzYTE2Y2QyMThjYmZmZDk2OGNjZWUxNGZjNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmNwcApAQCAtMCwwICsxLDMzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisKKyNpbmNsdWRlICJJbnRsTG9jYWxl
LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgor
I2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lczo6c19pbmZvID0geyAiT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsRGlzcGxheU5hbWVzKSB9OworCitJbnRsRGlzcGxheU5hbWVzKiBJbnRsRGlzcGxheU5hbWVz
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzPih2bS5oZWFw
KSkgSW50bERpc3BsYXlOYW1lcyh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxEaXNw
bGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlO
YW1lcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTsKK30KKworVmVjdG9yPFN0cmluZz4gSW50bERpc3BsYXlOYW1lczo6bG9j
YWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcwordm9pZCBJ
bnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7CisgICAgaWYg
KG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0gY29uc3RydWN0
RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVy
ZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1ZS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgIH0KKworICAgIC8vIERvZXMgbm90IHNldCBlaXRoZXIgb2YgImNhIiBvciAibnUi
LgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2Vj
LWludGwtZGlzcGxheW5hbWVzLWNvbnN0cnVjdG9yCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gb3B0OworCisgICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlciwgeyAibG9va3Vw
IiwgImJlc3QgZml0IiB9LCAibG9jYWxlTWF0Y2hlciBtdXN0IGJlIGVpdGhlciBcImxvb2t1cFwi
IG9yIFwiYmVzdCBmaXRcIiIsICJiZXN0IGZpdCIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgb3B0LmFkZCgibG9jYWxlTWF0Y2hlciJfcywgbWF0Y2hlcik7
CisKKyAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gaW50bE51bWJlckZvcm1hdEF2YWlsYWJs
ZUxvY2FsZXMoKTsKKyAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0
LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIG51bGxwdHIsIDAsIGxv
Y2FsZURhdGEpOworCisgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOworICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3BsYXlOYW1lIGR1ZSB0byBp
bnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcg
c3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIiB9LCAic3R5
bGUgbXVzdCBiZSBlaXRoZXIgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBvciBcImxvbmdcIiIsICJs
b25nIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAo
c3R5bGVTdHJpbmcgPT0gIm5hcnJvdyJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpOYXJy
b3c7CisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInNob3J0Il9zKQorICAgICAgICBtX3N0
eWxlID0gU3R5bGU6OlNob3J0OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJsb25nIl9z
KQorICAgICAgICBtX3N0eWxlID0gU3R5bGU6Okxvbmc7CisgICAgZWxzZQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmluZyB0eXBlU3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHsgImxh
bmd1YWdlIiwgInJlZ2lvbiIsICJzY3JpcHQiLCAiY3VycmVuY3kiIH0sICJ0eXBlIG11c3QgYmUg
ZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5j
eVwiIiwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICBpZiAodHlwZVN0cmluZy5pc051bGwoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgaWYgKHR5
cGVTdHJpbmcgPT0gImxhbmd1YWdlIl9zKQorICAgICAgICBtX3R5cGUgPSBUeXBlOjpMYW5ndWFn
ZTsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJyZWdpb24iX3MpCisgICAgICAgIG1fdHlw
ZSA9IFR5cGU6OlJlZ2lvbjsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJzY3JpcHQiX3Mp
CisgICAgICAgIG1fdHlwZSA9IFR5cGU6OlNjcmlwdDsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5n
ID09ICJjdXJyZW5jeSJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6Q3VycmVuY3k7CisgICAg
ZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmluZyBmYWxsYmFj
a1N0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwgeyAiY29kZSIsICJub25lIiB9LCAiZmFs
bGJhY2sgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIgb3IgXCJub25lXCIiLCAiY29kZSIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKGZhbGxiYWNrU3Ry
aW5nID09ICJjb2RlIl9zKQorICAgICAgICBtX2ZhbGxiYWNrID0gRmFsbGJhY2s6OkNvZGU7Cisg
ICAgZWxzZSBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gIm5vbmUiX3MpCisgICAgICAgIG1fZmFsbGJh
Y2sgPSBGYWxsYmFjazo6Tm9uZTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBVRGlz
cGxheUNvbnRleHQgY29udGV4dHNbXSA9IHsKKyAgICAgICAgLy8gZW5fR0IgZGlzcGxheXMgYXMg
J0VuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKScgKFN0YW5kYXJkIE5hbWVzKSBvciAnQnJpdGlzaCBF
bmdsaXNoJyAoRGlhbGVjdCBOYW1lcykuCisgICAgICAgIC8vIFdlIHVzZSBEaWFsZWN0IE5hbWVz
IGhlcmUsIGFsaWduZWQgdG8gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjIGRyYWZ0IGFuZCBWOCdz
IGJlaGF2aW9yLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1p
bnRsLWRpc3BsYXluYW1lcyNsYW5ndWFnZS1kaXNwbGF5LW5hbWVzCisgICAgICAgIFVESVNQQ1RY
X0RJQUxFQ1RfTkFNRVMsCisKKyAgICAgICAgLy8gQ2FwaXRhaWxpemF0aW9uIG1vZGUgY2FuIGJl
IHBpY2tlZCBmcm9tIHNldmVyYWwgb3B0aW9ucy4gUG9zc2libHkgZWl0aGVyIFVESVNQQ1RYX0NB
UElUQUxJWkFUSU9OX05PTkUgb3IgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxP
TkUgaXMKKyAgICAgICAgLy8gcHJlZmVyYWJsZSBpbiBJbnRsLkRpc3BsYXlOYW1lcy4gV2UgdXNl
IFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUgbm90IHRvIGNoYW5nZSBhbnl0aGluZyBmcm9t
IElDVSBkYXRhYmFzZS4KKyAgICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSwKKwor
ICAgICAgICAvLyBOYXJyb3cgYmVjb21lcyBVRElTUENUWF9MRU5HVEhfU0hPUlQuIEJ1dCBpbiBj
dXJyZW5jeSBjYXNlLCB3ZSBoYW5kbGUgZGlmZmVyZW50bHkgaW5zdGVhZCBvZiB1c2luZyBVTG9j
YWxlRGlzcGxheU5hbWVzLgorICAgICAgICBtX3N0eWxlID09IFN0eWxlOjpMb25nID8gVURJU1BD
VFhfTEVOR1RIX0ZVTEwgOiBVRElTUENUWF9MRU5HVEhfU0hPUlQsCisKKyAgICAgICAgLy8gQWx3
YXlzIGRpc2FibGUgSUNVIFNVQlNUSVRVVEUgc2luY2UgaXQgZG9lcyBub3QgbWF0Y2ggYWdhaW5z
dCB3aGF0IHRoZSBzcGVjIGRlZmluZXMuIElDVSBoYXMgc29tZSBzcGVjaWFsIHN1YnN0aXR1dGUg
cnVsZXMsIGZvciBleGFwbWxlLCBsYW5ndWFnZSAiZW4tQUEiCisgICAgICAgIC8vIHJldHVybnMg
IkVuZ2xpc2ggKEFBKSIgKHdoaWxlIEFBIGNvdW50cnkgY29kZSBpcyBub3QgZGVmaW5lZCksIGJ1
dCB3ZSB3b3VsZCBsaWtlIHRvIHJldHVybiBlaXRoZXIgaW5wdXQgdmFsdWUgb3IgdW5kZWZpbmVk
LCBzbyB3ZSBkbyBub3Qgd2FudCB0byBoYXZlIElDVSBzdWJzdGl0dXRlIHJ1bGVzLgorICAgICAg
ICBVRElTUENUWF9OT19TVUJTVElUVVRFLAorICAgIH07CisgICAgbV9sb2NhbGVDU3RyaW5nID0g
bV9sb2NhbGUudXRmOCgpOworICAgIG1fZGlzcGxheU5hbWVzID0gc3RkOjp1bmlxdWVfcHRyPFVM
b2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPih1bGRuX29wZW5G
b3JDb250ZXh0KG1fbG9jYWxlQ1N0cmluZy5kYXRhKCksIGNvbnRleHRzLCBXVEZfQVJSQVlfTEVO
R1RIKGNvbnRleHRzKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGlu
aXRpYWxpemUgRGlzcGxheU5hbWVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
SlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5TmFtZXMp
OworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dU
RlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1
cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KKyAgICAg
ICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8g
VURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8g
ICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURp
c3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KKwor
ICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxheU5hbWVzCisgICAgICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVm
b3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNv
ZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAg
ICBpZiAoY29kZS5sZW5ndGgoKSAhPSAzIHx8ICFjb2RlLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNBU0NJSUFscGhhPigpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUi
X3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDYu
IExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMg
ZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgY29kZSA9IGNvZGUuY29udmVydFRvQVNDSUlVcHBl
cmNhc2UoKTsKKworICAgICAgICBVQ3Vyck5hbWVTdHlsZSBzdHlsZSA9IFVDVVJSX0xPTkdfTkFN
RTsKKyAgICAgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgICAgIGNhc2UgU3R5bGU6Okxvbmc6
CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX0xPTkdfTkFNRTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0eWxlOjpTaG9ydDoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJf
U1lNQk9MX05BTUU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6TmFy
cm93OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9OQVJST1dfU1lNQk9MX05BTUU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0
XSA9IHsKKyAgICAgICAgICAgIGNvZGVbMF0sCisgICAgICAgICAgICBjb2RlWzFdLAorICAgICAg
ICAgICAgY29kZVsyXSwKKyAgICAgICAgICAgIHUnXDAnCisgICAgICAgIH07CisgICAgICAgIC8v
IFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMgc3RyaW5nIHNvIHRoYXQgd2Ug
ZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAgICBpbnQzMl90IGxlbmd0aCA9
IDA7CisgICAgICAgIGNvbnN0IFVDaGFyKiByZXN1bHQgPSB1Y3Vycl9nZXROYW1lKGN1cnJlbmN5
LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBzdHlsZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnN0YXR1
cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlz
cGxheSBuYW1lcy4iX3MpOworICAgICAgICAvLyB1Y3Vycl9nZXROYW1lIHJldHVybnMgVV9VU0lO
R19ERUZBVUxUX1dBUk5JTkcgaWYgdGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuIEJ1dCBV
X1VTSU5HX0RFRkFVTFRfV0FSTklORyBpcyByZXR1cm5lZCBldmVuIGlmCisgICAgICAgIC8vIG5h
cnJvdyBhbmQgc2hvcnQgcmVzdWx0cyBhcmUgdGhlIHNhbWU6IG5hcnJvdyAiVVNEIiBpcyAiJCIg
d2l0aCBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBzaW5jZSBzaG9ydCAiVVNEIiBpcyBhbHNvICIk
Ii4gV2UgbmVlZCB0byBjaGVjaworICAgICAgICAvLyByZXN1bHQgPT0gY3VycmVuY3kgdG8gY2hl
Y2sgd2hldGhlciBJQ1UgYWN0dWFsbHkgZmFpbGVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcg
ZGlzcGxheS1uYW1lLiBUaGlzIHBvaW50ZXIgY29tcGFyaXNvbiBpcyBlbnN1cmVkIGJ5CisgICAg
ICAgIC8vIElDVSBBUEkgZG9jdW1lbnQuCisgICAgICAgIC8vID4gUmV0dXJucyBwb2ludGVyIHRv
IGRpc3BsYXkgc3RyaW5nIG9mICdsZW4nIFVDaGFycy4gSWYgdGhlIHJlc291cmNlIGRhdGEgY29u
dGFpbnMgbm8gZW50cnkgZm9yICdjdXJyZW5jeScsIHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMg
cmV0dXJuZWQuCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3Bs
YXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgorICAgICAgICBpZiAo
c3RhdHVzID09IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HICYmIHJlc3VsdCA9PSBjdXJyZW5jeSkK
KyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6Tm9uZSkgPyBqc1Vu
ZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhyZXN1bHQsIGxlbmd0aCkpOworICAgIH0KKworICAgIGF1dG8gdXRmOENvZGUgPSBjb2RlLnRy
eUdldFV0ZjgoKTsKKyAgICBpZiAoIXV0ZjhDb2RlKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisgICAgY29uc3QgY2hhciogcmF3U3RyaW5nID0gdXRmOENvZGUudmFsdWUoKS5kYXRhKCk7CisK
KyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtY2Fu
b25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1h
dGNoZXMgdGhlIHVuaWNvZGVfbGFuZ3VhZ2VfaWQgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVy
cm9yIGV4Y2VwdGlwb24uCisgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkg
eworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1
bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gbm90IHVzZSB1bGRuX2xhbmd1YWdlRGlzcGxheU5h
bWUgc2luY2UgaXQgaXMgbm90IGV4cGVjdGVkIG9uZSBmb3IgdGhpcyAibGFuZ3VhZ2UiIHR5cGUu
IEl0IHJldHVybnMgImVuLVVTIiBmb3IgImVuLVVTIiBjb2RlLCBpbnN0ZWFkIG9mICJBbWVyaWNh
biBFbmdsaXNoIi4KKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgpLCByYXdTdHJpbmcs
IGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjog
eworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMv
I3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAgIC8vIElmIGNvZGUgZG9l
cyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9yZWdpb25fc3VidGFnIHByb2R1Y3Rpb24sIHRocm93
IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1
YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgp
LCByYXdTdHJpbmcsIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5
cGU6OlNjcmlwdDogeworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAgIC8v
IElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHByb2R1
Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAgICBpZiAoIWlzVW5p
Y29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zKTsK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzID0gY2Fs
bEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUsIG1fZGlzcGxh
eU5hbWVzLmdldCgpLCByYXdTdHJpbmcsIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAg
ICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBh
bmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9S
IGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgorICAgICAgICAvLyBXZSBzaG91bGQg
cmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hv
dWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9m
CisgICAgICAgIGlmIChzdGF0dXMgPT0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SKQorICAgICAg
ICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVk
KCkgOiBjb2RlVmFsdWU7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lcy4iX3MpOworICAgIH0K
KyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFt
ZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworSlNPYmplY3QqIEludGxEaXNwbGF5TmFtZXM6
OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9ucyA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgdHlwZVN0cmluZyhtX3R5cGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBmYWxsYmFja1N0cmluZyhtX2ZhbGxiYWNrKSkpOworICAgIHJldHVybiBvcHRpb25zOwor
fQorCitBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgU3R5bGU6Ok5hcnJvdzoKKyAg
ICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgY2FzZSBTdHlsZTo6U2hvcnQ6CisgICAgICAg
IHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgcmV0dXJu
ICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
Ojp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFR5cGU6Okxhbmd1YWdlOgorICAgICAgICByZXR1cm4gImxhbmd1YWdlIl9zOworICAgIGNhc2Ug
VHlwZTo6UmVnaW9uOgorICAgICAgICByZXR1cm4gInJlZ2lvbiJfczsKKyAgICBjYXNlIFR5cGU6
OlNjcmlwdDoKKyAgICAgICAgcmV0dXJuICJzY3JpcHQiX3M7CisgICAgY2FzZSBUeXBlOjpDdXJy
ZW5jeToKKyAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2sgZmFsbGJh
Y2spCit7CisgICAgc3dpdGNoIChmYWxsYmFjaykgeworICAgIGNhc2UgRmFsbGJhY2s6OkNvZGU6
CisgICAgICAgIHJldHVybiAiY29kZSJfczsKKyAgICBjYXNlIEZhbGxiYWNrOjpOb25lOgorICAg
ICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWRmZmJmYWVmMTdlYjBlMjlmYzNmOTkwMjU2NzMyZGE2NzA0MzJmZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxkbmFtZXMuaD4KKyNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSW50bERpc3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SW50
bERpc3BsYXlOYW1lcyo+KGNlbGwpLT5JbnRsRGlzcGxheU5hbWVzOjp+SW50bERpc3BsYXlOYW1l
cygpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmludGxEaXNwbGF5TmFtZXNTcGFjZTxtb2RlPigpOwor
ICAgIH0KKworICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0
aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUs
IEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpTVmFsdWUgb2YoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKSBjb25zdDsKKyAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lcyhWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBW
ZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CisKKyAgICBl
bnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IE5hcnJvdywgU2hvcnQsIExvbmcgfTsKKyAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJy
ZW5jeSB9OworICAgIGVudW0gY2xhc3MgRmFsbGJhY2sgOiB1aW50OF90IHsgQ29kZSwgTm9uZSB9
OworCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2spOworCisgICAgdXNpbmcgVUxvY2FsZURpc3BsYXlO
YW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4gbV9kaXNw
bGF5TmFtZXM7CisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIENTdHJpbmcgbV9sb2NhbGVDU3Ry
aW5nOworICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6TG9uZyB9OworICAgIFR5cGUgbV90eXBl
IHsgVHlwZTo6TGFuZ3VhZ2UgfTsKKyAgICBGYWxsYmFjayBtX2ZhbGxiYWNrIHsgRmFsbGJhY2s6
OkNvZGUgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzM3YzBlZDNkMDgyYjYzNjMxNTQ1YjY2M2QwYTg3NDg4OTNiM2NmOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmgiCisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBkaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclRhYmxlCisg
IHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3JTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVu
ZAorKi8KKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUpCit7CisgICAgYXV0byogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkaXNwbGF5TmFtZXNQ
cm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKElu
dGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5hbWVzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKK0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxJbnRsRGlzcGxheU5hbWVzLCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKQor
eworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEaXNwbGF5TmFtZXMiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkaXNwbGF5
TmFtZXNQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKKyAgICBkaXNwbGF5TmFtZXNQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuRGlzcGxheU5hbWVzCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXdUYXJn
ZXQgPT0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpCisgICAgICAgID8gZ2xvYmFsT2JqZWN0LT5kaXNw
bGF5TmFtZXNTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxt
KHZtLCBuZXdUYXJnZXQpLT5kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludGxEaXNwbGF5TmFtZXMqIGRpc3BsYXlO
YW1lcyA9IEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBBU1NF
UlQoZGlzcGxheU5hbWVzKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBkaXNwbGF5TmFt
ZXMtPmluaXRpYWxpemVEaXNwbGF5TmFtZXMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGRpc3BsYXlOYW1lcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
SW50bC5EaXNwbGF5TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRGlzcGxheU5hbWVzIikpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIC8vIEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2Fs
ZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVz
LnN1cHBvcnRlZExvY2FsZXNPZgorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUg
JURpc3BsYXlOYW1lcyUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2Fs
ZXMoKTsKKworICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QobG9jYWxlcykuCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJl
cXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVM
b2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOworfQor
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NDRhZTFlOGE4MjViODZmN2E3YzhhOTZjNTAxYjQ0ZmJjYWQ4OGJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU7CisKK2NsYXNz
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZh
dGU6CisgICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqKTsK
K307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZlODg3YmE1ZDY4ZWMxZWYzMDBmODA3MjBm
YWZjZmMxMzBhZjJiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuRGlzcGxheU5hbWVzIiwgJkJh
c2U6OnNfaW5mbywgJmRpc3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBm
b3IgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc1By
b3RvdHlwZVRhYmxlCisgIG9mICAgICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZUZ1bmNPZiAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNvbHZlZE9w
dGlvbnMgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUq
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1
bmNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNEeW5h
bWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3BsYXlO
YW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNz
ZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNE
eW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3Bs
YXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkaXNwbGF5TmFtZXMtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2N2U1ODNh
Njc1NzQ0ZTQxNWE0ODVlODNlZjFmMzU4NmU5YjEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVy
dHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3By
aXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA4MGU2
NGYxYWIxNzk3MTM4YjI1MmI4ZmNkMTA3MWQ3NmJkZDQ2MjlhLi5iMDlmMmZlMmM5ZDI0MzU5MjFh
NzJlZjI2ODVlNDY4YTM3ZjhlNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlLmNwcApAQCAtMTk5LDE5ICsxOTksODUgQEAgc3RhdGljIGJvb2wgaXNVbmlj
b2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCiB9CiAKIC8vIHVuaWNvZGVfc2Ny
aXB0X3N1YnRhZyA9IGFscGhhezR9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVNjcmlwdFN1YnRh
ZyhTdHJpbmdWaWV3IHN0cmluZykKK2Jvb2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewogICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgPT0gNCAmJiBzdHJpbmcu
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7CiB9CiAKIC8vIHVuaWNvZGVf
cmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9IHwgZGlnaXR7M30gOwotc3RhdGljIGJvb2wgaXNVbmlj
b2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQorYm9vbCBpc1VuaWNvZGVSZWdpb25T
dWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoKCk7CiAgICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCiAgICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBzdHJp
bmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGlnaXQ+KCkpOwogfQogCisvLyB1bmlj
b2RlX3ZhcmlhbnRfc3VidGFnID0gKGFscGhhbnVtezUsOH0gfCBkaWdpdCBhbHBoYW51bXszfSkg
Oworc3RhdGljIGJvb2wgaXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoID49
IDUgJiYgbGVuZ3RoIDw9IDgpCisgICAgICAgIHJldHVybiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOworICAgIHJldHVybiBsZW5ndGggPT0gNCAm
JiBpc0FTQ0lJRGlnaXQoc3RyaW5nWzBdKSAmJiBzdHJpbmcuc3Vic3RyaW5nKDEpLmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhbnVtZXJpYz4oKTsKK30KKworLy8gdW5pY29kZV9s
YW5ndWFnZV9pZCA9CisvLyAgICAgInJvb3QiCisvLyAgICAgfCAodW5pY29kZV9sYW5ndWFnZV9z
dWJ0YWcgKHNlcCB1bmljb2RlX3NjcmlwdF9zdWJ0YWcpPyB8IHVuaWNvZGVfc2NyaXB0X3N1YnRh
ZykgKHNlcCB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcpPyAoc2VwIHVuaWNvZGVfdmFyaWFudF9zdWJ0
YWcpKiA7Citib29sIGlzVW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyBzdHJpbmcpCit7Cisg
ICAgYXV0byBmaW5kU2VwYXJhdG9yID0gW10oU3RyaW5nVmlldyB2aWV3KSAtPiBPcHRpb25hbDx1
bnNpZ25lZD4geworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2aWV3
Lmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSB2aWV3
W2luZGV4XTsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy0nIHx8IGNoYXJhY3RlciA9
PSAnXycpCisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsKKworICAgIFZlY3RvcjxTdHJpbmdWaWV3LCAy
PiBzdWJ0YWdzOworICAgIFN0cmluZ1ZpZXcgcmVtYWluaW5nID0gc3RyaW5nOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIGlmIChhdXRvIHNlcGFyYXRvclBvc2l0aW9uID0gZmluZFNlcGFy
YXRvcihyZW1haW5pbmcpKSB7CisgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChyZW1haW5pbmcu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJl
bWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoc2VwYXJhdG9yUG9zaXRpb24udmFsdWUoKSAr
IDEpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgc3VidGFncy5h
cHBlbmQocmVtYWluaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUKHN1
YnRhZ3Muc2l6ZSgpID49IDEpOworICAgIHVuc2lnbmVkIGN1cnNvciA9IDA7CisgICAgaWYgKHN1
YnRhZ3Muc2l6ZSgpID09IDEpIHsKKyAgICAgICAgLy8gT25seSBvbmUgc3VidGFnLiBTbyBpdCBt
dXN0IGJlIGxhbmd1YWdlIG9yIHNjcmlwdC4KKyAgICAgICAgcmV0dXJuIHN1YnRhZ3NbY3Vyc29y
XSA9PSAicm9vdCJfcyB8fCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0p
IHx8IGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pOworICAgIH0KKworICAg
IEFTU0VSVChzdWJ0YWdzLnNpemUoKSA+PSAyKTsKKyAgICBpZiAoaXNVbmljb2RlTGFuZ3VhZ2VT
dWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkgeworICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgaWYg
KGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICAgICAgKytj
dXJzb3I7CisgICAgfSBlbHNlIGlmIChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJz
b3JdKSkKKyAgICAgICAgKytjdXJzb3I7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoaXNVbmljb2RlUmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAg
ICAgICsrY3Vyc29yOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1cnNvciA9
PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAo
IWlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgKytjdXJzb3I7CisgICAgfQorfQorCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlCiB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxp
emVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YWdWYWx1ZSwg
SlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmgKaW5kZXggYWZiNjlhMmQxZmU1YWMyNjI1MDdlOWE5YzQ5MGE5NGNhZmMwZmVj
YS4uM2Q1NDkwM2QwYjNmYTYxMjBhMjc4NmJlZWM5NjE1ZDhmMzBhOWVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaApAQCAtOTAsNCArOTAsOCBAQCBjbGFz
cyBJbnRsTG9jYWxlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFRyaVN0
YXRlIG1fbnVtZXJpYyB7IFRyaVN0YXRlOjpJbmRldGVybWluYXRlIH07CiB9OwogCitib29sIGlz
VW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVnaW9uU3Vi
dGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOwor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKaW5kZXggMWRmYTIwODJhZjE0MjNmNGQzZWQzZTEzMzBhOTQ5NjNiZWVhNDMw
MS4uYzMyZTg0Yzk3NDEyMzA0ZTNhNTcwMjEzZjI2YTY5NzIwYWUyYjMxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDggQEAK
ICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgi
CiAjaW5jbHVkZSAiSW50bExvY2FsZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bExvY2Fs
ZVByb3RvdHlwZS5oIgpAQCAtNzcsNiArNzksMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0
dXJuIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKS0+c3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIEludGxP
YmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgcmV0dXJuIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCktPnN0
b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUxvY2Fs
ZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0
KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwpAQCAtMTUyLDYgKzE2
MSw4IEBAIEludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSoKIHZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIGlmIChPcHRpb25zOjp1c2VJbnRsRGlzcGxheU5hbWVzKCkpCisgICAgICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EaXNwbGF5
TmFtZXMsIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKHZtLCB0aGlzKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBTdHJ1Y3R1
cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGVkOWMxZTEwYjZhZGE0ZmQ5ZDQyNTc0NjA2Y2RkOTJh
OTEyMjM5YjcuLmY5MDU5NmY1ZjFkNDBjZjUxMGE4MWYzZDk3MjVlYmUzMTA2ZDRhOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcg
QEAgU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqKTsKIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxB
dmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxE
aXNwbGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2Fs
ZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxp
bmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVz
KCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJl
dHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYy
MzJjZjg5YjllNGM5ODIzNzAwNi4uYzg3OTI3NDViOTM0ODAzZmRmNmJhZjFhYjRiMDY3Y2E4Yjky
YmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNp
bmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2Fs
ZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCkBAIC05ODEsNiArOTgzLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKICAg
ICAgICAgfSk7CisgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOworICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxh
eU5hbWVzUHJvdG90eXBlID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQu
dm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkpOworICAgICAgICB9KTsKICAgICBt
X2xvY2FsZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xODMyLDYg
KzE4NDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0
b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi4yNzc3
NGViYmM2MDM2ZjdhMzViZjM1ZWU4MWUxNGU3NmNhMDJjNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0
Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
Y29sbGF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CkBAIC03OTIsNiArNzkzLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJl
LmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogZGlzcGxheU5hbWVzU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0aGlzKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNWRj
ZjQyOGJmNDc3MTliNTk0YjY3MGNlNThkODc3N2QzNzkyNzI2MC4uOTAwYzAxNDVkMTdiNmZmNTU3
MDhjYWFiMzdlNzQwZGY3YjBmMWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC00ODgsNiArNDg4LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2Vt
Ymx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20g
bXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwg
dXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQg
c3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGlzcGxheU5hbWVzLCBmYWxzZSwgTm9y
bWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRpc3BsYXlOYW1lcyBjb25zdHJ1Y3Rvci4iKSBcCiAgICAg
dihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElm
IGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVu
ZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwg
IklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBh
IHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMTRiYTk3NzBiYTVhNTY1
MjJlYjViYTI4OGQ5MmY3MDA2ZTIzYjY1Li4wYTE0OWIzNmMzZmYzNGViNTFmM2QyZTZjNzFhNmVj
YzhmYTliNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NSw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3Iu
aCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxh
eU5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAgLTMwNiw2ICszMDcsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYKICAgICAs
IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29s
bGF0b3I+KCkpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlO
YW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVz
PigpKQogICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsTG9jYWxlPigpKQogICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJh
bFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxl
cz4oKSkKQEAgLTE0ODEsNiArMTQ4Myw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsCiAjZW5k
aWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JT
cGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3Bh
Y2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9y
bWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5
TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3Bs
YXlOYW1lcykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9j
YWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2NhbGUpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNl
LCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1Nw
YWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJlZDE2Njg4MDU2Njc5YjAzZWQwYzJi
OGI0ZDgwODgwNzVmMmZiMzMuLjhkNDdmMjAyYTNmZDEzZTNhYzNkZjI5NmRlMjY1ZjEyMmUwNzUz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNs
YXNzIElkZW50aWZpZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDb2xsYXRvcjsK
IGNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7CiBjbGFz
cyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxS
dWxlczsKQEAgLTQwMCw2ICs0MDEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2VuZGlmCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9ySGVhcENlbGxU
eXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBp
bnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CkBA
IC01NTcsNiArNTU5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxl
c1NwYWNlKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li41OTJiNjQy
ODc2ZDUyOGM0YjU4ZWMwN2RiNTAwNjYxOGJmNGI5ZmRmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2
LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEt
NDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LmN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25z
KToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LnJlZ2lvbk5hbWVzLnJlc29sdmVk
T3B0aW9ucyk6CisgICAgICAgIChvYmplY3QudG9TdHJpbmcpOgorICAgICAgICAqIHRlc3QyNjIv
Y29uZmlnLnlhbWw6CisKIDIwMjAtMDYtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1l
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iN2YxOTg3ZTg1MzQwYmY1NjdmZjRhMDkwYTQ2ZTMzMzI1Y2ZiYWNi
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMK
QEAgLTAsMCArMSwxNzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJyb3I6IHR5cGUgbXVz
dCBiZSBhIHN0cmluZ2ApCisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHJlZ2lvbiBpbiBFbmds
aXNoCit2YXIgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ3JlZ2lvbid9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFt
ZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CitzaG91
bGRCZShyZWdpb25OYW1lcy5vZignVVMnKSwgIlVuaXRlZCBTdGF0ZXMiKTsKK3Nob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhICYgSGVyemVnb3ZpbmEiKTsKK3Nob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciAoQnVybWEpIik7CisKKy8vIEdldCBkaXNwbGF5
IG5hbWVzIG9mIHJlZ2lvbiBpbiBUcmFkaXRpb25hbCBDaGluZXNlCityZWdpb25OYW1lcyA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdyZWdpb24nfSk7CitzaG91
bGRCZShyZWdpb25OYW1lcy5vZignNDE5JyksICLmi4nkuIHnvo7mtLIiKTsKK3Nob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCdCWicpLCAi6LKd6YeM5pavIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignVVMnKSwgIue+juWciyIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0JBJyksICLms6Ll
o6vlsLzkup7oiIfotavloZ7lk6Xntq3ntI0iKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdN
TScpLCAi57es55S4Iik7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
ZW4nXSwge3R5cGU6ICdyZWdpb24nLCBzdHlsZTogJ3Nob3J0J30pOworc2hvdWxkQmUocmVnaW9u
TmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoJ0JaJyksICJCZWxpemUiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVVMi
KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhIik7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIiKTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50
bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbicsIHN0eWxlOiAnbmFycm93J30p
Oworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworc2hv
dWxkQmUocmVnaW9uTmFtZXMub2YoJ0JaJyksICJCZWxpemUiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdVUycpLCAiVVMiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9z
bmlhIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIiKTsKKworLy8g
R2V0IGRpc3BsYXkgbmFtZXMgb2YgbGFuZ3VhZ2UgaW4gRW5nbGlzaAordmFyIGxhbmd1YWdlTmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOwor
c2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnInKSwgIkZyZW5jaCIpOworc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZnItQ0EnKSwgIkNhbmFkaWFuIEZyZW5jaCIpOworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPD0g
NjYpCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwg
VHJhZGl0aW9uYWwiKTsKK2Vsc2UKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1I
YW50JyksICJUcmFkaXRpb25hbCBDaGluZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCdlbi1VUycpLCAiQW1lcmljYW4gRW5nbGlzaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMg
b2YgbGFuZ3VhZ2UgaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsKK3Nob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ3poJyksICLkuK3mlociKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2Rl
JyksICLlvrfmlociKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhb
J2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3Nob3J0J30pOworc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignZnInKSwgIkZyZW5jaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZGUnKSwgIkdlcm1hbiIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwg
IkNhbmFkaWFuIEZyZW5jaCIpOworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwgVHJhZGl0aW9uYWwi
KTsKK2Vsc2UKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFk
aXRpb25hbCBDaGluZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1VUycpLCAi
VVMgRW5nbGlzaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5l
c2UgKFRhaXdhbikiKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhb
J2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKGxh
bmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ2RlJyksICJHZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyks
ICJDYW5hZGlhbiBGcmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNo
b3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFs
Iik7CitlbHNlCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJh
ZGl0aW9uYWwgQ2hpbmVzZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwg
IlVTIEVuZ2xpc2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJDaGlu
ZXNlIChUYWl3YW4pIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBFbmds
aXNoCit2YXIgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ3NjcmlwdCd9KTsKKy8vIEdldCBzY3JpcHQgbmFtZXMKK3Nob3VsZEJlKHNjcmlwdE5hbWVz
Lm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwg
IkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIkthdGFrYW5hIik7
CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBUcmFkaXRpb25hbCBDaGluZXNl
CitzY3JpcHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6
ICdzY3JpcHQnfSk7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0bicpLCAi5ouJ5LiB5paH
Iik7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAi6Zi/5ouJ5Lyv5paHIik7Citz
aG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAi54mH5YGH5ZCNIik7CisKK3NjcmlwdE5h
bWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnLCBzdHls
ZTogJ3Nob3J0J30pOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7
CitzaG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAiQXJhYmljIik7CitzaG91bGRCZShz
Y3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworc2NyaXB0TmFtZXMgPSBuZXcg
SW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnbmFycm93
J30pOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7CitzaG91bGRC
ZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAiQXJhYmljIik7CitzaG91bGRCZShzY3JpcHROYW1l
cy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3Vy
cmVuY3kgY29kZSBpbiBFbmdsaXNoCit2YXIgY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3Bs
YXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knfSk7CisvLyBHZXQgY3VycmVuY3kgbmFt
ZXMKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAiVVMgRG9sbGFyIik7CitzaG91
bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIkV1cm8iKTsKK3Nob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ1RXRCcpLCAiTmV3IFRhaXdhbiBEb2xsYXIiKTsKK3Nob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ0NOWScpLCAiQ2hpbmVzZSBZdWFuIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVz
Lm9mKCdKUFknKSwgIkphcGFuZXNlIFllbiIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBj
dXJyZW5jeSBjb2RlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK2N1cnJlbmN5TmFtZXMgPSBuZXcg
SW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnY3VycmVuY3knfSk7CitzaG91
bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIue+juWFgyIpOworc2hvdWxkQmUoY3VycmVu
Y3lOYW1lcy5vZignRVVSJyksICLmrZDlhYMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2Yo
J1RXRCcpLCAi5paw5Y+w5bmjIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwg
IuS6uuawkeW5oyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICLml6XlnJMi
KTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBFbmdsaXNoIGlu
IHNob3J0CitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5
cGU6ICdjdXJyZW5jeScsIHN0eWxlOiAnc2hvcnQnIH0pOworc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignVVNEJyksICIkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuKC
rCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICJOVCQiKTsKK3Nob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiQ07CpSIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignSlBZJyksICLCpSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBj
b2RlIGluIEVuZ2xpc2ggaW4gbmFycm93CitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeScsIHN0eWxlOiAnbmFycm93JyB9KTsKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAiJCIpOworc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignRVVSJyksICLigqwiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcp
LCAiJCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICLCpSIpOworc2hvdWxk
QmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICLCpSIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignSlBaJyksICJKUFoiKTsgLy8gRmFsbGJhY2sgY29kZQorc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwi
c3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6ImNvZGUifWApOwor
CitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdj
dXJyZW5jeScsIHN0eWxlOiAnbmFycm93JywgZmFsbGJhY2s6ICdub25lJyB9KTsKK3Nob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ0pQWicpLCB1bmRlZmluZWQpOyAvLyBGYWxsYmFjayBub25lCitz
aG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW5jeU5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwg
YHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6Im5hcnJvdyIsInR5cGUiOiJjdXJyZW5jeSIsImZhbGxi
YWNrIjoibm9uZSJ9YCk7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
ZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignOTk5Jyks
ICI5OTkiKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0
aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwi
ZmFsbGJhY2siOiJjb2RlIn1gKTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFt
ZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbicsIGZhbGxiYWNrOidub25lJ30pOworc2hvdWxkQmUo
cmVnaW9uTmFtZXMub2YoJzk5OScpLCB1bmRlZmluZWQpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkocmVnaW9uTmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxl
IjoibG9uZyIsInR5cGUiOiJyZWdpb24iLCJmYWxsYmFjayI6Im5vbmUifWApOworCitsYW5ndWFn
ZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9
KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLUFBJyksICJlbi1BQSIpOwordmFyIG9i
amVjdCA9IHsKKyAgICB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuICdlbi1BQSc7CisgICAg
fQorfTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgb2JqZWN0KTsKKworbGFu
Z3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3Vh
Z2UnLCBmYWxsYmFjazogJ25vbmUnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1B
QScpLCB1bmRlZmluZWQpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCB1bmRl
ZmluZWQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNm
NGUxNjRiOTRkZjEuLmU2MzcyZmY5MjgzYmNmYjU0YmFmYTZkOGI1YjE2ZTRjYWE4ZTMzYzggMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTI2LDYgKzI2LDkgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRp
bWVGb3JtYXQtZGF5UGVyaW9kCiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZvcm1hdFJhbmdl
CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZyYWN0aW9uYWxTZWNvbmREaWdpdHMKKyAgICAj
IEN1cnJlbnRseSwgdGVzdDI2MiBoYXMgYSBidWcgd2l0aCBJbnRsLkRpc3BsYXlOYW1lcywgYW5k
IGV4cG9zaW5nIGl0IGNhbiBjYXVzZSBtYW55IGZhaWx1cmVzIGluIHZhcmlvdXMgSW50bCB0ZXN0
cy4KKyAgICAjIFdlIHNob3VsZCBlbmFibGUgaXQgYWZ0ZXIgZW5zdXJpbmcgdGVzdDI2MiBpcyBm
aXhlZC4KKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Rlc3QyNjIvaXNzdWVzLzI2ODIK
ICAgICAtIEludGwuRGlzcGxheU5hbWVzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKICAgICAtIElu
dGwuTnVtYmVyRm9ybWF0LXVuaWZpZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403155</attachid>
            <date>2020-06-29 18:37:30 -0700</date>
            <delta_ts>2020-06-29 18:41:01 -0700</delta_ts>
            <desc>WIP, but it is now working</desc>
            <filename>bug-209779-20200629183730.patch</filename>
            <type>text/plain</type>
            <size>76732</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi5iYzA2NjI1ZWYyZTE5MTY2
MzUxYjJhY2QwMjY0ZDQ0MGZiMmNmZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lczo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmluaXRp
YWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjpvZiBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6
OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5oLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3I6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEaXNwbGF5
TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0
ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlRnVuY09mKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmguCisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVn
aW9uU3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlVmFyaWFudFN1YnRhZyk6CisgICAg
ICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlSWQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExv
Y2FsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjppbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmRpc3BsYXlOYW1lc1N0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9PcHRp
b25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFk
aW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBj
MjU5MTA4NmViYWM3MjIwNjZhODY0NDVmYWMyMTFkZWY4MDMwNWUwLi5iZDVhMGFiMTA2MTZhNDAy
ZGEyMDQ4ZDQzODNkN2YzNmY4OGE1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC03MCw2ICs3MCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJD
RVMKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCBhNjVjZmQ1YTkwYmM4NWJjNzAyNTFjZjBkZGYxNDE0NWRlOWVj
ZjA3Li5kMGQ4ZGZkYzQ4YTM1ZTgyMTdmN2MwMzQxYzBmZTAzYmI0M2UwNDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtMTM4LDYgKzEzOCw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAkKFBS
T0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggNzljZGU0ZWU1MDdlMTNmNmZmN2ZhNzgwMGRjNjQ1Y2JmODk0MWM2Ny4uMmJkZjVi
MmM4MjJhNmQ5ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjcs
NiArMjcsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LgogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0ludGxMb2NhbGVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDEwZjlmZWM1MWRjZTQ4Njg2ZmY4NzQ1YmVhYTRiNWI1ZDVi
MTAzM2QuLmMxZmY1ZTYyNDczNTA2OGNmZjRjMTJlNGNmNDhjZGM0ZmEwYTY1N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTksNiArMTU5LDggQEAg
T0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBc
CiAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIFwKICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IubHV0LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Zjg1MWMxMTcyYzZlMDRlYWI4Mzg4YzIyODBkYTUw
ODQzYTYzYmRkLi5jMDY2M2Q3ZjYwZjk5ZGYxZDQxZGVmZWNkYzU2ZTljZTU0OTJjYzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxOSw2ICsxODE5LDkgQEAKIAkJRTM0RURC
RjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZy
YW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNEY5MzBFMjMyMkQ4ODIwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RjkzMEMyMzIyRDg4MTAw
MkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi87IH07CiAJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNE
NiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzUz
QzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLzsgfTsKKwkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJE
RjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1
NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUw
M0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1RDM4RjIyNDQ2ODc3MDA4
RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1
dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTgyOCw2ICsxODMxLDggQEAKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYw
MUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0
M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzYzN0VFOTIzNkU1NkIw
MDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1l
Q29uc3RhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5s
dXQuaCAqLzsgfTsKKwkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5sdXQuaCAqLzsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5ODE4IC8qIFdhc21PTUdG
b3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFu
LmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0
NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5ODUs
NiArNDk5MCwxMiBAQAogCQlFMzRGOTMwQjIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW5lcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQg
LyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1MDcwODkxREM0OUJCNjAw
ODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5
TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTgyNEFBNENCNjAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTkyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYg
LyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTU1Qjg5
MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1RDM4RDIyNDQ2ODZCMDA4RjFBRDYgLyog
R2xvYmFsRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDAxLDYgKzUwMTIsOCBAQAogCQlFMzVFMDM2
MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYzN0VFNzIz
NkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIg
LyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzZCNDgwMTIzRTk1NzM4MDBFNEE2NkUgLyogVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RTIyRjhENjExMDBEMDk4
MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNt
T01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjc2Nyw2ICs2NzgwLDggQEAKIAkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkg
LyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDczMUI0REMxQzYw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlB
MTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1
dC5oICovLAorCQkJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTEyNTg0NkMxQjQ1QTM2MDAw
Q0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlBMTI1
ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAq
LywKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLApA
QCAtNzI2Miw2ICs3Mjc3LDEyIEBACiAJCQkJQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTE1ODdENkIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTE1ODdE
NkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovLAor
CQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmNwcCAqLywK
KwkJCQlFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovLAor
CQkJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3IuY3BwICovLAorCQkJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzUzQzExOTI0QUE0Q0I2MDAzRkJERjMgLyogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8sCisJCQkJRTM1M0MxMUIyNEFBNENCNzAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLywKIAkJCQlBM0FGRjkyRDI0NUEz
Q0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5jcHAgKi8sCiAJCQkJQTNBRkY5MkIyNDVBM0NGOTAw
QzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLywKIAkJCQlBM0FGRjkyRjI0NUEzQ0ZCMDBDOUJBM0Ig
LyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTk3NTIsNiArOTc3MywxMSBAQAog
CQkJCUExNTg3RDc1MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3
RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3Bs
YXlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYzIC8q
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2NUYz
M0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzY1RjMzQjI0QUE2MjNCMDBD
OTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzA1MDJhMzRhNjY1YTg1MGNhZDZhZmY5Y2Fm
NWM0YzhkNzRjMjcwNS4uMWI0ZmJmN2NjYWM0N2U5ZTBkODI4NGQ2NjM1ODE4MTIxY2FlMGY4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODE0LDYgKzgxNCw5IEBAIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3Bw
CitydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZS5jcHAKIHJ1bnRpbWUv
SW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZiYS4uM2E0OTdl
MDc0YTkwZTBiMTE5NTg2YmZhMDhkNDgzZWIzMDk0MjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zNCw2ICszNCw3IEBA
CiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhEYXRlKSBcCiAgICAgbWFjcm8oRGF0
ZVRpbWVGb3JtYXQpIFwKKyAgICBtYWNybyhEaXNwbGF5TmFtZXMpIFwKICAgICBtYWNybyhFcnJv
cikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjMWU5Njg0ZWY3NjYzYTE2Y2QyMThjYmZmZDk2OGNjZWUxNGZjNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmNwcApAQCAtMCwwICsxLDMzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisKKyNpbmNsdWRlICJJbnRsTG9jYWxl
LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgor
I2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lczo6c19pbmZvID0geyAiT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsRGlzcGxheU5hbWVzKSB9OworCitJbnRsRGlzcGxheU5hbWVzKiBJbnRsRGlzcGxheU5hbWVz
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzPih2bS5oZWFw
KSkgSW50bERpc3BsYXlOYW1lcyh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxEaXNw
bGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlO
YW1lcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTsKK30KKworVmVjdG9yPFN0cmluZz4gSW50bERpc3BsYXlOYW1lczo6bG9j
YWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcwordm9pZCBJ
bnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7CisgICAgaWYg
KG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0gY29uc3RydWN0
RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVy
ZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1ZS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgIH0KKworICAgIC8vIERvZXMgbm90IHNldCBlaXRoZXIgb2YgImNhIiBvciAibnUi
LgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2Vj
LWludGwtZGlzcGxheW5hbWVzLWNvbnN0cnVjdG9yCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gb3B0OworCisgICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlciwgeyAibG9va3Vw
IiwgImJlc3QgZml0IiB9LCAibG9jYWxlTWF0Y2hlciBtdXN0IGJlIGVpdGhlciBcImxvb2t1cFwi
IG9yIFwiYmVzdCBmaXRcIiIsICJiZXN0IGZpdCIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgb3B0LmFkZCgibG9jYWxlTWF0Y2hlciJfcywgbWF0Y2hlcik7
CisKKyAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gaW50bE51bWJlckZvcm1hdEF2YWlsYWJs
ZUxvY2FsZXMoKTsKKyAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0
LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIG51bGxwdHIsIDAsIGxv
Y2FsZURhdGEpOworCisgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOworICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3BsYXlOYW1lIGR1ZSB0byBp
bnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcg
c3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIiB9LCAic3R5
bGUgbXVzdCBiZSBlaXRoZXIgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBvciBcImxvbmdcIiIsICJs
b25nIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAo
c3R5bGVTdHJpbmcgPT0gIm5hcnJvdyJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpOYXJy
b3c7CisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInNob3J0Il9zKQorICAgICAgICBtX3N0
eWxlID0gU3R5bGU6OlNob3J0OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJsb25nIl9z
KQorICAgICAgICBtX3N0eWxlID0gU3R5bGU6Okxvbmc7CisgICAgZWxzZQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmluZyB0eXBlU3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHsgImxh
bmd1YWdlIiwgInJlZ2lvbiIsICJzY3JpcHQiLCAiY3VycmVuY3kiIH0sICJ0eXBlIG11c3QgYmUg
ZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5j
eVwiIiwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICBpZiAodHlwZVN0cmluZy5pc051bGwoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBiZSBhIHN0cmluZyJfcyk7CisgICAgaWYgKHR5
cGVTdHJpbmcgPT0gImxhbmd1YWdlIl9zKQorICAgICAgICBtX3R5cGUgPSBUeXBlOjpMYW5ndWFn
ZTsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJyZWdpb24iX3MpCisgICAgICAgIG1fdHlw
ZSA9IFR5cGU6OlJlZ2lvbjsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJzY3JpcHQiX3Mp
CisgICAgICAgIG1fdHlwZSA9IFR5cGU6OlNjcmlwdDsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5n
ID09ICJjdXJyZW5jeSJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6Q3VycmVuY3k7CisgICAg
ZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmluZyBmYWxsYmFj
a1N0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwgeyAiY29kZSIsICJub25lIiB9LCAiZmFs
bGJhY2sgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIgb3IgXCJub25lXCIiLCAiY29kZSIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKGZhbGxiYWNrU3Ry
aW5nID09ICJjb2RlIl9zKQorICAgICAgICBtX2ZhbGxiYWNrID0gRmFsbGJhY2s6OkNvZGU7Cisg
ICAgZWxzZSBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gIm5vbmUiX3MpCisgICAgICAgIG1fZmFsbGJh
Y2sgPSBGYWxsYmFjazo6Tm9uZTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBVRGlz
cGxheUNvbnRleHQgY29udGV4dHNbXSA9IHsKKyAgICAgICAgLy8gZW5fR0IgZGlzcGxheXMgYXMg
J0VuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKScgKFN0YW5kYXJkIE5hbWVzKSBvciAnQnJpdGlzaCBF
bmdsaXNoJyAoRGlhbGVjdCBOYW1lcykuCisgICAgICAgIC8vIFdlIHVzZSBEaWFsZWN0IE5hbWVz
IGhlcmUsIGFsaWduZWQgdG8gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjIGRyYWZ0IGFuZCBWOCdz
IGJlaGF2aW9yLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1p
bnRsLWRpc3BsYXluYW1lcyNsYW5ndWFnZS1kaXNwbGF5LW5hbWVzCisgICAgICAgIFVESVNQQ1RY
X0RJQUxFQ1RfTkFNRVMsCisKKyAgICAgICAgLy8gQ2FwaXRhaWxpemF0aW9uIG1vZGUgY2FuIGJl
IHBpY2tlZCBmcm9tIHNldmVyYWwgb3B0aW9ucy4gUG9zc2libHkgZWl0aGVyIFVESVNQQ1RYX0NB
UElUQUxJWkFUSU9OX05PTkUgb3IgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxP
TkUgaXMKKyAgICAgICAgLy8gcHJlZmVyYWJsZSBpbiBJbnRsLkRpc3BsYXlOYW1lcy4gV2UgdXNl
IFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUgbm90IHRvIGNoYW5nZSBhbnl0aGluZyBmcm9t
IElDVSBkYXRhYmFzZS4KKyAgICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSwKKwor
ICAgICAgICAvLyBOYXJyb3cgYmVjb21lcyBVRElTUENUWF9MRU5HVEhfU0hPUlQuIEJ1dCBpbiBj
dXJyZW5jeSBjYXNlLCB3ZSBoYW5kbGUgZGlmZmVyZW50bHkgaW5zdGVhZCBvZiB1c2luZyBVTG9j
YWxlRGlzcGxheU5hbWVzLgorICAgICAgICBtX3N0eWxlID09IFN0eWxlOjpMb25nID8gVURJU1BD
VFhfTEVOR1RIX0ZVTEwgOiBVRElTUENUWF9MRU5HVEhfU0hPUlQsCisKKyAgICAgICAgLy8gQWx3
YXlzIGRpc2FibGUgSUNVIFNVQlNUSVRVVEUgc2luY2UgaXQgZG9lcyBub3QgbWF0Y2ggYWdhaW5z
dCB3aGF0IHRoZSBzcGVjIGRlZmluZXMuIElDVSBoYXMgc29tZSBzcGVjaWFsIHN1YnN0aXR1dGUg
cnVsZXMsIGZvciBleGFwbWxlLCBsYW5ndWFnZSAiZW4tQUEiCisgICAgICAgIC8vIHJldHVybnMg
IkVuZ2xpc2ggKEFBKSIgKHdoaWxlIEFBIGNvdW50cnkgY29kZSBpcyBub3QgZGVmaW5lZCksIGJ1
dCB3ZSB3b3VsZCBsaWtlIHRvIHJldHVybiBlaXRoZXIgaW5wdXQgdmFsdWUgb3IgdW5kZWZpbmVk
LCBzbyB3ZSBkbyBub3Qgd2FudCB0byBoYXZlIElDVSBzdWJzdGl0dXRlIHJ1bGVzLgorICAgICAg
ICBVRElTUENUWF9OT19TVUJTVElUVVRFLAorICAgIH07CisgICAgbV9sb2NhbGVDU3RyaW5nID0g
bV9sb2NhbGUudXRmOCgpOworICAgIG1fZGlzcGxheU5hbWVzID0gc3RkOjp1bmlxdWVfcHRyPFVM
b2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPih1bGRuX29wZW5G
b3JDb250ZXh0KG1fbG9jYWxlQ1N0cmluZy5kYXRhKCksIGNvbnRleHRzLCBXVEZfQVJSQVlfTEVO
R1RIKGNvbnRleHRzKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGlu
aXRpYWxpemUgRGlzcGxheU5hbWVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
SlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5TmFtZXMp
OworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dU
RlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1
cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KKyAgICAg
ICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8g
VURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8g
ICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURp
c3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KKwor
ICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxheU5hbWVzCisgICAgICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVm
b3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNv
ZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAg
ICBpZiAoY29kZS5sZW5ndGgoKSAhPSAzIHx8ICFjb2RlLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNBU0NJSUFscGhhPigpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUi
X3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDYu
IExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMg
ZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgY29kZSA9IGNvZGUuY29udmVydFRvQVNDSUlVcHBl
cmNhc2UoKTsKKworICAgICAgICBVQ3Vyck5hbWVTdHlsZSBzdHlsZSA9IFVDVVJSX0xPTkdfTkFN
RTsKKyAgICAgICAgc3dpdGNoIChtX3N0eWxlKSB7CisgICAgICAgIGNhc2UgU3R5bGU6Okxvbmc6
CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX0xPTkdfTkFNRTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0eWxlOjpTaG9ydDoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJf
U1lNQk9MX05BTUU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6TmFy
cm93OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9OQVJST1dfU1lNQk9MX05BTUU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0
XSA9IHsKKyAgICAgICAgICAgIGNvZGVbMF0sCisgICAgICAgICAgICBjb2RlWzFdLAorICAgICAg
ICAgICAgY29kZVsyXSwKKyAgICAgICAgICAgIHUnXDAnCisgICAgICAgIH07CisgICAgICAgIC8v
IFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMgc3RyaW5nIHNvIHRoYXQgd2Ug
ZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAgICBpbnQzMl90IGxlbmd0aCA9
IDA7CisgICAgICAgIGNvbnN0IFVDaGFyKiByZXN1bHQgPSB1Y3Vycl9nZXROYW1lKGN1cnJlbmN5
LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBzdHlsZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnN0YXR1
cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlz
cGxheSBuYW1lcy4iX3MpOworICAgICAgICAvLyB1Y3Vycl9nZXROYW1lIHJldHVybnMgVV9VU0lO
R19ERUZBVUxUX1dBUk5JTkcgaWYgdGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuIEJ1dCBV
X1VTSU5HX0RFRkFVTFRfV0FSTklORyBpcyByZXR1cm5lZCBldmVuIGlmCisgICAgICAgIC8vIG5h
cnJvdyBhbmQgc2hvcnQgcmVzdWx0cyBhcmUgdGhlIHNhbWU6IG5hcnJvdyAiVVNEIiBpcyAiJCIg
d2l0aCBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBzaW5jZSBzaG9ydCAiVVNEIiBpcyBhbHNvICIk
Ii4gV2UgbmVlZCB0byBjaGVjaworICAgICAgICAvLyByZXN1bHQgPT0gY3VycmVuY3kgdG8gY2hl
Y2sgd2hldGhlciBJQ1UgYWN0dWFsbHkgZmFpbGVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcg
ZGlzcGxheS1uYW1lLiBUaGlzIHBvaW50ZXIgY29tcGFyaXNvbiBpcyBlbnN1cmVkIGJ5CisgICAg
ICAgIC8vIElDVSBBUEkgZG9jdW1lbnQuCisgICAgICAgIC8vID4gUmV0dXJucyBwb2ludGVyIHRv
IGRpc3BsYXkgc3RyaW5nIG9mICdsZW4nIFVDaGFycy4gSWYgdGhlIHJlc291cmNlIGRhdGEgY29u
dGFpbnMgbm8gZW50cnkgZm9yICdjdXJyZW5jeScsIHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMg
cmV0dXJuZWQuCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3Bs
YXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgorICAgICAgICBpZiAo
c3RhdHVzID09IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HICYmIHJlc3VsdCA9PSBjdXJyZW5jeSkK
KyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6Tm9uZSkgPyBqc1Vu
ZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhyZXN1bHQsIGxlbmd0aCkpOworICAgIH0KKworICAgIGF1dG8gdXRmOENvZGUgPSBjb2RlLnRy
eUdldFV0ZjgoKTsKKyAgICBpZiAoIXV0ZjhDb2RlKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisgICAgY29uc3QgY2hhciogcmF3U3RyaW5nID0gdXRmOENvZGUudmFsdWUoKS5kYXRhKCk7CisK
KyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtY2Fu
b25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90IG1h
dGNoZXMgdGhlIHVuaWNvZGVfbGFuZ3VhZ2VfaWQgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVy
cm9yIGV4Y2VwdGlwb24uCisgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkg
eworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1
bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gbm90IHVzZSB1bGRuX2xhbmd1YWdlRGlzcGxheU5h
bWUgc2luY2UgaXQgaXMgbm90IGV4cGVjdGVkIG9uZSBmb3IgdGhpcyAibGFuZ3VhZ2UiIHR5cGUu
IEl0IHJldHVybnMgImVuLVVTIiBmb3IgImVuLVVTIiBjb2RlLCBpbnN0ZWFkIG9mICJBbWVyaWNh
biBFbmdsaXNoIi4KKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgpLCByYXdTdHJpbmcs
IGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjog
eworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMv
I3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAgIC8vIElmIGNvZGUgZG9l
cyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9yZWdpb25fc3VidGFnIHByb2R1Y3Rpb24sIHRocm93
IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1
YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdldCgp
LCByYXdTdHJpbmcsIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5
cGU6OlNjcmlwdDogeworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAgIC8v
IElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHByb2R1
Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAgICBpZiAoIWlzVW5p
Y29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zKTsK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzID0gY2Fs
bEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUsIG1fZGlzcGxh
eU5hbWVzLmdldCgpLCByYXdTdHJpbmcsIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAg
ICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBh
bmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9S
IGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgorICAgICAgICAvLyBXZSBzaG91bGQg
cmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hv
dWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9m
CisgICAgICAgIGlmIChzdGF0dXMgPT0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SKQorICAgICAg
ICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVk
KCkgOiBjb2RlVmFsdWU7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lcy4iX3MpOworICAgIH0K
KyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFt
ZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworSlNPYmplY3QqIEludGxEaXNwbGF5TmFtZXM6
OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9ucyA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgdHlwZVN0cmluZyhtX3R5cGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBmYWxsYmFja1N0cmluZyhtX2ZhbGxiYWNrKSkpOworICAgIHJldHVybiBvcHRpb25zOwor
fQorCitBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgU3R5bGU6Ok5hcnJvdzoKKyAg
ICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgY2FzZSBTdHlsZTo6U2hvcnQ6CisgICAgICAg
IHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgcmV0dXJu
ICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
Ojp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFR5cGU6Okxhbmd1YWdlOgorICAgICAgICByZXR1cm4gImxhbmd1YWdlIl9zOworICAgIGNhc2Ug
VHlwZTo6UmVnaW9uOgorICAgICAgICByZXR1cm4gInJlZ2lvbiJfczsKKyAgICBjYXNlIFR5cGU6
OlNjcmlwdDoKKyAgICAgICAgcmV0dXJuICJzY3JpcHQiX3M7CisgICAgY2FzZSBUeXBlOjpDdXJy
ZW5jeToKKyAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2sgZmFsbGJh
Y2spCit7CisgICAgc3dpdGNoIChmYWxsYmFjaykgeworICAgIGNhc2UgRmFsbGJhY2s6OkNvZGU6
CisgICAgICAgIHJldHVybiAiY29kZSJfczsKKyAgICBjYXNlIEZhbGxiYWNrOjpOb25lOgorICAg
ICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWRmZmJmYWVmMTdlYjBlMjlmYzNmOTkwMjU2NzMyZGE2NzA0MzJmZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxkbmFtZXMuaD4KKyNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSW50bERpc3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SW50
bERpc3BsYXlOYW1lcyo+KGNlbGwpLT5JbnRsRGlzcGxheU5hbWVzOjp+SW50bERpc3BsYXlOYW1l
cygpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmludGxEaXNwbGF5TmFtZXNTcGFjZTxtb2RlPigpOwor
ICAgIH0KKworICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0
aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUs
IEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpTVmFsdWUgb2YoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKSBjb25zdDsKKyAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lcyhWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBW
ZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCk7CisKKyAgICBl
bnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IE5hcnJvdywgU2hvcnQsIExvbmcgfTsKKyAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJy
ZW5jeSB9OworICAgIGVudW0gY2xhc3MgRmFsbGJhY2sgOiB1aW50OF90IHsgQ29kZSwgTm9uZSB9
OworCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVy
YWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2spOworCisgICAgdXNpbmcgVUxvY2FsZURpc3BsYXlO
YW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4gbV9kaXNw
bGF5TmFtZXM7CisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIENTdHJpbmcgbV9sb2NhbGVDU3Ry
aW5nOworICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6TG9uZyB9OworICAgIFR5cGUgbV90eXBl
IHsgVHlwZTo6TGFuZ3VhZ2UgfTsKKyAgICBGYWxsYmFjayBtX2ZhbGxiYWNrIHsgRmFsbGJhY2s6
OkNvZGUgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzM3YzBlZDNkMDgyYjYzNjMxNTQ1YjY2M2QwYTg3NDg4OTNiM2NmOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmgiCisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBkaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclRhYmxlCisg
IHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3JTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVu
ZAorKi8KKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUpCit7CisgICAgYXV0byogY29u
c3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkaXNwbGF5TmFtZXNQ
cm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKElu
dGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5hbWVzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKK0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxJbnRsRGlzcGxheU5hbWVzLCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKQor
eworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEaXNwbGF5TmFtZXMiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkaXNwbGF5
TmFtZXNQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKKyAgICBkaXNwbGF5TmFtZXNQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuRGlzcGxheU5hbWVzCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXdUYXJn
ZXQgPT0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpCisgICAgICAgID8gZ2xvYmFsT2JqZWN0LT5kaXNw
bGF5TmFtZXNTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxt
KHZtLCBuZXdUYXJnZXQpLT5kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludGxEaXNwbGF5TmFtZXMqIGRpc3BsYXlO
YW1lcyA9IEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBBU1NF
UlQoZGlzcGxheU5hbWVzKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBkaXNwbGF5TmFt
ZXMtPmluaXRpYWxpemVEaXNwbGF5TmFtZXMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGRpc3BsYXlOYW1lcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
SW50bC5EaXNwbGF5TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRGlzcGxheU5hbWVzIikpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIC8vIEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2Fs
ZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVz
LnN1cHBvcnRlZExvY2FsZXNPZgorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUg
JURpc3BsYXlOYW1lcyUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2Fs
ZXMoKTsKKworICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QobG9jYWxlcykuCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJl
cXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVM
b2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOworfQor
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NDRhZTFlOGE4MjViODZmN2E3YzhhOTZjNTAxYjQ0ZmJjYWQ4OGJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU7CisKK2NsYXNz
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZh
dGU6CisgICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqKTsK
K307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZlODg3YmE1ZDY4ZWMxZWYzMDBmODA3MjBm
YWZjZmMxMzBhZjJiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuRGlzcGxheU5hbWVzIiwgJkJh
c2U6OnNfaW5mbywgJmRpc3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBm
b3IgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc1By
b3RvdHlwZVRhYmxlCisgIG9mICAgICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZUZ1bmNPZiAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNvbHZlZE9w
dGlvbnMgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUq
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1
bmNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNEeW5h
bWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3BsYXlO
YW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNz
ZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNE
eW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3Bs
YXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkaXNwbGF5TmFtZXMtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2N2U1ODNh
Njc1NzQ0ZTQxNWE0ODVlODNlZjFmMzU4NmU5YjEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVy
dHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3By
aXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA4MGU2
NGYxYWIxNzk3MTM4YjI1MmI4ZmNkMTA3MWQ3NmJkZDQ2MjlhLi5iMDlmMmZlMmM5ZDI0MzU5MjFh
NzJlZjI2ODVlNDY4YTM3ZjhlNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlLmNwcApAQCAtMTk5LDE5ICsxOTksODUgQEAgc3RhdGljIGJvb2wgaXNVbmlj
b2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCiB9CiAKIC8vIHVuaWNvZGVfc2Ny
aXB0X3N1YnRhZyA9IGFscGhhezR9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVNjcmlwdFN1YnRh
ZyhTdHJpbmdWaWV3IHN0cmluZykKK2Jvb2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewogICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgPT0gNCAmJiBzdHJpbmcu
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7CiB9CiAKIC8vIHVuaWNvZGVf
cmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9IHwgZGlnaXR7M30gOwotc3RhdGljIGJvb2wgaXNVbmlj
b2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQorYm9vbCBpc1VuaWNvZGVSZWdpb25T
dWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoKCk7CiAgICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCiAgICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBzdHJp
bmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGlnaXQ+KCkpOwogfQogCisvLyB1bmlj
b2RlX3ZhcmlhbnRfc3VidGFnID0gKGFscGhhbnVtezUsOH0gfCBkaWdpdCBhbHBoYW51bXszfSkg
Oworc3RhdGljIGJvb2wgaXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoID49
IDUgJiYgbGVuZ3RoIDw9IDgpCisgICAgICAgIHJldHVybiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOworICAgIHJldHVybiBsZW5ndGggPT0gNCAm
JiBpc0FTQ0lJRGlnaXQoc3RyaW5nWzBdKSAmJiBzdHJpbmcuc3Vic3RyaW5nKDEpLmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhbnVtZXJpYz4oKTsKK30KKworLy8gdW5pY29kZV9s
YW5ndWFnZV9pZCA9CisvLyAgICAgInJvb3QiCisvLyAgICAgfCAodW5pY29kZV9sYW5ndWFnZV9z
dWJ0YWcgKHNlcCB1bmljb2RlX3NjcmlwdF9zdWJ0YWcpPyB8IHVuaWNvZGVfc2NyaXB0X3N1YnRh
ZykgKHNlcCB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcpPyAoc2VwIHVuaWNvZGVfdmFyaWFudF9zdWJ0
YWcpKiA7Citib29sIGlzVW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyBzdHJpbmcpCit7Cisg
ICAgYXV0byBmaW5kU2VwYXJhdG9yID0gW10oU3RyaW5nVmlldyB2aWV3KSAtPiBPcHRpb25hbDx1
bnNpZ25lZD4geworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2aWV3
Lmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSB2aWV3
W2luZGV4XTsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy0nIHx8IGNoYXJhY3RlciA9
PSAnXycpCisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfTsKKworICAgIFZlY3RvcjxTdHJpbmdWaWV3LCAy
PiBzdWJ0YWdzOworICAgIFN0cmluZ1ZpZXcgcmVtYWluaW5nID0gc3RyaW5nOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIGlmIChhdXRvIHNlcGFyYXRvclBvc2l0aW9uID0gZmluZFNlcGFy
YXRvcihyZW1haW5pbmcpKSB7CisgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChyZW1haW5pbmcu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJl
bWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoc2VwYXJhdG9yUG9zaXRpb24udmFsdWUoKSAr
IDEpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgc3VidGFncy5h
cHBlbmQocmVtYWluaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUKHN1
YnRhZ3Muc2l6ZSgpID49IDEpOworICAgIHVuc2lnbmVkIGN1cnNvciA9IDA7CisgICAgaWYgKHN1
YnRhZ3Muc2l6ZSgpID09IDEpIHsKKyAgICAgICAgLy8gT25seSBvbmUgc3VidGFnLiBTbyBpdCBt
dXN0IGJlIGxhbmd1YWdlIG9yIHNjcmlwdC4KKyAgICAgICAgcmV0dXJuIHN1YnRhZ3NbY3Vyc29y
XSA9PSAicm9vdCJfcyB8fCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0p
IHx8IGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pOworICAgIH0KKworICAg
IEFTU0VSVChzdWJ0YWdzLnNpemUoKSA+PSAyKTsKKyAgICBpZiAoaXNVbmljb2RlTGFuZ3VhZ2VT
dWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkgeworICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgaWYg
KGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICAgICAgKytj
dXJzb3I7CisgICAgfSBlbHNlIGlmIChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJz
b3JdKSkKKyAgICAgICAgKytjdXJzb3I7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoaXNVbmljb2RlUmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAg
ICAgICsrY3Vyc29yOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1cnNvciA9
PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAo
IWlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgKytjdXJzb3I7CisgICAgfQorfQorCiAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlCiB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxp
emVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YWdWYWx1ZSwg
SlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmgKaW5kZXggYWZiNjlhMmQxZmU1YWMyNjI1MDdlOWE5YzQ5MGE5NGNhZmMwZmVj
YS4uM2Q1NDkwM2QwYjNmYTYxMjBhMjc4NmJlZWM5NjE1ZDhmMzBhOWVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaApAQCAtOTAsNCArOTAsOCBAQCBjbGFz
cyBJbnRsTG9jYWxlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFRyaVN0
YXRlIG1fbnVtZXJpYyB7IFRyaVN0YXRlOjpJbmRldGVybWluYXRlIH07CiB9OwogCitib29sIGlz
VW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVnaW9uU3Vi
dGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOwor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKaW5kZXggMWRmYTIwODJhZjE0MjNmNGQzZWQzZTEzMzBhOTQ5NjNiZWVhNDMw
MS4uYzMyZTg0Yzk3NDEyMzA0ZTNhNTcwMjEzZjI2YTY5NzIwYWUyYjMxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDggQEAK
ICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgi
CiAjaW5jbHVkZSAiSW50bExvY2FsZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bExvY2Fs
ZVByb3RvdHlwZS5oIgpAQCAtNzcsNiArNzksMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0
dXJuIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKS0+c3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIEludGxP
YmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgcmV0dXJuIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCktPnN0
b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUxvY2Fs
ZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0
KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwpAQCAtMTUyLDYgKzE2
MSw4IEBAIEludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSoKIHZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIGlmIChPcHRpb25zOjp1c2VJbnRsRGlzcGxheU5hbWVzKCkpCisgICAgICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EaXNwbGF5
TmFtZXMsIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKHZtLCB0aGlzKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBTdHJ1Y3R1
cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGVkOWMxZTEwYjZhZGE0ZmQ5ZDQyNTc0NjA2Y2RkOTJh
OTEyMjM5YjcuLmY5MDU5NmY1ZjFkNDBjZjUxMGE4MWYzZDk3MjVlYmUzMTA2ZDRhOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcg
QEAgU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqKTsKIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxB
dmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxE
aXNwbGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2Fs
ZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxp
bmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVz
KCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJl
dHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYy
MzJjZjg5YjllNGM5ODIzNzAwNi4uYzg3OTI3NDViOTM0ODAzZmRmNmJhZjFhYjRiMDY3Y2E4Yjky
YmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNp
bmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2Fs
ZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCkBAIC05ODEsNiArOTgzLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKICAg
ICAgICAgfSk7CisgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOworICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxh
eU5hbWVzUHJvdG90eXBlID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQu
dm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkpOworICAgICAgICB9KTsKICAgICBt
X2xvY2FsZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xODMyLDYg
KzE4NDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0
b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi4yNzc3
NGViYmM2MDM2ZjdhMzViZjM1ZWU4MWUxNGU3NmNhMDJjNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0
Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
Y29sbGF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CkBAIC03OTIsNiArNzkzLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJl
LmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogZGlzcGxheU5hbWVzU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0aGlzKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNWRj
ZjQyOGJmNDc3MTliNTk0YjY3MGNlNThkODc3N2QzNzkyNzI2MC4uOTAwYzAxNDVkMTdiNmZmNTU3
MDhjYWFiMzdlNzQwZGY3YjBmMWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC00ODgsNiArNDg4LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2Vt
Ymx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20g
bXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwg
dXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQg
c3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGlzcGxheU5hbWVzLCBmYWxzZSwgTm9y
bWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRpc3BsYXlOYW1lcyBjb25zdHJ1Y3Rvci4iKSBcCiAgICAg
dihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElm
IGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVu
ZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwg
IklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBh
IHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMTRiYTk3NzBiYTVhNTY1
MjJlYjViYTI4OGQ5MmY3MDA2ZTIzYjY1Li4wYTE0OWIzNmMzZmYzNGViNTFmM2QyZTZjNzFhNmVj
YzhmYTliNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NSw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3Iu
aCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxh
eU5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAgLTMwNiw2ICszMDcsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYKICAgICAs
IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29s
bGF0b3I+KCkpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlO
YW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVz
PigpKQogICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsTG9jYWxlPigpKQogICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJh
bFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxl
cz4oKSkKQEAgLTE0ODEsNiArMTQ4Myw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsCiAjZW5k
aWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JT
cGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3Bh
Y2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9y
bWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5
TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3Bs
YXlOYW1lcykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9j
YWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2NhbGUpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNl
LCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1Nw
YWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJlZDE2Njg4MDU2Njc5YjAzZWQwYzJi
OGI0ZDgwODgwNzVmMmZiMzMuLjhkNDdmMjAyYTNmZDEzZTNhYzNkZjI5NmRlMjY1ZjEyMmUwNzUz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNs
YXNzIElkZW50aWZpZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDb2xsYXRvcjsK
IGNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7CiBjbGFz
cyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxS
dWxlczsKQEAgLTQwMCw2ICs0MDEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2VuZGlmCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9ySGVhcENlbGxU
eXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBp
bnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CkBA
IC01NTcsNiArNTU5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxl
c1NwYWNlKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li41OTJiNjQy
ODc2ZDUyOGM0YjU4ZWMwN2RiNTAwNjYxOGJmNGI5ZmRmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2
LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEt
NDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LmN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25z
KToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LnJlZ2lvbk5hbWVzLnJlc29sdmVk
T3B0aW9ucyk6CisgICAgICAgIChvYmplY3QudG9TdHJpbmcpOgorICAgICAgICAqIHRlc3QyNjIv
Y29uZmlnLnlhbWw6CisKIDIwMjAtMDYtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1l
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMjhhOWU1MzFmNWFhNzllMGM4OTk5ZGE3OTQ5OGRkZGFjMGIzOGY3
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMK
QEAgLTAsMCArMSwxNzUgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNwbGF5TmFtZXM9
MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coKCkgPT4g
bmV3IEludGwuRGlzcGxheU5hbWVzLCBgVHlwZUVycm9yOiB0eXBlIG11c3QgYmUgYSBzdHJpbmdg
KQorCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiByZWdpb24gaW4gRW5nbGlzaAordmFyIHJlZ2lv
bk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7
CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7CitzaG91
bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVnaW9uTmFt
ZXMub2YoJ1VTJyksICJVbml0ZWQgU3RhdGVzIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZign
QkEnKSwgIkJvc25pYSAmIEhlcnplZ292aW5hIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZign
TU0nKSwgIk15YW5tYXIgKEJ1cm1hKSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiByZWdp
b24gaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5
TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFt
ZXMub2YoJzQxOScpLCAi5ouJ5LiB576O5rSyIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZign
QlonKSwgIuiynemHjOaWryIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICLnvo7l
nIsiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAi5rOi5aOr5bC85Lqe6IiH6LWr
5aGe5ZOl57at57SNIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIue3rOeUuCIp
OworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAn
cmVnaW9uJywgc3R5bGU6ICdzaG9ydCd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTkn
KSwgIkxhdGluIEFtZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVs
aXplIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMnKSwgIlVTIik7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2Yo
J01NJyksICJNeWFubWFyIik7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVz
KFsnZW4nXSwge3R5cGU6ICdyZWdpb24nLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdCWicpLCAiQmVsaXplIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMnKSwg
IlVTIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIik7CisKKy8vIEdldCBkaXNwbGF5IG5h
bWVzIG9mIGxhbmd1YWdlIGluIEVuZ2xpc2gKK3ZhciBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwu
RGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J2RlJyksICJHZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJD
YW5hZGlhbiBGcmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7
CitlbHNlCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0
aW9uYWwgQ2hpbmVzZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIkFt
ZXJpY2FuIEVuZ2xpc2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJD
aGluZXNlIChUYWl3YW4pIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdlIGlu
IFRyYWRpdGlvbmFsIENoaW5lc2UKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFt
ZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCdmcicpLCAi5rOV5paHIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aCcp
LCAi5Lit5paHIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAi5b635paHIik7
CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTog
J2xhbmd1YWdlJywgc3R5bGU6ICdzaG9ydCd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICJHZXJt
YW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVu
Y2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7CitlbHNlCisgICAg
c2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVz
ZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIlVTIEVuZ2xpc2giKTsK
K3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJDaGluZXNlIChUYWl3YW4pIik7
CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTog
J2xhbmd1YWdlJywgc3R5bGU6ICduYXJyb3cnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCdmcicpLCAiRnJlbmNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2Vy
bWFuIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmci1DQScpLCAiQ2FuYWRpYW4gRnJl
bmNoIik7CitpZiAoJHZtLmljdVZlcnNpb24oKSA8PSA2NikKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworZWxzZQorICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIlRyYWRpdGlvbmFsIENoaW5l
c2UiKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIp
OworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBzY3JpcHQgaW4gRW5nbGlzaAordmFyIHNjcmlw
dE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7
CisvLyBHZXQgc2NyaXB0IG5hbWVzCitzaG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0bicpLCAi
TGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKK3No
b3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisvLyBHZXQgZGlz
cGxheSBuYW1lcyBvZiBzY3JpcHQgaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorc2NyaXB0TmFtZXMg
PSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0J30pOwor
c2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIuaLieS4geaWhyIpOworc2hvdWxkQmUo
c2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIumYv+aLieS8r+aWhyIpOworc2hvdWxkQmUoc2NyaXB0
TmFtZXMub2YoJ0thbmEnKSwgIueJh+WBh+WQjSIpOworCitzY3JpcHROYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0Jywgc3R5bGU6ICdzaG9ydCd9KTsK
K3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2Ny
aXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2Yo
J0thbmEnKSwgIkthdGFrYW5hIik7CisKK3NjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5h
bWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJl
KHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMu
b2YoJ0FyYWInKSwgIkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwg
IkthdGFrYW5hIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4g
RW5nbGlzaAordmFyIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbidd
LCB7dHlwZTogJ2N1cnJlbmN5J30pOworLy8gR2V0IGN1cnJlbmN5IG5hbWVzCitzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIlVTIERvbGxhciIpOworc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignRVVSJyksICJFdXJvIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0Qn
KSwgIk5ldyBUYWl3YW4gRG9sbGFyIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlkn
KSwgIkNoaW5lc2UgWXVhbiIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICJK
YXBhbmVzZSBZZW4iKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBp
biBUcmFkaXRpb25hbCBDaGluZXNlCitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5h
bWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignVVNEJyksICLnvo7lhYMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VV
UicpLCAi5q2Q5YWDIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIuaWsOWP
sOW5oyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICLkurrmsJHluaMiKTsK
K3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAi5pel5ZyTIik7CisKKy8vIEdldCBk
aXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAorY3VycmVu
Y3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3kn
LCBzdHlsZTogJ3Nob3J0JyB9KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAi
JCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLigqwiKTsKK3Nob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiTlQkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVz
Lm9mKCdDTlknKSwgIkNOwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAi
wqUiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBFbmdsaXNo
IGluIG5hcnJvdworY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10s
IHt0eXBlOiAnY3VycmVuY3knLCBzdHlsZTogJ25hcnJvdycgfSk7CitzaG91bGRCZShjdXJyZW5j
eU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicp
LCAi4oKsIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIiQiKTsKK3Nob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFt
ZXMub2YoJ0pQWScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWicpLCAi
SlBaIik7IC8vIEZhbGxiYWNrIGNvZGUKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJlbmN5
TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFycm93
IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJjb2RlIn1gKTsKKworY3VycmVuY3lOYW1l
cyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knLCBzdHls
ZTogJ25hcnJvdycsIGZhbGxiYWNrOiAnbm9uZScgfSk7CitzaG91bGRCZShjdXJyZW5jeU5hbWVz
Lm9mKCdKUFonKSwgdW5kZWZpbmVkKTsgLy8gRmFsbGJhY2sgbm9uZQorc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVu
Iiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5vbmUifWAp
OworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAn
cmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCAiOTk5Iik7CitzaG91
bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7Imxv
Y2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoiY29k
ZSJ9YCk7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5
cGU6ICdyZWdpb24nLCBmYWxsYmFjazonbm9uZSd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9m
KCc5OTknKSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVz
LnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBl
IjoicmVnaW9uIiwiZmFsbGJhY2siOiJub25lIn1gKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdlbi1BQScpLCAiZW4tQUEiKTsKK3ZhciBvYmplY3QgPSB7CisgICAg
dG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAnZW4tQUEnOworICAgIH0KK307CitzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKG9iamVjdCksIG9iamVjdCk7CisKK2xhbmd1YWdlTmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFsbGJhY2s6
ICdub25lJ30pOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgdW5kZWZpbmVk
KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgdW5kZWZpbmVkKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbAppbmRleCBhNzlmMmRiZTM2MTY2ZjBiOGViYjk5OWRiODVjZjRlMTY0Yjk0ZGYxLi5l
NjM3MmZmOTI4M2JjZmI1NGJhZmE2ZDhiNWIxNmU0Y2FhOGUzM2M4IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CkBAIC0yNiw2ICsyNiw5IEBAIHNraXA6CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBl
cmlvZAogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mb3JtYXRSYW5nZQogICAgIC0gSW50bC5E
YXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCisgICAgIyBDdXJyZW50bHksIHRl
c3QyNjIgaGFzIGEgYnVnIHdpdGggSW50bC5EaXNwbGF5TmFtZXMsIGFuZCBleHBvc2luZyBpdCBj
YW4gY2F1c2UgbWFueSBmYWlsdXJlcyBpbiB2YXJpb3VzIEludGwgdGVzdHMuCisgICAgIyBXZSBz
aG91bGQgZW5hYmxlIGl0IGFmdGVyIGVuc3VyaW5nIHRlc3QyNjIgaXMgZml4ZWQuCisgICAgIyBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS90ZXN0MjYyL2lzc3Vlcy8yNjgyCiAgICAgLSBJbnRsLkRp
c3BsYXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRsLk51bWJlckZvcm1h
dC11bmlmaWVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403157</attachid>
            <date>2020-06-29 18:42:54 -0700</date>
            <delta_ts>2020-06-29 20:10:06 -0700</delta_ts>
            <desc>WIP, but it is now working</desc>
            <filename>bug-209779-20200629184253.patch</filename>
            <type>text/plain</type>
            <size>78678</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi44MDAyNzQ5MmQzZTc5OTQ2
NWMzZjE2MTcxMmE3ZmNmMTkyMTg4ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lczo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmluaXRp
YWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjpvZiBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVkT3B0aW9ucyBj
b25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAgICAgIChKU0M6
OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5oLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3I6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEaXNwbGF5
TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0
ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlRnVuY09mKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmguCisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVn
aW9uU3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlVmFyaWFudFN1YnRhZyk6CisgICAg
ICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlSWQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExv
Y2FsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAg
IChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5oOgorICAgICAgICAoSlNDOjppbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmRpc3BsYXlOYW1lc1N0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMC0wNi0yOCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFs
aXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBjMjU5MTA4NmViYWM3MjIwNjZhODY0NDVmYWMyMTFkZWY4MDMwNWUwLi5iZDVhMGFi
MTA2MTZhNDAyZGEyMDQ4ZDQzODNkN2YzNmY4OGE1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC03MCw2ICs3MCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1Rf
TFVUX1NPVVJDRVMKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBhNjVjZmQ1YTkwYmM4NWJjNzAyNTFjZjBkZGYx
NDE0NWRlOWVjZjA3Li5kMGQ4ZGZkYzQ4YTM1ZTgyMTdmN2MwMzQxYzBmZTAzYmI0M2UwNDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdApAQCAtMTM4LDYgKzEzOCw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggNzljZGU0ZWU1MDdlMTNmNmZmN2ZhNzgwMGRjNjQ1Y2JmODk0MWM2
Ny4uMmJkZjViMmM4MjJhNmQ5ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dApAQCAtMjcsNiArMjcsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LgogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0ludGxMb2NhbGVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwZjlmZWM1MWRjZTQ4Njg2ZmY4NzQ1YmVh
YTRiNWI1ZDViMTAzM2QuLmMxZmY1ZTYyNDczNTA2OGNmZjRjMTJlNGNmNDhjZGM0ZmEwYTY1N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTksNiAr
MTU5LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIEludGxDb2xsYXRvclByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAogICAg
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5o
IFwKICAgICBJbnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Zjg1MWMxMTcyYzZlMDRlYWI4Mzg4
YzIyODBkYTUwODQzYTYzYmRkLi5jMDY2M2Q3ZjYwZjk5ZGYxZDQxZGVmZWNkYzU2ZTljZTU0OTJj
YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxOSw2ICsxODE5LDkgQEAK
IAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAwREM4
N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzNEY5MzBFMjMyMkQ4ODIwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RjkzMEMy
MzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi87IH07CiAJCUUzNTA3MDhBMURDNDlC
QkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRT
aWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTcyNEFBNENC
NjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLzsgfTsKKwkJRTM1M0MxMUUyNEFBNENC
NzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzUzQzEyMTI0QUE0
Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMUIyNEFBNENCNzAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTM1NDYyMkIxQjYwNjVE
MTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1
Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlw
cGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1
NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1RDM4RjIy
NDQ2ODc3MDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEds
b2JhbEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTgyOCw2ICsxODMxLDggQEAKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUw
MzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzYzN0VF
OTIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8q
IExpbmtUaW1lQ29uc3RhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5ODE4IC8q
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NS
RW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTQ5ODUsNiArNDk5MCwxMiBAQAogCQlFMzRGOTMwQjIzMjJEODgxMDAyQjhEQjQgLyogSlNH
ZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW5l
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRGOTMwQzIzMjJEODgx
MDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1MDcwODkx
REM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAv
KiBJbnRsRGlzcGxheU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxEaXNwbGF5TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTgy
NEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTkyNEFBNENCNjAwM0ZCREYzIC8q
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQx
MDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9NR2V0dGVyU25p
cHBldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1RDM4RDIyNDQ2ODZCMDA4
RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxFeGVjdXRh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDAxLDYgKzUwMTIsOCBAQAog
CQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0
YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtUaW1lQ29u
c3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzODI0QUE2MjEx
MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzZCNDgwMTIzRTk1NzM4MDBFNEE2NkUgLyogVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RTIyRjhE
NjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjc2Nyw2ICs2NzgwLDggQEAKIAkJCQlBMTgxOTNFMjFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDcz
MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAq
LywKIAkJCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oICovLAorCQkJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJRTM2NUYzMzgyNEFBNjIxMTAwQzk5
MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTEyNTg0NkMx
QjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
IAkJCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCAqLywKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
Y3BwICovLApAQCAtNzI2Miw2ICs3Mjc3LDEyIEBACiAJCQkJQTE1ODdENkExQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTE1ODdENkIx
QjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oICovLAorCQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVz
LmNwcCAqLywKKwkJCQlFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1l
cy5oICovLAorCQkJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzUzQzExOTI0QUE0Q0I2MDAzRkJE
RjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8sCisJCQkJRTM1M0MxMUIyNEFB
NENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLywKIAkJCQlBM0FG
RjkyRDI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5jcHAgKi8sCiAJCQkJQTNBRkY5MkIy
NDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLywKIAkJCQlBM0FGRjkyRjI0NUEzQ0ZC
MDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTk3NTIsNiArOTc3
MywxMSBAQAogCQkJCUExNTg3RDc1MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDcyMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUUyNEFBNENCNzAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzY1RjMzQjI0
QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1ODQ2RTFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzA1MDJhMzRhNjY1YTg1MGNh
ZDZhZmY5Y2FmNWM0YzhkNzRjMjcwNS4uMWI0ZmJmN2NjYWM0N2U5ZTBkODI4NGQ2NjM1ODE4MTIx
Y2FlMGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODE0LDYgKzgxNCw5IEBA
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCitydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKK3J1bnRp
bWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZS5jcHAK
IHJ1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTG9jYWxlUHJv
dG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlhZGJhMjUyNjZi
YS4uM2E0OTdlMDc0YTkwZTBiMTE5NTg2YmZhMDhkNDgzZWIzMDk0MjMzMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zNCw2
ICszNCw3IEBACiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhEYXRlKSBcCiAgICAg
bWFjcm8oRGF0ZVRpbWVGb3JtYXQpIFwKKyAgICBtYWNybyhEaXNwbGF5TmFtZXMpIFwKICAgICBt
YWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0aW9u
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQxZGY5NDc5OTA4MzFlOWIyYjY0ZjkzNWYwNDQyZmI3NGQ3OWJl
YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzLmNwcApAQCAtMCwwICsxLDMzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisKKyNpbmNsdWRlICJJ
bnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lcykg
fTsKKworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFt
ZXModm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBJbnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9
CisKK1ZlY3RvcjxTdHJpbmc+IEludGxEaXNwbGF5TmFtZXM6OmxvY2FsZURhdGEoY29uc3QgU3Ry
aW5nJiwgc2l6ZV90KQoreworICAgIHJldHVybiB7IH07Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3ZvaWQgSW50bERpc3BsYXlOYW1lczo6
aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvIHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGds
b2JhbE9iamVjdCwgbG9jYWxlcyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zOworICAgIGlmIChvcHRpb25zVmFsdWUuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBn
bG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgZWxzZSB7
CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAg
ICAvLyBEb2VzIG5vdCBzZXQgZWl0aGVyIG9mICJjYSIgb3IgIm51Ii4KKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1pbnRsLWRpc3BsYXluYW1l
cy1jb25zdHJ1Y3RvcgorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsKKworICAgIFN0
cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZt
LnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwg
ImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIi
LCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgIG9wdC5hZGQoImxvY2FsZU1hdGNoZXIiX3MsIG1hdGNoZXIpOworCisgICAgYXV0byYgYXZh
aWxhYmxlTG9jYWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAg
YXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBudWxscHRyLCAwLCBsb2NhbGVEYXRhKTsKKworICAg
IG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKKyAgICBpZiAobV9sb2NhbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3Mp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0
eWxlLCB7ICJuYXJyb3ciLCAic2hvcnQiLCAibG9uZyIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVy
IFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiLCAibG9uZyIpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHN0eWxlU3RyaW5nID09ICJu
YXJyb3ciX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6TmFycm93OworICAgIGVsc2UgaWYg
KHN0eWxlU3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpTaG9y
dDsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAibG9uZyJfcykKKyAgICAgICAgbV9zdHls
ZSA9IFN0eWxlOjpMb25nOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJsYW5ndWFnZSIsICJyZWdpb24i
LCAic2NyaXB0IiwgImN1cnJlbmN5IiB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdl
XCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiIsIG51bGxwdHIpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHR5cGVTdHJp
bmcuaXNOdWxsKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0eXBlIG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgIGlmICh0eXBlU3RyaW5nID09ICJsYW5n
dWFnZSJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6TGFuZ3VhZ2U7CisgICAgZWxzZSBpZiAo
dHlwZVN0cmluZyA9PSAicmVnaW9uIl9zKQorICAgICAgICBtX3R5cGUgPSBUeXBlOjpSZWdpb247
CisgICAgZWxzZSBpZiAodHlwZVN0cmluZyA9PSAic2NyaXB0Il9zKQorICAgICAgICBtX3R5cGUg
PSBUeXBlOjpTY3JpcHQ7CisgICAgZWxzZSBpZiAodHlwZVN0cmluZyA9PSAiY3VycmVuY3kiX3Mp
CisgICAgICAgIG1fdHlwZSA9IFR5cGU6OkN1cnJlbmN5OworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcgZmFsbGJhY2tTdHJpbmcgPSBpbnRsU3Ry
aW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImZhbGxiYWNrIiksIHsgImNvZGUiLCAibm9uZSIgfSwgImZhbGxiYWNrIG11c3QgYmUgZWl0
aGVyIFwiY29kZVwiIG9yIFwibm9uZVwiIiwgImNvZGUiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmIChmYWxsYmFja1N0cmluZyA9PSAiY29kZSJfcykK
KyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpDb2RlOworICAgIGVsc2UgaWYgKGZhbGxi
YWNrU3RyaW5nID09ICJub25lIl9zKQorICAgICAgICBtX2ZhbGxiYWNrID0gRmFsbGJhY2s6Ok5v
bmU7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisgICAgVURpc3BsYXlDb250ZXh0IGNvbnRl
eHRzW10gPSB7CisgICAgICAgIC8vIGVuX0dCIGRpc3BsYXlzIGFzICdFbmdsaXNoIChVbml0ZWQg
S2luZ2RvbSknIChTdGFuZGFyZCBOYW1lcykgb3IgJ0JyaXRpc2ggRW5nbGlzaCcgKERpYWxlY3Qg
TmFtZXMpLgorICAgICAgICAvLyBXZSB1c2UgRGlhbGVjdCBOYW1lcyBoZXJlLCBhbGlnbmVkIHRv
IHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYyBkcmFmdCBhbmQgVjgncyBiZWhhdmlvci4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMj
bGFuZ3VhZ2UtZGlzcGxheS1uYW1lcworICAgICAgICBVRElTUENUWF9ESUFMRUNUX05BTUVTLAor
CisgICAgICAgIC8vIENhcGl0YWlsaXphdGlvbiBtb2RlIGNhbiBiZSBwaWNrZWQgZnJvbSBzZXZl
cmFsIG9wdGlvbnMuIFBvc3NpYmx5IGVpdGhlciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9OT05F
IG9yIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FIGlzCisgICAgICAgIC8v
IHByZWZlcmFibGUgaW4gSW50bC5EaXNwbGF5TmFtZXMuIFdlIHVzZSBVRElTUENUWF9DQVBJVEFM
SVpBVElPTl9OT05FIG5vdCB0byBjaGFuZ2UgYW55dGhpbmcgZnJvbSBJQ1UgZGF0YWJhc2UuCisg
ICAgICAgIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUsCisKKyAgICAgICAgLy8gTmFycm93
IGJlY29tZXMgVURJU1BDVFhfTEVOR1RIX1NIT1JULiBCdXQgaW4gY3VycmVuY3kgY2FzZSwgd2Ug
aGFuZGxlIGRpZmZlcmVudGx5IGluc3RlYWQgb2YgdXNpbmcgVUxvY2FsZURpc3BsYXlOYW1lcy4K
KyAgICAgICAgbV9zdHlsZSA9PSBTdHlsZTo6TG9uZyA/IFVESVNQQ1RYX0xFTkdUSF9GVUxMIDog
VURJU1BDVFhfTEVOR1RIX1NIT1JULAorCisgICAgICAgIC8vIEFsd2F5cyBkaXNhYmxlIElDVSBT
VUJTVElUVVRFIHNpbmNlIGl0IGRvZXMgbm90IG1hdGNoIGFnYWluc3Qgd2hhdCB0aGUgc3BlYyBk
ZWZpbmVzLiBJQ1UgaGFzIHNvbWUgc3BlY2lhbCBzdWJzdGl0dXRlIHJ1bGVzLCBmb3IgZXhhcG1s
ZSwgbGFuZ3VhZ2UgImVuLUFBIgorICAgICAgICAvLyByZXR1cm5zICJFbmdsaXNoIChBQSkiICh3
aGlsZSBBQSBjb3VudHJ5IGNvZGUgaXMgbm90IGRlZmluZWQpLCBidXQgd2Ugd291bGQgbGlrZSB0
byByZXR1cm4gZWl0aGVyIGlucHV0IHZhbHVlIG9yIHVuZGVmaW5lZCwgc28gd2UgZG8gbm90IHdh
bnQgdG8gaGF2ZSBJQ1Ugc3Vic3RpdHV0ZSBydWxlcy4KKyAgICAgICAgVURJU1BDVFhfTk9fU1VC
U1RJVFVURSwKKyAgICB9OworICAgIG1fbG9jYWxlQ1N0cmluZyA9IG1fbG9jYWxlLnV0ZjgoKTsK
KyAgICBtX2Rpc3BsYXlOYW1lcyA9IHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVz
LCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4odWxkbl9vcGVuRm9yQ29udGV4dChtX2xvY2Fs
ZUNTdHJpbmcuZGF0YSgpLCBjb250ZXh0cywgV1RGX0FSUkFZX0xFTkdUSChjb250ZXh0cyksICZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3BsYXlO
YW1lcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK0pTVmFsdWUgSW50bERpc3Bs
YXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFs
dWUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZGlzcGxheU5hbWVzKTsKKworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb2RlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVmVjdG9y
PFVDaGFyLCAzMj4gYnVmZmVyOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworCisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpDdXJyZW5jeSkgeworICAgICAgICAvLyBXZSBk
byBub3QgdXNlIHVsZG5fa2V5VmFsdWVEaXNwbGF5TmFtZSArICJjdXJyZW5jeSIuIFRoaXMgaXMg
YmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnMuCisgICAgICAgIC8vICAgICAxLiBJQ1Ug
ZG9lcyBub3QgcmVzcGVjdCBVRElTUENUWF9MRU5HVEhfRlVMTCAvIFVESVNQQ1RYX0xFTkdUSF9T
SE9SVCBpbiBpdHMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vICAgICAyLiBUaGVyZSBpcyBu
byB3YXkgdG8gc2V0ICJuYXJyb3ciIHN0eWxlIGluIFVMb2NhbGVEaXNwbGF5TmFtZXMgd2hpbGUg
Y3VycmVuY3kgaGF2ZSAibmFycm93IiBzeW1ib2wgc3R5bGUuCisKKyAgICAgICAgLy8gQ2Fub25p
Y2FsQ29kZUZvckRpc3BsYXlOYW1lcworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisg
ICAgICAgIC8vIDUuIElmICEgSXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpIGlzIGZhbHNl
LCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aXBvbi4KKyAgICAgICAgaWYgKCFpc1dlbGxGb3Jt
ZWRDdXJyZW5jeUNvZGUoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kg
Y29kZSJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAgICAgICAg
Ly8gNi4gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2Fz
ZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICBjb2RlID0gY29kZS5jb252ZXJ0VG9BU0NJ
SVVwcGVyY2FzZSgpOworCisgICAgICAgIFVDdXJyTmFtZVN0eWxlIHN0eWxlID0gVUNVUlJfTE9O
R19OQU1FOworICAgICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6
TG9uZzoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUgPSBV
Q1VSUl9TWU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxl
OjpOYXJyb3c6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX05BUlJPV19TWU1CT0xfTkFNRTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvbnN0IFVDaGFyIGN1cnJl
bmN5WzRdID0geworICAgICAgICAgICAgY29kZVswXSwKKyAgICAgICAgICAgIGNvZGVbMV0sCisg
ICAgICAgICAgICBjb2RlWzJdLAorICAgICAgICAgICAgdSdcMCcKKyAgICAgICAgfTsKKyAgICAg
ICAgLy8gVGhlIHJlc3VsdCBvZiB1Y3Vycl9nZXROYW1lIGlzIHN0YXRpYyBzdHJpbmcgc28gdGhh
dCB3ZSBkbyBub3QgbmVlZCB0byBmcmVlIHRoZSByZXN1bHQuCisgICAgICAgIGludDMyX3QgbGVu
Z3RoID0gMDsKKyAgICAgICAgY29uc3QgVUNoYXIqIHJlc3VsdCA9IHVjdXJyX2dldE5hbWUoY3Vy
cmVuY3ksIG1fbG9jYWxlQ1N0cmluZy5kYXRhKCksIHN0eWxlLCBudWxscHRyLCAmbGVuZ3RoLCAm
c3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkg
YSBkaXNwbGF5IG5hbWVzLiJfcyk7CisgICAgICAgIC8vIHVjdXJyX2dldE5hbWUgcmV0dXJucyBV
X1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3VuZC4g
QnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlzIHJldHVybmVkIGV2ZW4gaWYKKyAgICAgICAg
Ly8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUgc2FtZTogbmFycm93ICJVU0QiIGlz
ICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIHNpbmNlIHNob3J0ICJVU0QiIGlzIGFs
c28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCisgICAgICAgIC8vIHJlc3VsdCA9PSBjdXJyZW5jeSB0
byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBmYWlsZWQgdG8gZmluZCB0aGUgY29ycmVzcG9u
ZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRlciBjb21wYXJpc29uIGlzIGVuc3VyZWQgYnkK
KyAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KKyAgICAgICAgLy8gPiBSZXR1cm5zIHBvaW50
ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiBJZiB0aGUgcmVzb3VyY2UgZGF0
YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVuY3knIGl0c2Vs
ZiBpcyByZXR1cm5lZC4KKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
ZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mCisgICAgICAg
IGlmIChzdGF0dXMgPT0gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgJiYgcmVzdWx0ID09IGN1cnJl
bmN5KQorICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNrOjpOb25lKSA/
IGpzVW5kZWZpbmVkKCkgOiBjb2RlVmFsdWU7CisgICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwg
U3RyaW5nKHJlc3VsdCwgbGVuZ3RoKSk7CisgICAgfQorCisgICAgYXV0byB1dGY4Q29kZSA9IGNv
ZGUudHJ5R2V0VXRmOCgpOworICAgIGlmICghdXRmOENvZGUpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBjb25zdCBjaGFyKiByYXdTdHJpbmcgPSB1dGY4Q29kZS52YWx1ZSgpLmRhdGEo
KTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZTogewor
ICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3Nl
Yy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBu
b3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJh
bmdlRXJyb3IgZXhjZXB0aXBvbi4KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVMYW5ndWFnZUlkKGNv
ZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIH0KKworICAgICAgICAvLyBEbyBub3QgdXNlIHVsZG5fbGFuZ3VhZ2VEaXNw
bGF5TmFtZSBzaW5jZSBpdCBpcyBub3QgZXhwZWN0ZWQgb25lIGZvciB0aGlzICJsYW5ndWFnZSIg
dHlwZS4gSXQgcmV0dXJucyAiZW4tVVMiIGZvciAiZW4tVVMiIGNvZGUsIGluc3RlYWQgb2YgIkFt
ZXJpY2FuIEVuZ2xpc2giLgorICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHJhd1N0
cmluZywgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6UmVn
aW9uOiB7CisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXlu
YW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gSWYgY29k
ZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiwg
dGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlwb24uCisgICAgICAgIGlmICghaXNVbmljb2RlUmVn
aW9uU3VidGFnKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3MpOworICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMu
Z2V0KCksIHJhd1N0cmluZywgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1p
bnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICAg
ICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3NjcmlwdF9zdWJ0YWcg
cHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlwb24uCisgICAgICAgIGlmICgh
aXNVbmljb2RlU2NyaXB0U3VidGFnKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWci
X3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9zY3JpcHREaXNwbGF5TmFtZSwgbV9k
aXNwbGF5TmFtZXMuZ2V0KCksIHJhd1N0cmluZywgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
CisgICAgICAgIC8vIHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIHVsZG5fcmVnaW9uRGlzcGxheU5h
bWUsIGFuZCB1bGRuX3NjcmlwdERpc3BsYXlOYW1lIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRf
RVJST1IgaWYgdGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuCisgICAgICAgIC8vIFdlIHNo
b3VsZCByZXR1cm4gdW5kZWZpbmVkIGlmIGZhbGxiYWNrIGlzICJub25lIi4gT3RoZXJ3aXNlLCB3
ZSBzaG91bGQgcmV0dXJuIGlucHV0IHZhbHVlLgorICAgICAgICAvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5
cGUub2YKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisg
ICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRl
ZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWVzLiJfcyk7Cisg
ICAgfQorICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3Bs
YXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitKU09iamVjdCogSW50bERpc3BsYXlO
YW1lczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9j
YWxlKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHls
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOworICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCB0eXBlU3RyaW5nKG1fdHlwZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIGZhbGxiYWNrU3RyaW5nKG1fZmFsbGJhY2spKSk7CisgICAgcmV0dXJuIG9wdGlv
bnM7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpzdHlsZVN0cmluZyhTdHls
ZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6TmFycm93
OgorICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFN0eWxlOjpTaG9ydDoKKyAg
ICAgICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIFN0eWxlOjpMb25nOgorICAgICAgICBy
ZXR1cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5
TmFtZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgVHlwZTo6TGFuZ3VhZ2U6CisgICAgICAgIHJldHVybiAibGFuZ3VhZ2UiX3M7CisgICAg
Y2FzZSBUeXBlOjpSZWdpb246CisgICAgICAgIHJldHVybiAicmVnaW9uIl9zOworICAgIGNhc2Ug
VHlwZTo6U2NyaXB0OgorICAgICAgICByZXR1cm4gInNjcmlwdCJfczsKKyAgICBjYXNlIFR5cGU6
OkN1cnJlbmN5OgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisK
K0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBm
YWxsYmFjaykKK3sKKyAgICBzd2l0Y2ggKGZhbGxiYWNrKSB7CisgICAgY2FzZSBGYWxsYmFjazo6
Q29kZToKKyAgICAgICAgcmV0dXJuICJjb2RlIl9zOworICAgIGNhc2UgRmFsbGJhY2s6Ok5vbmU6
CisgICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZGZmYmZhZWYxN2ViMGUyOWZjM2Y5OTAyNTY3MzJkYTY3MDQzMmZk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lcy5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91bGRuYW1lcy5oPgor
I2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBJbnRsRGlzcGxheU5hbWVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2Fz
dDxJbnRsRGlzcGxheU5hbWVzKj4oY2VsbCktPkludGxEaXNwbGF5TmFtZXM6On5JbnRsRGlzcGxh
eU5hbWVzKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bERpc3BsYXlOYW1lc1NwYWNlPG1vZGU+
KCk7CisgICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXMqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lk
IGluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXNW
YWx1ZSwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpOworCisgICAgSlNWYWx1ZSBvZihKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzKFZN
JiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiwgc2l6ZV90KTsKKwor
ICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgTmFycm93LCBTaG9ydCwgTG9uZyB9Owor
ICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBMYW5ndWFnZSwgUmVnaW9uLCBTY3JpcHQs
IEN1cnJlbmN5IH07CisgICAgZW51bSBjbGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBO
b25lIH07CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmcoVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBmYWxsYmFja1N0cmluZyhGYWxsYmFjayk7CisKKyAgICB1c2luZyBVTG9jYWxlRGlz
cGxheU5hbWVzRGVsZXRlciA9IElDVURlbGV0ZXI8dWxkbl9jbG9zZT47CisgICAgc3RkOjp1bmlx
dWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPiBt
X2Rpc3BsYXlOYW1lczsKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgQ1N0cmluZyBtX2xvY2Fs
ZUNTdHJpbmc7CisgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpMb25nIH07CisgICAgVHlwZSBt
X3R5cGUgeyBUeXBlOjpMYW5ndWFnZSB9OworICAgIEZhbGxiYWNrIG1fZmFsbGJhY2sgeyBGYWxs
YmFjazo6Q29kZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMzdjMGVkM2QwODJiNjM2MzE1NDViNjYzZDBhODc0ODg5M2Iz
Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuaCIKKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFi
bGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CitAZW5kCisqLworCitJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBhdXRv
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3BsYXlO
YW1lc1Byb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUq
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSwgY2FsbEludGxEaXNwbGF5TmFtZXMsIGNvbnN0cnVjdEludGxEaXNwbGF5TmFt
ZXMpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3Rv
dHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkRpc3BsYXlOYW1lcyJfcywg
TmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRp
c3BsYXlOYW1lc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGRpc3BsYXlOYW1lc1Byb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVj
dChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5l
d1RhcmdldCA9PSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3Qt
PmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9u
UmVhbG0odm0sIG5ld1RhcmdldCktPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSW50bERpc3BsYXlOYW1lcyogZGlz
cGxheU5hbWVzID0gSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChkaXNwbGF5TmFtZXMpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGRpc3Bs
YXlOYW1lcy0+aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGlzcGxheU5hbWVzKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1JbnRsLkRpc3BsYXlOYW1lcworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJEaXNwbGF5TmFtZXMiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxl
c09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVk
TG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisgICAgLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5
TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxl
cyBiZSAlRGlzcGxheU5hbWVzJS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxl
TG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2Fs
aXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2Nh
bGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2YWls
YWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7
Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ0NGFlMWU4YTgyNWI4NmY3YTdjOGE5NmM1MDFiNDRmYmNhZDg4YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTsKKwor
Y2xhc3MgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
cHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmU4ODdiYTVkNjhlYzFlZjMwMGY4
MDcyMGZhZmNmYzEzMGFmMmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5EaXNwbGF5TmFtZXMi
LCAmQmFzZTo6c19pbmZvLCAmZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSkgfTsKKworLyogU291
cmNlIGZvciBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGlzcGxheU5h
bWVzUHJvdG90eXBlVGFibGUKKyAgb2YgICAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlRnVuY09mICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29s
dmVkT3B0aW9ucyAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMg
ICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6Oklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlw
ZS5vZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMgPSBq
c0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2Yg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlz
cGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGRpc3BsYXlOYW1lcy0+b2YoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFt
ZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMg
PSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUu
b2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGlzcGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3
ZTU4M2E2NzU3NDRlNDE1YTQ4NWU4M2VmMWYzNTg2ZTliMTI0MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAg
IHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4
IDgwZTY0ZjFhYjE3OTcxMzhiMjUyYjhmY2QxMDcxZDc2YmRkNDYyOWEuLmIwOWYyZmUyYzlkMjQz
NTkyMWE3MmVmMjY4NWU0NjhhMzdmOGU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGUuY3BwCkBAIC0xOTksMTkgKzE5OSw4NSBAQCBzdGF0aWMgYm9vbCBp
c1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKIH0KIAogLy8gdW5pY29k
ZV9zY3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOwotc3RhdGljIGJvb2wgaXNVbmljb2RlU2NyaXB0
U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQorYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3Ry
aW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0
cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKIH0KIAogLy8gdW5p
Y29kZV9yZWdpb25fc3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Ci1zdGF0aWMgYm9vbCBp
c1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCitib29sIGlzVW5pY29kZVJl
Z2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBhdXRvIGxlbmd0aCA9IHN0cmlu
Zy5sZW5ndGgoKTsKICAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKICAgICAgICAgfHwgKGxlbmd0aCA9PSAzICYm
IHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7CiB9CiAKKy8v
IHVuaWNvZGVfdmFyaWFudF9zdWJ0YWcgPSAoYWxwaGFudW17NSw4fSB8IGRpZ2l0IGFscGhhbnVt
ezN9KSA7CitzdGF0aWMgYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGlmIChsZW5n
dGggPj0gNSAmJiBsZW5ndGggPD0gOCkKKyAgICAgICAgcmV0dXJuIHN0cmluZy5pc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7CisgICAgcmV0dXJuIGxlbmd0aCA9
PSA0ICYmIGlzQVNDSUlEaWdpdChzdHJpbmdbMF0pICYmIHN0cmluZy5zdWJzdHJpbmcoMSkuaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOworfQorCisvLyB1bmlj
b2RlX2xhbmd1YWdlX2lkID0KKy8vICAgICAicm9vdCIKKy8vICAgICB8ICh1bmljb2RlX2xhbmd1
YWdlX3N1YnRhZyAoc2VwIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyk/IHwgdW5pY29kZV9zY3JpcHRf
c3VidGFnKSAoc2VwIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyk/IChzZXAgdW5pY29kZV92YXJpYW50
X3N1YnRhZykqIDsKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICBhdXRvIGZpbmRTZXBhcmF0b3IgPSBbXShTdHJpbmdWaWV3IHZpZXcpIC0+IE9wdGlv
bmFsPHVuc2lnbmVkPiB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IHZpZXcubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9
IHZpZXdbaW5kZXhdOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLScgfHwgY2hhcmFj
dGVyID09ICdfJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworCisgICAgVmVjdG9yPFN0cmluZ1Zp
ZXcsIDI+IHN1YnRhZ3M7CisgICAgU3RyaW5nVmlldyByZW1haW5pbmcgPSBzdHJpbmc7CisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VwYXJhdG9yUG9zaXRpb24gPSBmaW5k
U2VwYXJhdG9yKHJlbWFpbmluZykpIHsKKyAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKHJlbWFp
bmluZy5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24udmFsdWUoKSkpOworICAgICAgICAg
ICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnN1YnN0cmluZyhzZXBhcmF0b3JQb3NpdGlvbi52YWx1
ZSgpICsgMSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBzdWJ0
YWdzLmFwcGVuZChyZW1haW5pbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NF
UlQoc3VidGFncy5zaXplKCkgPj0gMSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICBp
ZiAoc3VidGFncy5zaXplKCkgPT0gMSkgeworICAgICAgICAvLyBPbmx5IG9uZSBzdWJ0YWcuIFNv
IGl0IG11c3QgYmUgbGFuZ3VhZ2Ugb3Igc2NyaXB0LgorICAgICAgICByZXR1cm4gc3VidGFnc1tj
dXJzb3JdID09ICJyb290Il9zIHx8IGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKHN1YnRhZ3NbY3Vy
c29yXSkgfHwgaXNVbmljb2RlU2NyaXB0U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSk7CisgICAgfQor
CisgICAgQVNTRVJUKHN1YnRhZ3Muc2l6ZSgpID49IDIpOworICAgIGlmIChpc1VuaWNvZGVMYW5n
dWFnZVN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKSB7CisgICAgICAgICsrY3Vyc29yOworICAgICAg
ICBpZiAoaXNVbmljb2RlU2NyaXB0U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICAg
ICArK2N1cnNvcjsKKyAgICB9IGVsc2UgaWYgKGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdz
W2N1cnNvcl0pKQorICAgICAgICArK2N1cnNvcjsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChjdXJzb3IgPT0gc3VidGFncy5zaXplKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChpc1VuaWNvZGVSZWdpb25TdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkK
KyAgICAgICAgKytjdXJzb3I7CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoY3Vy
c29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGlmICghaXNVbmljb2RlVmFyaWFudFN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICArK2N1cnNvcjsKKyAgICB9Cit9CisKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUKIHZvaWQgSW50bExvY2FsZTo6aW5p
dGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhZ1Zh
bHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxMb2NhbGUuaAppbmRleCBhZmI2OWEyZDFmZTVhYzI2MjUwN2U5YTljNDkwYTk0Y2Fm
YzBmZWNhLi4zZDU0OTAzZDBiM2ZhNjEyMGEyNzg2YmVlYzk2MTVkOGYzMGE5ZWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCkBAIC05MCw0ICs5MCw4IEBA
IGNsYXNzIEludGxMb2NhbGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAg
VHJpU3RhdGUgbV9udW1lcmljIHsgVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUgfTsKIH07CiAKK2Jv
b2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVSZWdp
b25TdWJ0YWcoU3RyaW5nVmlldyk7Citib29sIGlzVW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmll
dyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCBjMzhmZTk5ZTJmNGYwYTNkYjJmM2Fi
MTc5OTIyZWJhODM4YWEyOTM4Li4xMTVhODBhODVkNzVmZTc2NmRlZTIzNTg2ZTljMTcxMTI3YTlh
YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcApAQCAtNDQsNiArNDQsMTEgQEAgbmFtZXNwYWNlIEludGxOdW1iZXJGb3JtYXRJ
bnRlcm5hbCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciogcmVsZXZhbnRFeHRlbnNpb25LZXlzWzFd
ID0geyAibnUiIH07CiB9CiAKK2Jvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmluZ1Zp
ZXcgY3VycmVuY3kpCit7CisgICAgcmV0dXJuIGN1cnJlbmN5Lmxlbmd0aCgpID09IDMgJiYgY3Vy
cmVuY3kuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Cit9CisKIHN0cnVj
dCBJbnRsTnVtYmVyRm9ybWF0RmllbGQgewogICAgIGludDMyX3QgdHlwZTsKICAgICBzaXplX3Qg
c2l6ZTsKQEAgLTIxMSw3ICsyMTYsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxp
emVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFN0
cmluZyBjdXJyZW5jeSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwgeyB9LCBudWxscHRyLCBudWxs
cHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICgh
Y3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMg
fHwgIWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7Cisg
ICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGN1cnJlbmN5KSkgewogICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBj
b2RlIl9zKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCA0MzA0YjIyYThj
NmE1MTFmNzRlMmJkY2IwNTM4OGQ1YjY1YjczNDc2Li4zZDIyZDMyYzdlOTJiMDgxMjMyNDJlZTQ5
NDFiM2RlMDU5M2E4OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5oCkBAIC05OSw0ICs5OSw2IEBAIGNsYXNzIEludGxOdW1iZXJGb3Jt
YXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgYm9vbCBtX3VzZUdyb3Vw
aW5nIHsgdHJ1ZSB9OwogfTsKIAorYm9vbCBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoU3RyaW5n
Vmlldyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCAxZGZhMjA4MmFmMTQyM2Y0ZDNlZDNlMTMzMGE5NDk2
M2JlZWE0MzAxLi5jMzJlODRjOTc0MTIzMDRlM2E1NzAyMTNmMjZhNjk3MjBhZTJiMzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMzUsNiAr
MzUsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIklu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxM
b2NhbGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJ
bnRsTG9jYWxlUHJvdG90eXBlLmgiCkBAIC03Nyw2ICs3OSwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBj
cmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkK
ICAgICByZXR1cm4gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgSW50bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICByZXR1cm4gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kaXNwbGF5TmFtZXNTdHJ1Y3R1
cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3Jl
YXRlTG9jYWxlQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIElu
dGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CkBAIC0x
NTIsNiArMTYxLDggQEAgSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKgogdm9pZCBJbnRsT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxEaXNwbGF5TmFtZXMoKSkK
KyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PkRpc3BsYXlOYW1lcywgY3JlYXRlRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iodm0sIHRoaXMpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAK
IFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggZWQ5YzFlMTBiNmFkYTRmZDlkNDI1NzQ2
MDZjZGQ5MmE5MTIyMzliNy4uZjkwNTk2ZjVmMWQ0MGNmNTEwYTgxZjNkOTcyNWViZTMxMDZkNGE5
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtNjAs
NiArNjAsNyBAQCBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCopOwogY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7CiBpbmxpbmUgY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1
cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVy
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7
IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJs
ZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzZWEzMGRiOWUyZTRk
NTM4ZGE4ZjIzMmNmODliOWU0Yzk4MjM3MDA2Li5jODc5Mjc0NWI5MzQ4MDNmZGY2YmFmMWFiNGIw
NjdjYThiOTJiYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC03Myw2ICs3Myw4IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9y
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAi
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1l
cy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJ
bnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXQuaCIKQEAgLTk4MSw2ICs5ODMsMTIgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlw
ZSkpOwogICAgICAgICB9KTsKKyAgICBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5pbml0TGF0ZXIo
CisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
KiBkaXNwbGF5TmFtZXNQcm90b3R5cGUgPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVh
dGUoaW5pdC52bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
ICAgICAgICAgICAgaW5pdC5zZXQoSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgZGlzcGxheU5hbWVzUHJvdG90eXBlKSk7CisgICAgICAgIH0p
OwogICAgIG1fbG9jYWxlU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAg
LTE4MzIsNiArMTg0MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1
bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9kaXNwbGF5TmFtZXNT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9sb2NhbGVTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IGRkYzMwYjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0
YzEuLjI3Nzc0ZWJiYzYwMzZmN2EzNWJmMzVlZTgxZTE0ZTc2Y2EwMmM2MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjkyLDYgKzI5
Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBt
X2RlZmF1bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbG9jYWxlU3RydWN0
dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJl
ckZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKQEAgLTc5Miw2ICs3OTMsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0
dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBkaXNwbGF5TmFtZXNTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBT
dHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbG9jYWxlU3RydWN0dXJlKCkg
eyByZXR1cm4gbV9sb2NhbGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBw
bHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCA1ZGNmNDI4YmY0NzcxOWI1OTRiNjcwY2U1OGQ4Nzc3ZDM3OTI3MjYwLi45MDBjMDE0NWQx
N2I2ZmY1NTcwOGNhYWIzN2U3NDBkZjdiMGYxYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4OCw2ICs0ODgsNyBAQCBjb25zdGV4cHIgYm9v
bCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0
aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywg
ZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAg
dihCb29sLCB1c2VCaWdJbnQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxl
IEJpZ0ludCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxEaXNwbGF5TmFtZXMsIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGlzcGxheU5hbWVzIGNvbnN0cnVjdG9yLiIp
IFwKICAgICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFs
LCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2Zp
bGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0g
dG8gYmUgdW5kZWNpZGVkLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVj
dCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikgXAogICAgIHYoQm9vbCwgZm9yY2VNaW5p
Vk1Nb2RlLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgaXQgd2lsbCBmb3JjZSBtaW5pIFZNIG1v
ZGUgb24uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDExNGJhOTc3
MGJhNWE1NjUyMmViNWJhMjg4ZDkyZjcwMDZlMjNiNjUuLjBhMTQ5YjM2YzNmZjM0ZWI1MWYzZDJl
NmM3MWE2ZWNjOGZhOWI1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxD
b2xsYXRvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIklu
dGxEaXNwbGF5TmFtZXMuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgpAQCAtMzA2LDYg
KzMwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRp
ZgogICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxDb2xsYXRvcj4oKSkKICAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCisgICAgLCBpbnRs
RGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNw
bGF5TmFtZXM+KCkpCiAgICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCiAgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBp
bnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBs
dXJhbFJ1bGVzPigpKQpAQCAtMTQ4MSw2ICsxNDgzLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBj
YWwKICNlbmRpZgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxD
b2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRv
cikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVG
b3JtYXRTcGFjZSwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0
ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLmdldCgpLCBJ
bnRsRGlzcGxheU5hbWVzKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExvY2Fs
ZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9y
bWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJG
b3JtYXQpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJh
bFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJh
bFJ1bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYmVkMTY2ODgwNTY2Nzli
MDNlZDBjMmI4YjRkODA4ODA3NWYyZmIzMy4uOGQ0N2YyMDJhM2ZkMTNlM2FjM2RmMjk2ZGUyNjVm
MTIyZTA3NTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMjYsNiArMTI2
LDcgQEAgY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENv
bGxhdG9yOwogY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50bERpc3BsYXlOYW1l
czsKIGNsYXNzIEludGxMb2NhbGU7CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50
bFBsdXJhbFJ1bGVzOwpAQCAtNDAwLDYgKzQwMSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAj
ZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JI
ZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERh
dGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxs
VHlwZTsKQEAgLTU1Nyw2ICs1NTksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1Nw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZv
cm1hdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBs
dXJhbFJ1bGVzU3BhY2UpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGE2MzU5N2Y0YTIwZWQ2MWU2NmYyODk4OTg1ZGVmN2Q2NTVmMDljMTku
LjU5MmI2NDI4NzZkNTI4YzRiNThlYzA3ZGI1MDA2NjE4YmY0YjlmZGYgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjAtMDYtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbRUNNQS00MDJdIEltcGxlbWVudCBJbnRsLkRpc3BsYXlOYW1lcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kaXNwbGF5bmFt
ZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoc2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkuY3VycmVuY3lOYW1lcy5yZXNvbHZl
ZE9wdGlvbnMpOgorICAgICAgICAoc2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkucmVnaW9uTmFtZXMu
cmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKG9iamVjdC50b1N0cmluZyk6CisgICAgICAgICog
dGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlz
cGxheW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyOGE5ZTUzMWY1YWE3OWUwYzg5OTlkYTc5NDk4ZGRk
YWMwYjM4ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXlu
YW1lcy5qcwpAQCAtMCwwICsxLDE3NSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlSW50bERpc3Bs
YXlOYW1lcz0xIikKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1l
c3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBp
ZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsK
KyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJv
dygoKSA9PiBuZXcgSW50bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJyb3I6IHR5cGUgbXVzdCBiZSBh
IHN0cmluZ2ApCisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHJlZ2lvbiBpbiBFbmdsaXNoCit2
YXIgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3Jl
Z2lvbid9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2Ei
KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignVVMnKSwgIlVuaXRlZCBTdGF0ZXMiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdCQScpLCAiQm9zbmlhICYgSGVyemVnb3ZpbmEiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdNTScpLCAiTXlhbm1hciAoQnVybWEpIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVz
IG9mIHJlZ2lvbiBpbiBUcmFkaXRpb25hbCBDaGluZXNlCityZWdpb25OYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdyZWdpb24nfSk7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignNDE5JyksICLmi4nkuIHnvo7mtLIiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdCWicpLCAi6LKd6YeM5pavIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMn
KSwgIue+juWciyIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0JBJyksICLms6Llo6vlsLzk
up7oiIfotavloZ7lk6Xntq3ntI0iKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAi
57es55S4Iik7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwg
e3R5cGU6ICdyZWdpb24nLCBzdHlsZTogJ3Nob3J0J30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0Ja
JyksICJCZWxpemUiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVVMiKTsKK3No
b3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhIik7CitzaG91bGRCZShyZWdpb25O
YW1lcy5vZignTU0nKSwgIk15YW5tYXIiKTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbicsIHN0eWxlOiAnbmFycm93J30pOworc2hv
dWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworc2hvdWxkQmUo
cmVnaW9uTmFtZXMub2YoJ0JaJyksICJCZWxpemUiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9m
KCdVUycpLCAiVVMiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhIik7
CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIiKTsKKworLy8gR2V0IGRp
c3BsYXkgbmFtZXMgb2YgbGFuZ3VhZ2UgaW4gRW5nbGlzaAordmFyIGxhbmd1YWdlTmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignZnInKSwgIkZyZW5jaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnIt
Q0EnKSwgIkNhbmFkaWFuIEZyZW5jaCIpOworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwgVHJhZGl0
aW9uYWwiKTsKK2Vsc2UKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50Jyks
ICJUcmFkaXRpb25hbCBDaGluZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1V
UycpLCAiQW1lcmljYW4gRW5nbGlzaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgt
VFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgbGFu
Z3VhZ2UgaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRp
c3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3VsZEJlKGxh
bmd1YWdlTmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ3poJyksICLkuK3mlociKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICLl
vrfmlociKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10s
IHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3Nob3J0J30pOworc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignZnInKSwgIkZyZW5jaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUn
KSwgIkdlcm1hbiIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwgIkNhbmFk
aWFuIEZyZW5jaCIpOworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgc2hvdWxkQmUo
bGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwgVHJhZGl0aW9uYWwiKTsKK2Vs
c2UKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFkaXRpb25h
bCBDaGluZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1VUycpLCAiVVMgRW5n
bGlzaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRh
aXdhbikiKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10s
IHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2Rl
JyksICJHZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5h
ZGlhbiBGcmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7Citl
bHNlCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9u
YWwgQ2hpbmVzZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIlVTIEVu
Z2xpc2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJDaGluZXNlIChU
YWl3YW4pIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBFbmdsaXNoCit2
YXIgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3Nj
cmlwdCd9KTsKKy8vIEdldCBzY3JpcHQgbmFtZXMKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdM
YXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJp
YyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIkthdGFrYW5hIik7CisKKy8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBUcmFkaXRpb25hbCBDaGluZXNlCitzY3Jp
cHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdzY3Jp
cHQnfSk7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0bicpLCAi5ouJ5LiB5paHIik7Citz
aG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAi6Zi/5ouJ5Lyv5paHIik7CitzaG91bGRC
ZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAi54mH5YGH5ZCNIik7CisKK3NjcmlwdE5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnLCBzdHlsZTogJ3No
b3J0J30pOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7CitzaG91
bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAiQXJhYmljIik7CitzaG91bGRCZShzY3JpcHRO
YW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5E
aXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnbmFycm93J30pOwor
c2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7CitzaG91bGRCZShzY3Jp
cHROYW1lcy5vZignQXJhYicpLCAiQXJhYmljIik7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZign
S2FuYScpLCAiS2F0YWthbmEiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kg
Y29kZSBpbiBFbmdsaXNoCit2YXIgY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1l
cyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knfSk7CisvLyBHZXQgY3VycmVuY3kgbmFtZXMKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAiVVMgRG9sbGFyIik7CitzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIkV1cm8iKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMu
b2YoJ1RXRCcpLCAiTmV3IFRhaXdhbiBEb2xsYXIiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMu
b2YoJ0NOWScpLCAiQ2hpbmVzZSBZdWFuIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdK
UFknKSwgIkphcGFuZXNlIFllbiIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5j
eSBjb2RlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK2N1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5E
aXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnY3VycmVuY3knfSk7CitzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIue+juWFgyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignRVVSJyksICLmrZDlhYMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcp
LCAi5paw5Y+w5bmjIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIuS6uuaw
keW5oyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICLml6XlnJMiKTsKKwor
Ly8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBFbmdsaXNoIGluIHNob3J0
CitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdj
dXJyZW5jeScsIHN0eWxlOiAnc2hvcnQnIH0pOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZign
VVNEJyksICIkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuKCrCIpOwor
c2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICJOVCQiKTsKK3Nob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0NOWScpLCAiQ07CpSIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZign
SlBZJyksICLCpSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGlu
IEVuZ2xpc2ggaW4gbmFycm93CitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVz
KFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeScsIHN0eWxlOiAnbmFycm93JyB9KTsKK3Nob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAiJCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5v
ZignRVVSJyksICLigqwiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiJCIp
Oworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICLCpSIpOworc2hvdWxkQmUoY3Vy
cmVuY3lOYW1lcy5vZignSlBZJyksICLCpSIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZign
SlBaJyksICJKUFoiKTsgLy8gRmFsbGJhY2sgY29kZQorc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
Y3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUi
OiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6ImNvZGUifWApOworCitjdXJy
ZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5j
eScsIHN0eWxlOiAnbmFycm93JywgZmFsbGJhY2s6ICdub25lJyB9KTsKK3Nob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0pQWicpLCB1bmRlZmluZWQpOyAvLyBGYWxsYmFjayBub25lCitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShjdXJyZW5jeU5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9j
YWxlIjoiZW4iLCJzdHlsZSI6Im5hcnJvdyIsInR5cGUiOiJjdXJyZW5jeSIsImZhbGxiYWNrIjoi
bm9uZSJ9YCk7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwg
e3R5cGU6ICdyZWdpb24nfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignOTk5JyksICI5OTki
KTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucygp
KSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwiZmFsbGJh
Y2siOiJjb2RlIn1gKTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydl
biddLCB7dHlwZTogJ3JlZ2lvbicsIGZhbGxiYWNrOidub25lJ30pOworc2hvdWxkQmUocmVnaW9u
TmFtZXMub2YoJzk5OScpLCB1bmRlZmluZWQpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkocmVn
aW9uTmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibG9u
ZyIsInR5cGUiOiJyZWdpb24iLCJmYWxsYmFjayI6Im5vbmUifWApOworCitsYW5ndWFnZU5hbWVz
ID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3No
b3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLUFBJyksICJlbi1BQSIpOwordmFyIG9iamVjdCA9
IHsKKyAgICB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuICdlbi1BQSc7CisgICAgfQorfTsK
K3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgb2JqZWN0KTsKKworbGFuZ3VhZ2VO
YW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBm
YWxsYmFjazogJ25vbmUnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1BQScpLCB1
bmRlZmluZWQpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCB1bmRlZmluZWQp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNmNGUxNjRi
OTRkZjEuLmU2MzcyZmY5MjgzYmNmYjU0YmFmYTZkOGI1YjE2ZTRjYWE4ZTMzYzggMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKQEAgLTI2LDYgKzI2LDkgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3Jt
YXQtZGF5UGVyaW9kCiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZvcm1hdFJhbmdlCiAgICAg
LSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZyYWN0aW9uYWxTZWNvbmREaWdpdHMKKyAgICAjIEN1cnJl
bnRseSwgdGVzdDI2MiBoYXMgYSBidWcgd2l0aCBJbnRsLkRpc3BsYXlOYW1lcywgYW5kIGV4cG9z
aW5nIGl0IGNhbiBjYXVzZSBtYW55IGZhaWx1cmVzIGluIHZhcmlvdXMgSW50bCB0ZXN0cy4KKyAg
ICAjIFdlIHNob3VsZCBlbmFibGUgaXQgYWZ0ZXIgZW5zdXJpbmcgdGVzdDI2MiBpcyBmaXhlZC4K
KyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Rlc3QyNjIvaXNzdWVzLzI2ODIKICAgICAt
IEludGwuRGlzcGxheU5hbWVzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKICAgICAtIEludGwuTnVt
YmVyRm9ybWF0LXVuaWZpZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403165</attachid>
            <date>2020-06-29 20:10:08 -0700</date>
            <delta_ts>2020-06-29 21:14:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209779-20200629201007.patch</filename>
            <type>text/plain</type>
            <size>87611</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjYxNzRjNjQ4ZmJlMWFmNmZlYmQ5ZDQ4NDdiMGM0MWU1YmQyNjJlLi4wYzI3ZWMzMzY2YmI3OWNj
ZDMyMGIwMmY5ZTk0YjVjYTA0ZThlMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cGxlbWVudHMgSW50bC5EaXNwbGF5TmFtZXMgYmVoaW5kIHVzZUludGxEaXNwbGF5TmFtZXM9MSBm
bGFnLgorICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcyBjYW4gb2ZmZXIgcmVhZGFibGUgImRpc3Bs
YXktbmFtZSIgZm9yIElDVSBsYW5ndWFnZSwgc2NyaXB0LCByZWdpb24sIGN1cnJlbmN5IGNvZGVz
LgorICAgICAgICBGb3IgZXhhbXBsZSwgaXQgY2FuIG9mZmVyICJVbml0ZWQgU3RhdGVzIiBzdHJp
bmcgZm9yICJVUyIgcmVnaW9uIGNvZGUuCisgICAgICAgIFdlIHVzZSBJQ1UgVUxvY2FsZURpc3Bs
YXlOYW1lcyB0byBpbXBsZW1lbnQgaXQsIGV4Y2VwdCBmb3IgY3VycmVuY3kgc2luY2UgVUxvY2Fs
ZURpc3BsYXlOYW1lcyBpcyBub3Qgc3VwcG9ydGluZworICAgICAgICBjdXJyZW5jeSBjb3JyZWN0
bHk6IGl0IGlnbm9yZXMgImxvbmciLCAic2hvcnQiLCBhbmQgIm5hcnJvdyIgc3R5bGUgY29uZmln
dXJhdGlvbnMuIFdlIG5lZWQgdG8gY2FsbCB1Y3Vycl9nZXROYW1lCisgICAgICAgIGRpcmVjdGx5
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXBwcm9wcmlhdGVseSBhZGRzIHVuaWNvZGUtbGFuZ3Vh
Z2UtaWQgcGFyc2luZyBpbiBJbnRsTG9jYWxlLmNwcCBzbyB0aGF0IHdlIGNhbiB2YWxpZGF0ZSBs
YW5ndWFnZSBpZAorICAgICAgICB3aGVuIGl0IGlzIHBhc3NlZCB0byBgSW50bC5EaXNwbGF5TmFt
ZXMjb2ZgIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5h
bWVzOjpvZiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZS5oLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlO
YW1lc0NvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3I6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6Y2FsbElu
dGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3JTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlRnVuY09mKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmguCisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNV
bmljb2RlUmVnaW9uU3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlVmFyaWFudFN1YnRh
Zyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlSWQpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bExvY2FsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjppbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9j
YWxlcyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRpc3BsYXlOYW1lc1N0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMC0w
Ni0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBjMjU5MTA4NmViYWM3MjIwNjZhODY0NDVmYWMyMTFkZWY4MDMwNWUw
Li5iZDVhMGFiMTA2MTZhNDAyZGEyMDQ4ZDQzODNkN2YzNmY4OGE1ZWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC03MCw2ICs3MCw4IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBhNjVjZmQ1YTkwYmM4NWJjNzAy
NTFjZjBkZGYxNDE0NWRlOWVjZjA3Li5kMGQ4ZGZkYzQ4YTM1ZTgyMTdmN2MwMzQxYzBmZTAzYmI0
M2UwNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTM4LDYgKzEzOCw4IEBAICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNzljZGU0ZWU1MDdlMTNmNmZmN2ZhNzgwMGRjNjQ1
Y2JmODk0MWM2Ny4uMmJkZjViMmM4MjJhNmQ5ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtMjcsNiArMjcsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LgogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxMb2NhbGVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwZjlmZWM1MWRjZTQ4Njg2
ZmY4NzQ1YmVhYTRiNWI1ZDViMTAzM2QuLmMxZmY1ZTYyNDczNTA2OGNmZjRjMTJlNGNmNDhjZGM0
ZmEwYTY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xNTksNiArMTU5LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIEludGxDb2xsYXRv
clByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0
LmggXAogICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmx1dC5oIFwKICAgICBJbnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Zjg1MWMxMTcyYzZl
MDRlYWI4Mzg4YzIyODBkYTUwODQzYTYzYmRkLi5jMDY2M2Q3ZjYwZjk5ZGYxZDQxZGVmZWNkYzU2
ZTljZTU0OTJjYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxOSw2ICsx
ODE5LDkgQEAKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1
RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEY5MzBFMjMyMkQ4ODIwMDJCOERCNCAvKiBKU0dl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi87IH07CiAJCUUzNTA3
MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAv
KiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0Mx
MTcyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLzsgfTsKKwkJRTM1M0Mx
MUUyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTgyNEFBNENC
NjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzUz
QzEyMTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMUIyNEFBNENC
NzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTM1NDYy
MkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAv
KiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTM1NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01H
ZXR0ZXJTbmlwcGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBw
ZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzU1RDM4RjIyNDQ2ODc3MDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUQzOEQyMjQ0Njg2QjAwOEYx
QUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTgyOCw2ICsxODMxLDggQEAKIAkJRTM1Q0ExNTYxREJDM0E1
RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2MzdFRTcyMzZFNTZCMDAw
OTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIy
IC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNt
T01HRm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAv
KiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0
RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTQ5ODUsNiArNDk5MCwxMiBAQAogCQlFMzRGOTMwQjIzMjJEODgxMDAyQjhE
QjQgLyogSlNHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRGOTMw
QzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFt
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlO
YW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE3MjRBQTRDQjYw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEaXNwbGF5TmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTkyNEFBNENCNjAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIy
QTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
U25pcHBldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9N
R2V0dGVyU25pcHBldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1RDM4RDIy
NDQ2ODZCMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9i
YWxFeGVjdXRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDAxLDYgKzUw
MTIsOCBAQAogCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5r
VGltZUNvbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExp
bmtUaW1lQ29uc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMz
ODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5s
dXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5
MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNDgwMTIzRTk1NzM4MDBFNEE2NkUgLyogVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZC
NzY2RTIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JF
bnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc2Nyw2ICs2NzgwLDggQEAKIAkJCQlBMTgxOTNF
MjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJ
CUExNTg3RDczMUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAorCQkJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAv
KiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJRTM2NUYzMzgyNEFB
NjIxMTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJ
QTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5s
dXQuaCAqLywKIAkJCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlND
QnVpbHRpbnMuY3BwICovLApAQCAtNzI2Miw2ICs3Mjc3LDEyIEBACiAJCQkJQTE1ODdENkExQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCiAJCQkJ
QTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAgKi8sCiAJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5oICovLAorCQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzLmNwcCAqLywKKwkJCQlFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERp
c3BsYXlOYW1lcy5oICovLAorCQkJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRG
MyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLywKKwkJCQlFMzUzQzExOTI0QUE0
Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8sCisJCQkJRTM1
M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLywK
IAkJCQlBM0FGRjkyRDI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5jcHAgKi8sCiAJCQkJ
QTNBRkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLywKIAkJCQlBM0FGRjky
RjI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTk3
NTIsNiArOTc3MywxMSBAQAogCQkJCUExNTg3RDc1MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDcy
MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzExRDI0QUE0Q0I3MDAz
RkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUUy
NEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTIxMjRBQTRDQjcwMDNG
QkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1
ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzA1MDJhMzRh
NjY1YTg1MGNhZDZhZmY5Y2FmNWM0YzhkNzRjMjcwNS4uMWI0ZmJmN2NjYWM0N2U5ZTBkODI4NGQ2
NjM1ODE4MTIxY2FlMGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODE0LDYg
KzgxNCw5IEBAIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCitydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXMuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5j
cHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bExv
Y2FsZS5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRs
TG9jYWxlUHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMTY4ZWZlZGExNGQ0NjEwNTI2MDc1YWZkZWJhYzlh
ZGJhMjUyNjZiYS4uM2E0OTdlMDc0YTkwZTBiMTE5NTg2YmZhMDhkNDgzZWIzMDk0MjMzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CkBAIC0zNCw2ICszNCw3IEBACiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKICAgICBtYWNybyhEYXRl
KSBcCiAgICAgbWFjcm8oRGF0ZVRpbWVGb3JtYXQpIFwKKyAgICBtYWNybyhEaXNwbGF5TmFtZXMp
IFwKICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3Jv
KEZ1bmN0aW9uKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTdjNGY3ZjYzNjEzMTc4MTQ0YTFiY2FmNDgx
YWM2YWEyODcwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtMCwwICsxLDM2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisKKyNp
bmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3Bs
YXlOYW1lcykgfTsKKworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIEludGxE
aXNwbGF5TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVz
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sK
K30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5
TmFtZXMKK3ZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHJlcXVlc3RlZExvY2Fs
ZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxlcyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTT2JqZWN0KiBvcHRp
b25zOworICAgIGlmIChvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3B0aW9u
cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVP
YmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25z
VmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICAvLyBEb2VzIG5vdCBzZXQgZWl0aGVyIG9m
ICJjYSIgb3IgIm51Ii4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNw
bGF5bmFtZXMvI3NlYy1pbnRsLWRpc3BsYXluYW1lcy1jb25zdHJ1Y3RvcgorICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IG9wdDsKKworICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNo
ZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRo
ZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQoImxvY2FsZU1hdGNoZXIi
X3MsIG1hdGNoZXIpOworCisKKyAgICBhdXRvIGxvY2FsZURhdGEgPSBbXShjb25zdCBTdHJpbmcm
LCBzaXplX3QpIC0+IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCk7CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVj
dCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBudWxscHRyLCAwLCBs
b2NhbGVEYXRhKTsKKworICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKKyAg
ICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUgdG8g
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5n
IHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZt
LnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJuYXJyb3ciLCAic2hvcnQiLCAibG9uZyIgfSwgInN0
eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiLCAi
bG9uZyIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYg
KHN0eWxlU3RyaW5nID09ICJuYXJyb3ciX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6TmFy
cm93OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAgbV9z
dHlsZSA9IFN0eWxlOjpTaG9ydDsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAibG9uZyJf
cykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpMb25nOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJpbmdP
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJs
YW5ndWFnZSIsICJyZWdpb24iLCAic2NyaXB0IiwgImN1cnJlbmN5IiB9LCAidHlwZSBtdXN0IGJl
IGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVu
Y3lcIiIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgaWYgKHR5cGVTdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90IGJlIGFuIHVuZGVmaW5lZCJfcyk7Cisg
ICAgaWYgKHR5cGVTdHJpbmcgPT0gImxhbmd1YWdlIl9zKQorICAgICAgICBtX3R5cGUgPSBUeXBl
OjpMYW5ndWFnZTsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJyZWdpb24iX3MpCisgICAg
ICAgIG1fdHlwZSA9IFR5cGU6OlJlZ2lvbjsKKyAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJz
Y3JpcHQiX3MpCisgICAgICAgIG1fdHlwZSA9IFR5cGU6OlNjcmlwdDsKKyAgICBlbHNlIGlmICh0
eXBlU3RyaW5nID09ICJjdXJyZW5jeSJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6Q3VycmVu
Y3k7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmlu
ZyBmYWxsYmFja1N0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwgeyAiY29kZSIsICJub25l
IiB9LCAiZmFsbGJhY2sgbXVzdCBiZSBlaXRoZXIgXCJjb2RlXCIgb3IgXCJub25lXCIiLCAiY29k
ZSIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKGZh
bGxiYWNrU3RyaW5nID09ICJjb2RlIl9zKQorICAgICAgICBtX2ZhbGxiYWNrID0gRmFsbGJhY2s6
OkNvZGU7CisgICAgZWxzZSBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gIm5vbmUiX3MpCisgICAgICAg
IG1fZmFsbGJhY2sgPSBGYWxsYmFjazo6Tm9uZTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisK
KyAgICBVRGlzcGxheUNvbnRleHQgY29udGV4dHNbXSA9IHsKKyAgICAgICAgLy8gZW5fR0IgZGlz
cGxheXMgYXMgJ0VuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKScgKFN0YW5kYXJkIE5hbWVzKSBvciAn
QnJpdGlzaCBFbmdsaXNoJyAoRGlhbGVjdCBOYW1lcykuCisgICAgICAgIC8vIFdlIHVzZSBEaWFs
ZWN0IE5hbWVzIGhlcmUsIGFsaWduZWQgdG8gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjIGRyYWZ0
IGFuZCBWOCdzIGJlaGF2aW9yLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcyNsYW5ndWFnZS1kaXNwbGF5LW5hbWVzCisgICAgICAg
IFVESVNQQ1RYX0RJQUxFQ1RfTkFNRVMsCisKKyAgICAgICAgLy8gQ2FwaXRhaWxpemF0aW9uIG1v
ZGUgY2FuIGJlIHBpY2tlZCBmcm9tIHNldmVyYWwgb3B0aW9ucy4gUG9zc2libHkgZWl0aGVyIFVE
SVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUgb3IgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9S
X1NUQU5EQUxPTkUgaXMKKyAgICAgICAgLy8gcHJlZmVyYWJsZSBpbiBJbnRsLkRpc3BsYXlOYW1l
cy4gV2UgdXNlIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX05PTkUgbm90IHRvIGNoYW5nZSBhbnl0
aGluZyBmcm9tIElDVSBkYXRhYmFzZS4KKyAgICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05f
Tk9ORSwKKworICAgICAgICAvLyBOYXJyb3cgYmVjb21lcyBVRElTUENUWF9MRU5HVEhfU0hPUlQu
IEJ1dCBpbiBjdXJyZW5jeSBjYXNlLCB3ZSBoYW5kbGUgZGlmZmVyZW50bHkgaW5zdGVhZCBvZiB1
c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzLgorICAgICAgICBtX3N0eWxlID09IFN0eWxlOjpMb25n
ID8gVURJU1BDVFhfTEVOR1RIX0ZVTEwgOiBVRElTUENUWF9MRU5HVEhfU0hPUlQsCisKKyAgICAg
ICAgLy8gQWx3YXlzIGRpc2FibGUgSUNVIFNVQlNUSVRVVEUgc2luY2UgaXQgZG9lcyBub3QgbWF0
Y2ggYWdhaW5zdCB3aGF0IHRoZSBzcGVjIGRlZmluZXMuIElDVSBoYXMgc29tZSBzcGVjaWFsIHN1
YnN0aXR1dGUgcnVsZXMsIGZvciBleGFwbWxlLCBsYW5ndWFnZSAiZW4tQUEiCisgICAgICAgIC8v
IHJldHVybnMgIkVuZ2xpc2ggKEFBKSIgKHdoaWxlIEFBIGNvdW50cnkgY29kZSBpcyBub3QgZGVm
aW5lZCksIGJ1dCB3ZSB3b3VsZCBsaWtlIHRvIHJldHVybiBlaXRoZXIgaW5wdXQgdmFsdWUgb3Ig
dW5kZWZpbmVkLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBoYXZlIElDVSBzdWJzdGl0dXRlIHJ1bGVz
LgorICAgICAgICBVRElTUENUWF9OT19TVUJTVElUVVRFLAorICAgIH07CisgICAgbV9sb2NhbGVD
U3RyaW5nID0gbV9sb2NhbGUudXRmOCgpOworICAgIG1fZGlzcGxheU5hbWVzID0gc3RkOjp1bmlx
dWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPih1
bGRuX29wZW5Gb3JDb250ZXh0KG1fbG9jYWxlQ1N0cmluZy5kYXRhKCksIGNvbnRleHRzLCBXVEZf
QVJSQVlfTEVOR1RIKGNvbnRleHRzKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKworSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kaXNw
bGF5TmFtZXMpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gY29kZSA9IGNvZGVW
YWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkN1
cnJlbmN5KSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlO
YW1lICsgImN1cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29u
cy4KKyAgICAgICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdU
SF9GVUxMIC8gVURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgLy8gICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4g
VUxvY2FsZURpc3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBz
dHlsZS4KKworICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxheU5hbWVzCisgICAgICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9u
aWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRD
dXJyZW5jeUNvZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9u
LgorICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjb2RlKSkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBu
b3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGNvZGUuaXNBbGxBU0NJSSgpKTsKKworICAg
ICAgICBVQ3Vyck5hbWVTdHlsZSBzdHlsZSA9IFVDVVJSX0xPTkdfTkFNRTsKKyAgICAgICAgc3dp
dGNoIChtX3N0eWxlKSB7CisgICAgICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAgICAgICBz
dHlsZSA9IFVDVVJSX0xPTkdfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0eWxlOjpTaG9ydDoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfU1lNQk9MX05BTUU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6TmFycm93OgorICAgICAgICAg
ICAgc3R5bGUgPSBVQ1VSUl9OQVJST1dfU1lNQk9MX05BTUU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIDYuIExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFw
cGluZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgY29u
c3QgVUNoYXIgY3VycmVuY3lbNF0gPSB7CisgICAgICAgICAgICB0b0FTQ0lJVXBwZXIoY29kZVsw
XSksCisgICAgICAgICAgICB0b0FTQ0lJVXBwZXIoY29kZVsxXSksCisgICAgICAgICAgICB0b0FT
Q0lJVXBwZXIoY29kZVsyXSksCisgICAgICAgICAgICB1J1wwJworICAgICAgICB9OworICAgICAg
ICAvLyBUaGUgcmVzdWx0IG9mIHVjdXJyX2dldE5hbWUgaXMgc3RhdGljIHN0cmluZyBzbyB0aGF0
IHdlIGRvIG5vdCBuZWVkIHRvIGZyZWUgdGhlIHJlc3VsdC4KKyAgICAgICAgaW50MzJfdCBsZW5n
dGggPSAwOworICAgICAgICBjb25zdCBVQ2hhciogcmVzdWx0ID0gdWN1cnJfZ2V0TmFtZShjdXJy
ZW5jeSwgbV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgc3R5bGUsIG51bGxwdHIsICZsZW5ndGgsICZz
dGF0dXMpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBh
IGRpc3BsYXkgbmFtZXMuIl9zKTsKKyAgICAgICAgLy8gdWN1cnJfZ2V0TmFtZSByZXR1cm5zIFVf
VVNJTkdfREVGQVVMVF9XQVJOSU5HIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLiBC
dXQgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgaXMgcmV0dXJuZWQgZXZlbiBpZgorICAgICAgICAv
LyBuYXJyb3cgYW5kIHNob3J0IHJlc3VsdHMgYXJlIHRoZSBzYW1lOiBuYXJyb3cgIlVTRCIgaXMg
IiQiIHdpdGggVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgc2luY2Ugc2hvcnQgIlVTRCIgaXMgYWxz
byAiJCIuIFdlIG5lZWQgdG8gY2hlY2sKKyAgICAgICAgLy8gcmVzdWx0ID09IGN1cnJlbmN5IHRv
IGNoZWNrIHdoZXRoZXIgSUNVIGFjdHVhbGx5IGZhaWxlZCB0byBmaW5kIHRoZSBjb3JyZXNwb25k
aW5nIGRpc3BsYXktbmFtZS4gVGhpcyBwb2ludGVyIGNvbXBhcmlzb24gaXMgZW5zdXJlZCBieQor
ICAgICAgICAvLyBJQ1UgQVBJIGRvY3VtZW50LgorICAgICAgICAvLyA+IFJldHVybnMgcG9pbnRl
ciB0byBkaXNwbGF5IHN0cmluZyBvZiAnbGVuJyBVQ2hhcnMuIElmIHRoZSByZXNvdXJjZSBkYXRh
IGNvbnRhaW5zIG5vIGVudHJ5IGZvciAnY3VycmVuY3knLCB0aGVuICdjdXJyZW5jeScgaXRzZWxm
IGlzIHJldHVybmVkLgorICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YKKyAgICAgICAg
aWYgKHN0YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVu
Y3kpCisgICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8g
anNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBT
dHJpbmcocmVzdWx0LCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZUNv
ZGVGb3JEaXNwbGF5TmFtZXMgPSBbXShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZSkgLT4g
Q1N0cmluZyB7CisgICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gY29kZS5hc2NpaSgpOworICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJl
c3VsdC5tdXRhYmxlRGF0YSgpOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBUeXBlOjpMYW5ndWFnZTogeworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3Vs
dCBvZiBtYXBwaW5nIGNvZGUgdG8gbG93ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgp
OyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlM
b3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJl
IHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMgZGVzY3JpYmVkIGlu
IDYuMS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3Vs
dC5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0g
PSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgICAgICAvLyBM
ZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBj
b2RlIHRvIHVwcGVyIGNhc2UsIGFuZCBtYXBwaW5nIHRoZSBzZWNvbmQsIHRoaXJkIGFuZCBmb3Vy
dGggY2hhcmFjdGVyIGluIGNvZGUgdG8gbG93ZXIgY2FzZSwgYXMgZGVzY3JpYmVkIGluIDYuMS4K
KyAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPj0gMSkKKyAgICAgICAgICAgICAgICBt
dXRhYmxlRGF0YVswXSA9IHRvQVNDSUlVcHBlcihtdXRhYmxlRGF0YVswXSk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMTsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5k
ZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxvd2VyKG11
dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH07CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6
IHsKKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVz
LyNzZWMtY2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgICAgICAvLyBJZiBjb2RlIGRv
ZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfbGFuZ3VhZ2VfaWQgcHJvZHVjdGlvbiwgdGhyb3cg
YSBSYW5nZUVycm9yIGV4Y2VwdGlwb24uCisgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJ
ZChjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICB9CisgICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7Cisg
ICAgICAgIGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1f
dHlwZSwgY29kZSk7CisgICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlO
YW1lIHNpbmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBl
LiBJdCByZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmlj
YW4gRW5nbGlzaCIuCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3VhZ2Uu
ZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpS
ZWdpb246IHsKKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxh
eW5hbWVzLyNzZWMtY2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgICAgICAvLyBJZiBj
b2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyBwcm9kdWN0aW9u
LCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aXBvbi4KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVS
ZWdpb25TdWJ0YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZyJfcyk7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIEFTU0VSVChjb2RlLmlzQWxs
QVNDSUkoKSk7CisgICAgICAgIGF1dG8gcmVnaW9uID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3Bs
YXlOYW1lcyhtX3R5cGUsIGNvZGUpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCks
IHJlZ2lvbi5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFR5cGU6OlNjcmlwdDogeworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50
bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAg
IC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHBy
b2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAgICBpZiAoIWlz
VW5pY29kZVNjcmlwdFN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9z
KTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGNv
ZGUuaXNBbGxBU0NJSSgpKTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBjYW5vbmljYWxpemVDb2Rl
Rm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1l
cy5nZXQoKSwgc2NyaXB0LmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAg
ICAgIC8vIHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIGFu
ZCB1bGRuX3NjcmlwdERpc3BsYXlOYW1lIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1Ig
aWYgdGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuCisgICAgICAgIC8vIFdlIHNob3VsZCBy
ZXR1cm4gdW5kZWZpbmVkIGlmIGZhbGxiYWNrIGlzICJub25lIi4gT3RoZXJ3aXNlLCB3ZSBzaG91
bGQgcmV0dXJuIGlucHV0IHZhbHVlLgorICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YK
KyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisgICAgICAg
ICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQo
KSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWVzLiJfcyk7CisgICAgfQor
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1l
cy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitKU09iamVjdCogSW50bERpc3BsYXlOYW1lczo6
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0Cit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvcHRpb25zID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxlKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCB0eXBlU3RyaW5nKG1fdHlwZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIGZhbGxiYWNrU3RyaW5nKG1fZmFsbGJhY2spKSk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9
CisKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6TmFycm93OgorICAg
ICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFN0eWxlOjpTaG9ydDoKKyAgICAgICAg
cmV0dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIFN0eWxlOjpMb25nOgorICAgICAgICByZXR1cm4g
ImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBB
U0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6
OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
VHlwZTo6TGFuZ3VhZ2U6CisgICAgICAgIHJldHVybiAibGFuZ3VhZ2UiX3M7CisgICAgY2FzZSBU
eXBlOjpSZWdpb246CisgICAgICAgIHJldHVybiAicmVnaW9uIl9zOworICAgIGNhc2UgVHlwZTo6
U2NyaXB0OgorICAgICAgICByZXR1cm4gInNjcmlwdCJfczsKKyAgICBjYXNlIFR5cGU6OkN1cnJl
bmN5OgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJ
TGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBmYWxsYmFj
aykKK3sKKyAgICBzd2l0Y2ggKGZhbGxiYWNrKSB7CisgICAgY2FzZSBGYWxsYmFjazo6Q29kZToK
KyAgICAgICAgcmV0dXJuICJjb2RlIl9zOworICAgIGNhc2UgRmFsbGJhY2s6Ok5vbmU6CisgICAg
ICAgIHJldHVybiAibm9uZSJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOWMyYThiYTcyMDE1NTJlMjg2YTEwYmI0MGMyMTM4ODUxZWU0MDM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lcy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91bGRuYW1lcy5oPgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBJbnRsRGlzcGxheU5hbWVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRs
RGlzcGxheU5hbWVzKj4oY2VsbCktPkludGxEaXNwbGF5TmFtZXM6On5JbnRsRGlzcGxheU5hbWVz
KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICByZXR1cm4gdm0uaW50bERpc3BsYXlOYW1lc1NwYWNlPG1vZGU+KCk7Cisg
ICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXMqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGluaXRp
YWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXNWYWx1ZSwg
SlNWYWx1ZSBvcHRpb25zVmFsdWUpOworCisgICAgSlNWYWx1ZSBvZihKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgZW51bSBjbGFz
cyBTdHlsZSA6IHVpbnQ4X3QgeyBOYXJyb3csIFNob3J0LCBMb25nIH07CisgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7IExhbmd1YWdlLCBSZWdpb24sIFNjcmlwdCwgQ3VycmVuY3kgfTsK
KyAgICBlbnVtIGNsYXNzIEZhbGxiYWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKKworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGZhbGxi
YWNrU3RyaW5nKEZhbGxiYWNrKTsKKworICAgIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxl
dGVyID0gSUNVRGVsZXRlcjx1bGRuX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2Fs
ZURpc3BsYXlOYW1lcywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+IG1fZGlzcGxheU5hbWVz
OworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBDU3RyaW5nIG1fbG9jYWxlQ1N0cmluZzsKKyAg
ICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkxvbmcgfTsKKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6
Okxhbmd1YWdlIH07CisgICAgRmFsbGJhY2sgbV9mYWxsYmFjayB7IEZhbGxiYWNrOjpDb2RlIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2ZmJmZjNkOTg5ZmIyNGJlNjM5MDgzMzg0MTYyY2EwZmIzOTExZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgJmRpc3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sK
KyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGRpc3BsYXlOYW1lc1Byb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitT
dHJ1Y3R1cmUqIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7
CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNw
bGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxEaXNwbGF5TmFtZXMsIGNvbnN0cnVjdEludGxE
aXNwbGF5TmFtZXMpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlO
YW1lc1Byb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkRpc3BsYXlO
YW1lcyJfcywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGRpc3BsYXlOYW1lc1Byb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5
TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxE
aXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQg
PSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9i
YWxPYmplY3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdl
dEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSW50bERpc3BsYXlO
YW1lcyogZGlzcGxheU5hbWVzID0gSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1
cmUpOworICAgIEFTU0VSVChkaXNwbGF5TmFtZXMpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgIGRpc3BsYXlOYW1lcy0+aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZGlzcGxheU5hbWVzKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEaXNwbGF5TmFtZXMiKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9y
dGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gSW50bC5EaXNwbGF5TmFtZXMu
c3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50
bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mCisKKyAgICAvLyAxLiBMZXQgYXZhaWxh
YmxlTG9jYWxlcyBiZSAlRGlzcGxheU5hbWVzJS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsRGlzcGxheU5hbWVz
QXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUg
Q2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1
ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxh
YmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9iYWxPYmpl
Y3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0NGFlMWU4YTgyNWI4NmY3YTdjOGE5NmM1MDFiNDRmYmNhZDg4YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZTsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1
bmN0aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0
aWMgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmU4ODdiYTVkNjhl
YzFlZjMwMGY4MDcyMGZhZmNmYzEzMGFmMmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1l
cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVG
dW5jT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5EaXNw
bGF5TmFtZXMiLCAmQmFzZTo6c19pbmZvLCAmZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSkgfTsK
KworLyogU291cmNlIGZvciBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCitAYmVnaW4g
ZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUKKyAgb2YgICAgICAgICAgICAgICBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlRnVuY09mICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIHJlc29sdmVkT3B0aW9ucyAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZSogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVz
LnByb3RvdHlwZS5vZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5
TmFtZXMgPSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90
b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgRGlzcGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+b2YoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRp
b25zCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNw
bGF5TmFtZXMgPSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5w
cm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgRGlzcGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9i
amVjdCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTY3ZTU4M2E2NzU3NDRlNDE1YTQ4NWU4M2VmMWYzNTg2ZTliMTI0MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUu
Y3BwCmluZGV4IDgwZTY0ZjFhYjE3OTcxMzhiMjUyYjhmY2QxMDcxZDc2YmRkNDYyOWEuLjA5YWMy
NTI4NzA1YzJjYmZhMDMzMzAyNTNhODlmNDIzMDBkOTMyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCkBAIC0xOTksMTkgKzE5OSw4NiBAQCBzdGF0
aWMgYm9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKIH0KIAog
Ly8gdW5pY29kZV9zY3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOwotc3RhdGljIGJvb2wgaXNVbmlj
b2RlU2NyaXB0U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQorYm9vbCBpc1VuaWNvZGVTY3JpcHRT
dWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9
PSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKIH0K
IAogLy8gdW5pY29kZV9yZWdpb25fc3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Ci1zdGF0
aWMgYm9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCitib29sIGlz
VW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBhdXRvIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKICAgICAgICAgfHwgKGxlbmd0
aCA9PSAzICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7
CiB9CiAKKy8vIHVuaWNvZGVfdmFyaWFudF9zdWJ0YWcgPSAoYWxwaGFudW17NSw4fSB8IGRpZ2l0
IGFscGhhbnVtezN9KSA7CitzdGF0aWMgYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmlu
Z1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAg
IGlmIChsZW5ndGggPj0gNSAmJiBsZW5ndGggPD0gOCkKKyAgICAgICAgcmV0dXJuIHN0cmluZy5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7CisgICAgcmV0dXJu
IGxlbmd0aCA9PSA0ICYmIGlzQVNDSUlEaWdpdChzdHJpbmdbMF0pICYmIHN0cmluZy5zdWJzdHJp
bmcoMSkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOworfQor
CisvLyB1bmljb2RlX2xhbmd1YWdlX2lkID0KKy8vICAgICAicm9vdCIKKy8vICAgICB8ICh1bmlj
b2RlX2xhbmd1YWdlX3N1YnRhZyAoc2VwIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyk/IHwgdW5pY29k
ZV9zY3JpcHRfc3VidGFnKSAoc2VwIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyk/IChzZXAgdW5pY29k
ZV92YXJpYW50X3N1YnRhZykqIDsKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICBhdXRvIGZpbmRTZXBhcmF0b3IgPSBbXShTdHJpbmdWaWV3IHZpZXcp
IC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IHZpZXcubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIFVDaGFyIGNo
YXJhY3RlciA9IHZpZXdbaW5kZXhdOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLScg
fHwgY2hhcmFjdGVyID09ICdfJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworCisgICAgVmVjdG9y
PFN0cmluZ1ZpZXcsIDI+IHN1YnRhZ3M7CisgICAgU3RyaW5nVmlldyByZW1haW5pbmcgPSBzdHJp
bmc7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VwYXJhdG9yUG9zaXRp
b24gPSBmaW5kU2VwYXJhdG9yKHJlbWFpbmluZykpIHsKKyAgICAgICAgICAgIHN1YnRhZ3MuYXBw
ZW5kKHJlbWFpbmluZy5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24udmFsdWUoKSkpOwor
ICAgICAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnN1YnN0cmluZyhzZXBhcmF0b3JQb3Np
dGlvbi52YWx1ZSgpICsgMSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBzdWJ0YWdzLmFwcGVuZChyZW1haW5pbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3VidGFncy5zaXplKCkgPj0gMSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0g
MDsKKyAgICBpZiAoc3VidGFncy5zaXplKCkgPT0gMSkgeworICAgICAgICAvLyBPbmx5IG9uZSBz
dWJ0YWcuIFNvIGl0IG11c3QgYmUgbGFuZ3VhZ2Ugb3Igc2NyaXB0LgorICAgICAgICByZXR1cm4g
c3VidGFnc1tjdXJzb3JdID09ICJyb290Il9zIHx8IGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKHN1
YnRhZ3NbY3Vyc29yXSkgfHwgaXNVbmljb2RlU2NyaXB0U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSk7
CisgICAgfQorCisgICAgQVNTRVJUKCFjdXJzb3IpOworICAgIEFTU0VSVChzdWJ0YWdzLnNpemUo
KSA+PSAyKTsKKyAgICBpZiAoaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoc3VidGFnc1tjdXJzb3Jd
KSkgeworICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgaWYgKGlzVW5pY29kZVNjcmlwdFN1YnRh
ZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICAgICAgKytjdXJzb3I7CisgICAgfSBlbHNlIGlm
IChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgKytjdXJz
b3I7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoY3Vyc29yID09
IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmljb2Rl
UmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICsrY3Vyc29yOworCisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWlzVW5pY29kZVZhcmlhbnRTdWJ0
YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
KytjdXJzb3I7CisgICAgfQorfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUlu
dGwuTG9jYWxlCiB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YWdWYWx1ZSwgSlNWYWx1ZSBvcHRpb25zVmFsdWUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKaW5kZXggYWZi
NjlhMmQxZmU1YWMyNjI1MDdlOWE5YzQ5MGE5NGNhZmMwZmVjYS4uM2Q1NDkwM2QwYjNmYTYxMjBh
Mjc4NmJlZWM5NjE1ZDhmMzBhOWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGUuaApAQCAtOTAsNCArOTAsOCBAQCBjbGFzcyBJbnRsTG9jYWxlIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFRyaVN0YXRlIG1fbnVtZXJpYyB7IFRyaVN0
YXRlOjpJbmRldGVybWluYXRlIH07CiB9OwogCitib29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhT
dHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcpOworYm9v
bCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHAKaW5kZXggYzM4ZmU5OWUyZjRmMGEzZGIyZjNhYjE3OTkyMmViYTgzOGFhMjkzOC4uMTE1YTgw
YTg1ZDc1ZmU3NjZkZWUyMzU4NmU5YzE3MTEyN2E5YWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTQ0LDYgKzQ0LDEx
IEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0
IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OwogfQogCitib29sIGlz
V2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3IGN1cnJlbmN5KQoreworICAgIHJldHVy
biBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNBU0NJSUFscGhhPigpOworfQorCiBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsK
ICAgICBpbnQzMl90IHR5cGU7CiAgICAgc2l6ZV90IHNpemU7CkBAIC0yMTEsNyArMjE2LDcgQEAg
dm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBTdHJpbmcgY3VycmVuY3kgPSBpbnRsU3RyaW5n
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1cnJlbmN5IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7Ci0gICAg
ICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgeworICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZEN1
cnJlbmN5Q29kZShjdXJyZW5jeSkpIHsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kg
aXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcykpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmgKaW5kZXggNDMwNGIyMmE4YzZhNTExZjc0ZTJiZGNiMDUzODhkNWI2NWI3
MzQ3Ni4uM2QyMmQzMmM3ZTkyYjA4MTIzMjQyZWU0OTQxYjNkZTA1OTNhODllZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtOTks
NCArOTksNiBAQCBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUgfTsKIH07CiAKK2Jvb2wg
aXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXgg
MWRmYTIwODJhZjE0MjNmNGQzZWQzZTEzMzBhOTQ5NjNiZWVhNDMwMS4uYzMyZTg0Yzk3NDEyMzA0
ZTNhNTcwMjEzZjI2YTY5NzIwYWUyYjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJJbnRsQ29s
bGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExv
Y2FsZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgpAQCAt
NzcsNiArNzksMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0
KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlRGlzcGxheU5hbWVzQ29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIEludGxPYmplY3QqIGludGxPYmplY3Qg
PSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1
bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSo+KGds
b2JhbE9iamVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVj
dCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUxvY2FsZUNvbnN0cnVjdG9yKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganND
YXN0PEludGxPYmplY3QqPihvYmplY3QpOwpAQCAtMTUyLDYgKzE2MSw4IEBAIEludGxPYmplY3Qq
IEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSoKIHZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCopCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGlmIChP
cHRpb25zOjp1c2VJbnRsRGlzcGxheU5hbWVzKCkpCisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EaXNwbGF5TmFtZXMsIGNyZWF0ZURpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yKHZtLCB0aGlzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CmluZGV4IGVkOWMxZTEwYjZhZGE0ZmQ5ZDQyNTc0NjA2Y2RkOTJhOTEyMjM5YjcuLmY5MDU5NmY1
ZjFkNDBjZjUxMGE4MWYzZDk3MjVlYmUzMTA2ZDRhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgU3RyaW5nIGRlZmF1bHRM
b2NhbGUoSlNHbG9iYWxPYmplY3QqKTsKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bEF2YWls
YWJsZUxvY2FsZXMoKTsKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bENvbGxhdG9yQXZhaWxh
YmxlTG9jYWxlcygpOwogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7
IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEaXNwbGF5TmFtZXNBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7
IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2
YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFJl
bGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxl
TG9jYWxlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAw
Ni4uYzg3OTI3NDViOTM0ODAzZmRmNmJhZjFhYjRiMDY3Y2E4YjkyYmM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNzMsNiAr
NzMsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIklu
dGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIklu
dGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCkBAIC05
ODEsNiArOTgzLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMg
Q29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAgIGlu
aXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9k
aXNwbGF5TmFtZXNTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAg
ICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBlID0g
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxE
aXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGRpc3Bs
YXlOYW1lc1Byb3RvdHlwZSkpOworICAgICAgICB9KTsKICAgICBtX2xvY2FsZVN0cnVjdHVyZS5p
bml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0
KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xODMyLDYgKzE4NDAsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwor
ICAgIHRoaXNPYmplY3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwog
ICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwog
ICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4
MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi4yNzc3NGViYmM2MDM2ZjdhMzViZjM1
ZWU4MWUxNGU3NmNhMDJjNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1fZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1
cmU7CkBAIC03OTIsNiArNzkzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NvbGxhdG9yU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAg
IFN0cnVjdHVyZSogZGlzcGxheU5hbWVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kaXNwbGF5TmFt
ZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1
Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNWRjZjQyOGJmNDc3MTliNTk0YjY3
MGNlNThkODc3N2QzNzkyNzI2MC4uOTAwYzAxNDVkMTdiNmZmNTU3MDhjYWFiMzdlNzQwZGY3YjBm
MWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBA
IC00ODgsNiArNDg4LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1p
bmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMu
IikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhl
IFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQmlnSW50LCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4iKSBcCisgICAg
dihCb29sLCB1c2VJbnRsRGlzcGxheU5hbWVzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJ
bnRsLkRpc3BsYXlOYW1lcyBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFs
bG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91
ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2Nh
dGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAgICAg
dihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90
aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0
dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwgZmFsc2UsIE5vcm1hbCwgIklm
IHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMTRiYTk3NzBiYTVhNTY1MjJlYjViYTI4OGQ5MmY3MDA2
ZTIzYjY1Li4wYTE0OWIzNmMzZmYzNGViNTFmM2QyZTZjNzFhNmVjYzhmYTliNTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKICNpbmNsdWRlICJJbnRs
RGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCiAjaW5jbHVk
ZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRl
ICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAgLTMwNiw2ICszMDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYKICAgICAsIGludGxDb2xsYXRvckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCiAgICAgLCBp
bnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50
bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQogICAgICwgaW50bExv
Y2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigpKQog
ICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKQEAgLTE0ODEsNiAr
MTQ4Myw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFj
a0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsCiAjZW5kaWYKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERp
c3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3BsYXlOYW1lcykKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2Nh
bGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2NhbGUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVs
ZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IGJlZDE2Njg4MDU2Njc5YjAzZWQwYzJiOGI0ZDgwODgwNzVmMmZiMzMu
LjhkNDdmMjAyYTNmZDEzZTNhYzNkZjI5NmRlMjY1ZjEyMmUwNzUzZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiBj
bGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRlVGlt
ZUZvcm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7CiBjbGFzcyBJbnRsTG9jYWxlOwogY2xh
c3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxSdWxlczsKQEAgLTQwMCw2ICs0
MDEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1Ymxp
YyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVh
cENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2Nh
bGVIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50
bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoaW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjM1OTdmNGEy
MGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li43ZWExNmM1YzE3YjA0YWMwMTAzYzI3Mzcy
NzNhZmM5MTM1OWYxZGYzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA2LTI5ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50
bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZEJlLkpTT04u
c3RyaW5naWZ5LmN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKHNob3Vs
ZEJlLkpTT04uc3RyaW5naWZ5LnJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAg
IChvYmplY3QudG9TdHJpbmcpOgorICAgICAgICAqIHN0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUt
c3VidGFncy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgICh2bS5pY3VWZXJzaW9uKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZp
Zy55YW1sOgorCiAyMDIwLTA2LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgVXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2lu
dGwtZGlzcGxheW5hbWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWJkNGMwN2UzOTNmNjNlMjIzZjA4YjlkYzE4Y2FkZGQxZmI5NTc3YgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzCkBAIC0w
LDAgKzEsMTgxIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VJbnRsRGlzcGxheU5hbWVzPTEiKQor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcywgYFR5cGVFcnJvcjogdHlwZSBtdXN0IG5vdCBiZSBhbiB1bmRlZmlu
ZWRgKQorCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiByZWdpb24gaW4gRW5nbGlzaAordmFyIHJl
Z2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24n
fSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7Citz
aG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVnaW9u
TmFtZXMub2YoJ1VTJyksICJVbml0ZWQgU3RhdGVzIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignQkEnKSwgIkJvc25pYSAmIEhlcnplZ292aW5hIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignTU0nKSwgIk15YW5tYXIgKEJ1cm1hKSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBy
ZWdpb24gaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9u
TmFtZXMub2YoJzQxOScpLCAi5ouJ5LiB576O5rSyIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignQlonKSwgIuiynemHjOaWryIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICLn
vo7lnIsiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAi5rOi5aOr5bC85Lqe6IiH
6LWr5aGe5ZOl57at57SNIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIue3rOeU
uCIpOworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAncmVnaW9uJywgc3R5bGU6ICdzaG9ydCd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0
MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAi
QmVsaXplIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMnKSwgIlVTIik7CitzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoJ01NJyksICJNeWFubWFyIik7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5h
bWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lv
bk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMn
KSwgIlVTIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworc2hv
dWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIik7CisKKy8vIEdldCBkaXNwbGF5
IG5hbWVzIG9mIGxhbmd1YWdlIGluIEVuZ2xpc2gKK3ZhciBsYW5ndWFnZU5hbWVzID0gbmV3IElu
dGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3VsZEJlKGxh
bmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ2RlJyksICJHZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyks
ICJDYW5hZGlhbiBGcmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNo
b3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFs
Iik7CitlbHNlCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJh
ZGl0aW9uYWwgQ2hpbmVzZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwg
IkFtZXJpY2FuIEVuZ2xpc2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyks
ICJDaGluZXNlIChUYWl3YW4pIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdl
IGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5
TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCdmcicpLCAi5rOV5paHIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6
aCcpLCAi5Lit5paHIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAi5b635paH
Iik7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ2xhbmd1YWdlJywgc3R5bGU6ICdzaG9ydCd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICJH
ZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBG
cmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7CitlbHNlCisg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hp
bmVzZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIlVTIEVuZ2xpc2gi
KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJDaGluZXNlIChUYWl3YW4p
Iik7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ2xhbmd1YWdlJywgc3R5bGU6ICduYXJyb3cnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVz
Lm9mKCdmcicpLCAiRnJlbmNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAi
R2VybWFuIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmci1DQScpLCAiQ2FuYWRpYW4g
RnJlbmNoIik7CitpZiAoJHZtLmljdVZlcnNpb24oKSA8PSA2NikKKyAgICBzaG91bGRCZShsYW5n
dWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworZWxzZQor
ICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIlRyYWRpdGlvbmFsIENo
aW5lc2UiKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNo
Iik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2Fu
KSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBzY3JpcHQgaW4gRW5nbGlzaAordmFyIHNj
cmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQn
fSk7CisvLyBHZXQgc2NyaXB0IG5hbWVzCitzaG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0bicp
LCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsK
K3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisvLyBHZXQg
ZGlzcGxheSBuYW1lcyBvZiBzY3JpcHQgaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorc2NyaXB0TmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0J30p
Oworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIuaLieS4geaWhyIpOworc2hvdWxk
QmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIumYv+aLieS8r+aWhyIpOworc2hvdWxkQmUoc2Ny
aXB0TmFtZXMub2YoJ0thbmEnKSwgIueJh+WBh+WQjSIpOworCitzY3JpcHROYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0Jywgc3R5bGU6ICdzaG9ydCd9
KTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUo
c2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMu
b2YoJ0thbmEnKSwgIkthdGFrYW5hIik7CisKK3NjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3Vs
ZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0TmFt
ZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEn
KSwgIkthdGFrYW5hIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUg
aW4gRW5nbGlzaAordmFyIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydl
biddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworLy8gR2V0IGN1cnJlbmN5IG5hbWVzCitzaG91bGRC
ZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIlVTIERvbGxhciIpOworc2hvdWxkQmUoY3VycmVu
Y3lOYW1lcy5vZignRVVSJyksICJFdXJvIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdU
V0QnKSwgIk5ldyBUYWl3YW4gRG9sbGFyIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdD
TlknKSwgIkNoaW5lc2UgWXVhbiIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyks
ICJKYXBhbmVzZSBZZW4iKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29k
ZSBpbiBUcmFkaXRpb25hbCBDaGluZXNlCitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworc2hvdWxkQmUoY3VycmVu
Y3lOYW1lcy5vZignVVNEJyksICLnvo7lhYMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2Yo
J0VVUicpLCAi5q2Q5YWDIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIuaW
sOWPsOW5oyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICLkurrmsJHluaMi
KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAi5pel5ZyTIik7CisKKy8vIEdl
dCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAorY3Vy
cmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVu
Y3knLCBzdHlsZTogJ3Nob3J0JyB9KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcp
LCAiJCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLigqwiKTsKK3Nob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiTlQkIik7CitzaG91bGRCZShjdXJyZW5jeU5h
bWVzLm9mKCdDTlknKSwgIkNOwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScp
LCAiwqUiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBFbmds
aXNoIGluIG5hcnJvdworY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2Vu
J10sIHt0eXBlOiAnY3VycmVuY3knLCBzdHlsZTogJ25hcnJvdycgfSk7CitzaG91bGRCZShjdXJy
ZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VV
UicpLCAi4oKsIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIiQiKTsKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWicp
LCAiSlBaIik7IC8vIEZhbGxiYWNrIGNvZGUKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJl
bmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFy
cm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJjb2RlIn1gKTsKKworY3VycmVuY3lO
YW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knLCBz
dHlsZTogJ25hcnJvdycsIGZhbGxiYWNrOiAnbm9uZScgfSk7CitzaG91bGRCZShjdXJyZW5jeU5h
bWVzLm9mKCdKUFonKSwgdW5kZWZpbmVkKTsgLy8gRmFsbGJhY2sgbm9uZQorc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6
ImVuIiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5vbmUi
fWApOworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCAiOTk5Iik7Citz
aG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7
ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoi
Y29kZSJ9YCk7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwg
e3R5cGU6ICdyZWdpb24nLCBmYWxsYmFjazonbm9uZSd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCc5OTknKSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5h
bWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0
eXBlIjoicmVnaW9uIiwiZmFsbGJhY2siOiJub25lIn1gKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1BQScpLCAiZW4tQUEiKTsKK3ZhciBvYmplY3QgPSB7Cisg
ICAgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAnZW4tQUEnOworICAgIH0KK307CitzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKG9iamVjdCksIG9iamVjdCk7CisKK2xhbmd1YWdlTmFtZXMg
PSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFsbGJh
Y2s6ICdub25lJ30pOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgdW5kZWZp
bmVkKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgdW5kZWZpbmVkKTsKKwor
c2hvdWxkQmUoSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10s
IGBJbnRsLkRpc3BsYXlOYW1lc2ApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNw
bGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJlbiIpKSwgYFsiZW4iXWApOworc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJqYS1K
UCIpKSwgYFsiamEtSlAiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5
TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKHsgbGVuZ3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAz
OiAnZGUnIH0pKSwgJ1siZXMiLCJlbiIsImRlIl0nKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwu
RGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZigiIiksIGBSYW5nZUVycm9yOiBpbnZhbGlk
IGxhbmd1YWdlIHRhZzogYCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2Ut
dW5pY29kZS1zdWJ0YWdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1
YnRhZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY1OWMxN2U3ZmY1YjZmZmVjZmRhN2IyZGFkYmRjNjU1MGY0
YTQxOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5pY29k
ZS1zdWJ0YWdzLmpzCkBAIC0wLDAgKzEsODggQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxE
aXNwbGF5TmFtZXM9MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwordmFyIHJl
Z2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24n
fSk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdp
b25OYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1
YnRhZ2ApOworc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAiKSwgYFJhbmdlRXJy
b3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+
IHJlZ2lvbk5hbWVzLm9mKCIwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVn
aW9uIHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAwMDAiKSwg
YFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRo
cm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCJhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigi
YWFhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7Citz
aG91bGRCZShyZWdpb25OYW1lcy5vZigiNDE5IiksIGBMYXRpbiBBbWVyaWNhYCk7CitzaG91bGRC
ZShyZWdpb25OYW1lcy5vZigiSlAiKSwgYEphcGFuYCk7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZigiVVMiKSwgYFVuaXRlZCBTdGF0ZXNgKTsKKwordmFyIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50
bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxkVGhyb3co
KCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLSIp
LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRo
cm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi0tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5v
ZigiZW4tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOwor
c2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigiZW4tVVMiKSwgYEFtZXJpY2FuIEVuZ2xpc2hgKTsK
K3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoIkVOX1VTIiksIGBBbWVyaWNhbiBFbmdsaXNoYCk7
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlbi11cyIpLCBgQW1lcmljYW4gRW5nbGlzaGAp
Oworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigicm9vdCIpLCBgUm9vdGApOworc2hvdWxkQmUo
bGFuZ3VhZ2VOYW1lcy5vZigicm9vdC1VUyIpLCBgUm9vdCAoVVMpYCk7IC8vIFRoaXMgaXMgT0sg
c2luY2Ugcm9vdCBpcyBub3cgcGFyc2VkIGFzIGEgc2NyaXB0Lgorc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZigiZXMtNDE5IiksIGBMYXRpbiBBbWVyaWNhbiBTcGFuaXNoYCk7CitpZiAoJHZtLmlj
dVZlcnNpb24oKSA8PSA2NikgeworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhh
bnQnKSwgYENoaW5lc2UsIFRyYWRpdGlvbmFsYCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1l
cy5vZignemgtSGFucy1ISycpLCBgQ2hpbmVzZSwgU2ltcGxpZmllZCAoSG9uZyBLb25nKWApOwor
fSBlbHNlIHsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksIGBUcmFk
aXRpb25hbCBDaGluZXNlYCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFu
cy1ISycpLCBgU2ltcGxpZmllZCBDaGluZXNlIChIb25nIEtvbmcpYCk7Cit9CitzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdIYW50JyksIGBIYW50YCk7IC8vIFNjcmlwdCBvbmx5CitzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCdzci1MYXRuJyksIGBTZXJiaWFuIChMYXRpbilgKTsgLy8gTGFu
Z3VhZ2UtU2NyaXB0CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzci1DeXJsJyksIGBTZXJi
aWFuIChDeXJpbGxpYylgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0CitzaG91bGRUaHJvdygoKSA9PiBs
YW5ndWFnZU5hbWVzLm9mKCJ6aC1ISy1IYW5zIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignc2wtcm96YWon
KSwgYFNsb3ZlbmlhbiAoUmVzaWFuKWApOyAvLyBMYW5ndWFnZS1WYXJpYW50CitzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdzbF9yb3phaicpLCBgU2xvdmVuaWFuIChSZXNpYW4pYCk7IC8vIExh
bmd1YWdlLVZhcmlhbnQKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLXJv
emFqLUN5cmwiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1yb3phai0iKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9
PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1fcm96YWoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9m
KCJzbC1DeXJsLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRg
KTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi1zbC1DeXJsLSIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ2h5LUxhdG4tSVQtYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFs
eSwgRWFzdGVybiBBcm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVJlZ2lvbi1WYXJpYW50
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdoeS1MYXRuLUlUJyksIGBBcm1lbmlhbiAoTGF0
aW4sIEl0YWx5KWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtUmVnaW9uCitzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCdoeS1MYXRuLWFyZXZlbGEnKSwgYEFybWVuaWFuIChMYXRpbiwgRWFzdGVybiBB
cm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVZhcmlhbnQKK3Nob3VsZFRocm93KCgpID0+
IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tSVRaLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFy
Z3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFn
ZU5hbWVzLm9mKCJoeS1MYXRuLTAwLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9m
KCJoeS1MYXRuLWFyZXZlbGF6enp6enp6enp6eiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMg
bm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2Yo
Imh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigi
aHl6enp6enp6enotTGF0bi1hcmV2ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworCit2YXIgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFt
ZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCd9KTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5h
bWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdg
KTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiBzY3Jp
cHROYW1lcy5vZigiTGF0bjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlw
dCBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYW4wIiksIGBS
YW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRUaHJv
dygoKSA9PiBzY3JpcHROYW1lcy5vZigiTGFuIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZigiTGF0biIpLCBg
TGF0aW5gKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJsYXRuIiksIGBMYXRpbmApOyAvLyBD
YW5vbmljYWxpemF0aW9uIGNhbiBtYWtlIGl0IHdvcmsuCisKK3ZhciBjdXJyZW5jeU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKK3Nob3Vs
ZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3coKCkgPT4g
Y3VycmVuY3lOYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2Vs
bC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1l
cy5vZigiYWIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1
cnJlbmN5IGNvZGVgKTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImpweXgi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNv
ZGVgKTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImpwMCIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hv
dWxkQmUoY3VycmVuY3lOYW1lcy5vZigianB5IiksIGBKYXBhbmVzZSBZZW5gKTsKK3Nob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoIkpQWSIpLCBgSmFwYW5lc2UgWWVuYCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
aW5kZXggYTc5ZjJkYmUzNjE2NmYwYjhlYmI5OTlkYjg1Y2Y0ZTE2NGI5NGRmMS4uZTYzNzJmZjky
ODNiY2ZiNTRiYWZhNmQ4YjViMTZlNGNhYThlMzNjOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjYs
NiArMjYsOSBAQCBza2lwOgogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1kYXlQZXJpb2QKICAg
ICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZm9ybWF0UmFuZ2UKICAgICAtIEludGwuRGF0ZVRpbWVG
b3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cworICAgICMgQ3VycmVudGx5LCB0ZXN0MjYyIGhh
cyBhIGJ1ZyB3aXRoIEludGwuRGlzcGxheU5hbWVzLCBhbmQgZXhwb3NpbmcgaXQgY2FuIGNhdXNl
IG1hbnkgZmFpbHVyZXMgaW4gdmFyaW91cyBJbnRsIHRlc3RzLgorICAgICMgV2Ugc2hvdWxkIGVu
YWJsZSBpdCBhZnRlciBlbnN1cmluZyB0ZXN0MjYyIGlzIGZpeGVkLgorICAgICMgaHR0cHM6Ly9n
aXRodWIuY29tL3RjMzkvdGVzdDI2Mi9pc3N1ZXMvMjY4MgogICAgIC0gSW50bC5EaXNwbGF5TmFt
ZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAogICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmll
ZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403170</attachid>
            <date>2020-06-29 21:14:19 -0700</date>
            <delta_ts>2020-06-29 21:28:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209779-20200629211419.patch</filename>
            <type>text/plain</type>
            <size>88178</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjBmZWU3MDkyZDc1YThjNGJkYTM2MGNiNzA4YTc3MTY5NWIzYzYxLi44NDMzYWM5NzliMjUzYTYw
YzI1ZjA3ZjkyZmJjMDBmODkxMzk0YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cGxlbWVudHMgSW50bC5EaXNwbGF5TmFtZXMgYmVoaW5kIHVzZUludGxEaXNwbGF5TmFtZXM9MSBm
bGFnLgorICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcyBjYW4gb2ZmZXIgcmVhZGFibGUgImRpc3Bs
YXktbmFtZSIgZm9yIElDVSBsYW5ndWFnZSwgc2NyaXB0LCByZWdpb24sIGN1cnJlbmN5IGNvZGVz
LgorICAgICAgICBGb3IgZXhhbXBsZSwgaXQgY2FuIG9mZmVyICJVbml0ZWQgU3RhdGVzIiBzdHJp
bmcgZm9yICJVUyIgcmVnaW9uIGNvZGUuCisgICAgICAgIFdlIHVzZSBJQ1UgVUxvY2FsZURpc3Bs
YXlOYW1lcyB0byBpbXBsZW1lbnQgaXQsIGV4Y2VwdCBmb3IgY3VycmVuY3kgc2luY2UgVUxvY2Fs
ZURpc3BsYXlOYW1lcyBpcyBub3Qgc3VwcG9ydGluZworICAgICAgICBjdXJyZW5jeSBjb3JyZWN0
bHk6IGl0IGlnbm9yZXMgImxvbmciLCAic2hvcnQiLCBhbmQgIm5hcnJvdyIgc3R5bGUgY29uZmln
dXJhdGlvbnMuIFdlIG5lZWQgdG8gY2FsbCB1Y3Vycl9nZXROYW1lCisgICAgICAgIGRpcmVjdGx5
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXBwcm9wcmlhdGVseSBhZGRzIHVuaWNvZGUtbGFuZ3Vh
Z2UtaWQgcGFyc2luZyBpbiBJbnRsTG9jYWxlLmNwcCBzbyB0aGF0IHdlIGNhbiB2YWxpZGF0ZSBs
YW5ndWFnZSBpZAorICAgICAgICB3aGVuIGl0IGlzIHBhc3NlZCB0byBgSW50bC5EaXNwbGF5TmFt
ZXMjb2ZgIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5h
bWVzOjpvZiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZS5oLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlO
YW1lc0NvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3I6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6Y2FsbElu
dGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3JTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlRnVuY09mKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmguCisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNV
bmljb2RlUmVnaW9uU3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlVmFyaWFudFN1YnRh
Zyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlSWQpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bExvY2FsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjppbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9j
YWxlcyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRpc3BsYXlOYW1lc1N0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMC0w
Ni0yOSAgVGV0c3VoYXJ1IE9oemVraSAgPHRldHN1aGFydS5vaHpla2lAZ21haWwuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBFTkFCTEVfU1RSRUFNU19BUEkgY29tcGlsYXRpb24gZmxhZwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGMyNTkxMDg2ZWJhYzcyMjA2NmE4NjQ0NWZh
YzIxMWRlZjgwMzA1ZTAuLmJkNWEwYWIxMDYxNmE0MDJkYTIwNDhkNDM4M2Q3ZjM2Zjg4YTVlYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwLDYgKzcwLDggQEAgc2V0
KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAg
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWNm
ZDVhOTBiYzg1YmM3MDI1MWNmMGRkZjE0MTQ1ZGU5ZWNmMDcuLmQwZDhkZmRjNDhhMzVlODIxN2Y3
YzAzNDFjMGZlMDNiYjQzZTA0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMzgsNiArMTM4LDggQEAgJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVD
VF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA3OWNkZTRlZTUwN2UxM2Y2
ZmY3ZmE3ODAwZGM2NDVjYmY4OTQxYzY3Li4yYmRmNWIyYzgyMmE2ZDllN2I2ZjQ1NmJiMGE5NjE2
M2VlMWQ2ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yNyw2ICsyNyw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvci5sdXQuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bExvY2FsZVByb3RvdHlwZS5s
dXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTBm
OWZlYzUxZGNlNDg2ODZmZjg3NDViZWFhNGI1YjVkNWIxMDMzZC4uYzFmZjVlNjI0NzM1MDY4Y2Zm
NGMxMmU0Y2Y0OGNkYzRmYTBhNjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE1OSw2ICsxNTksOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAg
ICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5o
IFwKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggXAorICAgIEludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUubHV0LmggXAogICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0Lmgg
XAogICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDlmODUxYzExNzJjNmUwNGVhYjgzODhjMjI4MGRhNTA4NDNhNjNiZGQuLmMwNjYzZDdmNjBmOTlk
ZjFkNDFkZWZlY2RjNTZlOWNlNTQ5MmNjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xODE5LDYgKzE4MTksOSBAQAogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJh
bWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM0RjkzMEUyMzIyRDg4MjAw
MkI4REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAq
LzsgfTsKIAkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0
OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICov
OyB9OworCQlFMzUzQzExRTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgg
Ki87IH07CisJCUUzNTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICov
OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYw
NjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyog
RE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxs
RE9NR2V0dGVyU25pcHBldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNTVEMzhGMjI0NDY4NzcwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RDM4
RDIyNDQ2ODZCMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODI4LDYgKzE4MzEsOCBAQAogCQlF
MzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MDFEQkMzQTU2MDBG
ODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0
YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzYz
N0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjVGMzNBMjRBQTYyMzkwMEM5
OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIg
LyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlFMzY1RjMzQjI0
QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM4MjRBQTYyMTEw
MEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzZC
NzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk4NSw2ICs0OTkwLDEyIEBACiAJCUUzNEY5MzBC
MjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsRGlzcGxheU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1
M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUz
QzExOTI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMUEyNEFBNENCNjAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJ
VENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNTVEMzhEMjI0NDY4NkIwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdsb2JhbEV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUwMDEsNiArNTAxMiw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGlt
ZUNvbnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29u
c3RhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MzdFRTgyMzZFNTZCMDAw
OTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMz
OTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI0ODAxMjNFOTU3Mzgw
MEU0QTY2RSAvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNkI3NjZFMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQ
bGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyog
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50
cnlQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzY3LDYgKzY3ODAsOCBA
QAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRTM2NUYzMzkyNEFB
NjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJ
CQlFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCkBAIC03MjYyLDYgKzcyNzcsMTIgQEAKIAkJ
CQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuaCAqLywKIAkJCQlBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8sCisJCQkJRTM1M0MxMTYyNEFBNENCNTAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3BwICovLAorCQkJCUUzNTNDMTE3MjRBQTRDQjYwMDNG
QkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggKi8sCisJCQkJRTM1M0MxMUEyNEFBNENCNjAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTM1M0MxMTgy
NEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJ
CUUzNTNDMTE5MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNw
cCAqLywKKwkJCQlFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5oICovLAogCQkJCUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxl
LmNwcCAqLywKIAkJCQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICov
LAogCQkJCUEzQUZGOTJGMjQ1QTNDRkIwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3Iu
Y3BwICovLApAQCAtOTc1Miw2ICs5NzczLDExIEBACiAJCQkJQTE1ODdENzUxQjREQzFDNjAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTND
MTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzUzQzExRTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0Mx
MjEyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNjVGMzNCMjRBQTYyM0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCBjMDUwMmEzNGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4xYjRmYmY3Y2Nh
YzQ3ZTllMGQ4Mjg0ZDY2MzU4MTgxMjFjYWUwZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC04MTQsNiArODE0LDkgQEAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3Bw
CiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAog
cnVudGltZS9JbnRsTG9jYWxlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3Bw
CiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1
MjYwNzVhZmRlYmFjOWFkYmEyNTI2NmJhLi4zYTQ5N2UwNzRhOTBlMGIxMTk1ODZiZmEwOGQ0ODNl
YjMwOTQyMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICAgICBtYWNybyhDb2xsYXRvcikgXAog
ICAgIG1hY3JvKERhdGUpIFwKICAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3Jv
KERpc3BsYXlOYW1lcykgXAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9y
KSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA1N2M0ZjdmNjM2MTMx
NzgxNDRhMWJjYWY0ODFhYzZhYTI4NzAwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCkBAIC0wLDAgKzEsMzY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXMuaCIKKworI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lczo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShJbnRsRGlzcGxheU5hbWVzKSB9OworCitJbnRsRGlzcGxheU5hbWVzKiBJbnRsRGlzcGxh
eU5hbWVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRv
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzPih2
bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lcyh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIElu
dGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERpc3BsYXlOYW1lczo6SW50bERp
c3BsYXlOYW1lcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1JbnRsLkRpc3BsYXlOYW1lcwordm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlz
cGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywg
SlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8g
cmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBs
b2NhbGVzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
SlNPYmplY3QqIG9wdGlvbnM7CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQor
ICAgICAgICBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+
bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0
aW9ucyA9IG9wdGlvbnNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIC8vIERvZXMgbm90
IHNldCBlaXRoZXIgb2YgImNhIiBvciAibnUiLgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWludGwtZGlzcGxheW5hbWVzLWNvbnN0cnVjdG9y
CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OworCisgICAgU3RyaW5nIG1hdGNoZXIg
PSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+bG9jYWxlTWF0Y2hlciwgeyAibG9va3VwIiwgImJlc3QgZml0IiB9LCAibG9jYWxlTWF0Y2hl
ciBtdXN0IGJlIGVpdGhlciBcImxvb2t1cFwiIG9yIFwiYmVzdCBmaXRcIiIsICJiZXN0IGZpdCIp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgb3B0LmFkZCgi
bG9jYWxlTWF0Y2hlciJfcywgbWF0Y2hlcik7CisKKworICAgIGF1dG8gbG9jYWxlRGF0YSA9IFtd
KGNvbnN0IFN0cmluZyYsIHNpemVfdCkgLT4gVmVjdG9yPFN0cmluZz4geworICAgICAgICByZXR1
cm4geyB9OworICAgIH07CisKKyAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gaW50bE51bWJl
ckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2Nh
bGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQs
IG51bGxwdHIsIDAsIGxvY2FsZURhdGEpOworCisgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJs
b2NhbGUiX3MpOworICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3Bs
YXlOYW1lIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgIm5hcnJvdyIsICJzaG9ydCIs
ICJsb25nIiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBv
ciBcImxvbmdcIiIsICJsb25nIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICBpZiAoc3R5bGVTdHJpbmcgPT0gIm5hcnJvdyJfcykKKyAgICAgICAgbV9zdHls
ZSA9IFN0eWxlOjpOYXJyb3c7CisgICAgZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInNob3J0Il9z
KQorICAgICAgICBtX3N0eWxlID0gU3R5bGU6OlNob3J0OworICAgIGVsc2UgaWYgKHN0eWxlU3Ry
aW5nID09ICJsb25nIl9zKQorICAgICAgICBtX3N0eWxlID0gU3R5bGU6Okxvbmc7CisgICAgZWxz
ZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmluZyB0eXBlU3RyaW5n
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFt
ZXMtPnR5cGUsIHsgImxhbmd1YWdlIiwgInJlZ2lvbiIsICJzY3JpcHQiLCAiY3VycmVuY3kiIH0s
ICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRc
Iiwgb3IgXCJjdXJyZW5jeVwiIiwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICBpZiAodHlwZVN0cmluZy5pc051bGwoKSkKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgYW4gdW5k
ZWZpbmVkIl9zKTsKKyAgICBpZiAodHlwZVN0cmluZyA9PSAibGFuZ3VhZ2UiX3MpCisgICAgICAg
IG1fdHlwZSA9IFR5cGU6Okxhbmd1YWdlOworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInJl
Z2lvbiJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmVnaW9uOworICAgIGVsc2UgaWYgKHR5
cGVTdHJpbmcgPT0gInNjcmlwdCJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6U2NyaXB0Owor
ICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQorICAgICAgICBtX3R5cGUg
PSBUeXBlOjpDdXJyZW5jeTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworCisgICAgU3RyaW5nIGZhbGxiYWNrU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCB7
ICJjb2RlIiwgIm5vbmUiIH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiBvciBc
Im5vbmVcIiIsICJjb2RlIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gImNvZGUiX3MpCisgICAgICAgIG1fZmFsbGJh
Y2sgPSBGYWxsYmFjazo6Q29kZTsKKyAgICBlbHNlIGlmIChmYWxsYmFja1N0cmluZyA9PSAibm9u
ZSJfcykKKyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpOb25lOworICAgIGVsc2UKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKworICAgIFVEaXNwbGF5Q29udGV4dCBjb250ZXh0c1tdID0geworICAgICAg
ICAvLyBlbl9HQiBkaXNwbGF5cyBhcyAnRW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pJyAoU3RhbmRh
cmQgTmFtZXMpIG9yICdCcml0aXNoIEVuZ2xpc2gnIChEaWFsZWN0IE5hbWVzKS4KKyAgICAgICAg
Ly8gV2UgdXNlIERpYWxlY3QgTmFtZXMgaGVyZSwgYWxpZ25lZCB0byB0aGUgZXhhbXBsZXMgaW4g
dGhlIHNwZWMgZHJhZnQgYW5kIFY4J3MgYmVoYXZpb3IuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzI2xhbmd1YWdlLWRpc3BsYXkt
bmFtZXMKKyAgICAgICAgVURJU1BDVFhfRElBTEVDVF9OQU1FUywKKworICAgICAgICAvLyBDYXBp
dGFpbGl6YXRpb24gbW9kZSBjYW4gYmUgcGlja2VkIGZyb20gc2V2ZXJhbCBvcHRpb25zLiBQb3Nz
aWJseSBlaXRoZXIgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSBvciBVRElTUENUWF9DQVBJ
VEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBpcworICAgICAgICAvLyBwcmVmZXJhYmxlIGluIElu
dGwuRGlzcGxheU5hbWVzLiBXZSB1c2UgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSBub3Qg
dG8gY2hhbmdlIGFueXRoaW5nIGZyb20gSUNVIGRhdGFiYXNlLgorICAgICAgICBVRElTUENUWF9D
QVBJVEFMSVpBVElPTl9OT05FLAorCisgICAgICAgIC8vIE5hcnJvdyBiZWNvbWVzIFVESVNQQ1RY
X0xFTkdUSF9TSE9SVC4gQnV0IGluIGN1cnJlbmN5IGNhc2UsIHdlIGhhbmRsZSBkaWZmZXJlbnRs
eSBpbnN0ZWFkIG9mIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXMuCisgICAgICAgIG1fc3R5bGUg
PT0gU3R5bGU6OkxvbmcgPyBVRElTUENUWF9MRU5HVEhfRlVMTCA6IFVESVNQQ1RYX0xFTkdUSF9T
SE9SVCwKKworICAgICAgICAvLyBBbHdheXMgZGlzYWJsZSBJQ1UgU1VCU1RJVFVURSBzaW5jZSBp
dCBkb2VzIG5vdCBtYXRjaCBhZ2FpbnN0IHdoYXQgdGhlIHNwZWMgZGVmaW5lcy4gSUNVIGhhcyBz
b21lIHNwZWNpYWwgc3Vic3RpdHV0ZSBydWxlcywgZm9yIGV4YXBtbGUsIGxhbmd1YWdlICJlbi1B
QSIKKyAgICAgICAgLy8gcmV0dXJucyAiRW5nbGlzaCAoQUEpIiAod2hpbGUgQUEgY291bnRyeSBj
b2RlIGlzIG5vdCBkZWZpbmVkKSwgYnV0IHdlIHdvdWxkIGxpa2UgdG8gcmV0dXJuIGVpdGhlciBp
bnB1dCB2YWx1ZSBvciB1bmRlZmluZWQsIHNvIHdlIGRvIG5vdCB3YW50IHRvIGhhdmUgSUNVIHN1
YnN0aXR1dGUgcnVsZXMuCisgICAgICAgIFVESVNQQ1RYX05PX1NVQlNUSVRVVEUsCisgICAgfTsK
KyAgICBtX2xvY2FsZUNTdHJpbmcgPSBtX2xvY2FsZS51dGY4KCk7CisgICAgbV9kaXNwbGF5TmFt
ZXMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxvY2FsZURpc3BsYXlO
YW1lc0RlbGV0ZXI+KHVsZG5fb3BlbkZvckNvbnRleHQobV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwg
Y29udGV4dHMsIFdURl9BUlJBWV9MRU5HVEgoY29udGV4dHMpLCAmc3RhdHVzKSk7CisgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAg
ICByZXR1cm47CisgICAgfQorfQorCitKU1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29kZVZhbHVlKSBjb25zdAoreworICAg
IEFTU0VSVChtX2Rpc3BsYXlOYW1lcyk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byBjb2RlID0gY29kZVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZl
cjsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKworICAgIGlmIChtX3R5
cGUgPT0gVHlwZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHVzZSB1bGRuX2tl
eVZhbHVlRGlzcGxheU5hbWUgKyAiY3VycmVuY3kiLiBUaGlzIGlzIGJlY2F1c2Ugb2YgdGhlIGZv
bGxvd2luZyByZWFzb25zLgorICAgICAgICAvLyAgICAgMS4gSUNVIGRvZXMgbm90IHJlc3BlY3Qg
VURJU1BDVFhfTEVOR1RIX0ZVTEwgLyBVRElTUENUWF9MRU5HVEhfU0hPUlQgaW4gaXRzIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAvLyAgICAgMi4gVGhlcmUgaXMgbm8gd2F5IHRvIHNldCAibmFy
cm93IiBzdHlsZSBpbiBVTG9jYWxlRGlzcGxheU5hbWVzIHdoaWxlIGN1cnJlbmN5IGhhdmUgIm5h
cnJvdyIgc3ltYm9sIHN0eWxlLgorCisgICAgICAgIC8vIENhbm9uaWNhbENvZGVGb3JEaXNwbGF5
TmFtZXMKKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5h
bWVzLyNzZWMtY2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgICAgICAvLyA1LiBJZiAh
IElzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjb2RlKSBpcyBmYWxzZSwgdGhyb3cgYSBSYW5nZUVy
cm9yIGV4Y2VwdGlwb24uCisgICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGNv
ZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOworICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFT
Q0lJKCkpOworCisgICAgICAgIFVDdXJyTmFtZVN0eWxlIHN0eWxlID0gVUNVUlJfTE9OR19OQU1F
OworICAgICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6TG9uZzoK
KyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9T
WU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlOjpOYXJy
b3c6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX05BUlJPV19TWU1CT0xfTkFNRTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gNi4gTGV0IGNvZGUgYmUgdGhl
IHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4x
LgorICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0XSA9IHsKKyAgICAgICAgICAgIHRvQVND
SUlVcHBlcihjb2RlWzBdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzFdKSwKKyAg
ICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzJdKSwKKyAgICAgICAgICAgIHUnXDAnCisgICAg
ICAgIH07CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMg
c3RyaW5nIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAg
ICBpbnQzMl90IGxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IFVDaGFyKiByZXN1bHQgPSB1Y3Vy
cl9nZXROYW1lKGN1cnJlbmN5LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBzdHlsZSwgbnVsbHB0
ciwgJmxlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lcy4iX3MpOworICAgICAgICAvLyB1Y3Vycl9nZXRO
YW1lIHJldHVybnMgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgaWYgdGhlIGRpc3BsYXktbmFtZSBp
cyBub3QgZm91bmQuIEJ1dCBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBpcyByZXR1cm5lZCBldmVu
IGlmCisgICAgICAgIC8vIG5hcnJvdyBhbmQgc2hvcnQgcmVzdWx0cyBhcmUgdGhlIHNhbWU6IG5h
cnJvdyAiVVNEIiBpcyAiJCIgd2l0aCBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBzaW5jZSBzaG9y
dCAiVVNEIiBpcyBhbHNvICIkIi4gV2UgbmVlZCB0byBjaGVjaworICAgICAgICAvLyByZXN1bHQg
PT0gY3VycmVuY3kgdG8gY2hlY2sgd2hldGhlciBJQ1UgYWN0dWFsbHkgZmFpbGVkIHRvIGZpbmQg
dGhlIGNvcnJlc3BvbmRpbmcgZGlzcGxheS1uYW1lLiBUaGlzIHBvaW50ZXIgY29tcGFyaXNvbiBp
cyBlbnN1cmVkIGJ5CisgICAgICAgIC8vIElDVSBBUEkgZG9jdW1lbnQuCisgICAgICAgIC8vID4g
UmV0dXJucyBwb2ludGVyIHRvIGRpc3BsYXkgc3RyaW5nIG9mICdsZW4nIFVDaGFycy4gSWYgdGhl
IHJlc291cmNlIGRhdGEgY29udGFpbnMgbm8gZW50cnkgZm9yICdjdXJyZW5jeScsIHRoZW4gJ2N1
cnJlbmN5JyBpdHNlbGYgaXMgcmV0dXJuZWQuCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlw
ZS5vZgorICAgICAgICBpZiAoc3RhdHVzID09IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HICYmIHJl
c3VsdCA9PSBjdXJyZW5jeSkKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxs
YmFjazo6Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICByZXR1cm4g
anNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQsIGxlbmd0aCkpOworICAgIH0KKworICAgIGF1dG8g
Y2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyA9IFtdKFR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlKSAtPiBDU3RyaW5nIHsKKyAgICAgICAgQVNTRVJUKGNvZGUuaXNBbGxBU0NJSSgp
KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjb2RlLmFzY2lpKCk7CisgICAgICAgIGNoYXIqIG11
dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7CisgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7CisgICAgICAgICAgICAvLyBMZXQgY29k
ZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byBsb3dlciBjYXNlIGFzIGRlc2NyaWJl
ZCBpbiA2LjEuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBy
ZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5k
ZXhdID0gdG9BU0NJSUxvd2VyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlJlZ2lvbjogeworICAgICAgICAgICAg
Ly8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBh
cyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFi
bGVEYXRhW2luZGV4XSA9IHRvQVNDSUlVcHBlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlOjpTY3JpcHQ6IHsKKyAg
ICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyB0aGUgZmlyc3Qg
Y2hhcmFjdGVyIGluIGNvZGUgdG8gdXBwZXIgY2FzZSwgYW5kIG1hcHBpbmcgdGhlIHNlY29uZCwg
dGhpcmQgYW5kIGZvdXJ0aCBjaGFyYWN0ZXIgaW4gY29kZSB0byBsb3dlciBjYXNlLCBhcyBkZXNj
cmliZWQgaW4gNi4xLgorICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+PSAxKQorICAg
ICAgICAgICAgICAgIG11dGFibGVEYXRhWzBdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhWzBd
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3VsdC5s
ZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0
b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBU
eXBlOjpMYW5ndWFnZTogeworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50
bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgICAg
IC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9k
dWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aXBvbi4KKyAgICAgICAgaWYgKCFpc1Vu
aWNvZGVMYW5ndWFnZUlkKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zKTsKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGNvZGUuaXNB
bGxBU0NJSSgpKTsKKyAgICAgICAgYXV0byBsYW5ndWFnZSA9IGNhbm9uaWNhbGl6ZUNvZGVGb3JE
aXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKKyAgICAgICAgLy8gRG8gbm90IHVzZSB1bGRuX2xh
bmd1YWdlRGlzcGxheU5hbWUgc2luY2UgaXQgaXMgbm90IGV4cGVjdGVkIG9uZSBmb3IgdGhpcyAi
bGFuZ3VhZ2UiIHR5cGUuIEl0IHJldHVybnMgImVuLVVTIiBmb3IgImVuLVVTIiBjb2RlLCBpbnN0
ZWFkIG9mICJBbWVyaWNhbiBFbmdsaXNoIi4KKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVzLmdl
dCgpLCBsYW5ndWFnZS5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIFR5cGU6OlJlZ2lvbjogeworICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisg
ICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9yZWdpb25fc3Vi
dGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpcG9uLgorICAgICAgICBp
ZiAoIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3Vi
dGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKGNvZGUuaXNBbGxBU0NJSSgpKTsKKyAgICAgICAgYXV0byByZWdpb24gPSBjYW5vbmljYWxp
emVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIHN0YXR1cyA9IGNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBtX2Rpc3Bs
YXlOYW1lcy5nZXQoKSwgcmVnaW9uLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5
bmFtZXMKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3Nj
cmlwdF9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlwb24uCisg
ICAgICAgIGlmICghaXNVbmljb2RlU2NyaXB0U3VidGFnKGNvZGUpKSB7CisgICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNj
cmlwdCBzdWJ0YWciX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworICAgICAgICBhdXRvIHNjcmlwdCA9IGNh
bm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKKyAgICAgICAgc3Rh
dHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUs
IG1fZGlzcGxheU5hbWVzLmdldCgpLCBzY3JpcHQuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKKyAgICAgICAgLy8gdWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwgdWxkbl9yZWdpb25E
aXNwbGF5TmFtZSwgYW5kIHVsZG5fc2NyaXB0RGlzcGxheU5hbWUgcmV0dXJuIFVfSUxMRUdBTF9B
UkdVTUVOVF9FUlJPUiBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3VuZC4KKyAgICAgICAg
Ly8gV2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgaWYgZmFsbGJhY2sgaXMgIm5vbmUiLiBPdGhl
cndpc2UsIHdlIHNob3VsZCByZXR1cm4gaW5wdXQgdmFsdWUuCisgICAgICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVz
LnByb3RvdHlwZS5vZgorICAgICAgICBpZiAoc3RhdHVzID09IFVfSUxMRUdBTF9BUkdVTUVOVF9F
UlJPUikKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6Tm9uZSkg
PyBqc1VuZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3BsYXkgbmFtZXMu
Il9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUlu
dGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMKK0pTT2JqZWN0KiBJbnRs
RGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmpl
Y3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2
bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIHR5cGVTdHJpbmcobV90eXBlKSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNrIiksIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsKKyAgICByZXR1
cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3Ry
aW5nKFN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxl
OjpOYXJyb3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9zOworICAgIGNhc2UgU3R5bGU6OlNo
b3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgU3R5bGU6Okxvbmc6Cisg
ICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50
bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZToKKyAgICAgICAgcmV0dXJuICJsYW5ndWFnZSJf
czsKKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjoKKyAgICAgICAgcmV0dXJuICJyZWdpb24iX3M7Cisg
ICAgY2FzZSBUeXBlOjpTY3JpcHQ6CisgICAgICAgIHJldHVybiAic2NyaXB0Il9zOworICAgIGNh
c2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZh
bGxiYWNrIGZhbGxiYWNrKQoreworICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKKyAgICBjYXNlIEZh
bGxiYWNrOjpDb2RlOgorICAgICAgICByZXR1cm4gImNvZGUiX3M7CisgICAgY2FzZSBGYWxsYmFj
azo6Tm9uZToKKyAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5YzJhOGJhNzIwMTU1MmUyODZhMTBiYjQwYzIxMzg4
NTFlZTQwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VsZG5h
bWVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXMgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0
YXRpY19jYXN0PEludGxEaXNwbGF5TmFtZXMqPihjZWxsKS0+SW50bERpc3BsYXlOYW1lczo6fklu
dGxEaXNwbGF5TmFtZXMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsRGlzcGxheU5hbWVzU3Bh
Y2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lcyogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHZvaWQgaW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
bG9jYWxlc1ZhbHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIG9mKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0
aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCitwcml2YXRlOgorICAgIEludGxEaXNwbGF5
TmFtZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisK
KyAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IE5hcnJvdywgU2hvcnQsIExvbmcgfTsK
KyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0
LCBDdXJyZW5jeSB9OworICAgIGVudW0gY2xhc3MgRmFsbGJhY2sgOiB1aW50OF90IHsgQ29kZSwg
Tm9uZSB9OworCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2spOworCisgICAgdXNpbmcgVUxvY2FsZURp
c3BsYXlOYW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4g
bV9kaXNwbGF5TmFtZXM7CisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIENTdHJpbmcgbV9sb2Nh
bGVDU3RyaW5nOworICAgIFN0eWxlIG1fc3R5bGUgeyBTdHlsZTo6TG9uZyB9OworICAgIFR5cGUg
bV90eXBlIHsgVHlwZTo6TGFuZ3VhZ2UgfTsKKyAgICBGYWxsYmFjayBtX2ZhbGxiYWNrIHsgRmFs
bGJhY2s6OkNvZGUgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZmYmZmM2Q5ODlmYjI0YmU2MzkwODMzODQxNjJjYTBmYjM5
MTFkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmgiCisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmQmFzZTo6c19pbmZvLCAmZGlzcGxheU5hbWVzQ29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpIH07CisKKy8q
IFNvdXJjZSBmb3IgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gZGlz
cGxheU5hbWVzQ29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAg
ICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3RvciogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVz
UHJvdG90eXBlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgZGlzcGxheU5hbWVzUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3Ry
dWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsSW50bERpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERpc3BsYXlOYW1l
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3I6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsSW50bERpc3BsYXlOYW1lcywg
Y29uc3RydWN0SW50bERpc3BsYXlOYW1lcykKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAiRGlzcGxheU5hbWVzIl9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJl
VHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgZGlzcGxheU5hbWVzUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgZGlzcGxheU5h
bWVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1JbnRsLkRpc3BsYXlOYW1lcworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SW50bERpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmpl
Y3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gbmV3VGFyZ2V0ID09IGNhbGxGcmFtZS0+anNDYWxsZWUoKQor
ICAgICAgICA/IGdsb2JhbE9iamVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCkKKyAgICAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3Qs
IG5ld1RhcmdldCwgZ2V0RnVuY3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZGlzcGxheU5hbWVz
U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBJbnRsRGlzcGxheU5hbWVzKiBkaXNwbGF5TmFtZXMgPSBJbnRsRGlzcGxheU5hbWVzOjpjcmVh
dGUodm0sIHN0cnVjdHVyZSk7CisgICAgQVNTRVJUKGRpc3BsYXlOYW1lcyk7CisKKyAgICBzY29w
ZS5yZWxlYXNlKCk7CisgICAgZGlzcGxheU5hbWVzLT5pbml0aWFsaXplRGlzcGxheU5hbWVzKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuRGlzcGxheU5hbWVzCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERpc3BsYXlOYW1lcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRpc3BsYXlOYW1lcyIp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAvLyBJbnRs
LkRpc3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVD
TUEtNDAyIDIuMCkKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YKKworICAgIC8v
IDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVEaXNwbGF5TmFtZXMlLltbYXZhaWxhYmxlTG9j
YWxlc11dLgorICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGlu
dGxEaXNwbGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKCk7CisKKyAgICAvLyAyLiBMZXQgcmVxdWVz
dGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIFZlY3Rv
cjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVk
TG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2Nh
bGVzKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0YWUxZThhODI1Yjg2ZjdhN2M4YTk2YzUwMWI0
NGZiY2FkODhiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJJbnRsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlOworCitjbGFzcyBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Ig
ZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKKworICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwor
CisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9u
KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhOGVjODBmNDI1MzVmZmQ2MGM5Mzk5Nzk0N2EyMDJkYTNmYjMxNzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJ
bnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZUZ1bmNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisj
aW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJJbnRsLkRpc3BsYXlOYW1lcyIsICZCYXNlOjpzX2luZm8sICZkaXNwbGF5TmFtZXNQcm90
b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUu
bHV0LmgKK0BiZWdpbiBkaXNwbGF5TmFtZXNQcm90b3R5cGVUYWJsZQorICBvZiAgICAgICAgICAg
ICAgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLwor
CitJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlPih2
bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1
Y3R1cmUqIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZTo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2
b2lkIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50
bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRpc3BsYXlOYW1lcykKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlz
cGxheU5hbWVzLnByb3RvdHlwZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5TmFtZXMiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGlzcGxheU5hbWVzLT5vZihnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGF1dG8qIGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRpc3BsYXlOYW1lcykKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
RGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzIl9zKTsKKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1l
cy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY3ZTU4M2E2NzU3NDRlNDE1YTQ4NWU4
M2VmMWYzNTg2ZTliMTI0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25G
aW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFz
ZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4IDgwZTY0ZjFhYjE3OTcxMzhiMjUy
YjhmY2QxMDcxZDc2YmRkNDYyOWEuLjA5YWMyNTI4NzA1YzJjYmZhMDMzMzAyNTNhODlmNDIzMDBk
OTMyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3Bw
CkBAIC0xOTksMTkgKzE5OSw4NiBAQCBzdGF0aWMgYm9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRh
ZyhTdHJpbmdWaWV3IHN0cmluZykKIH0KIAogLy8gdW5pY29kZV9zY3JpcHRfc3VidGFnID0gYWxw
aGF7NH0gOwotc3RhdGljIGJvb2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1ZpZXcgc3Ry
aW5nKQorYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAg
ICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKIH0KIAogLy8gdW5pY29kZV9yZWdpb25fc3VidGFnID0g
YWxwaGF7Mn0gfCBkaWdpdHszfSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWco
U3RyaW5nVmlldyBzdHJpbmcpCitib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3
IHN0cmluZykKIHsKICAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICByZXR1
cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlB
bHBoYT4oKSkKICAgICAgICAgfHwgKGxlbmd0aCA9PSAzICYmIHN0cmluZy5pc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7CiB9CiAKKy8vIHVuaWNvZGVfdmFyaWFudF9zdWJ0
YWcgPSAoYWxwaGFudW17NSw4fSB8IGRpZ2l0IGFscGhhbnVtezN9KSA7CitzdGF0aWMgYm9vbCBp
c1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPj0gNSAmJiBsZW5ndGggPD0g
OCkKKyAgICAgICAgcmV0dXJuIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlB
bHBoYW51bWVyaWM+KCk7CisgICAgcmV0dXJuIGxlbmd0aCA9PSA0ICYmIGlzQVNDSUlEaWdpdChz
dHJpbmdbMF0pICYmIHN0cmluZy5zdWJzdHJpbmcoMSkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0FTQ0lJQWxwaGFudW1lcmljPigpOworfQorCisvLyB1bmljb2RlX2xhbmd1YWdlX2lkID0KKy8v
ICAgICAicm9vdCIKKy8vICAgICB8ICh1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyAoc2VwIHVuaWNv
ZGVfc2NyaXB0X3N1YnRhZyk/IHwgdW5pY29kZV9zY3JpcHRfc3VidGFnKSAoc2VwIHVuaWNvZGVf
cmVnaW9uX3N1YnRhZyk/IChzZXAgdW5pY29kZV92YXJpYW50X3N1YnRhZykqIDsKK2Jvb2wgaXNV
bmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGZpbmRTZXBh
cmF0b3IgPSBbXShTdHJpbmdWaWV3IHZpZXcpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZpZXcubGVuZ3RoKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHZpZXdbaW5kZXhdOworICAgICAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLScgfHwgY2hhcmFjdGVyID09ICdfJykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICB9OworCisgICAgVmVjdG9yPFN0cmluZ1ZpZXcsIDI+IHN1YnRhZ3M7CisgICAg
U3RyaW5nVmlldyByZW1haW5pbmcgPSBzdHJpbmc7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgaWYgKGF1dG8gc2VwYXJhdG9yUG9zaXRpb24gPSBmaW5kU2VwYXJhdG9yKHJlbWFpbmluZykp
IHsKKyAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKHJlbWFpbmluZy5zdWJzdHJpbmcoMCwgc2Vw
YXJhdG9yUG9zaXRpb24udmFsdWUoKSkpOworICAgICAgICAgICAgcmVtYWluaW5nID0gcmVtYWlu
aW5nLnN1YnN0cmluZyhzZXBhcmF0b3JQb3NpdGlvbi52YWx1ZSgpICsgMSk7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBzdWJ0YWdzLmFwcGVuZChyZW1haW5pbmcp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoc3VidGFncy5zaXplKCkgPj0g
MSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICBpZiAoc3VidGFncy5zaXplKCkgPT0g
MSkgeworICAgICAgICAvLyBPbmx5IG9uZSBzdWJ0YWcuIFNvIGl0IG11c3QgYmUgbGFuZ3VhZ2Ug
b3Igc2NyaXB0LgorICAgICAgICByZXR1cm4gc3VidGFnc1tjdXJzb3JdID09ICJyb290Il9zIHx8
IGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkgfHwgaXNVbmljb2RlU2Ny
aXB0U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSk7CisgICAgfQorCisgICAgQVNTRVJUKCFjdXJzb3Ip
OworICAgIEFTU0VSVChzdWJ0YWdzLnNpemUoKSA+PSAyKTsKKyAgICBpZiAoaXNVbmljb2RlTGFu
Z3VhZ2VTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkgeworICAgICAgICArK2N1cnNvcjsKKyAgICAg
ICAgaWYgKGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICAg
ICAgKytjdXJzb3I7CisgICAgfSBlbHNlIGlmIChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFn
c1tjdXJzb3JdKSkKKyAgICAgICAgKytjdXJzb3I7CisgICAgZWxzZQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmljb2RlUmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkp
CisgICAgICAgICsrY3Vyc29yOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1
cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAoIWlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytjdXJzb3I7CisgICAgfQorfQorCiAvLyBodHRw
czovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlCiB2b2lkIEludGxMb2NhbGU6Omlu
aXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YWdW
YWx1ZSwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlLmgKaW5kZXggYWZiNjlhMmQxZmU1YWMyNjI1MDdlOWE5YzQ5MGE5NGNh
ZmMwZmVjYS4uM2Q1NDkwM2QwYjNmYTYxMjBhMjc4NmJlZWM5NjE1ZDhmMzBhOWVmYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaApAQCAtOTAsNCArOTAsOCBA
QCBjbGFzcyBJbnRsTG9jYWxlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
IFRyaVN0YXRlIG1fbnVtZXJpYyB7IFRyaVN0YXRlOjpJbmRldGVybWluYXRlIH07CiB9OwogCiti
b29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVn
aW9uU3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1Zp
ZXcpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYzM4ZmU5OWUyZjRmMGEzZGIyZjNh
YjE3OTkyMmViYTgzOGFhMjkzOC4uMTE1YTgwYTg1ZDc1ZmU3NjZkZWUyMzU4NmU5YzE3MTEyN2E5
YWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKQEAgLTQ0LDYgKzQ0LDExIEBAIG5hbWVzcGFjZSBJbnRsTnVtYmVyRm9ybWF0
SW50ZXJuYWwgewogY29uc3RleHByIGNvbnN0IGNoYXIqIHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sx
XSA9IHsgIm51IiB9OwogfQogCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdW
aWV3IGN1cnJlbmN5KQoreworICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1
cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOworfQorCiBzdHJ1
Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsKICAgICBpbnQzMl90IHR5cGU7CiAgICAgc2l6ZV90
IHNpemU7CkBAIC0yMTEsNyArMjE2LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBT
dHJpbmcgY3VycmVuY3kgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIHsgfSwgbnVsbHB0ciwgbnVs
bHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAo
IWN1cnJlbmN5LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAz
IHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewor
ICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjdXJyZW5jeSkpIHsKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kg
Y29kZSJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggNDMwNGIyMmE4
YzZhNTExZjc0ZTJiZGNiMDUzODhkNWI2NWI3MzQ3Ni4uM2QyMmQzMmM3ZTkyYjA4MTIzMjQyZWU0
OTQxYjNkZTA1OTNhODllZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaApAQCAtOTksNCArOTksNiBAQCBjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGJvb2wgbV91c2VHcm91
cGluZyB7IHRydWUgfTsKIH07CiAKK2Jvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmlu
Z1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMWRmYTIwODJhZjE0MjNmNGQzZWQzZTEzMzBhOTQ5
NjNiZWVhNDMwMS4uYzMyZTg0Yzk3NDEyMzA0ZTNhNTcwMjEzZjI2YTY5NzIwYWUyYjMxZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRs
TG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SW50bExvY2FsZVByb3RvdHlwZS5oIgpAQCAtNzcsNiArNzksMTMgQEAgc3RhdGljIEpTVmFsdWUg
Y3JlYXRlRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
CiAgICAgcmV0dXJuIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3Jl
YXRlRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQorewor
ICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9i
amVjdCh2bSk7CisgICAgcmV0dXJuIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGlzcGxheU5hbWVzU3RydWN0
dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZUxvY2FsZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJ
bnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwpAQCAt
MTUyLDYgKzE2MSw4IEBAIEludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSoKIHZvaWQgSW50bE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIGlmIChPcHRpb25zOjp1c2VJbnRsRGlzcGxheU5hbWVzKCkp
CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5EaXNwbGF5TmFtZXMsIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKHZtLCB0aGlzKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQog
CiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGVkOWMxZTEwYjZhZGE0ZmQ5ZDQyNTc0
NjA2Y2RkOTJhOTEyMjM5YjcuLmY5MDU5NmY1ZjFkNDBjZjUxMGE4MWYzZDk3MjVlYmUzMTA2ZDRh
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTYw
LDYgKzYwLDcgQEAgU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqKTsKIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsKIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwogaW5saW5lIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0
dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxEaXNwbGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWls
YWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJl
ckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygp
OyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2Fs
ZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0
ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAwNi4uYzg3OTI3NDViOTM0ODAzZmRmNmJhZjFhYjRi
MDY3Y2E4YjkyYmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRv
clByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0LmgiCkBAIC05ODEsNiArOTgzLDEyIEBAIGNhcGl0YWxOYW1lICMj
IENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNh
cGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUo
aW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3Jl
YXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuaW5pdExhdGVy
KAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZSogZGlzcGxheU5hbWVzUHJvdG90eXBlID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3Jl
YXRlKGluaXQudm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0KEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkpOworICAgICAgICB9
KTsKICAgICBtX2xvY2FsZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBA
IC0xODMyLDYgKzE4NDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kZWZh
dWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fZGlzcGxheU5hbWVz
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMx
NGMxLi4yNzc3NGViYmM2MDM2ZjdhMzViZjM1ZWU4MWUxNGU3NmNhMDJjNjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5Miw2ICsy
OTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4g
bV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGlzcGxheU5hbWVzU3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1i
ZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CkBAIC03OTIsNiArNzkzLDcgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVj
dHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogZGlzcGxheU5hbWVzU3RydWN0
dXJlKCkgeyByZXR1cm4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAg
U3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1h
dFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgK
aW5kZXggNWRjZjQyOGJmNDc3MTliNTk0YjY3MGNlNThkODc3N2QzNzkyNzI2MC4uOTAwYzAxNDVk
MTdiNmZmNTU3MDhjYWFiMzdlNzQwZGY3YjBmMWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00ODgsNiArNDg4LDcgQEAgY29uc3RleHByIGJv
b2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVz
ZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20g
dGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMs
IGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAg
IHYoQm9vbCwgdXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJs
ZSBCaWdJbnQgc3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGlzcGxheU5hbWVzLCBm
YWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRpc3BsYXlOYW1lcyBjb25zdHJ1Y3Rvci4i
KSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1h
bCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9m
aWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWlt
IHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2Us
IE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmpl
Y3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWlu
aVZNTW9kZSwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBt
b2RlIG9uLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxNjdjZjBm
NWQ5ZmNmYmM3NzNiMGM1NWQ3MWIyM2NiYTVmZTYyYjc2Li40MGRkYzA1MmI4MTk3OGY1OTAyNWRm
MmI5NmY5ODIwMDM3Mjc3NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRs
Q29sbGF0b3IuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJ
bnRsRGlzcGxheU5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIklu
dGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAgLTMwNiw2
ICszMDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5k
aWYKICAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsQ29sbGF0b3I+KCkpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlz
cGxheU5hbWVzPigpKQogICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigpKQogICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwg
aW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQ
bHVyYWxSdWxlcz4oKSkKQEAgLTE0ODEsNiArMTQ4Myw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwg
Y2FsCiAjZW5kaWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRs
Q29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0
b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1l
Rm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERh
dGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwg
SW50bERpc3BsYXlOYW1lcykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2Nh
bGUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZv
cm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVy
Rm9ybWF0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVy
YWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVy
YWxSdWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJlZDE2Njg4MDU2Njc5
YjAzZWQwYzJiOGI0ZDgwODgwNzVmMmZiMzMuLjhkNDdmMjAyYTNmZDEzZTNhYzNkZjI5NmRlMjY1
ZjEyMmUwNzUzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTI2LDYgKzEy
Niw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxD
b2xsYXRvcjsKIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFt
ZXM7CiBjbGFzcyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIElu
dGxQbHVyYWxSdWxlczsKQEAgLTQwMCw2ICs0MDEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewog
I2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxE
YXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2Vs
bFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJG
b3JtYXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQ
bHVyYWxSdWxlc1NwYWNlKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCBhNjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5
Li40MTYxODY5YTM3ZDFjYjNkY2NiMmE0OTkwYzA1Mzk0NmM4NzZjYzE5IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDIwLTA2LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5h
bWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LmN1cnJlbmN5TmFtZXMucmVzb2x2
ZWRPcHRpb25zKToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LnJlZ2lvbk5hbWVz
LnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIChvYmplY3QudG9TdHJpbmcpOgorICAgICAgICAo
UmFuZ2VFcnJvci5pbnZhbGlkLmxhbmd1YWdlLnRhZy5zaG91bGRUaHJvdyk6CisgICAgICAgIChU
eXBlRXJyb3IuSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mLmNhbGxlZC5vbi52YWx1ZS50
aGF0LnNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1
YnRhZ3MuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhy
b3cpOgorICAgICAgICAodm0uaWN1VmVyc2lvbik6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcu
eWFtbDoKKwogMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRs
LWRpc3BsYXluYW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxOTE3ZDkwZjVmODA1MTAxZmRkMGQ4MzUzOTgyNjI2ZjhmNDgwOTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcwpAQCAtMCww
ICsxLDE4OSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlSW50bERpc3BsYXlOYW1lcz0xIikKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50
bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJyb3I6IHR5cGUgbXVzdCBub3QgYmUgYW4gdW5kZWZpbmVk
YCkKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgcmVnaW9uIGluIEVuZ2xpc2gKK3ZhciByZWdp
b25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJ30p
Oworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworc2hv
dWxkQmUocmVnaW9uTmFtZXMub2YoJ0JaJyksICJCZWxpemUiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdVUycpLCAiVW5pdGVkIFN0YXRlcyIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2Yo
J0JBJyksICJCb3NuaWEgJiBIZXJ6ZWdvdmluYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2Yo
J01NJyksICJNeWFubWFyIChCdXJtYSkiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgcmVn
aW9uIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ3JlZ2lvbid9KTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCc0MTknKSwgIuaLieS4gee+jua0siIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2Yo
J0JaJyksICLosp3ph4zmlq8iKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAi576O
5ZyLIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIuazouWjq+WwvOS6nuiIh+i1
q+WhnuWTpee2ree0jSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyksICLnt6znlLgi
KTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTog
J3JlZ2lvbicsIHN0eWxlOiAnc2hvcnQnfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignNDE5
JyksICJMYXRpbiBBbWVyaWNhIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJl
bGl6ZSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICJVUyIpOworc2hvdWxkQmUo
cmVnaW9uTmFtZXMub2YoJ0JBJyksICJCb3NuaWEiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9m
KCdNTScpLCAiTXlhbm1hciIpOworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1l
cyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICduYXJyb3cnfSk7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7CitzaG91bGRCZShyZWdpb25O
YW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyks
ICJVUyIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0JBJyksICJCb3NuaWEiKTsKK3Nob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciIpOworCisvLyBHZXQgZGlzcGxheSBu
YW1lcyBvZiBsYW5ndWFnZSBpbiBFbmdsaXNoCit2YXIgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRCZShsYW5n
dWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCdkZScpLCAiR2VybWFuIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmci1DQScpLCAi
Q2FuYWRpYW4gRnJlbmNoIik7CitpZiAoJHZtLmljdVZlcnNpb24oKSA8PSA2NikKKyAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIp
OworZWxzZQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIlRyYWRp
dGlvbmFsIENoaW5lc2UiKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJB
bWVyaWNhbiBFbmdsaXNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAi
Q2hpbmVzZSAoVGFpd2FuKSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBsYW5ndWFnZSBp
biBUcmFkaXRpb25hbCBDaGluZXNlCitsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5h
bWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignZnInKSwgIuazleaWhyIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgn
KSwgIuS4reaWhyIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIuW+t+aWhyIp
OworCitsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6
ICdsYW5ndWFnZScsIHN0eWxlOiAnc2hvcnQnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCdmcicpLCAiRnJlbmNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2Vy
bWFuIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmci1DQScpLCAiQ2FuYWRpYW4gRnJl
bmNoIik7CitpZiAoJHZtLmljdVZlcnNpb24oKSA8PSA2NikKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworZWxzZQorICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIlRyYWRpdGlvbmFsIENoaW5l
c2UiKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIp
OworCitsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6
ICdsYW5ndWFnZScsIHN0eWxlOiAnbmFycm93J30pOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZnInKSwgIkZyZW5jaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdl
cm1hbiIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwgIkNhbmFkaWFuIEZy
ZW5jaCIpOworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwgVHJhZGl0aW9uYWwiKTsKK2Vsc2UKKyAg
ICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFkaXRpb25hbCBDaGlu
ZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1VUycpLCAiVVMgRW5nbGlzaCIp
Oworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbiki
KTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2Ygc2NyaXB0IGluIEVuZ2xpc2gKK3ZhciBzY3Jp
cHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0J30p
OworLy8gR2V0IHNjcmlwdCBuYW1lcworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwg
IkxhdGluIik7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAiQXJhYmljIik7Citz
aG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworLy8gR2V0IGRp
c3BsYXkgbmFtZXMgb2Ygc2NyaXB0IGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK3NjcmlwdE5hbWVz
ID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ3NjcmlwdCd9KTsK
K3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICLmi4nkuIHmlociKTsKK3Nob3VsZEJl
KHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICLpmL/mi4nkvK/mlociKTsKK3Nob3VsZEJlKHNjcmlw
dE5hbWVzLm9mKCdLYW5hJyksICLniYflgYflkI0iKTsKKworc2NyaXB0TmFtZXMgPSBuZXcgSW50
bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnc2hvcnQnfSk7
CitzaG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0bicpLCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNj
cmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9m
KCdLYW5hJyksICJLYXRha2FuYSIpOworCitzY3JpcHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlO
YW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0Jywgc3R5bGU6ICduYXJyb3cnfSk7CitzaG91bGRC
ZShzY3JpcHROYW1lcy5vZignTGF0bicpLCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVz
Lm9mKCdBcmFiJyksICJBcmFiaWMiKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyks
ICJLYXRha2FuYSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGlu
IEVuZ2xpc2gKK3ZhciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4n
XSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKKy8vIEdldCBjdXJyZW5jeSBuYW1lcworc2hvdWxkQmUo
Y3VycmVuY3lOYW1lcy5vZignVVNEJyksICJVUyBEb2xsYXIiKTsKK3Nob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ0VVUicpLCAiRXVybyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdE
JyksICJOZXcgVGFpd2FuIERvbGxhciIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05Z
JyksICJDaGluZXNlIFl1YW4iKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAi
SmFwYW5lc2UgWWVuIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUg
aW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlO
YW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKK3Nob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ1VTRCcpLCAi576O5YWDIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdF
VVInKSwgIuatkOWFgyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICLmlrDl
j7DluaMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAi5Lq65rCR5bmjIik7
CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwgIuaXpeWckyIpOworCisvLyBHZXQg
ZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGluIEVuZ2xpc2ggaW4gc2hvcnQKK2N1cnJl
bmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5
Jywgc3R5bGU6ICdzaG9ydCcgfSk7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwg
IiQiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAi4oKsIik7CitzaG91bGRC
ZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIk5UJCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignQ05ZJyksICJDTsKlIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwg
IsKlIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlz
aCBpbiBuYXJyb3cKK2N1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbidd
LCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICduYXJyb3cnIH0pOworc2hvdWxkQmUoY3VycmVu
Y3lOYW1lcy5vZignVVNEJyksICIkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVIn
KSwgIuKCrCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICIkIik7CitzaG91
bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIsKlIik7CitzaG91bGRCZShjdXJyZW5jeU5h
bWVzLm9mKCdKUFknKSwgIsKlIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFonKSwg
IkpQWiIpOyAvLyBGYWxsYmFjayBjb2RlCitzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW5j
eU5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6Im5hcnJv
dyIsInR5cGUiOiJjdXJyZW5jeSIsImZhbGxiYWNrIjoiY29kZSJ9YCk7CisKK2N1cnJlbmN5TmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5
bGU6ICduYXJyb3cnLCBmYWxsYmFjazogJ25vbmUnIH0pOworc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignSlBaJyksIHVuZGVmaW5lZCk7IC8vIEZhbGxiYWNrIG5vbmUKK3Nob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJl
biIsInN0eWxlIjoibmFycm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJub25lIn1g
KTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTog
J3JlZ2lvbid9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc5OTknKSwgIjk5OSIpOworc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkocmVnaW9uTmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJs
b2NhbGUiOiJlbiIsInN0eWxlIjoibG9uZyIsInR5cGUiOiJyZWdpb24iLCJmYWxsYmFjayI6ImNv
ZGUifWApOworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0
eXBlOiAncmVnaW9uJywgZmFsbGJhY2s6J25vbmUnfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignOTk5JyksIHVuZGVmaW5lZCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1l
cy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlw
ZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoibm9uZSJ9YCk7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcg
SW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxkQmUo
bGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgImVuLUFBIik7Cit2YXIgb2JqZWN0ID0geworICAg
IHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gJ2VuLUFBJzsKKyAgICB9Cit9Oworc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCBvYmplY3QpOworCitsYW5ndWFnZU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZScsIGZhbGxiYWNr
OiAnbm9uZSd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLUFBJyksIHVuZGVmaW5l
ZCk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKG9iamVjdCksIHVuZGVmaW5lZCk7CisKK3No
b3VsZEJlKEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddLCBg
SW50bC5EaXNwbGF5TmFtZXNgKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxh
eU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZigiZW4iKSksIGBbImVuIl1gKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZigiamEtSlAi
KSksIGBbImphLUpQIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5h
bWVzLnN1cHBvcnRlZExvY2FsZXNPZih7IGxlbmd0aDogNCwgMTogJ2VuJywgMDogJ2VzJywgMzog
J2RlJyB9KSksICdbImVzIiwiZW4iLCJkZSJdJyk7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkRp
c3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YoIiIpLCBgUmFuZ2VFcnJvcjogaW52YWxpZCBs
YW5ndWFnZSB0YWc6IGApCisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBJbnRsLkRpc3BsYXlO
YW1lcy5wcm90b3R5cGUub2YuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiBJbnRsLkRpc3BsYXlO
YW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGlu
aXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAg
ICBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoe30pOwor
fSwgYFR5cGVFcnJvcjogSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9u
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBE
aXNwbGF5TmFtZXNgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5p
Y29kZS1zdWJ0YWdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1YnRh
Z3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTY1OWMxN2U3ZmY1YjZmZmVjZmRhN2IyZGFkYmRjNjU1MGY0YTQx
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1z
dWJ0YWdzLmpzCkBAIC0wLDAgKzEsODggQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNw
bGF5TmFtZXM9MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwordmFyIHJlZ2lv
bk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7
CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25O
YW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRh
Z2ApOworc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAiKSwgYFJhbmdlRXJyb3I6
IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHJl
Z2lvbk5hbWVzLm9mKCIwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9u
IHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAwMDAiKSwgYFJh
bmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93
KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCJhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSByZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiYWFh
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91
bGRCZShyZWdpb25OYW1lcy5vZigiNDE5IiksIGBMYXRpbiBBbWVyaWNhYCk7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZigiSlAiKSwgYEphcGFuYCk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZigi
VVMiKSwgYFVuaXRlZCBTdGF0ZXNgKTsKKwordmFyIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5E
aXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxkVGhyb3coKCkg
PT4gbGFuZ3VhZ2VOYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLSIpLCBg
UmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93
KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi0tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigi
ZW4tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigiZW4tVVMiKSwgYEFtZXJpY2FuIEVuZ2xpc2hgKTsKK3No
b3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoIkVOX1VTIiksIGBBbWVyaWNhbiBFbmdsaXNoYCk7Citz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlbi11cyIpLCBgQW1lcmljYW4gRW5nbGlzaGApOwor
c2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigicm9vdCIpLCBgUm9vdGApOworc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZigicm9vdC1VUyIpLCBgUm9vdCAoVVMpYCk7IC8vIFRoaXMgaXMgT0sgc2lu
Y2Ugcm9vdCBpcyBub3cgcGFyc2VkIGFzIGEgc2NyaXB0Lgorc2hvdWxkQmUobGFuZ3VhZ2VOYW1l
cy5vZigiZXMtNDE5IiksIGBMYXRpbiBBbWVyaWNhbiBTcGFuaXNoYCk7CitpZiAoJHZtLmljdVZl
cnNpb24oKSA8PSA2NikgeworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQn
KSwgYENoaW5lc2UsIFRyYWRpdGlvbmFsYCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignemgtSGFucy1ISycpLCBgQ2hpbmVzZSwgU2ltcGxpZmllZCAoSG9uZyBLb25nKWApOworfSBl
bHNlIHsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksIGBUcmFkaXRp
b25hbCBDaGluZXNlYCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFucy1I
SycpLCBgU2ltcGxpZmllZCBDaGluZXNlIChIb25nIEtvbmcpYCk7Cit9CitzaG91bGRCZShsYW5n
dWFnZU5hbWVzLm9mKCdIYW50JyksIGBIYW50YCk7IC8vIFNjcmlwdCBvbmx5CitzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdzci1MYXRuJyksIGBTZXJiaWFuIChMYXRpbilgKTsgLy8gTGFuZ3Vh
Z2UtU2NyaXB0CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzci1DeXJsJyksIGBTZXJiaWFu
IChDeXJpbGxpYylgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0CitzaG91bGRUaHJvdygoKSA9PiBsYW5n
dWFnZU5hbWVzLm9mKCJ6aC1ISy1IYW5zIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignc2wtcm96YWonKSwg
YFNsb3ZlbmlhbiAoUmVzaWFuKWApOyAvLyBMYW5ndWFnZS1WYXJpYW50CitzaG91bGRCZShsYW5n
dWFnZU5hbWVzLm9mKCdzbF9yb3phaicpLCBgU2xvdmVuaWFuIChSZXNpYW4pYCk7IC8vIExhbmd1
YWdlLVZhcmlhbnQKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLXJvemFq
LUN5cmwiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7Citz
aG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1yb3phai0iKSwgYFJhbmdlRXJy
b3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBs
YW5ndWFnZU5hbWVzLm9mKCJzbC1fcm96YWoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJz
bC1DeXJsLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsK
K3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi1zbC1DeXJsLSIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2h5LUxhdG4tSVQtYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFseSwg
RWFzdGVybiBBcm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVJlZ2lvbi1WYXJpYW50Citz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdoeS1MYXRuLUlUJyksIGBBcm1lbmlhbiAoTGF0aW4s
IEl0YWx5KWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtUmVnaW9uCitzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCdoeS1MYXRuLWFyZXZlbGEnKSwgYEFybWVuaWFuIChMYXRpbiwgRWFzdGVybiBBcm1l
bmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVZhcmlhbnQKK3Nob3VsZFRocm93KCgpID0+IGxh
bmd1YWdlTmFtZXMub2YoImh5LUxhdG4tSVRaLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5h
bWVzLm9mKCJoeS1MYXRuLTAwLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJo
eS1MYXRuLWFyZXZlbGF6enp6enp6enp6eiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90
IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5
LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHl6
enp6enp6enotTGF0bi1hcmV2ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOworCit2YXIgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
WydlbiddLCB7dHlwZTogJ3NjcmlwdCd9KTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVz
Lm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsK
K3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiBzY3JpcHRO
YW1lcy5vZigiTGF0bjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBz
dWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYW4wIiksIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRUaHJvdygo
KSA9PiBzY3JpcHROYW1lcy5vZigiTGFuIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZigiTGF0biIpLCBgTGF0
aW5gKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJsYXRuIiksIGBMYXRpbmApOyAvLyBDYW5v
bmljYWxpemF0aW9uIGNhbiBtYWtlIGl0IHdvcmsuCisKK3ZhciBjdXJyZW5jeU5hbWVzID0gbmV3
IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKK3Nob3VsZFRo
cm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMg
bm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3coKCkgPT4gY3Vy
cmVuY3lOYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1m
b3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5v
ZigiYWIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJl
bmN5IGNvZGVgKTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImpweXgiKSwg
YFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGVg
KTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImpwMCIpLCBgUmFuZ2VFcnJv
cjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxk
QmUoY3VycmVuY3lOYW1lcy5vZigianB5IiksIGBKYXBhbmVzZSBZZW5gKTsKK3Nob3VsZEJlKGN1
cnJlbmN5TmFtZXMub2YoIkpQWSIpLCBgSmFwYW5lc2UgWWVuYCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5k
ZXggYTc5ZjJkYmUzNjE2NmYwYjhlYmI5OTlkYjg1Y2Y0ZTE2NGI5NGRmMS4uZTYzNzJmZjkyODNi
Y2ZiNTRiYWZhNmQ4YjViMTZlNGNhYThlMzNjOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjYsNiAr
MjYsOSBAQCBza2lwOgogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1kYXlQZXJpb2QKICAgICAt
IEludGwuRGF0ZVRpbWVGb3JtYXQtZm9ybWF0UmFuZ2UKICAgICAtIEludGwuRGF0ZVRpbWVGb3Jt
YXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cworICAgICMgQ3VycmVudGx5LCB0ZXN0MjYyIGhhcyBh
IGJ1ZyB3aXRoIEludGwuRGlzcGxheU5hbWVzLCBhbmQgZXhwb3NpbmcgaXQgY2FuIGNhdXNlIG1h
bnkgZmFpbHVyZXMgaW4gdmFyaW91cyBJbnRsIHRlc3RzLgorICAgICMgV2Ugc2hvdWxkIGVuYWJs
ZSBpdCBhZnRlciBlbnN1cmluZyB0ZXN0MjYyIGlzIGZpeGVkLgorICAgICMgaHR0cHM6Ly9naXRo
dWIuY29tL3RjMzkvdGVzdDI2Mi9pc3N1ZXMvMjY4MgogICAgIC0gSW50bC5EaXNwbGF5TmFtZXMK
ICAgICAtIEludGwuTGlzdEZvcm1hdAogICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAo=
</data>
<flag name="review"
          id="418546"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403174</attachid>
            <date>2020-06-29 22:07:34 -0700</date>
            <delta_ts>2020-06-29 22:07:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209779-20200629220734.patch</filename>
            <type>text/plain</type>
            <size>88438</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjBmZWU3MDkyZDc1YThjNGJkYTM2MGNiNzA4YTc3MTY5NWIzYzYxLi45ZDRmYThlMTc5MmM0OGI5
MDg5MzIxOWMxOTdjNmMxYmZkMWQxMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNi0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cGxlbWVudHMgSW50bC5EaXNwbGF5TmFtZXMgYmVoaW5kIHVzZUludGxEaXNwbGF5TmFtZXM9MSBm
bGFnLgorICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcyBjYW4gb2ZmZXIgcmVhZGFibGUgImRpc3Bs
YXktbmFtZSIgZm9yIElDVSBsYW5ndWFnZSwgc2NyaXB0LCByZWdpb24sIGN1cnJlbmN5IGNvZGVz
LgorICAgICAgICBGb3IgZXhhbXBsZSwgaXQgY2FuIG9mZmVyICJVbml0ZWQgU3RhdGVzIiBzdHJp
bmcgZm9yICJVUyIgcmVnaW9uIGNvZGUuCisgICAgICAgIFdlIHVzZSBJQ1UgVUxvY2FsZURpc3Bs
YXlOYW1lcyB0byBpbXBsZW1lbnQgaXQsIGV4Y2VwdCBmb3IgY3VycmVuY3kgc2luY2UgVUxvY2Fs
ZURpc3BsYXlOYW1lcyBpcyBub3Qgc3VwcG9ydGluZworICAgICAgICBjdXJyZW5jeSBjb3JyZWN0
bHk6IGl0IGlnbm9yZXMgImxvbmciLCAic2hvcnQiLCBhbmQgIm5hcnJvdyIgc3R5bGUgY29uZmln
dXJhdGlvbnMuIFdlIG5lZWQgdG8gY2FsbCB1Y3Vycl9nZXROYW1lCisgICAgICAgIGRpcmVjdGx5
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXBwcm9wcmlhdGVseSBhZGRzIHVuaWNvZGUtbGFuZ3Vh
Z2UtaWQgcGFyc2luZyBpbiBJbnRsTG9jYWxlLmNwcCBzbyB0aGF0IHdlIGNhbiB2YWxpZGF0ZSBs
YW5ndWFnZSBpZAorICAgICAgICB3aGVuIGl0IGlzIHBhc3NlZCB0byBgSW50bC5EaXNwbGF5TmFt
ZXMjb2ZgIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5h
bWVzOjpvZiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlND
OjpjYWxsSW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bExvY2FsZS5jcHA6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlU3VidGFnKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVnaW9uU3VidGFnKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVTY3Jp
cHRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOgorICAgICAg
ICAoSlNDOjppc1VuaWNvZGVWYXJpYW50U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2Rl
TGFuZ3VhZ2VJZCk6CisgICAgICAgIChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmludGxEaXNwbGF5
TmFtZXNBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGlzcGxheU5hbWVz
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIwLTA2LTI5ICBUZXRzdWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVr
aUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9TVFJFQU1TX0FQSSBjb21waWxh
dGlvbiBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzI1OTEwODZl
YmFjNzIyMDY2YTg2NDQ1ZmFjMjExZGVmODAzMDVlMC4uYmQ1YTBhYjEwNjE2YTQwMmRhMjA0OGQ0
MzgzZDdmMzZmODhhNWViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NzAsNiArNzAsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAK
KyAgICBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9J
bnRsTG9jYWxlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggYTY1Y2ZkNWE5MGJjODViYzcwMjUxY2YwZGRmMTQxNDVkZTllY2YwNy4uZDBk
OGRmZGM0OGEzNWU4MjE3ZjdjMDM0MWMwZmUwM2JiNDNlMDQ5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTEz
OCw2ICsxMzgsOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3Bw
CiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
CiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAK
KyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKICQo
UFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IDc5Y2RlNGVlNTA3ZTEzZjZmZjdmYTc4MDBkYzY0NWNiZjg5NDFjNjcuLjJiZGY1YjJjODIyYTZk
OWU3YjZmNDU2YmIwYTk2MTYzZWUxZDZkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTI3LDYgKzI3LDgg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRs
TG9jYWxlUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAxMGY5ZmVjNTFkY2U0ODY4NmZmODc0NWJlYWE0YjViNWQ1YjEwMzNkLi5j
MWZmNWU2MjQ3MzUwNjhjZmY0YzEyZTRjZjQ4Y2RjNGZhMGE2NTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTU5LDYgKzE1OSw4IEBAIE9CSkVDVF9M
VVRfSEVBREVSUyA9IFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAogICAgIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUubHV0LmggXAorICAgIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQu
aCBcCisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bExvY2Fs
ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5o
IFwKICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMyMjgwZGE1MDg0M2E2M2Jk
ZC4uYzA2NjNkN2Y2MGY5OWRmMWQ0MWRlZmVjZGM1NmU5Y2U1NDkyY2MzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTksNiArMTgxOSw5IEBACiAJCUUzNEVEQkY3MURCNUZG
QzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAv
KiBKU0dlbmVyYXRvci5oICovOyB9OwogCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9N
SklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1M0MxMUQyNEFB
NENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzLmggKi87IH07CisJCUUzNTNDMTFFMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTM1M0MxMjEyNEFBNENCNzAwM0ZCREYzIC8qIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLmggKi87IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURB
RTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2
OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NUQzOEYyMjQ0Njg3NzAwOEYxQUQ2IC8q
IEdsb2JhbEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTVEMzhEMjI0NDY4NkIwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4Mjgs
NiArMTgzMSw4IEBACiAJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFj
dEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NUNBMTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBB
IC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM2
NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM5
MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi87
IH07CisJCUUzNjVGMzNCMjRBQTYyM0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0
LmggKi87IH07CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50
cnlQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9
OwogCQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0
RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00OTg1LDYgKzQ5OTAs
MTIgQEAKIAkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAv
KiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE2MjRB
QTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAv
KiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNTNDMTE5MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzUzQzExQTI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTFCMjRB
QTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0
cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0
QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0Ey
MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4
ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsRXhlY3V0YWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTAwMSw2ICs1MDEyLDggQEAKIAkJRTM1RTAzNjExQjdBQjQ4
NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MzdFRTcyMzZFNTZCMDAw
OTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM2QjQ4MDEyM0U5NTczODAwRTRBNjZFIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4RDYxMTAwRDA5ODE4IC8qIFdh
c21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU9NR0Zvck9T
UkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZGMjJG
OEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY3NjcsNiArNjc4MCw4IEBACiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE1ODdENzQx
QjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywK
KwkJCQlFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oICovLAorCQkJCUUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAv
KiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTEyNTg0NkQxQjQ1
QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJ
QTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKQEAgLTcyNjIs
NiArNzI3NywxMiBAQAogCQkJCUExNTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAogCQkJCUExNTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovLAogCQkJCUExNTg3RDZDMUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlFMzUz
QzExNjI0QUE0Q0I1MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5jcHAgKi8sCisJCQkJRTM1
M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLywKKwkJCQlFMzUz
QzExQTI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCAq
LywKKwkJCQlFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmggKi8sCisJCQkJRTM1M0MxMTkyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUuY3BwICovLAorCQkJCUUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggKi8sCiAJCQkJQTNBRkY5MkQyNDVBM0NGQTAwQzlC
QTNCIC8qIEludGxMb2NhbGUuY3BwICovLAogCQkJCUEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAv
KiBJbnRsTG9jYWxlLmggKi8sCiAJCQkJQTNBRkY5MkYyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC05NzUyLDYgKzk3NzMsMTEgQEAKIAkJCQlBMTU4
N0Q3NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3MjFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NjFCNERD
MUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTM1M0MxMUQyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTFFMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNjVGMzNBMjRBQTYy
MzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8q
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3
OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0
YzI3MDUuLjFiNGZiZjdjY2FjNDdlOWUwZDgyODRkNjYzNTgxODEyMWNhZTBmODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgxNCw2ICs4MTQsOSBAQCBydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAogcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3BwCiBydW50aW1lL0ludGxMb2Nh
bGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4
IDE2OGVmZWRhMTRkNDYxMDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEuLjNhNDk3ZTA3NGE5MGUw
YjExOTU4NmJmYTA4ZDQ4M2ViMzA5NDIzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzQsNiArMzQsNyBAQAogICAgIG1h
Y3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8oRGF0ZSkgXAogICAgIG1hY3JvKERhdGVUaW1lRm9y
bWF0KSBcCisgICAgbWFjcm8oRGlzcGxheU5hbWVzKSBcCiAgICAgbWFjcm8oRXJyb3IpIFwKICAg
ICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTQyNTVjYmY4NjNmNTE2MDI2MmNiMmI1MGMzM2QyZGNmZGZiMjQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAK
QEAgLTAsMCArMSwzNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxw
ZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlO
YW1lczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGlzcGxheU5hbWVzKSB9OworCitJbnRsRGlzcGxh
eU5hbWVzKiBJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsRGlzcGxheU5hbWVzPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lcyh2bSwgc3RydWN0dXJl
KTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0Owor
fQorCitTdHJ1Y3R1cmUqIEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERp
c3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFt
ZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKK30KKworLy8gaHR0cHM6Ly90
YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcwordm9pZCBJbnRsRGlzcGxheU5h
bWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxp
c3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7CisgICAgaWYgKG9wdGlvbnNWYWx1
ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
dm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0K
KworICAgIC8vIERvZXMgbm90IHNldCBlaXRoZXIgb2YgImNhIiBvciAibnUiLgorICAgIC8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWludGwtZGlzcGxh
eW5hbWVzLWNvbnN0cnVjdG9yCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OworCisg
ICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlciwgeyAibG9va3VwIiwgImJlc3QgZml0
IiB9LCAibG9jYWxlTWF0Y2hlciBtdXN0IGJlIGVpdGhlciBcImxvb2t1cFwiIG9yIFwiYmVzdCBm
aXRcIiIsICJiZXN0IGZpdCIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgb3B0LmFkZCgibG9jYWxlTWF0Y2hlciJfcywgbWF0Y2hlcik7CisKKworICAgIGF1
dG8gbG9jYWxlRGF0YSA9IFtdKGNvbnN0IFN0cmluZyYsIHNpemVfdCkgLT4gVmVjdG9yPFN0cmlu
Zz4geworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvJiBhdmFpbGFibGVM
b2NhbGVzID0gaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRvIHJl
c3VsdCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1
ZXN0ZWRMb2NhbGVzLCBvcHQsIG51bGxwdHIsIDAsIGxvY2FsZURhdGEpOworCisgICAgbV9sb2Nh
bGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOworICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIERpc3BsYXlOYW1lIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5n
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsg
Im5hcnJvdyIsICJzaG9ydCIsICJsb25nIiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJuYXJy
b3dcIiwgXCJzaG9ydFwiLCBvciBcImxvbmdcIiIsICJsb25nIik7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoc3R5bGVTdHJpbmcgPT0gIm5hcnJvdyJf
cykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpOYXJyb3c7CisgICAgZWxzZSBpZiAoc3R5bGVT
dHJpbmcgPT0gInNob3J0Il9zKQorICAgICAgICBtX3N0eWxlID0gU3R5bGU6OlNob3J0OworICAg
IGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJsb25nIl9zKQorICAgICAgICBtX3N0eWxlID0gU3R5
bGU6Okxvbmc7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAg
IFN0cmluZyB0eXBlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHsgImxhbmd1YWdlIiwgInJlZ2lvbiIsICJzY3Jp
cHQiLCAiY3VycmVuY3kiIH0sICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJy
ZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5jeVwiIiwgbnVsbHB0cik7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAodHlwZVN0cmluZy5pc051
bGwoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUg
bXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKKyAgICBpZiAodHlwZVN0cmluZyA9PSAibGFuZ3Vh
Z2UiX3MpCisgICAgICAgIG1fdHlwZSA9IFR5cGU6Okxhbmd1YWdlOworICAgIGVsc2UgaWYgKHR5
cGVTdHJpbmcgPT0gInJlZ2lvbiJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmVnaW9uOwor
ICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInNjcmlwdCJfcykKKyAgICAgICAgbV90eXBlID0g
VHlwZTo6U2NyaXB0OworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQor
ICAgICAgICBtX3R5cGUgPSBUeXBlOjpDdXJyZW5jeTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworCisgICAgU3RyaW5nIGZhbGxiYWNrU3RyaW5nID0gaW50bFN0cmlu
Z09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJmYWxsYmFjayIpLCB7ICJjb2RlIiwgIm5vbmUiIH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhl
ciBcImNvZGVcIiBvciBcIm5vbmVcIiIsICJjb2RlIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gImNvZGUiX3MpCisg
ICAgICAgIG1fZmFsbGJhY2sgPSBGYWxsYmFjazo6Q29kZTsKKyAgICBlbHNlIGlmIChmYWxsYmFj
a1N0cmluZyA9PSAibm9uZSJfcykKKyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpOb25l
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKworICAgIFVEaXNwbGF5Q29udGV4dCBjb250ZXh0
c1tdID0geworICAgICAgICAvLyBlbl9HQiBkaXNwbGF5cyBhcyAnRW5nbGlzaCAoVW5pdGVkIEtp
bmdkb20pJyAoU3RhbmRhcmQgTmFtZXMpIG9yICdCcml0aXNoIEVuZ2xpc2gnIChEaWFsZWN0IE5h
bWVzKS4KKyAgICAgICAgLy8gV2UgdXNlIERpYWxlY3QgTmFtZXMgaGVyZSwgYWxpZ25lZCB0byB0
aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMgZHJhZnQgYW5kIFY4J3MgYmVoYXZpb3IuCisgICAgICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzI2xh
bmd1YWdlLWRpc3BsYXktbmFtZXMKKyAgICAgICAgVURJU1BDVFhfRElBTEVDVF9OQU1FUywKKwor
ICAgICAgICAvLyBDYXBpdGFpbGl6YXRpb24gbW9kZSBjYW4gYmUgcGlja2VkIGZyb20gc2V2ZXJh
bCBvcHRpb25zLiBQb3NzaWJseSBlaXRoZXIgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSBv
ciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBpcworICAgICAgICAvLyBw
cmVmZXJhYmxlIGluIEludGwuRGlzcGxheU5hbWVzLiBXZSB1c2UgVURJU1BDVFhfQ0FQSVRBTEla
QVRJT05fRk9SX1NUQU5EQUxPTkUgYmVjYXVzZSBpdCBtYWtlcyBzdGFuZGFsb25lIGRhdGUgZm9y
bWF0IGJldHRlciAoZnIgIkp1aWxsZXQgMjAwOCIgaW4gSUNVIHRlc3Qgc3VpdGVzKSwKKyAgICAg
ICAgLy8gYW5kIERpc3BsYXlOYW1lcyB3aWxsIHN1cHBvcnQgZGF0ZSBmb3JtYXRzIHRvby4KKyAg
ICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUsCisKKyAgICAgICAg
Ly8gTmFycm93IGJlY29tZXMgVURJU1BDVFhfTEVOR1RIX1NIT1JULiBCdXQgaW4gY3VycmVuY3kg
Y2FzZSwgd2UgaGFuZGxlIGRpZmZlcmVudGx5IGluc3RlYWQgb2YgdXNpbmcgVUxvY2FsZURpc3Bs
YXlOYW1lcy4KKyAgICAgICAgbV9zdHlsZSA9PSBTdHlsZTo6TG9uZyA/IFVESVNQQ1RYX0xFTkdU
SF9GVUxMIDogVURJU1BDVFhfTEVOR1RIX1NIT1JULAorCisgICAgICAgIC8vIEFsd2F5cyBkaXNh
YmxlIElDVSBTVUJTVElUVVRFIHNpbmNlIGl0IGRvZXMgbm90IG1hdGNoIGFnYWluc3Qgd2hhdCB0
aGUgc3BlYyBkZWZpbmVzLiBJQ1UgaGFzIHNvbWUgc3BlY2lhbCBzdWJzdGl0dXRlIHJ1bGVzLCBm
b3IgZXhhbXBsZSwgbGFuZ3VhZ2UgImVuLUFBIgorICAgICAgICAvLyByZXR1cm5zICJFbmdsaXNo
IChBQSkiICh3aGlsZSBBQSBjb3VudHJ5IGNvZGUgaXMgbm90IGRlZmluZWQpLCBidXQgd2Ugd291
bGQgbGlrZSB0byByZXR1cm4gZWl0aGVyIGlucHV0IHZhbHVlIG9yIHVuZGVmaW5lZCwgc28gd2Ug
ZG8gbm90IHdhbnQgdG8gaGF2ZSBJQ1Ugc3Vic3RpdHV0ZSBydWxlcy4KKyAgICAgICAgVURJU1BD
VFhfTk9fU1VCU1RJVFVURSwKKyAgICB9OworICAgIG1fbG9jYWxlQ1N0cmluZyA9IG1fbG9jYWxl
LnV0ZjgoKTsKKyAgICBtX2Rpc3BsYXlOYW1lcyA9IHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlz
cGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4odWxkbl9vcGVuRm9yQ29udGV4
dChtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBjb250ZXh0cywgV1RGX0FSUkFZX0xFTkdUSChjb250
ZXh0cyksICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IERpc3BsYXlOYW1lcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5h
bWVzLnByb3RvdHlwZS5vZgorSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV9kaXNwbGF5TmFtZXMpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvZGVWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7Cisg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90eXBlID09
IFR5cGU6OkN1cnJlbmN5KSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1
ZURpc3BsYXlOYW1lICsgImN1cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dp
bmcgcmVhc29ucy4KKyAgICAgICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQ
Q1RYX0xFTkdUSF9GVUxMIC8gVURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgLy8gICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIg
c3R5bGUgaW4gVUxvY2FsZURpc3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ci
IHN5bWJvbCBzdHlsZS4KKworICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxheU5hbWVz
CisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8j
c2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYgISBJc1dl
bGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBl
eGNlcHRpb24uCisgICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpKSB7
CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3Vt
ZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOworICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkp
OworCisgICAgICAgIFVDdXJyTmFtZVN0eWxlIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAg
ICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAg
ICAgICAgIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9TWU1CT0xf
TkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlOjpOYXJyb3c6Cisg
ICAgICAgICAgICBzdHlsZSA9IFVDVVJSX05BUlJPV19TWU1CT0xfTkFNRTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gNi4gTGV0IGNvZGUgYmUgdGhlIHJlc3Vs
dCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAg
ICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0XSA9IHsKKyAgICAgICAgICAgIHRvQVNDSUlVcHBl
cihjb2RlWzBdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzFdKSwKKyAgICAgICAg
ICAgIHRvQVNDSUlVcHBlcihjb2RlWzJdKSwKKyAgICAgICAgICAgIHUnXDAnCisgICAgICAgIH07
CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMgc3RyaW5n
IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAgICBpbnQz
Ml90IGxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IFVDaGFyKiByZXN1bHQgPSB1Y3Vycl9nZXRO
YW1lKGN1cnJlbmN5LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBzdHlsZSwgbnVsbHB0ciwgJmxl
bmd0aCwgJnN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIC8vIHVjdXJyX2dldE5hbWUgcmV0
dXJucyBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBm
b3VuZC4gQnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlzIHJldHVybmVkIGV2ZW4gaWYKKyAg
ICAgICAgLy8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUgc2FtZTogbmFycm93ICJV
U0QiIGlzICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIHNpbmNlIHNob3J0ICJVU0Qi
IGlzIGFsc28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCisgICAgICAgIC8vIHJlc3VsdCA9PSBjdXJy
ZW5jeSB0byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBmYWlsZWQgdG8gZmluZCB0aGUgY29y
cmVzcG9uZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRlciBjb21wYXJpc29uIGlzIGVuc3Vy
ZWQgYnkKKyAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KKyAgICAgICAgLy8gPiBSZXR1cm5z
IHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiBJZiB0aGUgcmVzb3Vy
Y2UgZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVuY3kn
IGl0c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX1VTSU5HX0RFRkFV
TFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCisgICAgICAgICAgICByZXR1cm4gKG1f
ZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LCBsZW5ndGgpKTsKKyAg
ICB9CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMv
I3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgYXV0byBjYW5vbmljYWxpemVD
b2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGUpIC0+
IENTdHJpbmcgeworICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgY2hhciogbXV0YWJsZURhdGEgPSBy
ZXN1bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNh
c2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1
bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5sZW5ndGgo
KTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0b0FTQ0lJ
TG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBi
ZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBp
biA2LjEuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1
bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhd
ID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAgICAgICAgICAgLy8g
TGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4g
Y29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0aGlyZCBhbmQgZm91
cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2NyaWJlZCBpbiA2LjEu
CisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAgICAgICAg
bXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2lu
ZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlciht
dXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9OworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Okxhbmd1YWdl
OiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5n
dWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAg
IGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBp
ZCJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8g
bGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7
CisgICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNpbmNlIGl0
IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCByZXR1cm5z
ICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5nbGlzaCIu
CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX2xvY2Fs
ZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3VhZ2UuZGF0YSgpLCBidWZm
ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKKyAg
ICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0
YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgorICAgICAgICBpZiAo
IWlzVW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFn
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgYXV0byBy
ZWdpb24gPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7Cisg
ICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3JlZ2lvbkRp
c3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgcmVnaW9uLmRhdGEoKSwgYnVmZmVyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAg
IC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHBy
b2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1Vu
aWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7
CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gc2NyaXB0
ID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOworICAgICAg
ICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9zY3JpcHREaXNwbGF5
TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHNjcmlwdC5kYXRhKCksIGJ1ZmZlcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkgeworICAgICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3Jl
Z2lvbkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExF
R0FMX0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgorICAg
ICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIu
IE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KKyAgICAgICAgaWYgKHN0
YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisgICAgICAgICAgICByZXR1cm4gKG1f
ZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzU3Ry
aW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNv
bHZlZE9wdGlvbnMKK0pTT2JqZWN0KiBJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHR5cGVTdHJpbmco
bV90eXBlKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImZhbGxiYWNrIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tTdHJp
bmcobV9mYWxsYmFjaykpKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFs
IEludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQoreworICAgIHN3aXRj
aCAoc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgIHJldHVybiAibmFy
cm93Il9zOworICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9z
OworICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhUeXBl
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZToK
KyAgICAgICAgcmV0dXJuICJsYW5ndWFnZSJfczsKKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjoKKyAg
ICAgICAgcmV0dXJuICJyZWdpb24iX3M7CisgICAgY2FzZSBUeXBlOjpTY3JpcHQ6CisgICAgICAg
IHJldHVybiAic2NyaXB0Il9zOworICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIHJl
dHVybiAiY3VycmVuY3kiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNw
bGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQoreworICAgIHN3aXRj
aCAoZmFsbGJhY2spIHsKKyAgICBjYXNlIEZhbGxiYWNrOjpDb2RlOgorICAgICAgICByZXR1cm4g
ImNvZGUiX3M7CisgICAgY2FzZSBGYWxsYmFjazo6Tm9uZToKKyAgICAgICAgcmV0dXJuICJub25l
Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzOTAx
OTEwMDgxNDQwNWJiYjM5YTM1MTk3MzBhNjVhZDM4NjRiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKQEAgLTAsMCAr
MSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlIDx1bmljb2RlL3VsZG5hbWVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
aWN1L0lDVUhlbHBlcnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5
TmFtZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEludGxEaXNwbGF5TmFtZXMqPihj
ZWxsKS0+SW50bERpc3BsYXlOYW1lczo6fkludGxEaXNwbGF5TmFtZXMoKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2bS5pbnRsRGlzcGxheU5hbWVzU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSW50bERpc3BsYXlOYW1lcyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQgaW5pdGlhbGl6ZURpc3BsYXlOYW1l
cyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlc1ZhbHVlLCBKU1ZhbHVlIG9wdGlvbnNW
YWx1ZSk7CisKKyAgICBKU1ZhbHVlIG9mKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7
CisgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0Owor
Citwcml2YXRlOgorICAgIEludGxEaXNwbGF5TmFtZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKKyAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhf
dCB7IE5hcnJvdywgU2hvcnQsIExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90
IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJyZW5jeSB9OworICAgIGVudW0gY2xhc3Mg
RmFsbGJhY2sgOiB1aW50OF90IHsgQ29kZSwgTm9uZSB9OworCisgICAgc3RhdGljIEFTQ0lJTGl0
ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3Ry
aW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJh
Y2spOworCisgICAgdXNpbmcgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVy
PHVsZG5fY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBV
TG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4gbV9kaXNwbGF5TmFtZXM7CisgICAgU3RyaW5nIG1f
bG9jYWxlOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RvcmUgaXQgb25seSB3aGVuIG1fdHlw
ZSBpcyBDdXJyZW5jeS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEzNzczCisgICAgQ1N0cmluZyBtX2xvY2FsZUNTdHJpbmc7CisgICAgU3R5bGUgbV9z
dHlsZSB7IFN0eWxlOjpMb25nIH07CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpMYW5ndWFnZSB9
OworICAgIEZhbGxiYWNrIG1fZmFsbGJhY2sgeyBGYWxsYmFjazo6Q29kZSB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmZi
ZmYzZDk4OWZiMjRiZTYzOTA4MzM4NDE2MmNhMGZiMzkxMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIklu
dGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
cik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZkaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBkaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclRhYmxl
CisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
QGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUpCit7CisgICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkaXNwbGF5TmFt
ZXNQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5hbWVzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CisKK0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUsIGNhbGxJbnRsRGlzcGxheU5hbWVzLCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVz
KQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5
cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEaXNwbGF5TmFtZXMiX3MsIE5h
bWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkaXNw
bGF5TmFtZXNQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBkaXNwbGF5TmFtZXNQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuRGlzcGxheU5hbWVzCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3Qo
Y2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXdU
YXJnZXQgPT0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpCisgICAgICAgID8gZ2xvYmFsT2JqZWN0LT5k
aXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJl
YWxtKHZtLCBuZXdUYXJnZXQpLT5kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludGxEaXNwbGF5TmFtZXMqIGRpc3Bs
YXlOYW1lcyA9IEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBB
U1NFUlQoZGlzcGxheU5hbWVzKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBkaXNwbGF5
TmFtZXMtPmluaXRpYWxpemVEaXNwbGF5TmFtZXMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGRpc3BsYXlOYW1lcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5EaXNwbGF5TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRGlzcGxheU5hbWVzIikpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNP
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIC8vIEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExv
Y2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5h
bWVzLnN1cHBvcnRlZExvY2FsZXNPZgorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMg
YmUgJURpc3BsYXlOYW1lcyUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxv
Y2FsZXMoKTsKKworICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6
ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxl
cyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMs
IHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwor
fQorCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NDRhZTFlOGE4MjViODZmN2E3YzhhOTZjNTAxYjQ0ZmJjYWQ4OGJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU7CisKK2Ns
YXNzIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3By
aXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUq
KTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4ZWM4MGY0MjUzNWZmZDYwYzkzOTk3
OTQ3YTIwMmRhM2ZiMzE3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuRGlzcGxheU5hbWVzIiwg
JkJhc2U6OnNfaW5mbywgJmRpc3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpIH07CisKKy8qIFNvdXJj
ZSBmb3IgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1l
c1Byb3RvdHlwZVRhYmxlCisgIG9mICAgICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZUZ1bmNPZiAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNvbHZl
ZE9wdGlvbnMgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUqIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUu
b2YKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZUZ1bmNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNE
eW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3Bs
YXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVz
LyNzZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0g
anNEeW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBEaXNwbGF5TmFtZXMiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoZGlzcGxheU5hbWVzLT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFs
T2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NjdlNTgzYTY3NTc0NGU0MTVhNDg1ZTgzZWYxZjM1ODZlOWIxMjQyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZS5jcHAKaW5kZXggODBlNjRmMWFiMTc5NzEzOGIyNTJiOGZjZDEwNzFkNzZiZGQ0NjI5YS4uOTVi
NmM4M2Y3MzllZTQ0M2I1ZmE4MDEzZjU5MGNjM2UyMWE4ZmU1NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTE5MSwyNyArMTkxLDYgQEAgU3Ry
aW5nIEludGxMb2NhbGU6OmtleXdvcmRWYWx1ZShBU0NJSUxpdGVyYWwga2V5LCBib29sIGlzQm9v
bGVhbikgY29uc3QKICAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmcodmFsdWUpIDogZW1wdHlTdHJp
bmcoKTsKIH0KIAotLy8gdW5pY29kZV9sYW5ndWFnZV9zdWJ0YWcgPSBhbHBoYXsyLDN9IHwgYWxw
aGF7NSw4fSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3
IHN0cmluZykKLXsKLSAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICByZXR1
cm4gbGVuZ3RoID49IDIgJiYgbGVuZ3RoIDw9IDggJiYgbGVuZ3RoICE9IDQgJiYgc3RyaW5nLmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwotfQotCi0vLyB1bmljb2RlX3Nj
cmlwdF9zdWJ0YWcgPSBhbHBoYXs0fSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0
YWcoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0
ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKLX0KLQot
Ly8gdW5pY29kZV9yZWdpb25fc3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Ci1zdGF0aWMg
Ym9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0
byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBz
dHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCi0gICAgICAgIHx8
IChsZW5ndGggPT0gMyAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGln
aXQ+KCkpOwotfQotCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
CiB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB0YWdWYWx1ZSwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmlu
ZGV4IGMzOGZlOTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLjE4ZWMwOTM4MTVm
NWFmYmI0MTg4MmMzYzU5OTE2YWZmNGYzYjE4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBTdHJpbmcgY3VycmVuY3kgPSBpbnRsU3RyaW5n
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1cnJlbmN5IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7Ci0gICAg
ICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgeworICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZEN1
cnJlbmN5Q29kZShjdXJyZW5jeSkpIHsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kg
aXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcykpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCmluZGV4IDFkZmEyMDgyYWYxNDIzZjRkM2VkM2UxMzMwYTk0OTYzYmVlYTQzMDEuLjYy
NjY1MjIzYmY1MTgxNTMwNjBkMWZlMzQxYjkxZjMyNDg4MWIyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5j
bHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2lu
Y2x1ZGUgIkludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90
b3R5cGUuaCIKQEAgLTc3LDYgKzc5LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZURhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUqPihnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZURpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBJbnRsT2JqZWN0
KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAg
IHJldHVybiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpLT5zdG9yZWRQ
cm90b3R5cGVPYmplY3QoKSkpOworfQorCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVMb2NhbGVDb25z
dHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9iamVjdCogaW50
bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTE1Miw2ICsxNjEsOCBA
QCBJbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqCiB2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBpZiAoT3B0aW9uczo6dXNlSW50bERpc3BsYXlOYW1lcygpKQorICAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RGlzcGxheU5hbWVz
LCBjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogU3RydWN0dXJlKiBJ
bnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTgyNCw2ICs4MzUsOTkgQEAgVmVjdG9yPFN0
cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAg
ICByZXR1cm4gbnVtYmVyaW5nU3lzdGVtczsKIH0KIAorLy8gdW5pY29kZV9sYW5ndWFnZV9zdWJ0
YWcgPSBhbHBoYXsyLDN9IHwgYWxwaGF7NSw4fSA7Citib29sIGlzVW5pY29kZUxhbmd1YWdlU3Vi
dGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIHJldHVybiBsZW5ndGggPj0gMiAmJiBsZW5ndGggPD0gOCAmJiBsZW5ndGggIT0g
NCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Cit9CisK
Ky8vIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyA9IGFscGhhezR9IDsKK2Jvb2wgaXNVbmljb2RlU2Ny
aXB0U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmcubGVuZ3Ro
KCkgPT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7
Cit9CisKKy8vIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9IHwgZGlnaXR7M30gOwor
Ym9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0
byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBz
dHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCisgICAgICAgIHx8
IChsZW5ndGggPT0gMyAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGln
aXQ+KCkpOworfQorCisvLyB1bmljb2RlX3ZhcmlhbnRfc3VidGFnID0gKGFscGhhbnVtezUsOH0g
fCBkaWdpdCBhbHBoYW51bXszfSkgOworYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmlu
Z1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAg
IGlmIChsZW5ndGggPj0gNSAmJiBsZW5ndGggPD0gOCkKKyAgICAgICAgcmV0dXJuIHN0cmluZy5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7CisgICAgcmV0dXJu
IGxlbmd0aCA9PSA0ICYmIGlzQVNDSUlEaWdpdChzdHJpbmdbMF0pICYmIHN0cmluZy5zdWJzdHJp
bmcoMSkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOworfQor
CisvLyB1bmljb2RlX2xhbmd1YWdlX2lkID0KKy8vICAgICAicm9vdCIKKy8vICAgICB8ICh1bmlj
b2RlX2xhbmd1YWdlX3N1YnRhZyAoc2VwIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyk/IHwgdW5pY29k
ZV9zY3JpcHRfc3VidGFnKSAoc2VwIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyk/IChzZXAgdW5pY29k
ZV92YXJpYW50X3N1YnRhZykqIDsKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICBhdXRvIGZpbmRTZXBhcmF0b3IgPSBbXShTdHJpbmdWaWV3IHZpZXcp
IC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IHZpZXcubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIFVDaGFyIGNo
YXJhY3RlciA9IHZpZXdbaW5kZXhdOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLScg
fHwgY2hhcmFjdGVyID09ICdfJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworCisgICAgVmVjdG9y
PFN0cmluZ1ZpZXcsIDI+IHN1YnRhZ3M7CisgICAgU3RyaW5nVmlldyByZW1haW5pbmcgPSBzdHJp
bmc7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VwYXJhdG9yUG9zaXRp
b24gPSBmaW5kU2VwYXJhdG9yKHJlbWFpbmluZykpIHsKKyAgICAgICAgICAgIHN1YnRhZ3MuYXBw
ZW5kKHJlbWFpbmluZy5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24udmFsdWUoKSkpOwor
ICAgICAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnN1YnN0cmluZyhzZXBhcmF0b3JQb3Np
dGlvbi52YWx1ZSgpICsgMSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBzdWJ0YWdzLmFwcGVuZChyZW1haW5pbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3VidGFncy5zaXplKCkgPj0gMSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0g
MDsKKyAgICBpZiAoc3VidGFncy5zaXplKCkgPT0gMSkgeworICAgICAgICAvLyBPbmx5IG9uZSBz
dWJ0YWcuIFNvIGl0IG11c3QgYmUgbGFuZ3VhZ2Ugb3Igc2NyaXB0LgorICAgICAgICByZXR1cm4g
c3VidGFnc1tjdXJzb3JdID09ICJyb290Il9zIHx8IGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKHN1
YnRhZ3NbY3Vyc29yXSkgfHwgaXNVbmljb2RlU2NyaXB0U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSk7
CisgICAgfQorCisgICAgQVNTRVJUKCFjdXJzb3IpOworICAgIEFTU0VSVChzdWJ0YWdzLnNpemUo
KSA+PSAyKTsKKyAgICBpZiAoaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoc3VidGFnc1tjdXJzb3Jd
KSkgeworICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgaWYgKGlzVW5pY29kZVNjcmlwdFN1YnRh
ZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICAgICAgKytjdXJzb3I7CisgICAgfSBlbHNlIGlm
IChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgKytjdXJz
b3I7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoY3Vyc29yID09
IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmljb2Rl
UmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICsrY3Vyc29yOworCisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWlzVW5pY29kZVZhcmlhbnRTdWJ0
YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
KytjdXJzb3I7CisgICAgfQorfQorCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJp
bmdWaWV3IGN1cnJlbmN5KQoreworICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYm
IGN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOworfQorCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9j
YWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICAvLyBJbnRsLmdldENhbm9uaWNhbExvY2FsZXMobG9jYWxlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBlZDljMWUxMGI2YWRhNGZkOWQ0
MjU3NDYwNmNkZDkyYTkxMjIzOWI3Li4yNTUxOGYxOWZhN2ZhNTZkYzYwNWQ5NWJiMjlmMTVkMzhm
OGUxOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBA
IC02MCw2ICs2MCw3IEBAIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7CiBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKIGlubGluZSBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7
IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxB
dmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxO
dW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2Fs
ZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZh
aWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGlu
ZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFpbGFibGVM
b2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQpAQCAtNzksNiArODAs
MTQgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBTdHJp
bmcmIGxvY2FsZSk7CiAKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3RyaW5n
Vmlldyk7CiAKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyk7Citib29s
IGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVnaW9u
U3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1Zp
ZXcpOworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOworCitib29sIGlzV2Vs
bEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3KTsKKwogc3RydWN0IFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3JEZWxldGVyIHsKICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVy
YXRvciopIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCAzZWEzMGRiOWUyZTRkNTM4ZGE4ZjIzMmNmODliOWU0Yzk4
MjM3MDA2Li5jODc5Mjc0NWI5MzQ4MDNmZGY2YmFmMWFiNGIwNjdjYThiOTJiYzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC03
Myw2ICs3Myw4IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVk
ZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIK
QEAgLTk4MSw2ICs5ODMsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAg
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3Qs
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAg
ICAgaW5pdC5zZXQoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSkpOwogICAgICAgICB9KTsKKyAg
ICBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7Cisg
ICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5
cGUgPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQo
SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
ZGlzcGxheU5hbWVzUHJvdG90eXBlKSk7CisgICAgICAgIH0pOwogICAgIG1fbG9jYWxlU3RydWN0
dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4m
IGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTE4MzIsNiArMTg0MCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNp
dG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CisgICAgdGhpc09iamVjdC0+bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9sb2NhbGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRk
YzMwYjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjI3Nzc0ZWJiYzYwMzZmN2Ez
NWJmMzVlZTgxZTE0ZTc2Y2EwMmM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjkyLDYgKzI5Miw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0
cnVjdHVyZT4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbG9jYWxlU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0
cnVjdHVyZTsKQEAgLTc5Miw2ICs3OTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY29sbGF0
b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CisgICAgU3RydWN0dXJlKiBkaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Rpc3Bs
YXlOYW1lc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1h
dFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogbG9jYWxlU3RydWN0dXJlKCkgeyByZXR1cm4gbV9sb2NhbGVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA1ZGNmNDI4YmY0NzcxOWI1
OTRiNjcwY2U1OGQ4Nzc3ZDM3OTI3MjYwLi45MDBjMDE0NWQxN2I2ZmY1NTcwOGNhYWIzN2U3NDBk
ZjdiMGYxYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKQEAgLTQ4OCw2ICs0ODgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0
cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVl
cywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMg
c3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9z
ZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VCaWdJbnQsIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwK
KyAgICB2KEJvb2wsIHVzZUludGxEaXNwbGF5TmFtZXMsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2Ug
dGhlIEludGwuRGlzcGxheU5hbWVzIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUFy
cmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1
c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBh
bGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwK
ICAgICB2KEJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3Jl
YXRlX3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBz
dHJ1Y3R1cmUuIikgXAogICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9ybWFs
LCAiSWYgdHJ1ZSwgaXQgd2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDE2N2NmMGY1ZDlmY2ZiYzc3M2IwYzU1ZDcxYjIz
Y2JhNWZlNjJiNzYuLjQwZGRjMDUyYjgxOTc4ZjU5MDI1ZGYyYjk2Zjk4MjAwMzcyNzc1ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgogI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKICNp
bmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2lu
Y2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgpAQCAtMzA2LDYgKzMwNyw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRpZgogICAgICwgaW50bENvbGxhdG9y
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKICAg
ICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCisgICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCiAgICAgLCBp
bnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+
KCkpCiAgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQpAQCAtMTQ4
MSw2ICsxNDgzLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNh
bGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWwKICNlbmRpZgogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRsQ29s
bGF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvcikKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVU
aW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBp
bnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGlzcGxheU5hbWVzKQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50
bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExvY2FsZSkKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJG
b3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXQpCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVy
YWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJhbFJ1bGVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggYmVkMTY2ODgwNTY2NzliMDNlZDBjMmI4YjRkODA4ODA3NWYy
ZmIzMy4uOGQ0N2YyMDJhM2ZkMTNlM2FjM2RmMjk2ZGUyNjVmMTIyZTA3NTNmOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgSWRlbnRpZmll
cjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50bERh
dGVUaW1lRm9ybWF0OworY2xhc3MgSW50bERpc3BsYXlOYW1lczsKIGNsYXNzIEludGxMb2NhbGU7
CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwpAQCAtNDAw
LDYgKzQwMSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwg
cHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxU
eXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFt
ZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50
bExvY2FsZUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKQEAgLTU1Nyw2ICs1NTks
NyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE2MzU5
N2Y0YTIwZWQ2MWU2NmYyODk4OTg1ZGVmN2Q2NTVmMDljMTkuLjQxNjE4NjlhMzdkMWNiM2RjY2Iy
YTQ5OTBjMDUzOTQ2Yzg3NmNjMTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDYtMjkgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbRUNNQS00MDJdIEltcGxlbWVu
dCBJbnRsLkRpc3BsYXlOYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkQmUu
SlNPTi5zdHJpbmdpZnkuY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAo
c2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkucmVnaW9uTmFtZXMucmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKG9iamVjdC50b1N0cmluZyk6CisgICAgICAgIChSYW5nZUVycm9yLmludmFsaWQubGFu
Z3VhZ2UudGFnLnNob3VsZFRocm93KToKKyAgICAgICAgKFR5cGVFcnJvci5JbnRsLkRpc3BsYXlO
YW1lcy5wcm90b3R5cGUub2YuY2FsbGVkLm9uLnZhbHVlLnRoYXQuc2hvdWxkVGhyb3cpOgorICAg
ICAgICAqIHN0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFncy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2bS5pY3VW
ZXJzaW9uKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA2LTI2ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3Qy
NjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFkOWVjMGVmN2E3
NTgwOTEzNjk0YTJlZTFjZjVmMzNlZTk1YWQ1NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzCkBAIC0wLDAgKzEsMTg5IEBACisvL0AgcnVuRGVm
YXVsdCgiLS11c2VJbnRsRGlzcGxheU5hbWVzPTEiKQorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkRpc3BsYXlOYW1lcywgYFR5cGVF
cnJvcjogdHlwZSBtdXN0IG5vdCBiZSB1bmRlZmluZWRgKQorCisvLyBHZXQgZGlzcGxheSBuYW1l
cyBvZiByZWdpb24gaW4gRW5nbGlzaAordmFyIHJlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlon
KSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICJVbml0ZWQgU3Rh
dGVzIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSAmIEhlcnplZ292
aW5hIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIgKEJ1cm1hKSIp
OworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiByZWdpb24gaW4gVHJhZGl0aW9uYWwgQ2hpbmVz
ZQorcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBl
OiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAi5ouJ5LiB576O
5rSyIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIuiynemHjOaWryIpOworc2hv
dWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICLnvo7lnIsiKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdCQScpLCAi5rOi5aOr5bC85Lqe6IiH6LWr5aGe5ZOl57at57SNIik7CitzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignTU0nKSwgIue3rOeUuCIpOworCityZWdpb25OYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICdzaG9ydCd9
KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKK3No
b3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CitzaG91bGRCZShyZWdpb25O
YW1lcy5vZignVVMnKSwgIlVTIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJv
c25pYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIik7CisKK3Jl
Z2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24n
LCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxh
dGluIEFtZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7
CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMnKSwgIlVTIik7CitzaG91bGRCZShyZWdpb25O
YW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyks
ICJNeWFubWFyIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdlIGluIEVuZ2xp
c2gKK3ZhciBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5
cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVu
Y2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICJHZXJtYW4iKTsKK3Nob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKK2lmICgk
dm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3po
LUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7CitlbHNlCisgICAgc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIkFtZXJpY2FuIEVuZ2xpc2giKTsKK3Nob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJDaGluZXNlIChUYWl3YW4pIik7CisKKy8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK2xh
bmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAn
bGFuZ3VhZ2UnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAi5rOV5paHIik7
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aCcpLCAi5Lit5paHIik7CitzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdkZScpLCAi5b635paHIik7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcg
SW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgc3R5bGU6ICdzaG9y
dCd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICJHZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lv
bigpIDw9IDY2KQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNo
aW5lc2UsIFRyYWRpdGlvbmFsIik7CitlbHNlCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignZW4tVVMnKSwgIlVTIEVuZ2xpc2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ3poLVRXJyksICJDaGluZXNlIChUYWl3YW4pIik7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcg
SW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgc3R5bGU6ICduYXJy
b3cnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CitzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2VybWFuIik7CitzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCdmci1DQScpLCAiQ2FuYWRpYW4gRnJlbmNoIik7CitpZiAoJHZtLmljdVZlcnNp
b24oKSA8PSA2NikKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJD
aGluZXNlLCBUcmFkaXRpb25hbCIpOworZWxzZQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ3poLUhhbnQnKSwgIlRyYWRpdGlvbmFsIENoaW5lc2UiKTsKK3Nob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVz
Lm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1l
cyBvZiBzY3JpcHQgaW4gRW5nbGlzaAordmFyIHNjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7CisvLyBHZXQgc2NyaXB0IG5hbWVzCitz
aG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0bicpLCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlw
dE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdL
YW5hJyksICJLYXRha2FuYSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBzY3JpcHQgaW4g
VHJhZGl0aW9uYWwgQ2hpbmVzZQorc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
Wyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0J30pOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2Yo
J0xhdG4nKSwgIuaLieS4geaWhyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwg
IumYv+aLieS8r+aWhyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIueJh+WB
h+WQjSIpOworCitzY3JpcHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0
eXBlOiAnc2NyaXB0Jywgc3R5bGU6ICdzaG9ydCd9KTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9m
KCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFy
YWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIkthdGFrYW5hIik7CisK
K3NjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3Jp
cHQnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyks
ICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOwor
c2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIkthdGFrYW5hIik7CisKKy8vIEdldCBk
aXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaAordmFyIGN1cnJlbmN5TmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5J30pOwor
Ly8gR2V0IGN1cnJlbmN5IG5hbWVzCitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwg
IlVTIERvbGxhciIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICJFdXJvIik7
CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIk5ldyBUYWl3YW4gRG9sbGFyIik7
CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIkNoaW5lc2UgWXVhbiIpOworc2hv
dWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICJKYXBhbmVzZSBZZW4iKTsKKworLy8gR2V0
IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBUcmFkaXRpb25hbCBDaGluZXNlCitj
dXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTog
J2N1cnJlbmN5J30pOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVVNEJyksICLnvo7lhYMi
KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAi5q2Q5YWDIik7CitzaG91bGRC
ZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIuaWsOWPsOW5oyIpOworc2hvdWxkQmUoY3VycmVu
Y3lOYW1lcy5vZignQ05ZJyksICLkurrmsJHluaMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMu
b2YoJ0pQWScpLCAi5pel5ZyTIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5
IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAorY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3Bs
YXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knLCBzdHlsZTogJ3Nob3J0JyB9KTsKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAiJCIpOworc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignRVVSJyksICLigqwiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcp
LCAiTlQkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIkNOwqUiKTsKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKKworLy8gR2V0IGRpc3BsYXkg
bmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBFbmdsaXNoIGluIG5hcnJvdworY3VycmVuY3lOYW1l
cyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knLCBzdHls
ZTogJ25hcnJvdycgfSk7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsK
K3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAi4oKsIik7CitzaG91bGRCZShjdXJy
ZW5jeU5hbWVzLm9mKCdUV0QnKSwgIiQiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NO
WScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWicpLCAiSlBaIik7IC8vIEZhbGxiYWNrIGNvZGUK
K3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkp
LCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFycm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFs
bGJhY2siOiJjb2RlIn1gKTsKKworY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1l
cyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knLCBzdHlsZTogJ25hcnJvdycsIGZhbGxiYWNrOiAn
bm9uZScgfSk7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFonKSwgdW5kZWZpbmVkKTsg
Ly8gRmFsbGJhY2sgbm9uZQorc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVuY3lOYW1lcy5y
ZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBl
IjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5vbmUifWApOworCityZWdpb25OYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVn
aW9uTmFtZXMub2YoJzk5OScpLCAiOTk5Iik7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdp
b25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25n
IiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoiY29kZSJ9YCk7CisKK3JlZ2lvbk5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nLCBmYWxsYmFjazon
bm9uZSd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc5OTknKSwgdW5kZWZpbmVkKTsKK3No
b3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsi
bG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwiZmFsbGJhY2siOiJu
b25lIn1gKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10s
IHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1BQScp
LCAiZW4tQUEiKTsKK3ZhciBvYmplY3QgPSB7CisgICAgdG9TdHJpbmcoKSB7CisgICAgICAgIHJl
dHVybiAnZW4tQUEnOworICAgIH0KK307CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKG9iamVj
dCksIG9iamVjdCk7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydl
biddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFsbGJhY2s6ICdub25lJ30pOworc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFt
ZXMub2Yob2JqZWN0KSwgdW5kZWZpbmVkKTsKKworc2hvdWxkQmUoSW50bC5EaXNwbGF5TmFtZXMu
cHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10sIGBJbnRsLkRpc3BsYXlOYW1lc2ApOworc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09m
KCJlbiIpKSwgYFsiZW4iXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5
TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJqYS1KUCIpKSwgYFsiamEtSlAiXWApOworc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKHsg
bGVuZ3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAzOiAnZGUnIH0pKSwgJ1siZXMiLCJlbiIsImRl
Il0nKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2Fs
ZXNPZigiIiksIGBSYW5nZUVycm9yOiBpbnZhbGlkIGxhbmd1YWdlIHRhZzogYCkKKworc2hvdWxk
VGhyb3coKCkgPT4geworICAgIEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZi5jYWxsKHt9
KTsKK30sIGBUeXBlRXJyb3I6IEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZiBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5TmFt
ZXNgKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIEludGwuRGlzcGxheU5hbWVzLnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiBJbnRsLkRpc3Bs
YXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3BsYXlOYW1lc2ApOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1YnRhZ3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjU5YzE3
ZTdmZjViNmZmZWNmZGE3YjJkYWRiZGM2NTUwZjRhNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1YnRhZ3MuanMKQEAgLTAsMCArMSw4OCBA
QAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlSW50bERpc3BsYXlOYW1lcz0xIikKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCit2YXIgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5
TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsKK3Nob3VsZFRocm93KCgpID0+IHJlZ2lv
bk5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0
YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiBy
ZWdpb25OYW1lcy5vZigiMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9u
IHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAwIiksIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygo
KSA9PiByZWdpb25OYW1lcy5vZigiMDAwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90
IGEgcmVnaW9uIHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoImEi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCJhYWEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50
IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCI0MTki
KSwgYExhdGluIEFtZXJpY2FgKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCJKUCIpLCBgSmFw
YW5gKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCJVUyIpLCBgVW5pdGVkIFN0YXRlc2ApOwor
Cit2YXIgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCIiKSwg
YFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJv
dygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigi
LS0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91
bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJlbi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJl
bi1VUyIpLCBgQW1lcmljYW4gRW5nbGlzaGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigi
RU5fVVMiKSwgYEFtZXJpY2FuIEVuZ2xpc2hgKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
ImVuLXVzIiksIGBBbWVyaWNhbiBFbmdsaXNoYCk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCJyb290IiksIGBSb290YCk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJyb290LVVTIiks
IGBSb290IChVUylgKTsgLy8gVGhpcyBpcyBPSyBzaW5jZSByb290IGlzIG5vdyBwYXJzZWQgYXMg
YSBzY3JpcHQuCitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlcy00MTkiKSwgYExhdGluIEFt
ZXJpY2FuIFNwYW5pc2hgKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpIDw9IDY2KSB7CisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCBgQ2hpbmVzZSwgVHJhZGl0aW9uYWxg
KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW5zLUhLJyksIGBDaGluZXNl
LCBTaW1wbGlmaWVkIChIb25nIEtvbmcpYCk7Cit9IGVsc2UgeworICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgYFRyYWRpdGlvbmFsIENoaW5lc2VgKTsKKyAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW5zLUhLJyksIGBTaW1wbGlmaWVkIENoaW5lc2Ug
KEhvbmcgS29uZylgKTsKK30KK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ0hhbnQnKSwgYEhh
bnRgKTsgLy8gU2NyaXB0IG9ubHkKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NyLUxhdG4n
KSwgYFNlcmJpYW4gKExhdGluKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQKK3Nob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3NyLUN5cmwnKSwgYFNlcmJpYW4gKEN5cmlsbGljKWApOyAvLyBMYW5ndWFn
ZS1TY3JpcHQKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInpoLUhLLUhhbnMi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCdzbC1yb3phaicpLCBgU2xvdmVuaWFuIChSZXNpYW4pYCk7IC8v
IExhbmd1YWdlLVZhcmlhbnQKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NsX3JvemFqJyks
IGBTbG92ZW5pYW4gKFJlc2lhbilgKTsgLy8gTGFuZ3VhZ2UtVmFyaWFudAorc2hvdWxkVGhyb3co
KCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigic2wtcm96YWotQ3lybCIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdl
TmFtZXMub2YoInNsLXJvemFqLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFu
Z3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLV9yb3ph
aiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3Vs
ZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLUN5cmwtIiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3Vh
Z2VOYW1lcy5vZigiLXNsLUN5cmwtIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignaHktTGF0bi1JVC1hcmV2
ZWxhJyksIGBBcm1lbmlhbiAoTGF0aW4sIEl0YWx5LCBFYXN0ZXJuIEFybWVuaWFuKWApOyAvLyBM
YW5ndWFnZS1TY3JpcHQtUmVnaW9uLVZhcmlhbnQKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J2h5LUxhdG4tSVQnKSwgYEFybWVuaWFuIChMYXRpbiwgSXRhbHkpYCk7IC8vIExhbmd1YWdlLVNj
cmlwdC1SZWdpb24KK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5LUxhdG4tYXJldmVsYScp
LCBgQXJtZW5pYW4gKExhdGluLCBFYXN0ZXJuIEFybWVuaWFuKWApOyAvLyBMYW5ndWFnZS1TY3Jp
cHQtVmFyaWFudAorc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0bi1J
VFotYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRg
KTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tMDAtYXJldmVs
YSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3Vs
ZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxk
VGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0bi1hcmV2ZWxhenp6enp6enp6enoi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRU
aHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJoeXp6enp6enp6ei1MYXRuLWFyZXZlbGEiKSwg
YFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisKK3ZhciBzY3Jp
cHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0J30p
Oworc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0
TmFtZXMub2YoIi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0
YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYXRuMCIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkg
PT4gc2NyaXB0TmFtZXMub2YoIkxhbjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBh
IHNjcmlwdCBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYW4i
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsKK3Nob3Vs
ZEJlKHNjcmlwdE5hbWVzLm9mKCJMYXRuIiksIGBMYXRpbmApOworc2hvdWxkQmUoc2NyaXB0TmFt
ZXMub2YoImxhdG4iKSwgYExhdGluYCk7IC8vIENhbm9uaWNhbGl6YXRpb24gY2FuIG1ha2UgaXQg
d29yay4KKwordmFyIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbidd
LCB7dHlwZTogJ2N1cnJlbmN5J30pOworc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5v
ZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5j
eSBjb2RlYCk7CitzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9mKCItIiksIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7Citz
aG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9mKCJhYiIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3co
KCkgPT4gY3VycmVuY3lOYW1lcy5vZigianB5eCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMg
bm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3coKCkgPT4gY3Vy
cmVuY3lOYW1lcy5vZigianAwIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxs
LWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCJqcHki
KSwgYEphcGFuZXNlIFllbmApOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZigiSlBZIiksIGBK
YXBhbmVzZSBZZW5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBhNzlmMmRiZTM2MTY2ZjBiOGViYjk5
OWRiODVjZjRlMTY0Yjk0ZGYxLi5lNjM3MmZmOTI4M2JjZmI1NGJhZmE2ZDhiNWIxNmU0Y2FhOGUz
M2M4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yNiw2ICsyNiw5IEBAIHNraXA6CiAgICAgLSBJbnRs
LkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZAogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mb3Jt
YXRSYW5nZQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRz
CisgICAgIyBDdXJyZW50bHksIHRlc3QyNjIgaGFzIGEgYnVnIHdpdGggSW50bC5EaXNwbGF5TmFt
ZXMsIGFuZCBleHBvc2luZyBpdCBjYW4gY2F1c2UgbWFueSBmYWlsdXJlcyBpbiB2YXJpb3VzIElu
dGwgdGVzdHMuCisgICAgIyBXZSBzaG91bGQgZW5hYmxlIGl0IGFmdGVyIGVuc3VyaW5nIHRlc3Qy
NjIgaXMgZml4ZWQuCisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS90ZXN0MjYyL2lzc3Vl
cy8yNjgyCiAgICAgLSBJbnRsLkRpc3BsYXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAg
ICAgLSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403221</attachid>
            <date>2020-06-30 12:11:29 -0700</date>
            <delta_ts>2020-06-30 13:39:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209779-20200630121128.patch</filename>
            <type>text/plain</type>
            <size>89168</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjBmZWU3MDkyZDc1YThjNGJkYTM2MGNiNzA4YTc3MTY5NWIzYzYxLi44OTU4NGFhNDVmOWIyNzZl
NjU4MTAwNzRhMDdkMDlmNGUwYWI5NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cGxlbWVudHMgSW50bC5EaXNwbGF5TmFtZXMgYmVoaW5kIHVzZUludGxEaXNwbGF5TmFtZXM9MSBm
bGFnLgorICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcyBjYW4gb2ZmZXIgcmVhZGFibGUgImRpc3Bs
YXktbmFtZSIgZm9yIElDVSBsYW5ndWFnZSwgc2NyaXB0LCByZWdpb24sIGN1cnJlbmN5IGNvZGVz
LgorICAgICAgICBGb3IgZXhhbXBsZSwgaXQgY2FuIG9mZmVyICJVbml0ZWQgU3RhdGVzIiBzdHJp
bmcgZm9yICJVUyIgcmVnaW9uIGNvZGUuCisgICAgICAgIFdlIHVzZSBJQ1UgVUxvY2FsZURpc3Bs
YXlOYW1lcyB0byBpbXBsZW1lbnQgaXQsIGV4Y2VwdCBmb3IgY3VycmVuY3kgc2luY2UgVUxvY2Fs
ZURpc3BsYXlOYW1lcyBpcyBub3Qgc3VwcG9ydGluZworICAgICAgICBjdXJyZW5jeSBjb3JyZWN0
bHk6IGl0IGlnbm9yZXMgImxvbmciLCAic2hvcnQiLCBhbmQgIm5hcnJvdyIgc3R5bGUgY29uZmln
dXJhdGlvbnMuIFdlIG5lZWQgdG8gY2FsbCB1Y3Vycl9nZXROYW1lCisgICAgICAgIGRpcmVjdGx5
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXBwcm9wcmlhdGVseSBhZGRzIHVuaWNvZGUtbGFuZ3Vh
Z2UtaWQgcGFyc2luZyBpbiBJbnRsTG9jYWxlLmNwcCBzbyB0aGF0IHdlIGNhbiB2YWxpZGF0ZSBs
YW5ndWFnZSBpZAorICAgICAgICB3aGVuIGl0IGlzIHBhc3NlZCB0byBgSW50bC5EaXNwbGF5TmFt
ZXMjb2ZgIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5h
bWVzOjpvZiBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnJlc29sdmVk
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAoSlND
OjpjYWxsSW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bExvY2FsZS5jcHA6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlU3VidGFnKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVnaW9uU3VidGFnKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVTY3Jp
cHRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOgorICAgICAg
ICAoSlNDOjppc1VuaWNvZGVWYXJpYW50U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2Rl
TGFuZ3VhZ2VJZCk6CisgICAgICAgIChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmludGxEaXNwbGF5
TmFtZXNBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGlzcGxheU5hbWVz
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIwLTA2LTI5ICBUZXRzdWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVr
aUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9TVFJFQU1TX0FQSSBjb21waWxh
dGlvbiBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDA0MjlmMzVmN2RhN2E1OWVlYjEyZTY1ZjJkOGZkZWIwNjkzMWI2YTYu
LjdlZjY0ZDM4MGRmZDQ1N2YzODIxZjFlYmQ0MDg4MzI3NjhjNDlhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjAtMDYtMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbRUNNQS00MDJdIEltcGxlbWVudCBJbnRsLkRpc3BsYXlOYW1lcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisKIDIwMjAtMDYtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggYzI1OTEwODZlYmFjNzIyMDY2YTg2NDQ1ZmFjMjExZGVmODAzMDVlMC4uYmQ1YTBhYjEw
NjE2YTQwMmRhMjA0OGQ0MzgzZDdmMzZmODhhNWViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNzAsNiArNzAsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xV
VF9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYTY1Y2ZkNWE5MGJjODViYzcwMjUxY2YwZGRmMTQx
NDVkZTllY2YwNy4uZDBkOGRmZGM0OGEzNWU4MjE3ZjdjMDM0MWMwZmUwM2JiNDNlMDQ5MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTEzOCw2ICsxMzgsOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDc5Y2RlNGVlNTA3ZTEzZjZmZjdmYTc4MDBkYzY0NWNiZjg5NDFjNjcu
LjJiZGY1YjJjODIyYTZkOWU3YjZmNDU2YmIwYTk2MTYzZWUxZDZkMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTI3LDYgKzI3LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC4KICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMGY5ZmVjNTFkY2U0ODY4NmZmODc0NWJlYWE0
YjViNWQ1YjEwMzNkLi5jMWZmNWU2MjQ3MzUwNjhjZmY0YzEyZTRjZjQ4Y2RjNGZhMGE2NTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTU5LDYgKzE1
OSw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUu
bHV0LmggXAogICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAorICAgIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBc
CiAgICAgSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWY4NTFjMTE3MmM2ZTA0ZWFiODM4OGMy
MjgwZGE1MDg0M2E2M2JkZC4uYzA2NjNkN2Y2MGY5OWRmMWQ0MWRlZmVjZGM1NmU5Y2U1NDkyY2Mz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTksNiArMTgxOSw5IEBACiAJ
CUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdB
NSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMy
MkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyB9OwogCQlFMzUwNzA4QTFEQzQ5QkJG
MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2ln
bmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTM1M0MxMUQyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTE3MjRBQTRDQjYw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggKi87IH07CisJCUUzNTNDMTFFMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAv
KiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTM1M0MxMjEyNEFBNENC
NzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAv
KiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggKi87IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEw
MDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0
QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVC
ODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NUQzOEYyMjQ0
Njg3NzAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVEMzhEMjI0NDY4NkIwMDhGMUFENiAvKiBHbG9i
YWxFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE4MjgsNiArMTgzMSw4IEBACiAJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhl
YXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1
RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2MzdFRTky
MzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBM
aW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IubHV0LmggKi87IH07CisJCUUzNjVGMzNCMjRBQTYyM0IwMEM5OTFCMiAvKiBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBX
YXNtT01HRm9yT1NSRW50cnlQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5oICovOyB9OwogCQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0
aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00OTg1LDYgKzQ5OTAsMTIgQEAKIAkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2Vu
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RjkzMEMyMzIyRDg4MTAw
MkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTA3MDg5MURD
NDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExNzI0QUE0Q0I2MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRs
RGlzcGxheU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE4MjRB
QTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE5MjRBQTRDQjYwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzUzQzExQTI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAw
NTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclNuaXBw
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUQzOEQyMjQ0Njg2QjAwOEYx
QUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsRXhlY3V0YWJs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTAwMSw2ICs1MDEyLDggQEAKIAkJ
RTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGltZUNvbnN0
YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzgyNEFBNjIxMTAw
Qzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM2QjQ4MDEyM0U5NTczODAwRTRBNjZFIC8qIFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4RDYx
MTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY3NjcsNiArNjc4MCw4IEBACiAJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CiAJCQkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzNjVGMzM4MjRBQTYyMTEwMEM5OTFC
MiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExMjU4NDZDMUI0
NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCiAJ
CQkJQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNw
cCAqLywKQEAgLTcyNjIsNiArNzI3NywxMiBAQAogCQkJCUExNTg3RDZBMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAogCQkJCUExNTg3RDZCMUI0
REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovLAogCQkJ
CUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aCAqLywKKwkJCQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5j
cHAgKi8sCisJCQkJRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMu
aCAqLywKKwkJCQlFMzUzQzExQTI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi8sCisJCQkJRTM1M0MxMTkyNEFBNENCNjAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwICovLAorCQkJCUUzNTNDMTFCMjRBQTRD
QjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggKi8sCiAJCQkJQTNBRkY5
MkQyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGUuY3BwICovLAogCQkJCUEzQUZGOTJCMjQ1
QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi8sCiAJCQkJQTNBRkY5MkYyNDVBM0NGQjAw
QzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC05NzUyLDYgKzk3NzMs
MTEgQEAKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3MjFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUQyNEFBNENCNzAwM0ZCREYzIC8qIElu
dGxEaXNwbGF5TmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTFFMjRBQTRDQjcwMDNG
QkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJERjMgLyogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2NUYzM0IyNEFB
NjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkUxQjQ1QTM2
MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMwNTAyYTM0YTY2NWE4NTBjYWQ2
YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjFiNGZiZjdjY2FjNDdlOWUwZDgyODRkNjYzNTgxODEyMWNh
ZTBmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgxNCw2ICs4MTQsOSBAQCBy
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCitydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGUuY3BwCiBy
dW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bExvY2FsZVByb3Rv
dHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCmluZGV4IDE2OGVmZWRhMTRkNDYxMDUyNjA3NWFmZGViYWM5YWRiYTI1MjY2YmEu
LjNhNDk3ZTA3NGE5MGUwYjExOTU4NmJmYTA4ZDQ4M2ViMzA5NDIzMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzQsNiAr
MzQsNyBAQAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8oRGF0ZSkgXAogICAgIG1h
Y3JvKERhdGVUaW1lRm9ybWF0KSBcCisgICAgbWFjcm8oRGlzcGxheU5hbWVzKSBcCiAgICAgbWFj
cm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYTQyNTVjYmY4NjNmNTE2MDI2MmNiMmI1MGMzM2QyZGNmZGZiMjQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lcy5jcHAKQEAgLTAsMCArMSwzNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSW50bERpc3BsYXlOYW1lczo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGlzcGxheU5hbWVzKSB9
OworCitJbnRsRGlzcGxheU5hbWVzKiBJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1l
cyh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworSW50bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyhWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEludGxEaXNwbGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcwordm9p
ZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9u
aWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7CisgICAg
aWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0gY29uc3Ry
dWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVj
dHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1ZS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworICAgIH0KKworICAgIC8vIERvZXMgbm90IHNldCBlaXRoZXIgb2YgImNhIiBvciAi
bnUiLgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8j
c2VjLWludGwtZGlzcGxheW5hbWVzLWNvbnN0cnVjdG9yCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gb3B0OworCisgICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlciwgeyAibG9v
a3VwIiwgImJlc3QgZml0IiB9LCAibG9jYWxlTWF0Y2hlciBtdXN0IGJlIGVpdGhlciBcImxvb2t1
cFwiIG9yIFwiYmVzdCBmaXRcIiIsICJiZXN0IGZpdCIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgb3B0LmFkZCgibG9jYWxlTWF0Y2hlciJfcywgbWF0Y2hl
cik7CisKKworICAgIGF1dG8gbG9jYWxlRGF0YSA9IFtdKGNvbnN0IFN0cmluZyYsIHNpemVfdCkg
LT4gVmVjdG9yPFN0cmluZz4geworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBh
dXRvJiBhdmFpbGFibGVMb2NhbGVzID0gaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMo
KTsKKyAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIG51bGxwdHIsIDAsIGxvY2FsZURhdGEp
OworCisgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KCJsb2NhbGUiX3MpOworICAgIGlmIChtX2xv
Y2FsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3BsYXlOYW1lIGR1ZSB0byBpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgc3R5bGVTdHJp
bmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+c3R5bGUsIHsgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBvciBcImxvbmdcIiIsICJsb25nIik7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoc3R5bGVTdHJp
bmcgPT0gIm5hcnJvdyJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpOYXJyb3c7CisgICAg
ZWxzZSBpZiAoc3R5bGVTdHJpbmcgPT0gInNob3J0Il9zKQorICAgICAgICBtX3N0eWxlID0gU3R5
bGU6OlNob3J0OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJsb25nIl9zKQorICAgICAg
ICBtX3N0eWxlID0gU3R5bGU6Okxvbmc7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKworICAgIFN0cmluZyB0eXBlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHsgImxhbmd1YWdlIiwg
InJlZ2lvbiIsICJzY3JpcHQiLCAiY3VycmVuY3kiIH0sICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwi
bGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5jeVwiIiwgbnVs
bHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAo
dHlwZVN0cmluZy5pc051bGwoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKKyAgICBpZiAodHlwZVN0
cmluZyA9PSAibGFuZ3VhZ2UiX3MpCisgICAgICAgIG1fdHlwZSA9IFR5cGU6Okxhbmd1YWdlOwor
ICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInJlZ2lvbiJfcykKKyAgICAgICAgbV90eXBlID0g
VHlwZTo6UmVnaW9uOworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInNjcmlwdCJfcykKKyAg
ICAgICAgbV90eXBlID0gVHlwZTo6U2NyaXB0OworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0g
ImN1cnJlbmN5Il9zKQorICAgICAgICBtX3R5cGUgPSBUeXBlOjpDdXJyZW5jeTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgU3RyaW5nIGZhbGxiYWNrU3Ry
aW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCB7ICJjb2RlIiwgIm5vbmUiIH0sICJmYWxsYmFj
ayBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiBvciBcIm5vbmVcIiIsICJjb2RlIik7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoZmFsbGJhY2tTdHJpbmcg
PT0gImNvZGUiX3MpCisgICAgICAgIG1fZmFsbGJhY2sgPSBGYWxsYmFjazo6Q29kZTsKKyAgICBl
bHNlIGlmIChmYWxsYmFja1N0cmluZyA9PSAibm9uZSJfcykKKyAgICAgICAgbV9mYWxsYmFjayA9
IEZhbGxiYWNrOjpOb25lOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKworICAgIFVEaXNwbGF5
Q29udGV4dCBjb250ZXh0c1tdID0geworICAgICAgICAvLyBlbl9HQiBkaXNwbGF5cyBhcyAnRW5n
bGlzaCAoVW5pdGVkIEtpbmdkb20pJyAoU3RhbmRhcmQgTmFtZXMpIG9yICdCcml0aXNoIEVuZ2xp
c2gnIChEaWFsZWN0IE5hbWVzKS4KKyAgICAgICAgLy8gV2UgdXNlIERpYWxlY3QgTmFtZXMgaGVy
ZSwgYWxpZ25lZCB0byB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMgZHJhZnQgYW5kIFY4J3MgYmVo
YXZpb3IuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwt
ZGlzcGxheW5hbWVzI2xhbmd1YWdlLWRpc3BsYXktbmFtZXMKKyAgICAgICAgVURJU1BDVFhfRElB
TEVDVF9OQU1FUywKKworICAgICAgICAvLyBDYXBpdGFpbGl6YXRpb24gbW9kZSBjYW4gYmUgcGlj
a2VkIGZyb20gc2V2ZXJhbCBvcHRpb25zLiBQb3NzaWJseSBlaXRoZXIgVURJU1BDVFhfQ0FQSVRB
TElaQVRJT05fTk9ORSBvciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBp
cworICAgICAgICAvLyBwcmVmZXJhYmxlIGluIEludGwuRGlzcGxheU5hbWVzLiBXZSB1c2UgVURJ
U1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUgYmVjYXVzZSBpdCBtYWtlcyBzdGFu
ZGFsb25lIGRhdGUgZm9ybWF0IGJldHRlciAoZnIgIkp1aWxsZXQgMjAwOCIgaW4gSUNVIHRlc3Qg
c3VpdGVzKSwKKyAgICAgICAgLy8gYW5kIERpc3BsYXlOYW1lcyB3aWxsIHN1cHBvcnQgZGF0ZSBm
b3JtYXRzIHRvby4KKyAgICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxP
TkUsCisKKyAgICAgICAgLy8gTmFycm93IGJlY29tZXMgVURJU1BDVFhfTEVOR1RIX1NIT1JULiBC
dXQgaW4gY3VycmVuY3kgY2FzZSwgd2UgaGFuZGxlIGRpZmZlcmVudGx5IGluc3RlYWQgb2YgdXNp
bmcgVUxvY2FsZURpc3BsYXlOYW1lcy4KKyAgICAgICAgbV9zdHlsZSA9PSBTdHlsZTo6TG9uZyA/
IFVESVNQQ1RYX0xFTkdUSF9GVUxMIDogVURJU1BDVFhfTEVOR1RIX1NIT1JULAorCisgICAgICAg
IC8vIEFsd2F5cyBkaXNhYmxlIElDVSBTVUJTVElUVVRFIHNpbmNlIGl0IGRvZXMgbm90IG1hdGNo
IGFnYWluc3Qgd2hhdCB0aGUgc3BlYyBkZWZpbmVzLiBJQ1UgaGFzIHNvbWUgc3BlY2lhbCBzdWJz
dGl0dXRlIHJ1bGVzLCBmb3IgZXhhbXBsZSwgbGFuZ3VhZ2UgImVuLUFBIgorICAgICAgICAvLyBy
ZXR1cm5zICJFbmdsaXNoIChBQSkiICh3aGlsZSBBQSBjb3VudHJ5IGNvZGUgaXMgbm90IGRlZmlu
ZWQpLCBidXQgd2Ugd291bGQgbGlrZSB0byByZXR1cm4gZWl0aGVyIGlucHV0IHZhbHVlIG9yIHVu
ZGVmaW5lZCwgc28gd2UgZG8gbm90IHdhbnQgdG8gaGF2ZSBJQ1Ugc3Vic3RpdHV0ZSBydWxlcy4K
KyAgICAgICAgVURJU1BDVFhfTk9fU1VCU1RJVFVURSwKKyAgICB9OworICAgIG1fbG9jYWxlQ1N0
cmluZyA9IG1fbG9jYWxlLnV0ZjgoKTsKKyAgICBtX2Rpc3BsYXlOYW1lcyA9IHN0ZDo6dW5pcXVl
X3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4odWxk
bl9vcGVuRm9yQ29udGV4dChtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBjb250ZXh0cywgV1RGX0FS
UkFZX0xFTkdUSChjb250ZXh0cyksICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIERpc3BsYXlOYW1lcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2Vj
LUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgorSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVz
OjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5TmFtZXMpOworCisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiBidWZmZXI7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAg
ICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB1
c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNl
IG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KKyAgICAgICAgLy8gICAgIDEuIElDVSBkb2VzIG5v
dCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8gVURJU1BDVFhfTEVOR1RIX1NIT1JUIGlu
IGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0
byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURpc3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5j
eSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KKworICAgICAgICAvLyBDYW5vbmljYWxDb2Rl
Rm9yRGlzcGxheU5hbWVzCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRs
LWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICAgICAg
Ly8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMgZmFsc2UsIHRocm93
IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVu
Y3lDb2RlKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3Mp
OworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29k
ZS5pc0FsbEFTQ0lJKCkpOworCisgICAgICAgIFVDdXJyTmFtZVN0eWxlIHN0eWxlID0gVUNVUlJf
TE9OR19OQU1FOworICAgICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTdHls
ZTo6TG9uZzoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUg
PSBVQ1VSUl9TWU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
eWxlOjpOYXJyb3c6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX05BUlJPV19TWU1CT0xfTkFN
RTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gNi4gTGV0IGNv
ZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBhcyBkZXNjcmli
ZWQgaW4gNi4xLgorICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0XSA9IHsKKyAgICAgICAg
ICAgIHRvQVNDSUlVcHBlcihjb2RlWzBdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2Rl
WzFdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzJdKSwKKyAgICAgICAgICAgIHUn
XDAnCisgICAgICAgIH07CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBp
cyBzdGF0aWMgc3RyaW5nIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0
LgorICAgICAgICBpbnQzMl90IGxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IFVDaGFyKiByZXN1
bHQgPSB1Y3Vycl9nZXROYW1lKGN1cnJlbmN5LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBzdHls
ZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIC8vIHVj
dXJyX2dldE5hbWUgcmV0dXJucyBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUgZGlzcGxh
eS1uYW1lIGlzIG5vdCBmb3VuZC4gQnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlzIHJldHVy
bmVkIGV2ZW4gaWYKKyAgICAgICAgLy8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUg
c2FtZTogbmFycm93ICJVU0QiIGlzICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIHNp
bmNlIHNob3J0ICJVU0QiIGlzIGFsc28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCisgICAgICAgIC8v
IHJlc3VsdCA9PSBjdXJyZW5jeSB0byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBmYWlsZWQg
dG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRlciBjb21w
YXJpc29uIGlzIGVuc3VyZWQgYnkKKyAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KKyAgICAg
ICAgLy8gPiBSZXR1cm5zIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJz
LiBJZiB0aGUgcmVzb3VyY2UgZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5Jywg
dGhlbiAnY3VycmVuY3knIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgICAgaWYgKHN0YXR1cyA9
PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCisgICAgICAg
ICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQo
KSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0
LCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50
bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgYXV0
byBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGUpIC0+IENTdHJpbmcgeworICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJ
KCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgY2hhciog
bXV0YWJsZURhdGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIC8vIExldCBj
b2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMgZGVzY3Jp
YmVkIGluIDYuMS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtp
bmRleF0gPSB0b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgICAg
ICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNl
IGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0
YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogewor
ICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJz
dCBjaGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25k
LCB0aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRl
c2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisg
ICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFb
MF0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0
Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9
IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IFR5cGU6Okxhbmd1YWdlOiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0
aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhj
ZXB0aW9uCisgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9
CisgICAgICAgIGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVz
KG1fdHlwZSwgY29kZSk7CisgICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3Bs
YXlOYW1lIHNpbmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0
eXBlLiBJdCByZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1l
cmljYW4gRW5nbGlzaCIuCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3Vh
Z2UuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBl
OjpSZWdpb246IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmlj
b2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlv
bgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3Qg
YSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0K
KyAgICAgICAgYXV0byByZWdpb24gPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1f
dHlwZSwgY29kZSk7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgcmVnaW9uLmRh
dGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6U2Ny
aXB0OiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9z
Y3JpcHRfc3VidGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAg
ICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgc2Ny
aXB0IHN1YnRhZyJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAg
ICAgIGF1dG8gc2NyaXB0ID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUs
IGNvZGUpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxk
bl9zY3JpcHREaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHNjcmlwdC5kYXRhKCks
IGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICAvLyB1bGRuX2xvY2FsZURpc3Bs
YXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNwbGF5TmFt
ZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMg
bm90IGZvdW5kLgorICAgICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxs
YmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2YWx1ZS4K
KyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisgICAgICAg
ICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQo
KSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVz
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMKK0pTT2JqZWN0KiBJbnRsRGlzcGxheU5hbWVzOjpy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsK
KyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIHR5cGVTdHJpbmcobV90eXBlKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNrIiksIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30K
KworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxl
KQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAg
ICAgIHJldHVybiAibmFycm93Il9zOworICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICBy
ZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAgIHJldHVybiAi
bG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6
dHlwZVN0cmluZyhUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBU
eXBlOjpMYW5ndWFnZToKKyAgICAgICAgcmV0dXJuICJsYW5ndWFnZSJfczsKKyAgICBjYXNlIFR5
cGU6OlJlZ2lvbjoKKyAgICAgICAgcmV0dXJuICJyZWdpb24iX3M7CisgICAgY2FzZSBUeXBlOjpT
Y3JpcHQ6CisgICAgICAgIHJldHVybiAic2NyaXB0Il9zOworICAgIGNhc2UgVHlwZTo6Q3VycmVu
Y3k6CisgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlM
aXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNr
KQoreworICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKKyAgICBjYXNlIEZhbGxiYWNrOjpDb2RlOgor
ICAgICAgICByZXR1cm4gImNvZGUiX3M7CisgICAgY2FzZSBGYWxsYmFjazo6Tm9uZToKKyAgICAg
ICAgcmV0dXJuICJub25lIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzOTAxOTEwMDgxNDQwNWJiYjM5YTM1MTk3MzBhNjVhZDM4NjRiYTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VsZG5hbWVzLmg+CisjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEludGxEaXNwbGF5TmFtZXMgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEludGxE
aXNwbGF5TmFtZXMqPihjZWxsKS0+SW50bERpc3BsYXlOYW1lczo6fkludGxEaXNwbGF5TmFtZXMo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsRGlzcGxheU5hbWVzU3BhY2U8bW9kZT4oKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lcyogY3JlYXRlKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQgaW5pdGlh
bGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlc1ZhbHVlLCBK
U1ZhbHVlIG9wdGlvbnNWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIG9mKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSkgY29uc3Q7CisgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCopIGNvbnN0OworCitwcml2YXRlOgorICAgIEludGxEaXNwbGF5TmFtZXMoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKKyAgICBlbnVtIGNsYXNz
IFN0eWxlIDogdWludDhfdCB7IE5hcnJvdywgU2hvcnQsIExvbmcgfTsKKyAgICBlbnVtIGNsYXNz
IFR5cGUgOiB1aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lvbiwgU2NyaXB0LCBDdXJyZW5jeSB9Owor
ICAgIGVudW0gY2xhc3MgRmFsbGJhY2sgOiB1aW50OF90IHsgQ29kZSwgTm9uZSB9OworCisgICAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJh
Y2tTdHJpbmcoRmFsbGJhY2spOworCisgICAgdXNpbmcgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OworICAgIHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxl
RGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4gbV9kaXNwbGF5TmFtZXM7
CisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RvcmUgaXQg
b25seSB3aGVuIG1fdHlwZSBpcyBDdXJyZW5jeS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzczCisgICAgQ1N0cmluZyBtX2xvY2FsZUNTdHJpbmc7
CisgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpMb25nIH07CisgICAgVHlwZSBtX3R5cGUgeyBU
eXBlOjpMYW5ndWFnZSB9OworICAgIEZhbGxiYWNrIG1fZmFsbGJhY2sgeyBGYWxsYmFjazo6Q29k
ZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNmZiZmYzZDk4OWZiMjRiZTYzOTA4MzM4NDE2MmNhMGZiMzkxMWQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc0NvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCIK
KworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sICZkaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZv
ciBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBkaXNwbGF5TmFtZXND
b25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUp
Cit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCBkaXNwbGF5TmFtZXNQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30K
KworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
RGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRsRGlzcGxheU5hbWVzLCBjb25zdHJ1Y3RJ
bnRsRGlzcGxheU5hbWVzKQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNw
bGF5TmFtZXNQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEaXNw
bGF5TmFtZXMiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBkaXNwbGF5TmFtZXNQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBkaXNwbGF5TmFtZXNQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuRGlz
cGxheU5hbWVzCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJ
bnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFy
Z2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBuZXdUYXJnZXQgPT0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpCisgICAgICAgID8g
Z2xvYmFsT2JqZWN0LT5kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0
LCBnZXRGdW5jdGlvblJlYWxtKHZtLCBuZXdUYXJnZXQpLT5kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludGxEaXNw
bGF5TmFtZXMqIGRpc3BsYXlOYW1lcyA9IEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQoZGlzcGxheU5hbWVzKTsKKworICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICBkaXNwbGF5TmFtZXMtPmluaXRpYWxpemVEaXNwbGF5TmFtZXMoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGlzcGxheU5hbWVzIikpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1
cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIC8vIEludGwuRGlzcGxheU5h
bWVzLnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4w
KQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2Vj
LUludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZgorCisgICAgLy8gMS4gTGV0IGF2
YWlsYWJsZUxvY2FsZXMgYmUgJURpc3BsYXlOYW1lcyUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisg
ICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bERpc3BsYXlO
YW1lc0F2YWlsYWJsZUxvY2FsZXMoKTsKKworICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVz
IGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAgVmVjdG9yPFN0cmluZz4g
cmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgorICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFs
T2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKSkpOworfQorCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NDRhZTFlOGE4MjViODZmN2E3YzhhOTZjNTAxYjQ0ZmJjYWQ4OGJl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGU7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJu
YWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAg
c3RhdGljIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZN
JiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUqKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4ZWM4MGY0
MjUzNWZmZDYwYzkzOTk3OTQ3YTIwMmRhM2ZiMzE3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCkBA
IC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkludGwu
RGlzcGxheU5hbWVzIiwgJkJhc2U6OnNfaW5mbywgJmRpc3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUp
IH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaAorQGJl
Z2luIGRpc3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxlCisgIG9mICAgICAgICAgICAgICAgSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZiAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICByZXNvbHZlZE9wdGlvbnMgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUqIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwor
ICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlO
YW1lcy5wcm90b3R5cGUub2YKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZUZ1bmNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogZGlz
cGxheU5hbWVzID0ganNEeW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMu
cHJvdG90eXBlLm9mIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIERpc3BsYXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
ZGlzcGxheU5hbWVzID0ganNEeW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGlzcGxheU5hbWVzKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFt
ZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5TmFtZXMiX3MpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGlzcGxheU5hbWVzLT5yZXNvbHZl
ZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjdlNTgzYTY3NTc0NGU0MTVhNDg1ZTgzZWYxZjM1ODZl
OWIxMjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExvY2FsZS5jcHAKaW5kZXggODBlNjRmMWFiMTc5NzEzOGIyNTJiOGZjZDEwNzFk
NzZiZGQ0NjI5YS4uOTViNmM4M2Y3MzllZTQ0M2I1ZmE4MDEzZjU5MGNjM2UyMWE4ZmU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTE5MSwy
NyArMTkxLDYgQEAgU3RyaW5nIEludGxMb2NhbGU6OmtleXdvcmRWYWx1ZShBU0NJSUxpdGVyYWwg
a2V5LCBib29sIGlzQm9vbGVhbikgY29uc3QKICAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmcodmFs
dWUpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAotLy8gdW5pY29kZV9sYW5ndWFnZV9zdWJ0YWcgPSBh
bHBoYXsyLDN9IHwgYWxwaGF7NSw4fSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1
YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKLSAgICByZXR1cm4gbGVuZ3RoID49IDIgJiYgbGVuZ3RoIDw9IDggJiYgbGVuZ3RoICE9
IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwotfQot
Ci0vLyB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgPSBhbHBoYXs0fSA7Ci1zdGF0aWMgYm9vbCBpc1Vu
aWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHN0cmlu
Zy5sZW5ndGgoKSA9PSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlB
bHBoYT4oKTsKLX0KLQotLy8gdW5pY29kZV9yZWdpb25fc3VidGFnID0gYWxwaGF7Mn0gfCBkaWdp
dHszfSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5nVmlldyBzdHJp
bmcpCi17Ci0gICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgcmV0dXJuIChs
ZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+
KCkpCi0gICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFj
dGVyczxpc0FTQ0lJRGlnaXQ+KCkpOwotfQotCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlCiB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YWdWYWx1ZSwgSlNWYWx1ZSBvcHRpb25z
VmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBhM2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5
MzguLjE4ZWMwOTM4MTVmNWFmYmI0MTg4MmMzYzU5OTE2YWZmNGYzYjE4N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBTdHJpbmcgY3VycmVu
Y3kgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWN1cnJlbmN5Lmlz
TnVsbCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5j
eS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgeworICAgICAgICBpZiAo
IWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjdXJyZW5jeSkpIHsKICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcykpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDFkZmEyMDgyYWYxNDIzZjRkM2VkM2UxMzMwYTk0
OTYzYmVlYTQzMDEuLmZiNTQwNjc0ZTE1ZDI1MTAyNGZlNDdjYzY0M2NhNTZmZjMyZmNmNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0zNSw2
ICszNSw4IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50
bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkludGxMb2NhbGVQcm90b3R5cGUuaCIKQEAgLTc3LDYgKzc5LDEzIEBAIHN0YXRpYyBKU1ZhbHVl
IGNyZWF0ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0
KQogICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3Qp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxP
YmplY3Qodm0pOworICAgIHJldHVybiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRpc3BsYXlOYW1lc1N0cnVj
dHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQorCiBzdGF0aWMgSlNWYWx1ZSBj
cmVhdGVMb2NhbGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
SW50bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKQEAg
LTE1Miw2ICsxNjEsOCBAQCBJbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqCiB2b2lkIEludGxPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlSW50bERpc3BsYXlOYW1lcygp
KQorICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+RGlzcGxheU5hbWVzLCBjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgdGhpcyks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0K
IAogU3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTgyNCw2ICs4MzUs
NzYgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBTdHJp
bmcmIGxvY2FsZSkKICAgICByZXR1cm4gbnVtYmVyaW5nU3lzdGVtczsKIH0KIAorLy8gdW5pY29k
ZV9sYW5ndWFnZV9zdWJ0YWcgPSBhbHBoYXsyLDN9IHwgYWxwaGF7NSw4fSA7Citib29sIGlzVW5p
Y29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHJldHVybiBsZW5ndGggPj0gMiAmJiBsZW5ndGggPD0g
OCAmJiBsZW5ndGggIT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJ
QWxwaGE+KCk7Cit9CisKKy8vIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyA9IGFscGhhezR9IDsKK2Jv
b2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVy
biBzdHJpbmcubGVuZ3RoKCkgPT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0FTQ0lJQWxwaGE+KCk7Cit9CisKKy8vIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9
IHwgZGlnaXR7M30gOworYm9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgcmV0dXJuIChs
ZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+
KCkpCisgICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFj
dGVyczxpc0FTQ0lJRGlnaXQ+KCkpOworfQorCisvLyB1bmljb2RlX3ZhcmlhbnRfc3VidGFnID0g
KGFscGhhbnVtezUsOH0gfCBkaWdpdCBhbHBoYW51bXszfSkgOworYm9vbCBpc1VuaWNvZGVWYXJp
YW50U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPj0gNSAmJiBsZW5ndGggPD0gOCkKKyAgICAgICAg
cmV0dXJuIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+
KCk7CisgICAgcmV0dXJuIGxlbmd0aCA9PSA0ICYmIGlzQVNDSUlEaWdpdChzdHJpbmdbMF0pICYm
IHN0cmluZy5zdWJzdHJpbmcoMSkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGFu
dW1lcmljPigpOworfQorCisvLyB1bmljb2RlX2xhbmd1YWdlX2lkLCBidXQgaW50ZXJzZWN0aW9u
IG9mIEJDUDQ3IGFuZCBVVFMzNS4KKy8vIHVuaWNvZGVfbGFuZ3VhZ2VfaWQgPQorLy8gICAgIHwg
dW5pY29kZV9sYW5ndWFnZV9zdWJ0YWcgKHNlcCB1bmljb2RlX3NjcmlwdF9zdWJ0YWcpPyAoc2Vw
IHVuaWNvZGVfcmVnaW9uX3N1YnRhZyk/IChzZXAgdW5pY29kZV92YXJpYW50X3N1YnRhZykqIDsK
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzL2lz
c3Vlcy83OQorYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcgc3RyaW5nKQorewor
ICAgIFZlY3RvcjxTdHJpbmdWaWV3LCA0PiBzdWJ0YWdzOworICAgIGZvciAoYXV0byBzdWJ0YWcg
OiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLScpKQorICAgICAgICBzdWJ0YWdz
LmFwcGVuZChzdWJ0YWcpOworCisgICAgQVNTRVJUKHN1YnRhZ3Muc2l6ZSgpID49IDEpOworICAg
IHVuc2lnbmVkIGN1cnNvciA9IDA7CisgICAgaWYgKCFpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhz
dWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgKytjdXJzb3I7CisK
KyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoaXNVbmljb2RlU2NyaXB0U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAg
ICsrY3Vyc29yOworCisgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKGlzVW5pY29kZVJlZ2lvblN1YnRhZyhzdWJ0YWdzW2N1cnNv
cl0pKQorICAgICAgICArK2N1cnNvcjsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlm
IChjdXJzb3IgPT0gc3VidGFncy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKCFpc1VuaWNvZGVWYXJpYW50U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICsrY3Vyc29yOworICAgIH0KK30KKworYm9v
bCBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoU3RyaW5nVmlldyBjdXJyZW5jeSkKK3sKKyAgICBy
ZXR1cm4gY3VycmVuY3kubGVuZ3RoKCkgPT0gMyAmJiBjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gSW50bC5nZXRDYW5vbmlj
YWxMb2NhbGVzKGxvY2FsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmgKaW5kZXggZWQ5YzFlMTBiNmFkYTRmZDlkNDI1NzQ2MDZjZGQ5MmE5MTIyMzliNy4uMjU1
MThmMTlmYTdmYTU2ZGM2MDVkOTViYjI5ZjE1ZDM4ZjhlMTllMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtNjAsNiArNjAsNyBAQCBTdHJpbmcgZGVm
YXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCopOwogY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRs
QXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JB
dmFpbGFibGVMb2NhbGVzKCk7CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0
ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2Fs
ZXMoKTsgfQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERpc3BsYXlOYW1lc0F2
YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxp
bmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBp
bnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFp
bGFibGVMb2NhbGVzKCk7IH0KQEAgLTc5LDYgKzgwLDE0IEBAIFZlY3RvcjxTdHJpbmc+IG51bWJl
cmluZ1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpOwogCiBib29sIGlzVW5p
Y29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcpOwogCitib29sIGlzVW5pY29kZUxh
bmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3Ry
aW5nVmlldyk7Citib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wg
aXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlTGFuZ3Vh
Z2VJZChTdHJpbmdWaWV3KTsKKworYm9vbCBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoU3RyaW5n
Vmlldyk7CisKIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlciB7CiAgICAgdm9p
ZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2Vh
MzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIzNzAwNi4uYzg3OTI3NDViOTM0ODAzZmRm
NmJhZjFhYjRiMDY3Y2E4YjkyYmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUgIklu
dGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgog
I2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxE
aXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCkBAIC05ODEsNiArOTgzLDEyIEBAIGNhcGl0
YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJl
RmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUu
aW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5p
dCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBlID0gSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkpOwor
ICAgICAgICB9KTsKICAgICBtX2xvY2FsZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lcik7CkBAIC0xODMyLDYgKzE4NDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVj
dC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9j
b2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVU
aW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fZGlz
cGxheU5hbWVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbG9j
YWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3
ZTM2YWIyMDMxNGMxLi4yNzc3NGViYmM2MDM2ZjdhMzViZjM1ZWU4MWUxNGU3NmNhMDJjNjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAg
LTI5Miw2ICsyOTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxD
b2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGlzcGxheU5hbWVzU3Ry
dWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2xv
Y2FsZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CkBAIC03OTIsNiArNzkzLDcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogY29sbGF0
b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQog
ICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVU
aW1lRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogZGlzcGxheU5h
bWVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251
bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0
cnVjdHVyZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKaW5kZXggNWRjZjQyOGJmNDc3MTliNTk0YjY3MGNlNThkODc3N2QzNzkyNzI2MC4u
OTAwYzAxNDVkMTdiNmZmNTU3MDhjYWFiMzdlNzQwZGY3YjBmMWJjZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00ODgsNiArNDg4LDcgQEAgY29u
c3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2
KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5
cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNl
V2Vha1JlZnMsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3Iu
IikgXAogICAgIHYoQm9vbCwgdXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3
aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGlzcGxh
eU5hbWVzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRpc3BsYXlOYW1lcyBjb25z
dHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2Nh
dGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3
YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90
bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0
ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2ws
IGZvcmNlTWluaVZNTW9kZSwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2Ug
bWluaSBWTSBtb2RlIG9uLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCAxNjdjZjBmNWQ5ZmNmYmM3NzNiMGM1NWQ3MWIyM2NiYTVmZTYyYjc2Li40MGRkYzA1MmI4MTk3
OGY1OTAyNWRmMmI5NmY5ODIwMDM3Mjc3NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJJbnRsQ29sbGF0b3IuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNp
bmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
QEAgLTMwNiw2ICszMDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAjZW5kaWYKICAgICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQor
ICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxJbnRsRGlzcGxheU5hbWVzPigpKQogICAgICwgaW50bExvY2FsZUhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigpKQogICAgICwgaW50bE51bWJlckZvcm1h
dEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVtYmVyRm9ybWF0Pigp
KQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxQbHVyYWxSdWxlcz4oKSkKQEAgLTE0ODEsNiArMTQ4Myw3IEBAIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmpl
Y3RTcGFjZSwgY2FsCiAjZW5kaWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJ
bnRsQ29sbGF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bERpc3BsYXlOYW1lcykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuZ2V0KCks
IEludGxMb2NhbGUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJ
bnRsTnVtYmVyRm9ybWF0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCks
IEludGxQbHVyYWxSdWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJlZDE2
Njg4MDU2Njc5YjAzZWQwYzJiOGI0ZDgwODgwNzVmMmZiMzMuLjhkNDdmMjAyYTNmZDEzZTNhYzNk
ZjI5NmRlMjY1ZjEyMmUwNzUzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
MTI2LDYgKzEyNiw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNs
YXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKK2NsYXNzIEludGxE
aXNwbGF5TmFtZXM7CiBjbGFzcyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsK
IGNsYXNzIEludGxQbHVyYWxSdWxlczsKQEAgLTQwMCw2ICs0MDEsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50
bENvbGxhdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxs
VHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVs
ZXNIZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdpdGhTY29wZVNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bENvbGxhdG9yU3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3Jt
YXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEaXNw
bGF5TmFtZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGlu
dGxMb2NhbGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGlu
dGxOdW1iZXJGb3JtYXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA2
YzMyMTc5NjUwN2VjNTQ4MDllN2FhNmIwZTU4ZTFmNGVkYmM3OWI1Li45MjBmYmZiN2QxZjNkMDk0
NTZmZjQxOTMzNDRiMjAxMjE0YTBlMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAt
NzU5LDYgKzc1OSwxMiBAQCBjbGFzcyBTdHJpbmdWaWV3OjpDb2RlVW5pdHMgewogY2xhc3MgU3Ry
aW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6Zm9yd2Fy
ZF9pdGVyYXRvcl90YWc7CisgICAgdXNpbmcgdmFsdWVfdHlwZSA9IFN0cmluZ1ZpZXc7CisgICAg
dXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAgIHVzaW5nIHBvaW50ZXIgPSB2
YWx1ZV90eXBlKjsKKyAgICB1c2luZyByZWZlcmVuY2UgPSB2YWx1ZV90eXBlJjsKKwogICAgIFN0
cmluZ1ZpZXcgb3BlcmF0b3IqKCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRl
cmF0b3ImIG9wZXJhdG9yKysoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTYzNTk3ZjRhMjBlZDYxZTY2ZjI4OTg5ODVkZWY3ZDY1NWYw
OWMxOS4uNTMwZjM3ZGNjNDM1ZDU2NjI3ODhlZDgyNjVjN2IwOGM5ZjhiNmNhMCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLWRpc3Bs
YXluYW1lcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChzaG91bGRCZS5KU09OLnN0cmluZ2lmeS5jdXJyZW5jeU5hbWVzLnJl
c29sdmVkT3B0aW9ucyk6CisgICAgICAgIChzaG91bGRCZS5KU09OLnN0cmluZ2lmeS5yZWdpb25O
YW1lcy5yZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAob2JqZWN0LnRvU3RyaW5nKToKKyAgICAg
ICAgKFJhbmdlRXJyb3IuaW52YWxpZC5sYW5ndWFnZS50YWcuc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoVHlwZUVycm9yLkludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZi5jYWxsZWQub24udmFs
dWUudGhhdC5zaG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL2ludGwtcGFyc2UtdW5pY29k
ZS1zdWJ0YWdzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKHZtLmljdVZlcnNpb24uNjQudm0uaWN1VmVyc2lvbik6CisgICAg
ICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0wNi0yNiAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtZGlzcGxheW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMTZkMWM5MTMxNGNkNjc5ZTQxNjc4ZDUy
Mzc2ODkzY2MyYTIyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRp
c3BsYXluYW1lcy5qcwpAQCAtMCwwICsxLDE4OSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlSW50
bERpc3BsYXlOYW1lcz0xIikKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJyb3I6IHR5cGUgbXVz
dCBub3QgYmUgdW5kZWZpbmVkYCkKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgcmVnaW9uIGlu
IEVuZ2xpc2gKK3ZhciByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10s
IHt0eXBlOiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0
aW4gQW1lcmljYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0JaJyksICJCZWxpemUiKTsK
K3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVW5pdGVkIFN0YXRlcyIpOworc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJ0JBJyksICJCb3NuaWEgJiBIZXJ6ZWdvdmluYSIpOworc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIChCdXJtYSkiKTsKKworLy8gR2V0IGRp
c3BsYXkgbmFtZXMgb2YgcmVnaW9uIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK3JlZ2lvbk5hbWVz
ID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ3JlZ2lvbid9KTsK
K3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIuaLieS4gee+jua0siIpOworc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJ0JaJyksICLosp3ph4zmlq8iKTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdVUycpLCAi576O5ZyLIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwg
IuazouWjq+WwvOS6nuiIh+i1q+WhnuWTpee2ree0jSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoJ01NJyksICLnt6znlLgiKTsKKworcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFt
ZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbicsIHN0eWxlOiAnc2hvcnQnfSk7CitzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7CitzaG91bGRCZShyZWdpb25O
YW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyks
ICJVUyIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0JBJyksICJCb3NuaWEiKTsKK3Nob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciIpOworCityZWdpb25OYW1lcyA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICduYXJy
b3cnfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7
CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVn
aW9uTmFtZXMub2YoJ1VTJyksICJVUyIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ0JBJyks
ICJCb3NuaWEiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciIpOwor
CisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBsYW5ndWFnZSBpbiBFbmdsaXNoCit2YXIgbGFuZ3Vh
Z2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2Un
fSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CitzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2VybWFuIik7CitzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCdmci1DQScpLCAiQ2FuYWRpYW4gRnJlbmNoIik7CitpZiAoJHZtLmljdVZlcnNpb24o
KSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgIHNob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7CitlbHNlCisgICAg
c2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVz
ZSIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIkFtZXJpY2FuIEVuZ2xp
c2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLVRXJyksICJDaGluZXNlIChUYWl3
YW4pIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdlIGluIFRyYWRpdGlvbmFs
IENoaW5lc2UKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50
J10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicp
LCAi5rOV5paHIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aCcpLCAi5Lit5paHIik7
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAi5b635paHIik7CisKK2xhbmd1YWdl
TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywg
c3R5bGU6ICdzaG9ydCd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVu
Y2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICJHZXJtYW4iKTsKK3Nob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKK2lmICgk
dm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwgVHJhZGl0aW9uYWwi
KTsKK2Vsc2UKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFk
aXRpb25hbCBDaGluZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1VUycpLCAi
VVMgRW5nbGlzaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5l
c2UgKFRhaXdhbikiKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhb
J2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKGxh
bmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ2RlJyksICJHZXJtYW4iKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyks
ICJDYW5hZGlhbiBGcmVuY2giKTsKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2bS5p
Y3VWZXJzaW9uKCkgPD0gNjYpCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFu
dCcpLCAiQ2hpbmVzZSwgVHJhZGl0aW9uYWwiKTsKK2Vsc2UKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFkaXRpb25hbCBDaGluZXNlIik7CitzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdlbi1VUycpLCAiVVMgRW5nbGlzaCIpOworc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworLy8gR2V0IGRpc3Bs
YXkgbmFtZXMgb2Ygc2NyaXB0IGluIEVuZ2xpc2gKK3ZhciBzY3JpcHROYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0J30pOworLy8gR2V0IHNjcmlwdCBu
YW1lcworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7CitzaG91bGRC
ZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAiQXJhYmljIik7CitzaG91bGRCZShzY3JpcHROYW1l
cy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2Ygc2Ny
aXB0IGluIFRyYWRpdGlvbmFsIENoaW5lc2UKK3NjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ3NjcmlwdCd9KTsKK3Nob3VsZEJlKHNjcmlwdE5h
bWVzLm9mKCdMYXRuJyksICLmi4nkuIHmlociKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdB
cmFiJyksICLpmL/mi4nkvK/mlociKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyks
ICLniYflgYflkI0iKTsKKworc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydl
biddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnc2hvcnQnfSk7CitzaG91bGRCZShzY3JpcHRO
YW1lcy5vZignTGF0bicpLCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFi
JyksICJBcmFiaWMiKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2Fu
YSIpOworCitzY3JpcHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAnc2NyaXB0Jywgc3R5bGU6ICduYXJyb3cnfSk7CitzaG91bGRCZShzY3JpcHROYW1lcy5vZign
TGF0bicpLCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFi
aWMiKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisv
LyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGluIEVuZ2xpc2gKK3ZhciBjdXJy
ZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5j
eSd9KTsKKy8vIEdldCBjdXJyZW5jeSBuYW1lcworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZign
VVNEJyksICJVUyBEb2xsYXIiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAi
RXVybyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICJOZXcgVGFpd2FuIERv
bGxhciIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICJDaGluZXNlIFl1YW4i
KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiSmFwYW5lc2UgWWVuIik7CisK
Ky8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gVHJhZGl0aW9uYWwgQ2hp
bmVzZQorY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwg
e3R5cGU6ICdjdXJyZW5jeSd9KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAi
576O5YWDIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuatkOWFgyIpOwor
c2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICLmlrDlj7DluaMiKTsKK3Nob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAi5Lq65rCR5bmjIik7CitzaG91bGRCZShjdXJyZW5j
eU5hbWVzLm9mKCdKUFknKSwgIuaXpeWckyIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBj
dXJyZW5jeSBjb2RlIGluIEVuZ2xpc2ggaW4gc2hvcnQKK2N1cnJlbmN5TmFtZXMgPSBuZXcgSW50
bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICdzaG9ydCcg
fSk7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsKK3Nob3VsZEJlKGN1
cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAi4oKsIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9m
KCdUV0QnKSwgIk5UJCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICJDTsKl
Iik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwgIsKlIik7CisKKy8vIEdldCBk
aXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBuYXJyb3cKK2N1cnJl
bmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5
Jywgc3R5bGU6ICduYXJyb3cnIH0pOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVVNEJyks
ICIkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuKCrCIpOworc2hvdWxk
QmUoY3VycmVuY3lOYW1lcy5vZignVFdEJyksICIkIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVz
Lm9mKCdDTlknKSwgIsKlIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwgIsKl
Iik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFonKSwgIkpQWiIpOyAvLyBGYWxsYmFj
ayBjb2RlCitzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW5jeU5hbWVzLnJlc29sdmVkT3B0
aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6Im5hcnJvdyIsInR5cGUiOiJjdXJyZW5j
eSIsImZhbGxiYWNrIjoiY29kZSJ9YCk7CisKK2N1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICduYXJyb3cnLCBmYWxs
YmFjazogJ25vbmUnIH0pOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBaJyksIHVuZGVm
aW5lZCk7IC8vIEZhbGxiYWNrIG5vbmUKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJlbmN5
TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFycm93
IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJub25lIn1gKTsKKworcmVnaW9uTmFtZXMg
PSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsKK3Nob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCc5OTknKSwgIjk5OSIpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkocmVnaW9uTmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxl
IjoibG9uZyIsInR5cGUiOiJyZWdpb24iLCJmYWxsYmFjayI6ImNvZGUifWApOworCityZWdpb25O
YW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgZmFs
bGJhY2s6J25vbmUnfSk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignOTk5JyksIHVuZGVmaW5l
ZCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlvbnMo
KSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZhbGxi
YWNrIjoibm9uZSJ9YCk7CisKK2xhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
WydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
ZW4tQUEnKSwgImVuLUFBIik7Cit2YXIgb2JqZWN0ID0geworICAgIHRvU3RyaW5nKCkgeworICAg
ICAgICByZXR1cm4gJ2VuLUFBJzsKKyAgICB9Cit9Oworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZihvYmplY3QpLCBvYmplY3QpOworCitsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5h
bWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZScsIGZhbGxiYWNrOiAnbm9uZSd9KTsKK3Nob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLUFBJyksIHVuZGVmaW5lZCk7CitzaG91bGRCZShsYW5n
dWFnZU5hbWVzLm9mKG9iamVjdCksIHVuZGVmaW5lZCk7CisKK3Nob3VsZEJlKEludGwuRGlzcGxh
eU5hbWVzLnByb3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddLCBgSW50bC5EaXNwbGF5TmFtZXNg
KTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExv
Y2FsZXNPZigiZW4iKSksIGBbImVuIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwu
RGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZigiamEtSlAiKSksIGBbImphLUpQIl1gKTsK
K3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2Fs
ZXNPZih7IGxlbmd0aDogNCwgMTogJ2VuJywgMDogJ2VzJywgMzogJ2RlJyB9KSksICdbImVzIiwi
ZW4iLCJkZSJdJyk7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0
ZWRMb2NhbGVzT2YoIiIpLCBgUmFuZ2VFcnJvcjogaW52YWxpZCBsYW5ndWFnZSB0YWc6IGApCisK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2Yu
Y2FsbCh7fSk7Cit9LCBgVHlwZUVycm9yOiBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2Yg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlz
cGxheU5hbWVzYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBJbnRsLkRpc3BsYXlOYW1l
cy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoe30pOworfSwgYFR5cGVFcnJvcjogSW50
bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5TmFtZXNgKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1YnRhZ3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmZhYTM0MGMxMTBkMzIxYzA3YjIyM2I1ODRmZjYxOGQzNjJiZjNkYQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzCkBAIC0wLDAg
KzEsODggQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNwbGF5TmFtZXM9MSIpCitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwordmFyIHJlZ2lvbk5hbWVzID0gbmV3IEludGwu
RGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CitzaG91bGRUaHJvdygoKSA9
PiByZWdpb25OYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdp
b24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiLSIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworc2hvdWxkVGhyb3co
KCkgPT4gcmVnaW9uTmFtZXMub2YoIjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBh
IHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCIwMCIp
LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworc2hvdWxk
VGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAwMDAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50
IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVz
Lm9mKCJhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7
CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiYWFhIiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CitzaG91bGRCZShyZWdpb25OYW1lcy5v
ZigiNDE5IiksIGBMYXRpbiBBbWVyaWNhYCk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZigiSlAi
KSwgYEphcGFuYCk7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZigiVVMiKSwgYFVuaXRlZCBTdGF0
ZXNgKTsKKwordmFyIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbidd
LCB7dHlwZTogJ2xhbmd1YWdlJ30pOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5v
ZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hv
dWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1l
bnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFt
ZXMub2YoIi0tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGAp
Oworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiZW4tIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1l
cy5vZigiZW4tVVMiKSwgYEFtZXJpY2FuIEVuZ2xpc2hgKTsKK3Nob3VsZFRocm93KCgpID0+IGxh
bmd1YWdlTmFtZXMub2YoImVuX1VTIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigiZW4tdXMiKSwgYEFtZXJp
Y2FuIEVuZ2xpc2hgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInJvb3Qi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRU
aHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJyb290LVVTIiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigi
ZXMtNDE5IiksIGBMYXRpbiBBbWVyaWNhbiBTcGFuaXNoYCk7CitpZiAoJHZtLmljdVZlcnNpb24o
KSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KSB7CisgICAgc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignemgtSGFudCcpLCBgQ2hpbmVzZSwgVHJhZGl0aW9uYWxgKTsKKyAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW5zLUhLJyksIGBDaGluZXNlLCBTaW1wbGlmaWVk
IChIb25nIEtvbmcpYCk7Cit9IGVsc2UgeworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J3poLUhhbnQnKSwgYFRyYWRpdGlvbmFsIENoaW5lc2VgKTsKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1IYW5zLUhLJyksIGBTaW1wbGlmaWVkIENoaW5lc2UgKEhvbmcgS29uZylg
KTsKK30KK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIkhhbnQiKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7IC8vIFNjcmlwdCBvbmx5Citz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzci1MYXRuJyksIGBTZXJiaWFuIChMYXRpbilgKTsg
Ly8gTGFuZ3VhZ2UtU2NyaXB0CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzci1DeXJsJyks
IGBTZXJiaWFuIChDeXJpbGxpYylgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0CitzaG91bGRUaHJvdygo
KSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJ6aC1ISy1IYW5zIiksIGBSYW5nZUVycm9yOiBhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignc2wt
cm96YWonKSwgYFNsb3ZlbmlhbiAoUmVzaWFuKWApOyAvLyBMYW5ndWFnZS1WYXJpYW50CitzaG91
bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbF9yb3phaiIpLCBgUmFuZ2VFcnJvcjog
YXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1
YWdlTmFtZXMub2YoInNsLXJvemFqLUN5cmwiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJz
bC1yb3phai0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1fcm96YWoiKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9
PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1DeXJsLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMg
bm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2Yo
Ii1zbC1DeXJsLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRg
KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5LUxhdG4tSVQtYXJldmVsYScpLCBgQXJt
ZW5pYW4gKExhdGluLCBJdGFseSwgRWFzdGVybiBBcm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2Ny
aXB0LVJlZ2lvbi1WYXJpYW50CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdoeS1MYXRuLUlU
JyksIGBBcm1lbmlhbiAoTGF0aW4sIEl0YWx5KWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtUmVnaW9u
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdoeS1MYXRuLWFyZXZlbGEnKSwgYEFybWVuaWFu
IChMYXRpbiwgRWFzdGVybiBBcm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVZhcmlhbnQK
K3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tSVRaLWFyZXZlbGEi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRU
aHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJoeS1MYXRuLTAwLWFyZXZlbGEiKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9
PiBsYW5ndWFnZU5hbWVzLm9mKCJoeS1MYXRuLWFyZXZlbGF6enp6enp6enp6eiIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+
IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVy
cm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3coKCkgPT4g
bGFuZ3VhZ2VOYW1lcy5vZigiaHl6enp6enp6enotTGF0bi1hcmV2ZWxhIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworCit2YXIgc2NyaXB0TmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCd9KTsKK3Nob3VsZFRo
cm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHNjcmlwdCBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCIt
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91
bGRUaHJvdygoKSA9PiBzY3JpcHROYW1lcy5vZigiTGF0bjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5h
bWVzLm9mKCJMYW4wIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3Vi
dGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiBzY3JpcHROYW1lcy5vZigiTGFuIiksIGBSYW5nZUVy
cm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CitzaG91bGRCZShzY3JpcHRO
YW1lcy5vZigiTGF0biIpLCBgTGF0aW5gKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJsYXRu
IiksIGBMYXRpbmApOyAvLyBDYW5vbmljYWxpemF0aW9uIGNhbiBtYWtlIGl0IHdvcmsuCisKK3Zh
ciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdj
dXJyZW5jeSd9KTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoIiIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOwor
c2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhyb3co
KCkgPT4gY3VycmVuY3lOYW1lcy5vZigiYWIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGVgKTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJl
bmN5TmFtZXMub2YoImpweXgiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwt
Zm9ybWVkIGN1cnJlbmN5IGNvZGVgKTsKK3Nob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMu
b2YoImpwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3Vy
cmVuY3kgY29kZWApOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZigianB5IiksIGBKYXBhbmVz
ZSBZZW5gKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoIkpQWSIpLCBgSmFwYW5lc2UgWWVu
YCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKaW5kZXggYTc5ZjJkYmUzNjE2NmYwYjhlYmI5OTlkYjg1Y2Y0ZTE2
NGI5NGRmMS4uZTYzNzJmZjkyODNiY2ZiNTRiYWZhNmQ4YjViMTZlNGNhYThlMzNjOCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbApAQCAtMjYsNiArMjYsOSBAQCBza2lwOgogICAgIC0gSW50bC5EYXRlVGltZUZv
cm1hdC1kYXlQZXJpb2QKICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZm9ybWF0UmFuZ2UKICAg
ICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cworICAgICMgQ3Vy
cmVudGx5LCB0ZXN0MjYyIGhhcyBhIGJ1ZyB3aXRoIEludGwuRGlzcGxheU5hbWVzLCBhbmQgZXhw
b3NpbmcgaXQgY2FuIGNhdXNlIG1hbnkgZmFpbHVyZXMgaW4gdmFyaW91cyBJbnRsIHRlc3RzLgor
ICAgICMgV2Ugc2hvdWxkIGVuYWJsZSBpdCBhZnRlciBlbnN1cmluZyB0ZXN0MjYyIGlzIGZpeGVk
LgorICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvdGVzdDI2Mi9pc3N1ZXMvMjY4MgogICAg
IC0gSW50bC5EaXNwbGF5TmFtZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAogICAgIC0gSW50bC5O
dW1iZXJGb3JtYXQtdW5pZmllZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403240</attachid>
            <date>2020-06-30 13:48:57 -0700</date>
            <delta_ts>2020-06-30 13:48:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209779-20200630134856.patch</filename>
            <type>text/plain</type>
            <size>89191</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjBmZWU3MDkyZDc1YThjNGJkYTM2MGNiNzA4YTc3MTY5NWIzYzYxLi5jMTk1ZTBkOWFiNGIxYmY5
YTAwNGE0YjhlM2U0ZDVlYzkzNTdkZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBJbnRsLkRpc3BsYXlOYW1lcyBiZWhpbmQgdXNlSW50bERpc3BsYXlOYW1lcz0xIGZs
YWcuCisgICAgICAgIEludGwuRGlzcGxheU5hbWVzIGNhbiBvZmZlciByZWFkYWJsZSAiZGlzcGxh
eS1uYW1lIiBmb3IgSUNVIGxhbmd1YWdlLCBzY3JpcHQsIHJlZ2lvbiwgY3VycmVuY3kgY29kZXMu
CisgICAgICAgIEZvciBleGFtcGxlLCBpdCBjYW4gb2ZmZXIgIlVuaXRlZCBTdGF0ZXMiIHN0cmlu
ZyBmb3IgIlVTIiByZWdpb24gY29kZS4KKyAgICAgICAgV2UgdXNlIElDVSBVTG9jYWxlRGlzcGxh
eU5hbWVzIHRvIGltcGxlbWVudCBpdCwgZXhjZXB0IGZvciBjdXJyZW5jeSBzaW5jZSBVTG9jYWxl
RGlzcGxheU5hbWVzIGlzIG5vdCBzdXBwb3J0aW5nCisgICAgICAgIGN1cnJlbmN5IGNvcnJlY3Rs
eTogaXQgaWdub3JlcyAibG9uZyIsICJzaG9ydCIsIGFuZCAibmFycm93IiBzdHlsZSBjb25maWd1
cmF0aW9ucy4gV2UgbmVlZCB0byBjYWxsIHVjdXJyX2dldE5hbWUKKyAgICAgICAgZGlyZWN0bHku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGFkZHMgdW5pY29kZS1sYW5ndWFn
ZS1pZCBwYXJzaW5nIGluIEludGxMb2NhbGUuY3BwIHNvIHRoYXQgd2UgY2FuIHZhbGlkYXRlIGxh
bmd1YWdlIGlkCisgICAgICAgIHdoZW4gaXQgaXMgcGFzc2VkIHRvIGBJbnRsLkRpc3BsYXlOYW1l
cyNvZmAgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
czo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6Om9mIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6
OmNhbGxJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZTo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZik6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjppc1VuaWNvZGVTY3JpcHRTdWJ0YWcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
Ojppc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVNjcmlw
dFN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVJlZ2lvblN1YnRhZyk6CisgICAgICAg
IChKU0M6OmlzVW5pY29kZVZhcmlhbnRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVM
YW5ndWFnZUlkKToKKyAgICAgICAgKEpTQzo6aXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6aW50bERpc3BsYXlO
YW1lc0F2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkaXNwbGF5TmFtZXNT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhhcnUub2h6ZWtp
QGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJIGNvbXBpbGF0
aW9uIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDQyOWYzNWY3ZGE3YTU5ZWViMTJlNjVmMmQ4ZmRlYjA2OTMxYjZhNi4u
NzZhZmNlNTE1OGRkZTU0ZjE1ZGUwMDViMDVkYmVlNzgxMTY1YmEzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmll
dy5oOgorCiAyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBT
UEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oc3RzU3RvcmFnZURpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGMyNTkxMDg2ZWJhYzcyMjA2NmE4NjQ0NWZhYzIxMWRlZjgwMzA1ZTAuLmJkNWEwYWIxMDYx
NmE0MDJkYTIwNDhkNDM4M2Q3ZjM2Zjg4YTVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTcwLDYgKzcwLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRf
U09VUkNFUwogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWNmZDVhOTBiYzg1YmM3MDI1MWNmMGRkZjE0MTQ1
ZGU5ZWNmMDcuLmQwZDhkZmRjNDhhMzVlODIxN2Y3YzAzNDFjMGZlMDNiYjQzZTA0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMzgsNiArMTM4LDggQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3Bw
CiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCA3OWNkZTRlZTUwN2UxM2Y2ZmY3ZmE3ODAwZGM2NDVjYmY4OTQxYzY3Li4y
YmRmNWIyYzgyMmE2ZDllN2I2ZjQ1NmJiMGE5NjE2M2VlMWQ2ZDEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBA
IC0yNyw2ICsyNyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTBmOWZlYzUxZGNlNDg2ODZmZjg3NDViZWFhNGI1
YjVkNWIxMDMzZC4uYzFmZjVlNjI0NzM1MDY4Y2ZmNGMxMmU0Y2Y0OGNkYzRmYTBhNjU3YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1OSw2ICsxNTks
OCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1
dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IubHV0LmggXAorICAgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggXAog
ICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmODUxYzExNzJjNmUwNGVhYjgzODhjMjI4
MGRhNTA4NDNhNjNiZGQuLmMwNjYzZDdmNjBmOTlkZjFkNDFkZWZlY2RjNTZlOWNlNTQ5MmNjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE5LDYgKzE4MTksOSBAQAogCQlF
MzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUg
LyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRGOTMwQzIzMjJE
ODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRTM1MDcwOEExREM0OUJCRjAw
ODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25h
dHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExNzI0QUE0Q0I2MDAz
RkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovOyB9OworCQlFMzUzQzExRTI0QUE0Q0I3MDAz
RkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzNTNDMTIxMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovOyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1
NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5
MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVEMzhGMjI0NDY4
NzcwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RDM4RDIyNDQ2ODZCMDA4RjFBRDYgLyogR2xvYmFs
RXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xODI4LDYgKzE4MzEsOCBAQAogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1
RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNjM3RUU5MjM2
RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlu
a1RpbWVDb25zdGFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oICovOyB9OworCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRy
eVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDk4NSw2ICs0OTkwLDEyIEBACiAJCUUzNEY5MzBCMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVy
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEY5MzBDMjMyMkQ4ODEwMDJC
OERCNCAvKiBKU0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzUwNzA4OTFEQzQ5
QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIElu
dGxEaXNwbGF5TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERp
c3BsYXlOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExODI0QUE0
Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExOTI0QUE0Q0I2MDAzRkJERjMgLyogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0
NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVEMzhEMjI0NDY4NkIwMDhGMUFE
NiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbEV4ZWN1dGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMDEsNiArNTAxMiw4IEBACiAJCUUz
NUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjM3
RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua1RpbWVDb25zdGFu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVGMzM4MjRBQTYyMTEwMEM5
OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNkI0ODAxMjNFOTU3MzgwMEU0QTY2RSAvKiBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZFMjJGOEQ2MTEw
MEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NzY3LDYgKzY3ODAsOCBAQAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZD
MTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjRE
QzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAog
CQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmggKi8sCisJCQkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIg
LyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTI1ODQ2QzFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1
dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAg
Ki8sCkBAIC03MjYyLDYgKzcyNzcsMTIgQEAKIAkJCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJCQlBMTU4N0Q2QjFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlB
MTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Ki8sCisJCQkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3Bw
ICovLAorCQkJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmgg
Ki8sCisJCQkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNTNDMTE5MjRBQTRDQjYwMDNGQkRGMyAv
KiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzUzQzExQjI0QUE0Q0I3
MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovLAogCQkJCUEzQUZGOTJE
MjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLywKIAkJCQlBM0FGRjkyQjI0NUEz
Q0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovLAogCQkJCUEzQUZGOTJGMjQ1QTNDRkIwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwICovLApAQCAtOTc1Miw2ICs5NzczLDEx
IEBACiAJCQkJQTE1ODdENzUxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzExRTI0QUE0Q0I3MDAzRkJE
RjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMjEyNEFBNENCNzAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNjVGMzNCMjRBQTYy
M0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAw
MENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEzNGE2NjVhODUwY2FkNmFm
ZjljYWY1YzRjOGQ3NGMyNzA1Li4xYjRmYmY3Y2NhYzQ3ZTllMGQ4Mjg0ZDY2MzU4MTgxMjFjYWUw
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTQsNiArODE0LDkgQEAgcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAorcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlLmNwcAogcnVu
dGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5
cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRlYmFjOWFkYmEyNTI2NmJhLi4z
YTQ5N2UwNzRhOTBlMGIxMTk1ODZiZmEwOGQ0ODNlYjMwOTQyMzMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM0LDYgKzM0
LDcgQEAKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERhdGUpIFwKICAgICBtYWNy
byhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3JvKERpc3BsYXlOYW1lcykgXAogICAgIG1hY3Jv
KEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTFhM2Y2MDkwNTQ5NGIxOGQ2Mzk5OWVmNzAyMjNlYzNjOTRjNzljZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXMuY3BwCkBAIC0wLDAgKzEsMzYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKworI2luY2x1ZGUgIkludGxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lcykgfTsK
KworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXMo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJ
bnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3ZvaWQg
SW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmlj
YWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxlcyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zOworICAgIGlm
IChvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3B0aW9ucyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zVmFsdWUudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICB9CisKKyAgICAvLyBEb2VzIG5vdCBzZXQgZWl0aGVyIG9mICJjYSIgb3IgIm51
Ii4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3Nl
Yy1pbnRsLWRpc3BsYXluYW1lcy1jb25zdHJ1Y3RvcgorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IG9wdDsKKworICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1
cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBc
IiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQoImxvY2FsZU1hdGNoZXIiX3MsIG1hdGNoZXIp
OworCisKKyAgICBhdXRvIGxvY2FsZURhdGEgPSBbXShjb25zdCBTdHJpbmcmLCBzaXplX3QpIC0+
IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0
byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7
CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxl
TG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBudWxscHRyLCAwLCBsb2NhbGVEYXRhKTsK
KworICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKKyAgICBpZiAobV9sb2Nh
bGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUgdG8gaW52YWxpZCBsb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIHN0eWxlU3RyaW5n
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFt
ZXMtPnN0eWxlLCB7ICJuYXJyb3ciLCAic2hvcnQiLCAibG9uZyIgfSwgInN0eWxlIG11c3QgYmUg
ZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiLCAibG9uZyIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHN0eWxlU3RyaW5n
ID09ICJuYXJyb3ciX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6TmFycm93OworICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxl
OjpTaG9ydDsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAibG9uZyJfcykKKyAgICAgICAg
bV9zdHlsZSA9IFN0eWxlOjpMb25nOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJsYW5ndWFnZSIsICJy
ZWdpb24iLCAic2NyaXB0IiwgImN1cnJlbmN5IiB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxh
bmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiIsIG51bGxw
dHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHR5
cGVTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAodHlwZVN0cmluZyA9PSAibGFuZ3VhZ2UiX3MpCisgICAgICAgIG1f
dHlwZSA9IFR5cGU6Okxhbmd1YWdlOworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInJlZ2lv
biJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmVnaW9uOworICAgIGVsc2UgaWYgKHR5cGVT
dHJpbmcgPT0gInNjcmlwdCJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6U2NyaXB0OworICAg
IGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQorICAgICAgICBtX3R5cGUgPSBU
eXBlOjpDdXJyZW5jeTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgU3RyaW5nIGZhbGxiYWNrU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCB7ICJj
b2RlIiwgIm5vbmUiIH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiBvciBcIm5v
bmVcIiIsICJjb2RlIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gImNvZGUiX3MpCisgICAgICAgIG1fZmFsbGJhY2sg
PSBGYWxsYmFjazo6Q29kZTsKKyAgICBlbHNlIGlmIChmYWxsYmFja1N0cmluZyA9PSAibm9uZSJf
cykKKyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpOb25lOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKworICAgIFVEaXNwbGF5Q29udGV4dCBjb250ZXh0c1tdID0geworICAgICAgICAv
LyBlbl9HQiBkaXNwbGF5cyBhcyAnRW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pJyAoU3RhbmRhcmQg
TmFtZXMpIG9yICdCcml0aXNoIEVuZ2xpc2gnIChEaWFsZWN0IE5hbWVzKS4KKyAgICAgICAgLy8g
V2UgdXNlIERpYWxlY3QgTmFtZXMgaGVyZSwgYWxpZ25lZCB0byB0aGUgZXhhbXBsZXMgaW4gdGhl
IHNwZWMgZHJhZnQgYW5kIFY4J3MgYmVoYXZpb3IuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS90YzM5L3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzI2xhbmd1YWdlLWRpc3BsYXktbmFt
ZXMKKyAgICAgICAgVURJU1BDVFhfRElBTEVDVF9OQU1FUywKKworICAgICAgICAvLyBDYXBpdGFp
bGl6YXRpb24gbW9kZSBjYW4gYmUgcGlja2VkIGZyb20gc2V2ZXJhbCBvcHRpb25zLiBQb3NzaWJs
eSBlaXRoZXIgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fTk9ORSBvciBVRElTUENUWF9DQVBJVEFM
SVpBVElPTl9GT1JfU1RBTkRBTE9ORSBpcworICAgICAgICAvLyBwcmVmZXJhYmxlIGluIEludGwu
RGlzcGxheU5hbWVzLiBXZSB1c2UgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxP
TkUgYmVjYXVzZSBpdCBtYWtlcyBzdGFuZGFsb25lIGRhdGUgZm9ybWF0IGJldHRlciAoZnIgIkp1
aWxsZXQgMjAwOCIgaW4gSUNVIHRlc3Qgc3VpdGVzKSwKKyAgICAgICAgLy8gYW5kIERpc3BsYXlO
YW1lcyB3aWxsIHN1cHBvcnQgZGF0ZSBmb3JtYXRzIHRvby4KKyAgICAgICAgVURJU1BDVFhfQ0FQ
SVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUsCisKKyAgICAgICAgLy8gTmFycm93IGJlY29tZXMg
VURJU1BDVFhfTEVOR1RIX1NIT1JULiBCdXQgaW4gY3VycmVuY3kgY2FzZSwgd2UgaGFuZGxlIGRp
ZmZlcmVudGx5IGluc3RlYWQgb2YgdXNpbmcgVUxvY2FsZURpc3BsYXlOYW1lcy4KKyAgICAgICAg
bV9zdHlsZSA9PSBTdHlsZTo6TG9uZyA/IFVESVNQQ1RYX0xFTkdUSF9GVUxMIDogVURJU1BDVFhf
TEVOR1RIX1NIT1JULAorCisgICAgICAgIC8vIEFsd2F5cyBkaXNhYmxlIElDVSBTVUJTVElUVVRF
IHNpbmNlIGl0IGRvZXMgbm90IG1hdGNoIGFnYWluc3Qgd2hhdCB0aGUgc3BlYyBkZWZpbmVzLiBJ
Q1UgaGFzIHNvbWUgc3BlY2lhbCBzdWJzdGl0dXRlIHJ1bGVzLCBmb3IgZXhhbXBsZSwgbGFuZ3Vh
Z2UgImVuLUFBIgorICAgICAgICAvLyByZXR1cm5zICJFbmdsaXNoIChBQSkiICh3aGlsZSBBQSBj
b3VudHJ5IGNvZGUgaXMgbm90IGRlZmluZWQpLCBidXQgd2Ugd291bGQgbGlrZSB0byByZXR1cm4g
ZWl0aGVyIGlucHV0IHZhbHVlIG9yIHVuZGVmaW5lZCwgc28gd2UgZG8gbm90IHdhbnQgdG8gaGF2
ZSBJQ1Ugc3Vic3RpdHV0ZSBydWxlcy4KKyAgICAgICAgVURJU1BDVFhfTk9fU1VCU1RJVFVURSwK
KyAgICB9OworICAgIG1fbG9jYWxlQ1N0cmluZyA9IG1fbG9jYWxlLnV0ZjgoKTsKKyAgICBtX2Rp
c3BsYXlOYW1lcyA9IHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxl
RGlzcGxheU5hbWVzRGVsZXRlcj4odWxkbl9vcGVuRm9yQ29udGV4dChtX2xvY2FsZUNTdHJpbmcu
ZGF0YSgpLCBjb250ZXh0cywgV1RGX0FSUkFZX0xFTkdUSChjb250ZXh0cyksICZzdGF0dXMpKTsK
KyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3BsYXlOYW1lcyJfcyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgor
SlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kaXNwbGF5TmFtZXMp
OworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dU
RlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1
cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KKyAgICAg
ICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8g
VURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8g
ICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURp
c3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KKwor
ICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxheU5hbWVzCisgICAgICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVm
b3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNv
ZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAg
IGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwt
Zm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworCisgICAgICAgIFVDdXJy
TmFtZVN0eWxlIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICBzd2l0Y2ggKG1fc3R5
bGUpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgICAgIHN0eWxlID0gVUNV
UlJfTE9OR19OQU1FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNo
b3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9TWU1CT0xfTkFNRTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgICAgICBzdHlsZSA9
IFVDVVJSX05BUlJPV19TWU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgLy8gNi4gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUg
dG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICBjb25zdCBVQ2hhciBj
dXJyZW5jeVs0XSA9IHsKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzBdKSwKKyAgICAg
ICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzFdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihj
b2RlWzJdKSwKKyAgICAgICAgICAgIHUnXDAnCisgICAgICAgIH07CisgICAgICAgIC8vIFRoZSBy
ZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMgc3RyaW5nIHNvIHRoYXQgd2UgZG8gbm90
IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAgICBpbnQzMl90IGxlbmd0aCA9IDA7Cisg
ICAgICAgIGNvbnN0IFVDaGFyKiByZXN1bHQgPSB1Y3Vycl9nZXROYW1lKGN1cnJlbmN5LCBtX2xv
Y2FsZUNTdHJpbmcuZGF0YSgpLCBzdHlsZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnN0YXR1cyk7Cisg
ICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBu
YW1lLiJfcyk7CisgICAgICAgIC8vIHVjdXJyX2dldE5hbWUgcmV0dXJucyBVX1VTSU5HX0RFRkFV
TFRfV0FSTklORyBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3VuZC4gQnV0IFVfVVNJTkdf
REVGQVVMVF9XQVJOSU5HIGlzIHJldHVybmVkIGV2ZW4gaWYKKyAgICAgICAgLy8gbmFycm93IGFu
ZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUgc2FtZTogbmFycm93ICJVU0QiIGlzICIkIiB3aXRoIFVf
VVNJTkdfREVGQVVMVF9XQVJOSU5HIHNpbmNlIHNob3J0ICJVU0QiIGlzIGFsc28gIiQiLiBXZSBu
ZWVkIHRvIGNoZWNrCisgICAgICAgIC8vIHJlc3VsdCA9PSBjdXJyZW5jeSB0byBjaGVjayB3aGV0
aGVyIElDVSBhY3R1YWxseSBmYWlsZWQgdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBkaXNwbGF5
LW5hbWUuIFRoaXMgcG9pbnRlciBjb21wYXJpc29uIGlzIGVuc3VyZWQgYnkKKyAgICAgICAgLy8g
SUNVIEFQSSBkb2N1bWVudC4KKyAgICAgICAgLy8gPiBSZXR1cm5zIHBvaW50ZXIgdG8gZGlzcGxh
eSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiBJZiB0aGUgcmVzb3VyY2UgZGF0YSBjb250YWlucyBu
byBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVuY3knIGl0c2VsZiBpcyByZXR1cm5l
ZC4KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyAmJiByZXN1
bHQgPT0gY3VycmVuY3kpCisgICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJh
Y2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICAvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2Rl
Zm9yZGlzcGxheW5hbWVzCisgICAgYXV0byBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVz
ID0gW10oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGUpIC0+IENTdHJpbmcgeworICAgICAg
ICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUu
YXNjaWkoKTsKKyAgICAgICAgY2hhciogbXV0YWJsZURhdGEgPSByZXN1bHQubXV0YWJsZURhdGEo
KTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6
IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2Rl
IHRvIGxvd2VyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAg
ICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFb
aW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHlw
ZTo6UmVnaW9uOiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1h
cHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5k
ZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSVVwcGVyKG11
dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJl
c3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNl
LCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBj
b2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBpZiAo
cmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbMF0gPSB0
b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAg
ICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0p
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlOjpDdXJy
ZW5jeToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgc3dp
dGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7CisgICAgICAgIC8vIElm
IGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9u
LCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlmICghaXNVbmljb2RlTGFu
Z3VhZ2VJZChjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmlj
YWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIC8vIERvIG5v
dCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNpbmNlIGl0IGlzIG5vdCBleHBlY3RlZCBv
bmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCByZXR1cm5zICJlbi1VUyIgZm9yICJlbi1V
UyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5nbGlzaCIuCisgICAgICAgIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rp
c3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3VhZ2UuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKKyAgICAgICAgLy8gSWYgY29kZSBk
b2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhy
b3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1
YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgYXV0byByZWdpb24gPSBjYW5vbmljYWxp
emVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIHN0YXR1cyA9IGNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBtX2Rpc3Bs
YXlOYW1lcy5nZXQoKSwgcmVnaW9uLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBu
b3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHByb2R1Y3Rpb24sIHRocm93IGEg
UmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWco
Y29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7CisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gc2NyaXB0ID0gY2Fub25pY2FsaXplQ29k
ZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9zY3JpcHREaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFt
ZXMuZ2V0KCksIHNjcmlwdC5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAg
ICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBh
bmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9S
IGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgorICAgICAgICAvLyBXZSBzaG91bGQg
cmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hv
dWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxf
QVJHVU1FTlRfRVJST1IpCisgICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJh
Y2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNw
bGF5IG5hbWUuIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVm
ZmVyKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1l
cy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMKK0pTT2Jq
ZWN0KiBJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBq
c1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1f
c3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHR5cGVTdHJpbmcobV90eXBlKSkpOworICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNr
IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsK
KyAgICByZXR1cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6
OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBj
YXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9zOworICAgIGNhc2Ug
U3R5bGU6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgU3R5bGU6
Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxp
dGVyYWwgSW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZToKKyAgICAgICAgcmV0dXJuICJs
YW5ndWFnZSJfczsKKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjoKKyAgICAgICAgcmV0dXJuICJyZWdp
b24iX3M7CisgICAgY2FzZSBUeXBlOjpTY3JpcHQ6CisgICAgICAgIHJldHVybiAic2NyaXB0Il9z
OworICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNr
U3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQoreworICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKKyAg
ICBjYXNlIEZhbGxiYWNrOjpDb2RlOgorICAgICAgICByZXR1cm4gImNvZGUiX3M7CisgICAgY2Fz
ZSBGYWxsYmFjazo6Tm9uZToKKyAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERpc3BsYXlOYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzOTAxOTEwMDgxNDQwNWJiYjM5YTM1
MTk3MzBhNjVhZDM4NjRiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx1bmlj
b2RlL3VsZG5hbWVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXMgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmlu
YWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9
IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PEludGxEaXNwbGF5TmFtZXMqPihjZWxsKS0+SW50bERpc3BsYXlO
YW1lczo6fkludGxEaXNwbGF5TmFtZXMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsRGlzcGxh
eU5hbWVzU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1l
cyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHZvaWQgaW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgbG9jYWxlc1ZhbHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSk7CisKKyAgICBKU1Zh
bHVlIG9mKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSlNPYmplY3QqIHJl
c29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCitwcml2YXRlOgorICAgIElu
dGxEaXNwbGF5TmFtZXMoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisKKyAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IE5hcnJvdywgU2hvcnQs
IExvbmcgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGFuZ3VhZ2UsIFJlZ2lv
biwgU2NyaXB0LCBDdXJyZW5jeSB9OworICAgIGVudW0gY2xhc3MgRmFsbGJhY2sgOiB1aW50OF90
IHsgQ29kZSwgTm9uZSB9OworCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhT
dHlsZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0
YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2spOworCisgICAgdXNpbmcg
VUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVz
RGVsZXRlcj4gbV9kaXNwbGF5TmFtZXM7CisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgc3RvcmUgaXQgb25seSB3aGVuIG1fdHlwZSBpcyBDdXJyZW5jeS4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzczCisgICAg
Q1N0cmluZyBtX2xvY2FsZUNTdHJpbmc7CisgICAgU3R5bGUgbV9zdHlsZSB7IFN0eWxlOjpMb25n
IH07CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpMYW5ndWFnZSB9OworICAgIEZhbGxiYWNrIG1f
ZmFsbGJhY2sgeyBGYWxsYmFjazo6Q29kZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmZiZmYzZDk4OWZiMjRiZTYzOTA4
MzM4NDE2MmNhMGZiMzkxMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIK
KyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBv
cnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNs
dWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZkaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclRh
YmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0
LmgKK0BiZWdpbiBkaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2Fs
ZXNPZiAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2Nh
bGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
KiBkaXNwbGF5TmFtZXNQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBkaXNwbGF5TmFtZXNQcm90b3R5cGUpOworICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25U
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJ
bnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRs
RGlzcGxheU5hbWVzLCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKQoreworfQorCit2b2lkIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sICJEaXNwbGF5TmFtZXMiX3MsIE5hbWVBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkaXNwbGF5TmFtZXNQcm90b3R5cGUs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
KyAgICBkaXNwbGF5TmFtZXNQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLUludGwuRGlzcGxheU5hbWVzCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJn
ZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXdUYXJnZXQgPT0gY2FsbEZyYW1l
LT5qc0NhbGxlZSgpCisgICAgICAgID8gZ2xvYmFsT2JqZWN0LT5kaXNwbGF5TmFtZXNTdHJ1Y3R1
cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxtKHZtLCBuZXdUYXJnZXQp
LT5kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIEludGxEaXNwbGF5TmFtZXMqIGRpc3BsYXlOYW1lcyA9IEludGxEaXNw
bGF5TmFtZXM6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoZGlzcGxheU5hbWVz
KTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBkaXNwbGF5TmFtZXMtPmluaXRpYWxpemVE
aXNwbGF5TmFtZXMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1l
cyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFt
ZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5h
bWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RGlzcGxheU5hbWVzIikpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIC8vIEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFss
IG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2Fs
ZXNPZgorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJURpc3BsYXlOYW1lcyUu
W1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFi
bGVMb2NhbGVzID0gaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2FsZXMoKTsKKworICAgIC8v
IDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxl
cykuCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIC8vIDMuIFJl
dHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IG9wdGlvbnMpLgorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOworfQorCisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDRhZTFlOGE4MjViODZm
N2E3YzhhOTZjNTAxYjQ0ZmJjYWQ4OGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU7CisKK2NsYXNzIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
ciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqKTsKK307CitTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IsIElu
dGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGE4ZWM4MGY0MjUzNWZmZDYwYzkzOTk3OTQ3YTIwMmRhM2ZiMzE3Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIK
KworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIkludGwuRGlzcGxheU5hbWVzIiwgJkJhc2U6OnNfaW5mbywgJmRp
c3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc1Byb3RvdHlwZVRhYmxlCisg
IG9mICAgICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZiAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByZXNvbHZlZE9wdGlvbnMgIEludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDAKK0BlbmQKKyovCisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmpl
Y3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNEeW5hbWljQ2FzdDxJbnRsRGlz
cGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGlzcGxh
eU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3BsYXlOYW1lcyJfcyk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMt
Pm9mKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5
TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNEeW5hbWljQ2FzdDxJbnRs
RGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGlz
cGxheU5hbWVzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5
TmFtZXMiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoZGlzcGxheU5hbWVzLT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjdlNTgzYTY3
NTc0NGU0MTVhNDg1ZTgzZWYxZjM1ODZlOWIxMjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgIH0KKworICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2
YXRlOgorICAgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKaW5kZXggODBlNjRm
MWFiMTc5NzEzOGIyNTJiOGZjZDEwNzFkNzZiZGQ0NjI5YS4uOTViNmM4M2Y3MzllZTQ0M2I1ZmE4
MDEzZjU5MGNjM2UyMWE4ZmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExvY2FsZS5jcHAKQEAgLTE5MSwyNyArMTkxLDYgQEAgU3RyaW5nIEludGxMb2NhbGU6Omtl
eXdvcmRWYWx1ZShBU0NJSUxpdGVyYWwga2V5LCBib29sIGlzQm9vbGVhbikgY29uc3QKICAgICBy
ZXR1cm4gdmFsdWUgPyBTdHJpbmcodmFsdWUpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAotLy8gdW5p
Y29kZV9sYW5ndWFnZV9zdWJ0YWcgPSBhbHBoYXsyLDN9IHwgYWxwaGF7NSw4fSA7Ci1zdGF0aWMg
Ym9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBh
dXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICByZXR1cm4gbGVuZ3RoID49IDIgJiYg
bGVuZ3RoIDw9IDggJiYgbGVuZ3RoICE9IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNBU0NJSUFscGhhPigpOwotfQotCi0vLyB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgPSBhbHBo
YXs0fSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJp
bmcpCi17Ci0gICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0cmluZy5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKLX0KLQotLy8gdW5pY29kZV9yZWdpb25f
c3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Ci1zdGF0aWMgYm9vbCBpc1VuaWNvZGVSZWdp
b25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCi0gICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBz
dHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGlnaXQ+KCkpOwotfQotCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlCiB2b2lkIEludGxMb2NhbGU6
OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0
YWdWYWx1ZSwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGMzOGZlOTllMmY0ZjBh
M2RiMmYzYWIxNzk5MjJlYmE4MzhhYTI5MzguLjE4ZWMwOTM4MTVmNWFmYmI0MTg4MmMzYzU5OTE2
YWZmNGYzYjE4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKICAgICBTdHJpbmcgY3VycmVuY3kgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIHsgfSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKICAgICBpZiAoIWN1cnJlbmN5LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW5jeS5s
ZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlB
bHBoYT4oKSkgeworICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjdXJyZW5j
eSkpIHsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3Jt
ZWQgY3VycmVuY3kgY29kZSJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDFkZmEy
MDgyYWYxNDIzZjRkM2VkM2UxMzMwYTk0OTYzYmVlYTQzMDEuLmZiNTQwNjc0ZTE1ZDI1MTAyNGZl
NDdjYzY0M2NhNTZmZjMyZmNmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9y
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKQEAgLTc3LDYg
Kzc5LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90
b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganND
YXN0PEludGxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqPihnbG9iYWxP
YmplY3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkp
OworfQorCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVMb2NhbGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpT
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJ
bnRsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTE1Miw2ICsxNjEsOCBAQCBJbnRsT2JqZWN0KiBJbnRs
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqCiB2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBpZiAoT3B0aW9u
czo6dXNlSW50bERpc3BsYXlOYW1lcygpKQorICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RGlzcGxheU5hbWVzLCBjcmVhdGVEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogU3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKQEAgLTgyNCw2ICs4MzUsNzYgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lz
dGVtc0ZvckxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICByZXR1cm4gbnVtYmVyaW5n
U3lzdGVtczsKIH0KIAorLy8gdW5pY29kZV9sYW5ndWFnZV9zdWJ0YWcgPSBhbHBoYXsyLDN9IHwg
YWxwaGF7NSw4fSA7Citib29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHJldHVybiBs
ZW5ndGggPj0gMiAmJiBsZW5ndGggPD0gOCAmJiBsZW5ndGggIT0gNCAmJiBzdHJpbmcuaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Cit9CisKKy8vIHVuaWNvZGVfc2NyaXB0
X3N1YnRhZyA9IGFscGhhezR9IDsKK2Jvb2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1Zp
ZXcgc3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgPT0gNCAmJiBzdHJpbmcu
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Cit9CisKKy8vIHVuaWNvZGVf
cmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9IHwgZGlnaXR7M30gOworYm9vbCBpc1VuaWNvZGVSZWdp
b25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoKCk7CisgICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCisgICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBz
dHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGlnaXQ+KCkpOworfQorCisvLyB1
bmljb2RlX3ZhcmlhbnRfc3VidGFnID0gKGFscGhhbnVtezUsOH0gfCBkaWdpdCBhbHBoYW51bXsz
fSkgOworYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQorewor
ICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPj0gNSAm
JiBsZW5ndGggPD0gOCkKKyAgICAgICAgcmV0dXJuIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0
ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7CisgICAgcmV0dXJuIGxlbmd0aCA9PSA0ICYmIGlz
QVNDSUlEaWdpdChzdHJpbmdbMF0pICYmIHN0cmluZy5zdWJzdHJpbmcoMSkuaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0FTQ0lJQWxwaGFudW1lcmljPigpOworfQorCisvLyB1bmljb2RlX2xhbmd1
YWdlX2lkLCBidXQgaW50ZXJzZWN0aW9uIG9mIEJDUDQ3IGFuZCBVVFMzNS4KKy8vIHVuaWNvZGVf
bGFuZ3VhZ2VfaWQgPQorLy8gICAgIHwgdW5pY29kZV9sYW5ndWFnZV9zdWJ0YWcgKHNlcCB1bmlj
b2RlX3NjcmlwdF9zdWJ0YWcpPyAoc2VwIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyk/IChzZXAgdW5p
Y29kZV92YXJpYW50X3N1YnRhZykqIDsKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bv
c2FsLWludGwtZGlzcGxheW5hbWVzL2lzc3Vlcy83OQorYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlk
KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIFZlY3RvcjxTdHJpbmdWaWV3LCA0PiBzdWJ0YWdz
OworICAgIGZvciAoYXV0byBzdWJ0YWcgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmll
cygnLScpKQorICAgICAgICBzdWJ0YWdzLmFwcGVuZChzdWJ0YWcpOworCisgICAgQVNTRVJUKHN1
YnRhZ3Muc2l6ZSgpID49IDEpOworICAgIHVuc2lnbmVkIGN1cnNvciA9IDA7CisgICAgaWYgKCFp
c1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgKytjdXJzb3I7CisKKyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmljb2RlU2NyaXB0U3VidGFnKHN1
YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICsrY3Vyc29yOworCisgICAgaWYgKGN1cnNvciA9PSBz
dWJ0YWdzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzVW5pY29kZVJl
Z2lvblN1YnRhZyhzdWJ0YWdzW2N1cnNvcl0pKQorICAgICAgICArK2N1cnNvcjsKKworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIGlmIChjdXJzb3IgPT0gc3VidGFncy5zaXplKCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFpc1VuaWNvZGVWYXJpYW50U3VidGFn
KHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICsr
Y3Vyc29yOworICAgIH0KK30KKworYm9vbCBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoU3RyaW5n
VmlldyBjdXJyZW5jeSkKK3sKKyAgICByZXR1cm4gY3VycmVuY3kubGVuZ3RoKCkgPT0gMyAmJiBj
dXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2Fs
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgLy8gSW50bC5nZXRDYW5vbmljYWxMb2NhbGVzKGxvY2FsZXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggZWQ5YzFlMTBiNmFkYTRmZDlkNDI1
NzQ2MDZjZGQ5MmE5MTIyMzliNy4uMjU1MThmMTlmYTdmYTU2ZGM2MDVkOTViYjI5ZjE1ZDM4Zjhl
MTllMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAt
NjAsNiArNjAsNyBAQCBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCopOwogY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7CiBpbmxpbmUgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyBy
ZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZh
aWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVt
YmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVz
KCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWls
YWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9j
YWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KQEAgLTc5LDYgKzgwLDE0
IEBAIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5n
JiBsb2NhbGUpOwogCiBib29sIGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1Zp
ZXcpOwogCitib29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBp
c1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyk7Citib29sIGlzVW5pY29kZVJlZ2lvblN1
YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3
KTsKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3KTsKKworYm9vbCBpc1dlbGxG
b3JtZWRDdXJyZW5jeUNvZGUoU3RyaW5nVmlldyk7CisKIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yRGVsZXRlciB7CiAgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0
b3IqKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYyMzJjZjg5YjllNGM5ODIz
NzAwNi4uYzg3OTI3NDViOTM0ODAzZmRmNmJhZjFhYjRiMDY3Y2E4YjkyYmM3NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNzMs
NiArNzMsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUg
IkludGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCkBA
IC05ODEsNiArOTgzLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUg
IyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAg
IGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisgICAg
bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBl
ID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KElu
dGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGRp
c3BsYXlOYW1lc1Byb3RvdHlwZSkpOworICAgICAgICB9KTsKICAgICBtX2xvY2FsZVN0cnVjdHVy
ZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBp
bml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xODMyLDYgKzE4NDAsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsK
ICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OworICAgIHRoaXNPYmplY3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZGMz
MGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi4yNzc3NGViYmM2MDM2ZjdhMzVi
ZjM1ZWU4MWUxNGU3NmNhMDJjNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1
cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRp
bWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1
Y3R1cmU7CkBAIC03OTIsNiArNzkzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NvbGxhdG9y
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQor
ICAgIFN0cnVjdHVyZSogZGlzcGxheU5hbWVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kaXNwbGF5
TmFtZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0
dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNWRjZjQyOGJmNDc3MTliNTk0
YjY3MGNlNThkODc3N2QzNzkyNzI2MC4uOTAwYzAxNDVkMTdiNmZmNTU3MDhjYWFiMzdlNzQwZGY3
YjBmMWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC00ODgsNiArNDg4LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJl
YW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMs
IHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNw
ZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2Ug
dGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQmlnSW50LCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4iKSBcCisg
ICAgdihCb29sLCB1c2VJbnRsRGlzcGxheU5hbWVzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRo
ZSBJbnRsLkRpc3BsYXlOYW1lcyBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJh
eUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNl
IG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxs
b2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAg
ICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0
ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3Ry
dWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwgZmFsc2UsIE5vcm1hbCwg
IklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxNjdjZjBmNWQ5ZmNmYmM3NzNiMGM1NWQ3MWIyM2Ni
YTVmZTYyYjc2Li40MGRkYzA1MmI4MTk3OGY1OTAyNWRmMmI5NmY5ODIwMDM3Mjc3NWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKICNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCiAjaW5j
bHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNs
dWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAgLTMwNiw2ICszMDcsNyBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYKICAgICAsIGludGxDb2xsYXRvckhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCiAgICAg
LCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQogICAgICwgaW50
bExvY2FsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigp
KQogICAgICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKQEAgLTE0ODEs
NiArMTQ4Myw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsCiAjZW5kaWYKIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxh
dG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50
bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3BsYXlOYW1lcykKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxM
b2NhbGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2NhbGUpCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9y
bWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFs
UnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IGJlZDE2Njg4MDU2Njc5YjAzZWQwYzJiOGI0ZDgwODgwNzVmMmZi
MzMuLjhkNDdmMjAyYTNmZDEzZTNhYzNkZjI5NmRlMjY1ZjEyMmUwNzUzZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNsYXNzIElkZW50aWZpZXI7
CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRl
VGltZUZvcm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7CiBjbGFzcyBJbnRsTG9jYWxlOwog
Y2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxSdWxlczsKQEAgLTQwMCw2
ICs0MDEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVz
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxM
b2NhbGVIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcg
QEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91
Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA2YzMyMTc5NjUwN2VjNTQ4MDllN2FhNmIwZTU4ZTFmNGVk
YmM3OWI1Li45MjBmYmZiN2QxZjNkMDk0NTZmZjQxOTMzNDRiMjAxMjE0YTBlMDFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtNzU5LDYgKzc1OSwxMiBAQCBjbGFzcyBTdHJpbmdWaWV3
OjpDb2RlVW5pdHMgewogY2xhc3MgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRv
cl9jYXRlZ29yeSA9IHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWc7CisgICAgdXNpbmcgdmFsdWVf
dHlwZSA9IFN0cmluZ1ZpZXc7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90
OworICAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgICB1c2luZyByZWZlcmVuY2Ug
PSB2YWx1ZV90eXBlJjsKKwogICAgIFN0cmluZ1ZpZXcgb3BlcmF0b3IqKCkgY29uc3Q7CiAKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTYzNTk3ZjRhMjBl
ZDYxZTY2ZjI4OTg5ODVkZWY3ZDY1NWYwOWMxOS4uZGQ2ZjFjZWYzYzRmYWI0Y2YwZGYwOTg3ZDc2
NjUwOTQ5YmIzNWI5NyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwu
RGlzcGxheU5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDk3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAg
ICAgICogc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3Ry
aW5naWZ5LmN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKHNob3VsZEJl
LkpTT04uc3RyaW5naWZ5LnJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIChv
YmplY3QudG9TdHJpbmcpOgorICAgICAgICAoUmFuZ2VFcnJvci5pbnZhbGlkLmxhbmd1YWdlLnRh
Zy5zaG91bGRUaHJvdyk6CisgICAgICAgIChUeXBlRXJyb3IuSW50bC5EaXNwbGF5TmFtZXMucHJv
dG90eXBlLm9mLmNhbGxlZC5vbi52YWx1ZS50aGF0LnNob3VsZFRocm93KToKKyAgICAgICAgKiBz
dHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1YnRhZ3MuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodm0uaWN1VmVyc2lvbi42
NC52bS5pY3VWZXJzaW9uKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIw
LTA2LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBk
YXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUx
NmQxYzkxMzE0Y2Q2NzllNDE2NzhkNTIzNzY4OTNjYzJhMjJmYwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzCkBAIC0wLDAgKzEsMTg5IEBACisv
L0AgcnVuRGVmYXVsdCgiLS11c2VJbnRsRGlzcGxheU5hbWVzPTEiKQorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkRpc3BsYXlOYW1l
cywgYFR5cGVFcnJvcjogdHlwZSBtdXN0IG5vdCBiZSB1bmRlZmluZWRgKQorCisvLyBHZXQgZGlz
cGxheSBuYW1lcyBvZiByZWdpb24gaW4gRW5nbGlzaAordmFyIHJlZ2lvbk5hbWVzID0gbmV3IElu
dGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CitzaG91bGRCZShyZWdp
b25OYW1lcy5vZignNDE5JyksICJMYXRpbiBBbWVyaWNhIik7CitzaG91bGRCZShyZWdpb25OYW1l
cy5vZignQlonKSwgIkJlbGl6ZSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICJV
bml0ZWQgU3RhdGVzIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSAm
IEhlcnplZ292aW5hIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIg
KEJ1cm1hKSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiByZWdpb24gaW4gVHJhZGl0aW9u
YWwgQ2hpbmVzZQorcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50
J10sIHt0eXBlOiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAi
5ouJ5LiB576O5rSyIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIuiynemHjOaW
ryIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICLnvo7lnIsiKTsKK3Nob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAi5rOi5aOr5bC85Lqe6IiH6LWr5aGe5ZOl57at57SNIik7
CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIue3rOeUuCIpOworCityZWdpb25OYW1l
cyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6
ICdzaG9ydCd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJp
Y2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CitzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignVVMnKSwgIlVTIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZign
QkEnKSwgIkJvc25pYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFy
Iik7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6
ICdyZWdpb24nLCBzdHlsZTogJ25hcnJvdyd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0
MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAi
QmVsaXplIik7CitzaG91bGRCZShyZWdpb25OYW1lcy5vZignVVMnKSwgIlVTIik7CitzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoJ01NJyksICJNeWFubWFyIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdl
IGluIEVuZ2xpc2gKK3ZhciBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
ZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2Zy
JyksICJGcmVuY2giKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyksICJHZXJtYW4i
KTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2gi
KTsKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYp
CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiQ2hpbmVzZSwgVHJh
ZGl0aW9uYWwiKTsKK2Vsc2UKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50
JyksICJUcmFkaXRpb25hbCBDaGluZXNlIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdl
bi1VUycpLCAiQW1lcmljYW4gRW5nbGlzaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
emgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2Yg
bGFuZ3VhZ2UgaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKK3Nob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFt
ZXMub2YoJ3poJyksICLkuK3mlociKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2RlJyks
ICLlvrfmlociKTsKKworbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2Vu
J10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3Nob3J0J30pOworc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignZnInKSwgIkZyZW5jaCIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
ZGUnKSwgIkdlcm1hbiIpOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwgIkNh
bmFkaWFuIEZyZW5jaCIpOworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQgJiYgJHZtLmljdVZl
cnNpb24oKSA8PSA2NikKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50Jyks
ICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworZWxzZQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFt
ZXMub2YoJ3poLUhhbnQnKSwgIlRyYWRpdGlvbmFsIENoaW5lc2UiKTsKK3Nob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7CitzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIpOworCitsYW5ndWFnZU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZScsIHN0eWxlOiAn
bmFycm93J30pOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnInKSwgIkZyZW5jaCIpOwor
c2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignZnItQ0EnKSwgIkNhbmFkaWFuIEZyZW5jaCIpOworaWYgKCR2bS5pY3VW
ZXJzaW9uKCkgPj0gNjQgJiYgJHZtLmljdVZlcnNpb24oKSA8PSA2NikKKyAgICBzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworZWxz
ZQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIlRyYWRpdGlvbmFs
IENoaW5lc2UiKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmds
aXNoIik7CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFp
d2FuKSIpOworCisvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBzY3JpcHQgaW4gRW5nbGlzaAordmFy
IHNjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3Jp
cHQnfSk7CisvLyBHZXQgc2NyaXB0IG5hbWVzCitzaG91bGRCZShzY3JpcHROYW1lcy5vZignTGF0
bicpLCAiTGF0aW4iKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMi
KTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisvLyBH
ZXQgZGlzcGxheSBuYW1lcyBvZiBzY3JpcHQgaW4gVHJhZGl0aW9uYWwgQ2hpbmVzZQorc2NyaXB0
TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0
J30pOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIuaLieS4geaWhyIpOworc2hv
dWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIumYv+aLieS8r+aWhyIpOworc2hvdWxkQmUo
c2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIueJh+WBh+WQjSIpOworCitzY3JpcHROYW1lcyA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0Jywgc3R5bGU6ICdzaG9y
dCd9KTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxk
QmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFt
ZXMub2YoJ0thbmEnKSwgIkthdGFrYW5hIik7CisKK3NjcmlwdE5hbWVzID0gbmV3IEludGwuRGlz
cGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnLCBzdHlsZTogJ25hcnJvdyd9KTsKK3No
b3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworc2hvdWxkQmUoc2NyaXB0
TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0th
bmEnKSwgIkthdGFrYW5hIik7CisKKy8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNv
ZGUgaW4gRW5nbGlzaAordmFyIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
WydlbiddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworLy8gR2V0IGN1cnJlbmN5IG5hbWVzCitzaG91
bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIlVTIERvbGxhciIpOworc2hvdWxkQmUoY3Vy
cmVuY3lOYW1lcy5vZignRVVSJyksICJFdXJvIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9m
KCdUV0QnKSwgIk5ldyBUYWl3YW4gRG9sbGFyIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9m
KCdDTlknKSwgIkNoaW5lc2UgWXVhbiIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZ
JyksICJKYXBhbmVzZSBZZW4iKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kg
Y29kZSBpbiBUcmFkaXRpb25hbCBDaGluZXNlCitjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlz
cGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworc2hvdWxkQmUoY3Vy
cmVuY3lOYW1lcy5vZignVVNEJyksICLnvo7lhYMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMu
b2YoJ0VVUicpLCAi5q2Q5YWDIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwg
IuaWsOWPsOW5oyIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignQ05ZJyksICLkurrmsJHl
uaMiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAi5pel5ZyTIik7CisKKy8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAor
Y3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3Vy
cmVuY3knLCBzdHlsZTogJ3Nob3J0JyB9KTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VT
RCcpLCAiJCIpOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLigqwiKTsKK3No
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiTlQkIik7CitzaG91bGRCZShjdXJyZW5j
eU5hbWVzLm9mKCdDTlknKSwgIkNOwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQ
WScpLCAiwqUiKTsKKworLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgY3VycmVuY3kgY29kZSBpbiBF
bmdsaXNoIGluIG5hcnJvdworY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhb
J2VuJ10sIHt0eXBlOiAnY3VycmVuY3knLCBzdHlsZTogJ25hcnJvdycgfSk7CitzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2Yo
J0VVUicpLCAi4oKsIik7CitzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIiQiKTsK
K3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKK3Nob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQ
WicpLCAiSlBaIik7IC8vIEZhbGxiYWNrIGNvZGUKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1
cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoi
bmFycm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJjb2RlIn1gKTsKKworY3VycmVu
Y3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3kn
LCBzdHlsZTogJ25hcnJvdycsIGZhbGxiYWNrOiAnbm9uZScgfSk7CitzaG91bGRCZShjdXJyZW5j
eU5hbWVzLm9mKCdKUFonKSwgdW5kZWZpbmVkKTsgLy8gRmFsbGJhY2sgbm9uZQorc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2Fs
ZSI6ImVuIiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5v
bmUifWApOworCityZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0
eXBlOiAncmVnaW9uJ30pOworc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCAiOTk5Iik7
CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSks
IGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNr
IjoiY29kZSJ9YCk7CisKK3JlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4n
XSwge3R5cGU6ICdyZWdpb24nLCBmYWxsYmFjazonbm9uZSd9KTsKK3Nob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCc5OTknKSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lv
bk5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6Imxvbmci
LCJ0eXBlIjoicmVnaW9uIiwiZmFsbGJhY2siOiJub25lIn1gKTsKKworbGFuZ3VhZ2VOYW1lcyA9
IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdlbi1BQScpLCAiZW4tQUEiKTsKK3ZhciBvYmplY3QgPSB7
CisgICAgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAnZW4tQUEnOworICAgIH0KK307Citz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKG9iamVjdCksIG9iamVjdCk7CisKK2xhbmd1YWdlTmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFs
bGJhY2s6ICdub25lJ30pOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgdW5k
ZWZpbmVkKTsKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgdW5kZWZpbmVkKTsK
Kworc2hvdWxkQmUoSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1Rh
Z10sIGBJbnRsLkRpc3BsYXlOYW1lc2ApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5E
aXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJlbiIpKSwgYFsiZW4iXWApOworc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJq
YS1KUCIpKSwgYFsiamEtSlAiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNw
bGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKHsgbGVuZ3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMn
LCAzOiAnZGUnIH0pKSwgJ1siZXMiLCJlbiIsImRlIl0nKTsKK3Nob3VsZFRocm93KCgpID0+IElu
dGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZigiIiksIGBSYW5nZUVycm9yOiBpbnZh
bGlkIGxhbmd1YWdlIHRhZzogYCkKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIEludGwuRGlz
cGxheU5hbWVzLnByb3RvdHlwZS5vZi5jYWxsKHt9KTsKK30sIGBUeXBlRXJyb3I6IEludGwuRGlz
cGxheU5hbWVzLnByb3RvdHlwZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5TmFtZXNgKTsKKworc2hvdWxkVGhyb3coKCkgPT4g
eworICAgIEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCh7
fSk7Cit9LCBgVHlwZUVycm9yOiBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIERpc3BsYXlOYW1lc2ApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wYXJz
ZS11bmljb2RlLXN1YnRhZ3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUt
c3VidGFncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmFhMzQwYzExMGQzMjFjMDdiMjIzYjU4NGZmNjE4ZDM2
MmJmM2RhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmlj
b2RlLXN1YnRhZ3MuanMKQEAgLTAsMCArMSw4OCBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlSW50
bERpc3BsYXlOYW1lcz0xIikKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCit2YXIg
cmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lv
bid9KTsKK3Nob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6
IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHJl
Z2lvbk5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24g
c3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiMCIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworc2hvdWxkVGhyb3coKCkg
PT4gcmVnaW9uTmFtZXMub2YoIjAwIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBy
ZWdpb24gc3VidGFnYCk7CitzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiMDAwMCIp
LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworc2hvdWxk
VGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoImEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9m
KCJhYWEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsK
K3Nob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCI0MTkiKSwgYExhdGluIEFtZXJpY2FgKTsKK3Nob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCJKUCIpLCBgSmFwYW5gKTsKK3Nob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCJVUyIpLCBgVW5pdGVkIFN0YXRlc2ApOworCit2YXIgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CitzaG91bGRUaHJv
dygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCIt
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxk
VGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLS0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50
IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVz
Lm9mKCJlbi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CitzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlbi1VUyIpLCBgQW1lcmljYW4gRW5nbGlzaGAp
Oworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiZW5fVVMiKSwgYFJhbmdlRXJy
b3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCJlbi11cyIpLCBgQW1lcmljYW4gRW5nbGlzaGApOworc2hvdWxkVGhyb3coKCkgPT4g
bGFuZ3VhZ2VOYW1lcy5vZigicm9vdCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEg
bGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInJvb3Qt
VVMiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlcy00MTkiKSwgYExhdGluIEFtZXJpY2FuIFNwYW5pc2hg
KTsKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYp
IHsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksIGBDaGluZXNlLCBU
cmFkaXRpb25hbGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsn
KSwgYENoaW5lc2UsIFNpbXBsaWZpZWQgKEhvbmcgS29uZylgKTsKK30gZWxzZSB7CisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCBgVHJhZGl0aW9uYWwgQ2hpbmVzZWAp
OworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwgYFNpbXBsaWZp
ZWQgQ2hpbmVzZSAoSG9uZyBLb25nKWApOworfQorc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VO
YW1lcy5vZigiSGFudCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2Ug
aWRgKTsgLy8gU2NyaXB0IG9ubHkKK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NyLUxhdG4n
KSwgYFNlcmJpYW4gKExhdGluKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQKK3Nob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3NyLUN5cmwnKSwgYFNlcmJpYW4gKEN5cmlsbGljKWApOyAvLyBMYW5ndWFn
ZS1TY3JpcHQKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInpoLUhLLUhhbnMi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CitzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCdzbC1yb3phaicpLCBgU2xvdmVuaWFuIChSZXNpYW4pYCk7IC8v
IExhbmd1YWdlLVZhcmlhbnQKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNs
X3JvemFqIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOwor
c2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigic2wtcm96YWotQ3lybCIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgp
ID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLXJvemFqLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMu
b2YoInNsLV9yb3phaiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2Ug
aWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLUN5cmwtIiksIGBS
YW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkVGhyb3co
KCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLXNsLUN5cmwtIiksIGBSYW5nZUVycm9yOiBhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignaHkt
TGF0bi1JVC1hcmV2ZWxhJyksIGBBcm1lbmlhbiAoTGF0aW4sIEl0YWx5LCBFYXN0ZXJuIEFybWVu
aWFuKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtUmVnaW9uLVZhcmlhbnQKK3Nob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ2h5LUxhdG4tSVQnKSwgYEFybWVuaWFuIChMYXRpbiwgSXRhbHkpYCk7IC8v
IExhbmd1YWdlLVNjcmlwdC1SZWdpb24KK3Nob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5LUxh
dG4tYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBFYXN0ZXJuIEFybWVuaWFuKWApOyAvLyBM
YW5ndWFnZS1TY3JpcHQtVmFyaWFudAorc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5v
ZigiaHktTGF0bi1JVFotYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEg
bGFuZ3VhZ2UgaWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxh
dG4tMDAtYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2Ug
aWRgKTsKK3Nob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tYXJldmVs
YXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBp
ZGApOworc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0bi1hcmV2ZWxh
enp6enp6enp6enoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlk
YCk7CitzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJoeXp6enp6enp6ei1MYXRu
LWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CisKK3ZhciBzY3JpcHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAnc2NyaXB0J30pOworc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIiIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworc2hvdWxkVGhyb3co
KCkgPT4gc2NyaXB0TmFtZXMub2YoIi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBh
IHNjcmlwdCBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYXRu
MCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworc2hv
dWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIkxhbjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsKK3Nob3VsZFRocm93KCgpID0+IHNjcmlwdE5h
bWVzLm9mKCJMYW4iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0
YWdgKTsKK3Nob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJMYXRuIiksIGBMYXRpbmApOworc2hvdWxk
QmUoc2NyaXB0TmFtZXMub2YoImxhdG4iKSwgYExhdGluYCk7IC8vIENhbm9uaWNhbGl6YXRpb24g
Y2FuIG1ha2UgaXQgd29yay4KKwordmFyIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5
TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworc2hvdWxkVGhyb3coKCkgPT4gY3Vy
cmVuY3lOYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZv
cm1lZCBjdXJyZW5jeSBjb2RlYCk7CitzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9m
KCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5j
eSBjb2RlYCk7CitzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9mKCJhYiIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOwor
c2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigianB5eCIpLCBgUmFuZ2VFcnJvcjog
YXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworc2hvdWxkVGhy
b3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigianAwIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CitzaG91bGRCZShjdXJyZW5jeU5h
bWVzLm9mKCJqcHkiKSwgYEphcGFuZXNlIFllbmApOworc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5v
ZigiSlBZIiksIGBKYXBhbmVzZSBZZW5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBhNzlmMmRiZTM2
MTY2ZjBiOGViYjk5OWRiODVjZjRlMTY0Yjk0ZGYxLi5lNjM3MmZmOTI4M2JjZmI1NGJhZmE2ZDhi
NWIxNmU0Y2FhOGUzM2M4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yNiw2ICsyNiw5IEBAIHNraXA6
CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZAogICAgIC0gSW50bC5EYXRlVGlt
ZUZvcm1hdC1mb3JtYXRSYW5nZQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFs
U2Vjb25kRGlnaXRzCisgICAgIyBDdXJyZW50bHksIHRlc3QyNjIgaGFzIGEgYnVnIHdpdGggSW50
bC5EaXNwbGF5TmFtZXMsIGFuZCBleHBvc2luZyBpdCBjYW4gY2F1c2UgbWFueSBmYWlsdXJlcyBp
biB2YXJpb3VzIEludGwgdGVzdHMuCisgICAgIyBXZSBzaG91bGQgZW5hYmxlIGl0IGFmdGVyIGVu
c3VyaW5nIHRlc3QyNjIgaXMgZml4ZWQuCisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS90
ZXN0MjYyL2lzc3Vlcy8yNjgyCiAgICAgLSBJbnRsLkRpc3BsYXlOYW1lcwogICAgIC0gSW50bC5M
aXN0Rm9ybWF0CiAgICAgLSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403243</attachid>
            <date>2020-06-30 14:41:00 -0700</date>
            <delta_ts>2020-06-30 23:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209779-20200630144059.patch</filename>
            <type>text/plain</type>
            <size>90711</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjBmZWU3MDkyZDc1YThjNGJkYTM2MGNiNzA4YTc3MTY5NWIzYzYxLi5jMTk1ZTBkOWFiNGIxYmY5
YTAwNGE0YjhlM2U0ZDVlYzkzNTdkZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBJbnRsLkRpc3BsYXlOYW1lcyBiZWhpbmQgdXNlSW50bERpc3BsYXlOYW1lcz0xIGZs
YWcuCisgICAgICAgIEludGwuRGlzcGxheU5hbWVzIGNhbiBvZmZlciByZWFkYWJsZSAiZGlzcGxh
eS1uYW1lIiBmb3IgSUNVIGxhbmd1YWdlLCBzY3JpcHQsIHJlZ2lvbiwgY3VycmVuY3kgY29kZXMu
CisgICAgICAgIEZvciBleGFtcGxlLCBpdCBjYW4gb2ZmZXIgIlVuaXRlZCBTdGF0ZXMiIHN0cmlu
ZyBmb3IgIlVTIiByZWdpb24gY29kZS4KKyAgICAgICAgV2UgdXNlIElDVSBVTG9jYWxlRGlzcGxh
eU5hbWVzIHRvIGltcGxlbWVudCBpdCwgZXhjZXB0IGZvciBjdXJyZW5jeSBzaW5jZSBVTG9jYWxl
RGlzcGxheU5hbWVzIGlzIG5vdCBzdXBwb3J0aW5nCisgICAgICAgIGN1cnJlbmN5IGNvcnJlY3Rs
eTogaXQgaWdub3JlcyAibG9uZyIsICJzaG9ydCIsIGFuZCAibmFycm93IiBzdHlsZSBjb25maWd1
cmF0aW9ucy4gV2UgbmVlZCB0byBjYWxsIHVjdXJyX2dldE5hbWUKKyAgICAgICAgZGlyZWN0bHku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGFkZHMgdW5pY29kZS1sYW5ndWFn
ZS1pZCBwYXJzaW5nIGluIEludGxMb2NhbGUuY3BwIHNvIHRoYXQgd2UgY2FuIHZhbGlkYXRlIGxh
bmd1YWdlIGlkCisgICAgICAgIHdoZW4gaXQgaXMgcGFzc2VkIHRvIGBJbnRsLkRpc3BsYXlOYW1l
cyNvZmAgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
czo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6Om9mIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6
OmNhbGxJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZTo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZik6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjppc1VuaWNvZGVTY3JpcHRTdWJ0YWcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
Ojppc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVNjcmlw
dFN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVJlZ2lvblN1YnRhZyk6CisgICAgICAg
IChKU0M6OmlzVW5pY29kZVZhcmlhbnRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVM
YW5ndWFnZUlkKToKKyAgICAgICAgKEpTQzo6aXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6aW50bERpc3BsYXlO
YW1lc0F2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkaXNwbGF5TmFtZXNT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhhcnUub2h6ZWtp
QGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJIGNvbXBpbGF0
aW9uIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDQyOWYzNWY3ZGE3YTU5ZWViMTJlNjVmMmQ4ZmRlYjA2OTMxYjZhNi4u
NzZhZmNlNTE1OGRkZTU0ZjE1ZGUwMDViMDVkYmVlNzgxMTY1YmEzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmll
dy5oOgorCiAyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBT
UEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oc3RzU3RvcmFnZURpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGMyNTkxMDg2ZWJhYzcyMjA2NmE4NjQ0NWZhYzIxMWRlZjgwMzA1ZTAuLmJkNWEwYWIxMDYx
NmE0MDJkYTIwNDhkNDM4M2Q3ZjM2Zjg4YTVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTcwLDYgKzcwLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRf
U09VUkNFUwogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWNmZDVhOTBiYzg1YmM3MDI1MWNmMGRkZjE0MTQ1
ZGU5ZWNmMDcuLmQwZDhkZmRjNDhhMzVlODIxN2Y3YzAzNDFjMGZlMDNiYjQzZTA0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMzgsNiArMTM4LDggQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3Bw
CiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCA3OWNkZTRlZTUwN2UxM2Y2ZmY3ZmE3ODAwZGM2NDVjYmY4OTQxYzY3Li4y
YmRmNWIyYzgyMmE2ZDllN2I2ZjQ1NmJiMGE5NjE2M2VlMWQ2ZDEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBA
IC0yNyw2ICsyNyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTBmOWZlYzUxZGNlNDg2ODZmZjg3NDViZWFhNGI1
YjVkNWIxMDMzZC4uYzFmZjVlNjI0NzM1MDY4Y2ZmNGMxMmU0Y2Y0OGNkYzRmYTBhNjU3YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1OSw2ICsxNTks
OCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1
dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IubHV0LmggXAorICAgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggXAog
ICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmODUxYzExNzJjNmUwNGVhYjgzODhjMjI4
MGRhNTA4NDNhNjNiZGQuLmMwNjYzZDdmNjBmOTlkZjFkNDFkZWZlY2RjNTZlOWNlNTQ5MmNjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE5LDYgKzE4MTksOSBAQAogCQlF
MzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUg
LyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRGOTMwQzIzMjJE
ODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRTM1MDcwOEExREM0OUJCRjAw
ODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25h
dHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExNzI0QUE0Q0I2MDAz
RkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovOyB9OworCQlFMzUzQzExRTI0QUE0Q0I3MDAz
RkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzNTNDMTIxMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovOyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1
NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5
MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVEMzhGMjI0NDY4
NzcwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RDM4RDIyNDQ2ODZCMDA4RjFBRDYgLyogR2xvYmFs
RXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xODI4LDYgKzE4MzEsOCBAQAogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1
RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNjM3RUU5MjM2
RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlu
a1RpbWVDb25zdGFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yLmx1dC5oICovOyB9OworCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRy
eVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDk4NSw2ICs0OTkwLDEyIEBACiAJCUUzNEY5MzBCMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVy
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEY5MzBDMjMyMkQ4ODEwMDJC
OERCNCAvKiBKU0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzUwNzA4OTFEQzQ5
QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIElu
dGxEaXNwbGF5TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERp
c3BsYXlOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExODI0QUE0
Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExOTI0QUE0Q0I2MDAzRkJERjMgLyogSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0
NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVEMzhEMjI0NDY4NkIwMDhGMUFE
NiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbEV4ZWN1dGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMDEsNiArNTAxMiw4IEBACiAJCUUz
NUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjM3
RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua1RpbWVDb25zdGFu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVGMzM4MjRBQTYyMTEwMEM5
OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNkI0ODAxMjNFOTU3MzgwMEU0QTY2RSAvKiBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZFMjJGOEQ2MTEw
MEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NzY3LDYgKzY3ODAsOCBAQAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZD
MTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjRE
QzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAog
CQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmggKi8sCisJCQkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIg
LyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTI1ODQ2QzFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1
dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAg
Ki8sCkBAIC03MjYyLDYgKzcyNzcsMTIgQEAKIAkJCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJCQlBMTU4N0Q2QjFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKIAkJCQlB
MTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Ki8sCisJCQkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3Bw
ICovLAorCQkJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmgg
Ki8sCisJCQkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNTNDMTE5MjRBQTRDQjYwMDNGQkRGMyAv
KiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzUzQzExQjI0QUE0Q0I3
MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovLAogCQkJCUEzQUZGOTJE
MjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLywKIAkJCQlBM0FGRjkyQjI0NUEz
Q0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovLAogCQkJCUEzQUZGOTJGMjQ1QTNDRkIwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwICovLApAQCAtOTc1Miw2ICs5NzczLDEx
IEBACiAJCQkJQTE1ODdENzUxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzExRTI0QUE0Q0I3MDAzRkJE
RjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMjEyNEFBNENCNzAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNjVGMzNCMjRBQTYy
M0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAw
MENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEzNGE2NjVhODUwY2FkNmFm
ZjljYWY1YzRjOGQ3NGMyNzA1Li4xYjRmYmY3Y2NhYzQ3ZTllMGQ4Mjg0ZDY2MzU4MTgxMjFjYWUw
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTQsNiArODE0LDkgQEAgcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAorcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlLmNwcAogcnVu
dGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5
cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRlYmFjOWFkYmEyNTI2NmJhLi4z
YTQ5N2UwNzRhOTBlMGIxMTk1ODZiZmEwOGQ0ODNlYjMwOTQyMzMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTM0LDYgKzM0
LDcgQEAKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERhdGUpIFwKICAgICBtYWNy
byhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3JvKERpc3BsYXlOYW1lcykgXAogICAgIG1hY3Jv
KEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDhkN2E0YWY5MmU4ODgxNGRkZjY5ZGE4NjY0NDNkY2M5MDIxMzZhMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXMuY3BwCkBAIC0wLDAgKzEsMzczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKworI2luY2x1ZGUgIkludGxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lcykgfTsK
KworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXMo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJ
bnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3ZvaWQg
SW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmlj
YWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxlcyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zOworICAgIGlm
IChvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3B0aW9ucyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zVmFsdWUudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICB9CisKKyAgICAvLyBEb2VzIG5vdCBzZXQgZWl0aGVyIG9mICJjYSIgb3IgIm51
Ii4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3Nl
Yy1pbnRsLWRpc3BsYXluYW1lcy1jb25zdHJ1Y3RvcgorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IG9wdDsKKworICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1
cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBc
IiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQoImxvY2FsZU1hdGNoZXIiX3MsIG1hdGNoZXIp
OworCisKKyAgICBhdXRvIGxvY2FsZURhdGEgPSBbXShjb25zdCBTdHJpbmcmLCBzaXplX3QpIC0+
IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0
byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7
CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxl
TG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBudWxscHRyLCAwLCBsb2NhbGVEYXRhKTsK
KworICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsKKyAgICBpZiAobV9sb2Nh
bGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUgdG8gaW52YWxpZCBsb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIHN0eWxlU3RyaW5n
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFt
ZXMtPnN0eWxlLCB7ICJuYXJyb3ciLCAic2hvcnQiLCAibG9uZyIgfSwgInN0eWxlIG11c3QgYmUg
ZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiLCAibG9uZyIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHN0eWxlU3RyaW5n
ID09ICJuYXJyb3ciX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6TmFycm93OworICAgIGVs
c2UgaWYgKHN0eWxlU3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxl
OjpTaG9ydDsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAibG9uZyJfcykKKyAgICAgICAg
bV9zdHlsZSA9IFN0eWxlOjpMb25nOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJsYW5ndWFnZSIsICJy
ZWdpb24iLCAic2NyaXB0IiwgImN1cnJlbmN5IiB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxh
bmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiIsIG51bGxw
dHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHR5
cGVTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAodHlwZVN0cmluZyA9PSAibGFuZ3VhZ2UiX3MpCisgICAgICAgIG1f
dHlwZSA9IFR5cGU6Okxhbmd1YWdlOworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInJlZ2lv
biJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmVnaW9uOworICAgIGVsc2UgaWYgKHR5cGVT
dHJpbmcgPT0gInNjcmlwdCJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6U2NyaXB0OworICAg
IGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQorICAgICAgICBtX3R5cGUgPSBU
eXBlOjpDdXJyZW5jeTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgU3RyaW5nIGZhbGxiYWNrU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCB7ICJj
b2RlIiwgIm5vbmUiIH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhlciBcImNvZGVcIiBvciBcIm5v
bmVcIiIsICJjb2RlIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gImNvZGUiX3MpCisgICAgICAgIG1fZmFsbGJhY2sg
PSBGYWxsYmFjazo6Q29kZTsKKyAgICBlbHNlIGlmIChmYWxsYmFja1N0cmluZyA9PSAibm9uZSJf
cykKKyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpOb25lOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyNpZiBIQVZFKElDVV9VX0xPQ0FMRV9ESVNQTEFZ
X05BTUVTKQorICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCisgICAgVURp
c3BsYXlDb250ZXh0IGNvbnRleHRzW10gPSB7CisgICAgICAgIC8vIGVuX0dCIGRpc3BsYXlzIGFz
ICdFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSknIChTdGFuZGFyZCBOYW1lcykgb3IgJ0JyaXRpc2gg
RW5nbGlzaCcgKERpYWxlY3QgTmFtZXMpLgorICAgICAgICAvLyBXZSB1c2UgRGlhbGVjdCBOYW1l
cyBoZXJlLCBhbGlnbmVkIHRvIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYyBkcmFmdCBhbmQgVjgn
cyBiZWhhdmlvci4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwt
aW50bC1kaXNwbGF5bmFtZXMjbGFuZ3VhZ2UtZGlzcGxheS1uYW1lcworICAgICAgICBVRElTUENU
WF9ESUFMRUNUX05BTUVTLAorCisgICAgICAgIC8vIENhcGl0YWlsaXphdGlvbiBtb2RlIGNhbiBi
ZSBwaWNrZWQgZnJvbSBzZXZlcmFsIG9wdGlvbnMuIFBvc3NpYmx5IGVpdGhlciBVRElTUENUWF9D
QVBJVEFMSVpBVElPTl9OT05FIG9yIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFM
T05FIGlzCisgICAgICAgIC8vIHByZWZlcmFibGUgaW4gSW50bC5EaXNwbGF5TmFtZXMuIFdlIHVz
ZSBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBiZWNhdXNlIGl0IG1ha2Vz
IHN0YW5kYWxvbmUgZGF0ZSBmb3JtYXQgYmV0dGVyIChmciAiSnVpbGxldCAyMDA4IiBpbiBJQ1Ug
dGVzdCBzdWl0ZXMpLAorICAgICAgICAvLyBhbmQgRGlzcGxheU5hbWVzIHdpbGwgc3VwcG9ydCBk
YXRlIGZvcm1hdHMgdG9vLgorICAgICAgICBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RB
TkRBTE9ORSwKKworICAgICAgICAvLyBOYXJyb3cgYmVjb21lcyBVRElTUENUWF9MRU5HVEhfU0hP
UlQuIEJ1dCBpbiBjdXJyZW5jeSBjYXNlLCB3ZSBoYW5kbGUgZGlmZmVyZW50bHkgaW5zdGVhZCBv
ZiB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzLgorICAgICAgICBtX3N0eWxlID09IFN0eWxlOjpM
b25nID8gVURJU1BDVFhfTEVOR1RIX0ZVTEwgOiBVRElTUENUWF9MRU5HVEhfU0hPUlQsCisKKyAg
ICAgICAgLy8gQWx3YXlzIGRpc2FibGUgSUNVIFNVQlNUSVRVVEUgc2luY2UgaXQgZG9lcyBub3Qg
bWF0Y2ggYWdhaW5zdCB3aGF0IHRoZSBzcGVjIGRlZmluZXMuIElDVSBoYXMgc29tZSBzcGVjaWFs
IHN1YnN0aXR1dGUgcnVsZXMsIGZvciBleGFtcGxlLCBsYW5ndWFnZSAiZW4tQUEiCisgICAgICAg
IC8vIHJldHVybnMgIkVuZ2xpc2ggKEFBKSIgKHdoaWxlIEFBIGNvdW50cnkgY29kZSBpcyBub3Qg
ZGVmaW5lZCksIGJ1dCB3ZSB3b3VsZCBsaWtlIHRvIHJldHVybiBlaXRoZXIgaW5wdXQgdmFsdWUg
b3IgdW5kZWZpbmVkLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBoYXZlIElDVSBzdWJzdGl0dXRlIHJ1
bGVzLgorICAgICAgICBVRElTUENUWF9OT19TVUJTVElUVVRFLAorICAgIH07CisgICAgbV9sb2Nh
bGVDU3RyaW5nID0gbV9sb2NhbGUudXRmOCgpOworICAgIG1fZGlzcGxheU5hbWVzID0gc3RkOjp1
bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVy
Pih1bGRuX29wZW5Gb3JDb250ZXh0KG1fbG9jYWxlQ1N0cmluZy5kYXRhKCksIGNvbnRleHRzLCBX
VEZfQVJSQVlfTEVOR1RIKGNvbnRleHRzKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVzIl9zKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbHNlCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBpbml0aWFsaXplIEludGwuRGlzcGxheU5hbWVzIHNpbmNlIHVzZWQgZmVhdHVyZSBp
cyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgIHJldHVy
bjsKKyNlbmRpZgorfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YKK0pTVmFsdWUgSW50bERp
c3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2Rl
VmFsdWUpIGNvbnN0Cit7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisjaWYgSEFWRShJQ1VfVV9M
T0NBTEVfRElTUExBWV9OQU1FUykKKyAgICBBU1NFUlQobV9kaXNwbGF5TmFtZXMpOworICAgIGF1
dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZm
ZXI7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90
eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9r
ZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBm
b2xsb3dpbmcgcmVhc29ucy4KKyAgICAgICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0
IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8gVURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5h
cnJvdyIgc3R5bGUgaW4gVUxvY2FsZURpc3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJu
YXJyb3ciIHN5bWJvbCBzdHlsZS4KKworICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxh
eU5hbWVzCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXlu
YW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYg
ISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VF
cnJvciBleGNlcHRpb24uCisgICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGNv
ZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOworICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFT
Q0lJKCkpOworCisgICAgICAgIFVDdXJyTmFtZVN0eWxlIHN0eWxlID0gVUNVUlJfTE9OR19OQU1F
OworICAgICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6TG9uZzoK
KyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9T
WU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlOjpOYXJy
b3c6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX05BUlJPV19TWU1CT0xfTkFNRTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gNi4gTGV0IGNvZGUgYmUgdGhl
IHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4x
LgorICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0XSA9IHsKKyAgICAgICAgICAgIHRvQVND
SUlVcHBlcihjb2RlWzBdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzFdKSwKKyAg
ICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzJdKSwKKyAgICAgICAgICAgIHUnXDAnCisgICAg
ICAgIH07CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMg
c3RyaW5nIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAg
ICBpbnQzMl90IGxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IFVDaGFyKiByZXN1bHQgPSB1Y3Vy
cl9nZXROYW1lKGN1cnJlbmN5LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgpLCBzdHlsZSwgbnVsbHB0
ciwgJmxlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIC8vIHVjdXJyX2dldE5h
bWUgcmV0dXJucyBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUgZGlzcGxheS1uYW1lIGlz
IG5vdCBmb3VuZC4gQnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlzIHJldHVybmVkIGV2ZW4g
aWYKKyAgICAgICAgLy8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUgc2FtZTogbmFy
cm93ICJVU0QiIGlzICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIHNpbmNlIHNob3J0
ICJVU0QiIGlzIGFsc28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCisgICAgICAgIC8vIHJlc3VsdCA9
PSBjdXJyZW5jeSB0byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBmYWlsZWQgdG8gZmluZCB0
aGUgY29ycmVzcG9uZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRlciBjb21wYXJpc29uIGlz
IGVuc3VyZWQgYnkKKyAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KKyAgICAgICAgLy8gPiBS
ZXR1cm5zIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiBJZiB0aGUg
cmVzb3VyY2UgZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3Vy
cmVuY3knIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX1VTSU5H
X0RFRkFVTFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCisgICAgICAgICAgICByZXR1
cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVW
YWx1ZTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LCBsZW5ndGgp
KTsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgYXV0byBjYW5vbmlj
YWxpemVDb2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGUpIC0+IENTdHJpbmcgeworICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgY2hhciogbXV0YWJsZURh
dGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRo
ZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYu
MS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5s
ZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0
b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgICAgICAvLyBMZXQg
Y29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2Ny
aWJlZCBpbiA2LjEuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFb
aW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAgICAgICAg
ICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBjaGFyYWN0
ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0aGlyZCBh
bmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2NyaWJlZCBp
biA2LjEuCisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAg
ICAgICAgbXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgp
OyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlM
b3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Okxh
bmd1YWdlOiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29k
ZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisg
ICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgeworICAgICAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5n
dWFnZSBpZCJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAg
IGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwg
Y29kZSk7CisgICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNp
bmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCBy
ZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5n
bGlzaCIuCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRu
X2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3VhZ2UuZGF0YSgp
LCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpSZWdpb246
IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lv
bl9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgorICAgICAg
ICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24g
c3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAg
YXV0byByZWdpb24gPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29k
ZSk7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3Jl
Z2lvbkRpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgcmVnaW9uLmRhdGEoKSwgYnVm
ZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7Cisg
ICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3Vi
dGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYg
KCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRh
ZyJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8g
c2NyaXB0ID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOwor
ICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9zY3JpcHRE
aXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHNjcmlwdC5kYXRhKCksIGJ1ZmZlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1
bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4g
VV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5k
LgorICAgICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAi
bm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KKyAgICAgICAg
aWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisgICAgICAgICAgICByZXR1
cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVW
YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zKTsKKyAgICB9CisgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShj
b2RlVmFsdWUpOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSBJbnRsLkRpc3BsYXlOYW1lcyBzaW5jZSB1c2VkIGZlYXR1cmUgaXMg
bm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICByZXR1cm4g
eyB9OworI2VuZGlmCit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3Bs
YXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMK
K0pTT2JqZWN0KiBJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9j
YWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3Ry
aW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHR5cGVTdHJpbmcobV90eXBlKSkpOwor
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZh
bGxiYWNrIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFj
aykpKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5
TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsK
KyAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9zOworICAg
IGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2Ug
U3R5bGU6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitB
U0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZToKKyAgICAgICAgcmV0
dXJuICJsYW5ndWFnZSJfczsKKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjoKKyAgICAgICAgcmV0dXJu
ICJyZWdpb24iX3M7CisgICAgY2FzZSBUeXBlOjpTY3JpcHQ6CisgICAgICAgIHJldHVybiAic2Ny
aXB0Il9zOworICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIHJldHVybiAiY3VycmVu
Y3kiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZh
bGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQoreworICAgIHN3aXRjaCAoZmFsbGJhY2sp
IHsKKyAgICBjYXNlIEZhbGxiYWNrOjpDb2RlOgorICAgICAgICByZXR1cm4gImNvZGUiX3M7Cisg
ICAgY2FzZSBGYWxsYmFjazo6Tm9uZToKKyAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NWJhY2E4MGNlYmM2M2Zm
MmRjZmFhYzYxN2Q3YzkxOThmZDU3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
IDx1bmljb2RlL3VsZG5hbWVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBl
cnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiAhZGVmaW5lZChIQVZFX0lDVV9VX0xPQ0FM
RV9ESVNQTEFZX05BTUVTKQorLy8gV2UgbmVlZCA2MSBvciBsYXRlciBzaW5jZSBwYXJ0IG9mIGlt
cGxlbWVudGF0aW9uIHVzZXMgVUNVUlJfTkFSUk9XX1NZTUJPTF9OQU1FLgorI2lmIFVfSUNVX1ZF
UlNJT05fTUFKT1JfTlVNID49IDYxCisjZGVmaW5lIEhBVkVfSUNVX1VfTE9DQUxFX0RJU1BMQVlf
TkFNRVMgMQorI2VuZGlmCisjZW5kaWYKKworY2xhc3MgSW50bERpc3BsYXlOYW1lcyBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNO
b25GaW5hbE9iamVjdDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KGNlbGwpLT5JbnRsRGlz
cGxheU5hbWVzOjp+SW50bERpc3BsYXlOYW1lcygpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmludGxE
aXNwbGF5TmFtZXNTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsRGlzcGxh
eU5hbWVzKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAg
IEpTVmFsdWUgb2YoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKSBjb25zdDsKKyAgICBKU09iamVj
dCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgSW50bERpc3BsYXlOYW1lcyhWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKKworICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgTmFycm93LCBT
aG9ydCwgTG9uZyB9OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBMYW5ndWFnZSwg
UmVnaW9uLCBTY3JpcHQsIEN1cnJlbmN5IH07CisgICAgZW51bSBjbGFzcyBGYWxsYmFjayA6IHVp
bnQ4X3QgeyBDb2RlLCBOb25lIH07CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3Ry
aW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmcoVHlwZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBmYWxsYmFja1N0cmluZyhGYWxsYmFjayk7CisKKyAgICB1
c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlciA9IElDVURlbGV0ZXI8dWxkbl9jbG9zZT47
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5
TmFtZXNEZWxldGVyPiBtX2Rpc3BsYXlOYW1lczsKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSBpdCBvbmx5IHdoZW4gbV90eXBlIGlzIEN1cnJlbmN5
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NzMK
KyAgICBDU3RyaW5nIG1fbG9jYWxlQ1N0cmluZzsKKyAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6
OkxvbmcgfTsKKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Okxhbmd1YWdlIH07CisgICAgRmFsbGJh
Y2sgbV9mYWxsYmFjayB7IEZhbGxiYWNrOjpDb2RlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZmJmZjNkOTg5ZmIyNGJl
NjM5MDgzMzg0MTYyY2EwZmIzOTExZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAg
KzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1l
cy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKTsKKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
U3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKwor
I2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmRpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
ci5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVk
TG9jYWxlc09mICAgICAgICAgICAgIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRl
ZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSk7
CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5j
dGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2Fs
bEludGxEaXNwbGF5TmFtZXMsIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMpCit7Cit9CisKK3Zv
aWQgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkRpc3BsYXlOYW1lcyJfcywgTmFtZUFkZGl0aW9uTW9k
ZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRpc3BsYXlOYW1lc1Byb3Rv
dHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIGRpc3BsYXlOYW1lc1Byb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5l
d1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPmRpc3BsYXlOYW1lc1N0
cnVjdHVyZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1Rh
cmdldCktPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgSW50bERpc3BsYXlOYW1lcyogZGlzcGxheU5hbWVzID0gSW50
bERpc3BsYXlOYW1lczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChkaXNwbGF5
TmFtZXMpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGRpc3BsYXlOYW1lcy0+aW5pdGlh
bGl6ZURpc3BsYXlOYW1lcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGlzcGxh
eU5hbWVzKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3Bs
YXlOYW1lcworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNw
bGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJEaXNwbGF5TmFtZXMiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgLy8gSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2Fs
ZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVk
TG9jYWxlc09mCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGlzcGxheU5h
bWVzJS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2
YWlsYWJsZUxvY2FsZXMgPSBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpOworCisg
ICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChs
b2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2Fs
aXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8g
My4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9j
YWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJl
cXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NGFlMWU4YTgy
NWI4NmY3YTdjOGE5NmM1MDFiNDRmYmNhZDg4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTsKKworY2xhc3MgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSopOworfTsKK1NUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
ciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYThlYzgwZjQyNTM1ZmZkNjBjOTM5OTc5NDdhMjAyZGEzZmIz
MTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5EaXNwbGF5TmFtZXMiLCAmQmFzZTo6c19pbmZv
LCAmZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGlzcGxheU5hbWVzUHJvdG90eXBlVGFi
bGUKKyAgb2YgICAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29sdmVkT3B0aW9ucyAgSW50
bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgICAgRG9udEVudW18RnVu
Y3Rpb24gMAorQGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRp
c3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMgPSBqc0R5bmFtaWNDYXN0PElu
dGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFk
aXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzIl9zKTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlO
YW1lcy0+b2YoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRp
c3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMgPSBqc0R5bmFtaWNDYXN0
PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERp
c3BsYXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShkaXNwbGF5TmFtZXMtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2N2U1
ODNhNjc1NzQ0ZTQxNWE0ODVlODNlZjFmMzU4NmU5YjEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisK
K3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA4
MGU2NGYxYWIxNzk3MTM4YjI1MmI4ZmNkMTA3MWQ3NmJkZDQ2MjlhLi45NWI2YzgzZjczOWVlNDQz
YjVmYTgwMTNmNTkwY2MzZTIxYThmZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlLmNwcApAQCAtMTkxLDI3ICsxOTEsNiBAQCBTdHJpbmcgSW50bExvY2Fs
ZTo6a2V5d29yZFZhbHVlKEFTQ0lJTGl0ZXJhbCBrZXksIGJvb2wgaXNCb29sZWFuKSBjb25zdAog
ICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZyh2YWx1ZSkgOiBlbXB0eVN0cmluZygpOwogfQogCi0v
LyB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIsM30gfCBhbHBoYXs1LDh9IDsKLXN0
YXRpYyBib29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQotewot
ICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIHJldHVybiBsZW5ndGggPj0g
MiAmJiBsZW5ndGggPD0gOCAmJiBsZW5ndGggIT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Ci19Ci0KLS8vIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyA9
IGFscGhhezR9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3
IHN0cmluZykKLXsKLSAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgpID09IDQgJiYgc3RyaW5nLmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwotfQotCi0vLyB1bmljb2RlX3Jl
Z2lvbl9zdWJ0YWcgPSBhbHBoYXsyfSB8IGRpZ2l0ezN9IDsKLXN0YXRpYyBib29sIGlzVW5pY29k
ZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBhdXRvIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKLSAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKLSAgICAgICAgfHwgKGxlbmd0aCA9PSAz
ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7Ci19Ci0K
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUKIHZvaWQgSW50bExv
Y2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHRhZ1ZhbHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYzM4ZmU5OWUy
ZjRmMGEzZGIyZjNhYjE3OTkyMmViYTgzOGFhMjkzOC4uMThlYzA5MzgxNWY1YWZiYjQxODgyYzNj
NTk5MTZhZmY0ZjNiMTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogICAgIFN0cmluZyBjdXJyZW5jeSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwg
eyB9LCBudWxscHRyLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGN1cnJl
bmN5Lmxlbmd0aCgpICE9IDMgfHwgIWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNB
U0NJSUFscGhhPigpKSB7CisgICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGN1
cnJlbmN5KSkgewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxs
LWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXgg
MWRmYTIwODJhZjE0MjNmNGQzZWQzZTEzMzBhOTQ5NjNiZWVhNDMwMS4uZmI1NDA2NzRlMTVkMjUx
MDI0ZmU0N2NjNjQzY2E1NmZmMzJmY2Y2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJJbnRsQ29s
bGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExv
Y2FsZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgpAQCAt
NzcsNiArNzksMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0
KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlRGlzcGxheU5hbWVzQ29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIEludGxPYmplY3QqIGludGxPYmplY3Qg
PSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1
bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSo+KGds
b2JhbE9iamVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVj
dCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUxvY2FsZUNvbnN0cnVjdG9yKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganND
YXN0PEludGxPYmplY3QqPihvYmplY3QpOwpAQCAtMTUyLDYgKzE2MSw4IEBAIEludGxPYmplY3Qq
IEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSoKIHZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCopCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGlmIChP
cHRpb25zOjp1c2VJbnRsRGlzcGxheU5hbWVzKCkpCisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EaXNwbGF5TmFtZXMsIGNyZWF0ZURpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yKHZtLCB0aGlzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtODI0LDYgKzgzNSw3NiBAQCBWZWN0b3I8U3RyaW5nPiBudW1iZXJp
bmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBudW1i
ZXJpbmdTeXN0ZW1zOwogfQogCisvLyB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIs
M30gfCBhbHBoYXs1LDh9IDsKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmll
dyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgcmV0
dXJuIGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA4ICYmIGxlbmd0aCAhPSA0ICYmIHN0cmluZy5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9z
Y3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOworYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3Ry
aW5nVmlldyBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0
cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5p
Y29kZV9yZWdpb25fc3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Citib29sIGlzVW5pY29k
ZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKKyAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKKyAgICAgICAgfHwgKGxlbmd0aCA9PSAz
ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7Cit9CisK
Ky8vIHVuaWNvZGVfdmFyaWFudF9zdWJ0YWcgPSAoYWxwaGFudW17NSw4fSB8IGRpZ2l0IGFscGhh
bnVtezN9KSA7Citib29sIGlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcp
Cit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+
PSA1ICYmIGxlbmd0aCA8PSA4KQorICAgICAgICByZXR1cm4gc3RyaW5nLmlzQWxsU3BlY2lhbENo
YXJhY3RlcnM8aXNBU0NJSUFscGhhbnVtZXJpYz4oKTsKKyAgICByZXR1cm4gbGVuZ3RoID09IDQg
JiYgaXNBU0NJSURpZ2l0KHN0cmluZ1swXSkgJiYgc3RyaW5nLnN1YnN0cmluZygxKS5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7Cit9CisKKy8vIHVuaWNvZGVf
bGFuZ3VhZ2VfaWQsIGJ1dCBpbnRlcnNlY3Rpb24gb2YgQkNQNDcgYW5kIFVUUzM1LgorLy8gdW5p
Y29kZV9sYW5ndWFnZV9pZCA9CisvLyAgICAgfCB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyAoc2Vw
IHVuaWNvZGVfc2NyaXB0X3N1YnRhZyk/IChzZXAgdW5pY29kZV9yZWdpb25fc3VidGFnKT8gKHNl
cCB1bmljb2RlX3ZhcmlhbnRfc3VidGFnKSogOworLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkv
cHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvaXNzdWVzLzc5Citib29sIGlzVW5pY29kZUxhbmd1
YWdlSWQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgVmVjdG9yPFN0cmluZ1ZpZXcsIDQ+IHN1
YnRhZ3M7CisgICAgZm9yIChhdXRvIHN1YnRhZyA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlF
bnRyaWVzKCctJykpCisgICAgICAgIHN1YnRhZ3MuYXBwZW5kKHN1YnRhZyk7CisKKyAgICBBU1NF
UlQoc3VidGFncy5zaXplKCkgPj0gMSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICBp
ZiAoIWlzVW5pY29kZUxhbmd1YWdlU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICArK2N1cnNvcjsKKworICAgIGlmIChjdXJzb3IgPT0gc3VidGFncy5z
aXplKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChpc1VuaWNvZGVTY3JpcHRTdWJ0
YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgKytjdXJzb3I7CisKKyAgICBpZiAoY3Vyc29y
ID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmlj
b2RlUmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICsrY3Vyc29yOworCisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWlzVW5pY29kZVZhcmlhbnRT
dWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgKytjdXJzb3I7CisgICAgfQorfQorCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShT
dHJpbmdWaWV3IGN1cnJlbmN5KQoreworICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAz
ICYmIGN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2Fs
TG9jYWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICAvLyBJbnRsLmdldENhbm9uaWNhbExvY2FsZXMobG9jYWxlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBlZDljMWUxMGI2YWRhNGZk
OWQ0MjU3NDYwNmNkZDkyYTkxMjIzOWI3Li4yNTUxOGYxOWZhN2ZhNTZkYzYwNWQ5NWJiMjlmMTVk
MzhmOGUxOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CkBAIC02MCw2ICs2MCw3IEBAIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7
CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKIGlubGluZSBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMo
KSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGlu
dGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGlu
dGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxv
Y2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVz
QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlu
bGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQpAQCAtNzksNiAr
ODAsMTQgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBT
dHJpbmcmIGxvY2FsZSk7CiAKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3Ry
aW5nVmlldyk7CiAKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyk7Citi
b29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVn
aW9uU3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmlu
Z1ZpZXcpOworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOworCitib29sIGlz
V2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3KTsKKwogc3RydWN0IFVGaWVsZFBvc2l0
aW9uSXRlcmF0b3JEZWxldGVyIHsKICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25J
dGVyYXRvciopIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzZWEzMGRiOWUyZTRkNTM4ZGE4ZjIzMmNmODliOWU0
Yzk4MjM3MDA2Li5jODc5Mjc0NWI5MzQ4MDNmZGY2YmFmMWFiNGIwNjdjYThiOTJiYzc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC03Myw2ICs3Myw4IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5j
bHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQu
aCIKQEAgLTk4MSw2ICs5ODMsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAg
ICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUg
PSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAg
ICAgICAgaW5pdC5zZXQoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSkpOwogICAgICAgICB9KTsK
KyAgICBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25z
dCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7
CisgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90
b3R5cGUgPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5z
ZXQoSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgZGlzcGxheU5hbWVzUHJvdG90eXBlKSk7CisgICAgICAgIH0pOwogICAgIG1fbG9jYWxlU3Ry
dWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVy
ZT4mIGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTE4MzIsNiArMTg0MCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CisgICAgdGhpc09iamVjdC0+bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9sb2NhbGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IGRkYzMwYjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjI3Nzc0ZWJiYzYwMzZm
N2EzNWJmMzVlZTgxZTE0ZTc2Y2EwMmM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjkyLDYgKzI5Miw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0
cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9k
YXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbG9jYWxlU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxl
c1N0cnVjdHVyZTsKQEAgLTc5Miw2ICs3OTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY29s
bGF0b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CisgICAgU3RydWN0dXJlKiBkaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Rp
c3BsYXlOYW1lc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlckZv
cm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCh0aGlz
KTsgfQogICAgIFN0cnVjdHVyZSogbG9jYWxlU3RydWN0dXJlKCkgeyByZXR1cm4gbV9sb2NhbGVT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA1ZGNmNDI4YmY0Nzcx
OWI1OTRiNjcwY2U1OGQ4Nzc3ZDM3OTI3MjYwLi45MDBjMDE0NWQxN2I2ZmY1NTcwOGNhYWIzN2U3
NDBkZjdiMGYxYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKQEAgLTQ4OCw2ICs0ODgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJs
eVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZh
bHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1
ZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywgZmFsc2UsIE5vcm1hbCwgIkV4
cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VCaWdJbnQs
IHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIp
IFwKKyAgICB2KEJvb2wsIHVzZUludGxEaXNwbGF5TmFtZXMsIGZhbHNlLCBOb3JtYWwsICJFeHBv
c2UgdGhlIEludGwuRGlzcGxheU5hbWVzIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVz
ZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2ls
bCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRo
ZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIp
IFwKICAgICB2KEJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
Y3JlYXRlX3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90
byBzdHJ1Y3R1cmUuIikgXAogICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgaXQgd2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDE2N2NmMGY1ZDlmY2ZiYzc3M2IwYzU1ZDcx
YjIzY2JhNWZlNjJiNzYuLjQwZGRjMDUyYjgxOTc4ZjU5MDI1ZGYyYjk2Zjk4MjAwMzcyNzc1ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgogI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIK
ICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgog
I2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgpAQCAtMzA2LDYgKzMwNyw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRpZgogICAgICwgaW50bENvbGxh
dG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkK
ICAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCisgICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCiAgICAg
LCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2Nh
bGU+KCkpCiAgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQpAQCAt
MTQ4MSw2ICsxNDgzLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWwKICNlbmRpZgogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRs
Q29sbGF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvcikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERh
dGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNl
LCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGlzcGxheU5hbWVzKQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwg
aW50bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExvY2FsZSkKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1i
ZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXQpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJhbFJ1bGVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYmVkMTY2ODgwNTY2NzliMDNlZDBjMmI4YjRkODA4ODA3
NWYyZmIzMy4uOGQ0N2YyMDJhM2ZkMTNlM2FjM2RmMjk2ZGUyNjVmMTIyZTA3NTNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgSWRlbnRp
ZmllcjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50
bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50bERpc3BsYXlOYW1lczsKIGNsYXNzIEludGxMb2Nh
bGU7CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwpAQCAt
NDAwLDYgKzQwMSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjZW5kaWYKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENl
bGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5
TmFtZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bExvY2FsZUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKQEAgLTU1Nyw2ICs1
NTksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1Ymxp
YyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQogICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQogICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDZjMzIxNzk2NTA3ZWM1NDgwOWU3YWE2YjBlNThl
MWY0ZWRiYzc5YjUuLjkyMGZiZmI3ZDFmM2QwOTQ1NmZmNDE5MzM0NGIyMDEyMTRhMGUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC03NTksNiArNzU5LDEyIEBAIGNsYXNzIFN0cmlu
Z1ZpZXc6OkNvZGVVbml0cyB7CiBjbGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0
b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHVzaW5nIGl0
ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZzsKKyAgICB1c2luZyB2
YWx1ZV90eXBlID0gU3RyaW5nVmlldzsKKyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJk
aWZmX3Q7CisgICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOworICAgIHVzaW5nIHJlZmVy
ZW5jZSA9IHZhbHVlX3R5cGUmOworCiAgICAgU3RyaW5nVmlldyBvcGVyYXRvciooKSBjb25zdDsK
IAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvciYgb3BlcmF0b3IrKygpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjM1OTdm
NGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li45NDQ4YjdlOTAwYjNjYzBhNDY0MmJm
NGI4MDVmOGIwOGRjMDE4MTRlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTMwICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQg
SW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisK
KyAgICAgICAgKiBzdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodm0uaWN1VmVyc2lv
bik6CisgICAgICAgICogc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAg
KHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAt
MDYtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmM5
ODRhZDk4MTU5N2RjOGNmN2M3NjEyZDE4YzViZTc5YmFiMjNiCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMKQEAgLTAsMCArMSwxOTUgQEAKKy8v
QCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNwbGF5TmFtZXM9MSIpCitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3du
ID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5j
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVy
cm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5n
KGVycm9yKX1gKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjEpIHsKKyAgICBzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJyb3I6IHR5cGUgbXVz
dCBub3QgYmUgdW5kZWZpbmVkYCkKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHJlZ2lv
biBpbiBFbmdsaXNoCisgICAgdmFyIHJlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVz
KFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0g
NjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJp
Y2EiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworICAg
IHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVW5pdGVkIFN0YXRlcyIpOworICAgIHNo
b3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhICYgSGVyemVnb3ZpbmEiKTsKKyAg
ICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIgKEJ1cm1hKSIpOworCisg
ICAgLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgcmVnaW9uIGluIFRyYWRpdGlvbmFsIENoaW5lc2UK
KyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5
cGU6ICdyZWdpb24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAg
IHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIuaLieS4gee+jua0siIpOworICAgIHNo
b3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAi6LKd6YeM5pavIik7CisgICAgc2hvdWxkQmUo
cmVnaW9uTmFtZXMub2YoJ1VTJyksICLnvo7lnIsiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1l
cy5vZignQkEnKSwgIuazouWjq+WwvOS6nuiIh+i1q+WhnuWTpee2ree0jSIpOworICAgIHNob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAi57es55S4Iik7CisKKyAgICByZWdpb25OYW1lcyA9
IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICdz
aG9ydCd9KTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCkKKyAgICAgICAgc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworICAgIHNob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFt
ZXMub2YoJ1VTJyksICJVUyIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAi
Qm9zbmlhIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIik7
CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAncmVnaW9uJywgc3R5bGU6ICduYXJyb3cnfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkg
Pj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFt
ZXJpY2EiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOwor
ICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVVMiKTsKKyAgICBzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCdNTScpLCAiTXlhbm1hciIpOworCisgICAgLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgbGFu
Z3VhZ2UgaW4gRW5nbGlzaAorICAgIHZhciBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZGUnKSwgIkdlcm1hbiIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNB
JyksICJDYW5hZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAm
JiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVz
Lm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworICAgIGVsc2UKKyAgICAg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hp
bmVzZSIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJBbWVyaWNh
biBFbmdsaXNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNo
aW5lc2UgKFRhaXdhbikiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdl
IGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlz
cGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIHNob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aCcpLCAi5Lit5paHIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZGUnKSwgIuW+t+aWhyIpOworCisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3Bs
YXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3Nob3J0J30pOworICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKKyAgICBzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2VybWFuIik7CisgICAgc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignZnItQ0EnKSwgIkNhbmFkaWFuIEZyZW5jaCIpOworICAgIGlmICgkdm0uaWN1
VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgICAgIHNob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7
CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50Jyks
ICJUcmFkaXRpb25hbCBDaGluZXNlIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
ZW4tVVMnKSwgIlVTIEVuZ2xpc2giKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6
aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIpOworCisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ25hcnJv
dyd9KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7Cisg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworICAgIHNob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKKyAgICBp
ZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAg
ICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFk
aXRpb25hbCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
emgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworICAgIHNob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworICAgIC8vIEdldCBkaXNw
bGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBFbmdsaXNoCisgICAgdmFyIHNjcmlwdE5hbWVzID0gbmV3
IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7CisgICAgLy8gR2V0
IHNjcmlwdCBuYW1lcworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRp
biIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKKyAg
ICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworICAgIC8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBUcmFkaXRpb25hbCBDaGluZXNlCisgICAg
c2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAn
c2NyaXB0J30pOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICLmi4nkuIHm
lociKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAi6Zi/5ouJ5Lyv5paH
Iik7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIueJh+WBh+WQjSIpOwor
CisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTog
J3NjcmlwdCcsIHN0eWxlOiAnc2hvcnQnfSk7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2Yo
J0xhdG4nKSwgIkxhdGluIik7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwg
IkFyYWJpYyIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2Fu
YSIpOworCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7
dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnbmFycm93J30pOworICAgIHNob3VsZEJlKHNjcmlwdE5h
bWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdB
cmFiJyksICJBcmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAi
S2F0YWthbmEiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUg
aW4gRW5nbGlzaAorICAgIHZhciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVz
KFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKKyAgICAvLyBHZXQgY3VycmVuY3kgbmFtZXMK
KyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIlVTIERvbGxhciIpOworICAg
IHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAiRXVybyIpOworICAgIHNob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiTmV3IFRhaXdhbiBEb2xsYXIiKTsKKyAgICBzaG91
bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIkNoaW5lc2UgWXVhbiIpOworICAgIHNob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiSmFwYW5lc2UgWWVuIik7CisKKyAgICAvLyBH
ZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UK
KyAgICBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7
dHlwZTogJ2N1cnJlbmN5J30pOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcp
LCAi576O5YWDIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLmrZDl
hYMiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIuaWsOWPsOW5oyIp
OworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAi5Lq65rCR5bmjIik7Cisg
ICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICLml6XlnJMiKTsKKworICAgIC8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAor
ICAgIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTog
J2N1cnJlbmN5Jywgc3R5bGU6ICdzaG9ydCcgfSk7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignVVNEJyksICIkIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyks
ICLigqwiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIk5UJCIpOwor
ICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiQ07CpSIpOworICAgIHNob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKKworICAgIC8vIEdldCBkaXNwbGF5
IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBuYXJyb3cKKyAgICBjdXJyZW5j
eU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeScs
IHN0eWxlOiAnbmFycm93JyB9KTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0Qn
KSwgIiQiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuKCrCIpOwor
ICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiJCIpOworICAgIHNob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5h
bWVzLm9mKCdKUFknKSwgIsKlIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBa
JyksICJKUFoiKTsgLy8gRmFsbGJhY2sgY29kZQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5
KGN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxl
IjoibmFycm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJjb2RlIn1gKTsKKworICAg
IGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1
cnJlbmN5Jywgc3R5bGU6ICduYXJyb3cnLCBmYWxsYmFjazogJ25vbmUnIH0pOworICAgIHNob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWicpLCB1bmRlZmluZWQpOyAvLyBGYWxsYmFjayBub25l
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlv
bnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3ki
LCJmYWxsYmFjayI6Im5vbmUifWApOworCisgICAgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsKKyAgICBzaG91bGRCZShyZWdpb25O
YW1lcy5vZignOTk5JyksICI5OTkiKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdp
b25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25n
IiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoiY29kZSJ9YCk7CisKKyAgICByZWdpb25OYW1l
cyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgZmFsbGJh
Y2s6J25vbmUnfSk7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCB1bmRlZmlu
ZWQpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0
aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwi
ZmFsbGJhY2siOiJub25lIn1gKTsKKworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ2VuLUFBJyksICJlbi1BQSIpOworICAgIHZhciBvYmplY3QgPSB7CisgICAg
ICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICdlbi1BQSc7CisgICAgICAgIH0K
KyAgICB9OworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgb2JqZWN0KTsK
KworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ2xhbmd1YWdlJywgZmFsbGJhY2s6ICdub25lJ30pOworICAgIHNob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2VuLUFBJyksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1l
cy5vZihvYmplY3QpLCB1bmRlZmluZWQpOworCisgICAgc2hvdWxkQmUoSW50bC5EaXNwbGF5TmFt
ZXMucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10sIGBJbnRsLkRpc3BsYXlOYW1lc2ApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExv
Y2FsZXNPZigiZW4iKSksIGBbImVuIl1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShJ
bnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YoImphLUpQIikpLCBgWyJqYS1KUCJd
YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9y
dGVkTG9jYWxlc09mKHsgbGVuZ3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAzOiAnZGUnIH0pKSwg
J1siZXMiLCJlbiIsImRlIl0nKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBJbnRsLkRpc3BsYXlO
YW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YoIiIpLCBgUmFuZ2VFcnJvcjogaW52YWxpZCBsYW5ndWFn
ZSB0YWc6IGApCisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIEludGwuRGlzcGxh
eU5hbWVzLnByb3RvdHlwZS5vZi5jYWxsKHt9KTsKKyAgICB9LCBgVHlwZUVycm9yOiBJbnRsLkRp
c3BsYXlOYW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2Jq
ZWN0IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzYCk7CisKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgICAgIEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMuY2FsbCh7fSk7CisgICAgfSwgYFR5cGVFcnJvcjogSW50bC5EaXNwbGF5TmFtZXMucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBEaXNwbGF5TmFtZXNgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50
bC1wYXJzZS11bmljb2RlLXN1YnRhZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA4N2NlZjRmMjhkMzQyNmQ1
N2FiMzkwY2U2NTJlODg0Zjc3MDY0OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzCkBAIC0wLDAgKzEsOTIgQEAKKy8vQCBydW5E
ZWZhdWx0KCItLXVzZUludGxEaXNwbGF5TmFtZXM9MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFs
c2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVy
cm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVz
c2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9y
KX1gKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjEpIHsKKyAgICB2YXIgcmVnaW9u
TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
cmVnaW9uTmFtZXMub2YoIi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lv
biBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiMCIpLCBg
UmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIHNob3Vs
ZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCIwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lvbk5h
bWVzLm9mKCIwMDAwIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3Vi
dGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoImEiKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiByZWdpb25OYW1lcy5vZigiYWFhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSByZWdpb24gc3VidGFnYCk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisg
ICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCI0MTkiKSwgYExhdGluIEFtZXJpY2FgKTsK
KyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZigiSlAiKSwgYEphcGFuYCk7CisgICAgc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoIlVTIiksIGBVbml0ZWQgU3RhdGVzYCk7CisKKyAgICB2YXIgbGFu
Z3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3Vh
Z2UnfSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiIiksIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93
KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5v
ZigiLS0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7Cisg
ICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiZW4tIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoImVuLVVTIiksIGBBbWVyaWNhbiBFbmdsaXNoYCk7CisgICAgc2hvdWxkVGhyb3co
KCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiZW5fVVMiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigiZW4t
dXMiKSwgYEFtZXJpY2FuIEVuZ2xpc2hgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFn
ZU5hbWVzLm9mKCJyb290IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFn
ZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInJvb3QtVVMi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgaWYg
KCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoImVzLTQxOSIpLCBgTGF0aW4gQW1lcmljYW4gU3BhbmlzaGApOworICAgIGlmICgkdm0uaWN1
VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpIHsKKyAgICAgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCBgQ2hpbmVzZSwgVHJhZGl0aW9uYWxg
KTsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFucy1ISycpLCBgQ2hp
bmVzZSwgU2ltcGxpZmllZCAoSG9uZyBLb25nKWApOworICAgIH0gZWxzZSB7CisgICAgICAgIHNo
b3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgYFRyYWRpdGlvbmFsIENoaW5lc2Vg
KTsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFucy1ISycpLCBgU2lt
cGxpZmllZCBDaGluZXNlIChIb25nIEtvbmcpYCk7CisgICAgfQorICAgIHNob3VsZFRocm93KCgp
ID0+IGxhbmd1YWdlTmFtZXMub2YoIkhhbnQiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIGxhbmd1YWdlIGlkYCk7IC8vIFNjcmlwdCBvbmx5CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignc3ItTGF0bicpLCBgU2VyYmlhbiAoTGF0aW4pYCk7IC8vIExhbmd1YWdlLVNjcmlw
dAorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NyLUN5cmwnKSwgYFNlcmJpYW4gKEN5
cmlsbGljKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5n
dWFnZU5hbWVzLm9mKCJ6aC1ISy1IYW5zIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NsLXJvemFq
JyksIGBTbG92ZW5pYW4gKFJlc2lhbilgKTsgLy8gTGFuZ3VhZ2UtVmFyaWFudAorICAgIHNob3Vs
ZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsX3JvemFqIiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxh
bmd1YWdlTmFtZXMub2YoInNsLXJvemFqLUN5cmwiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1l
cy5vZigic2wtcm96YWotIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFn
ZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLV9yb3ph
aiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBz
aG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1DeXJsLSIpLCBgUmFuZ2VFcnJv
cjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiBsYW5ndWFnZU5hbWVzLm9mKCItc2wtQ3lybC0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignaHkt
TGF0bi1JVC1hcmV2ZWxhJyksIGBBcm1lbmlhbiAoTGF0aW4sIEl0YWx5LCBFYXN0ZXJuIEFybWVu
aWFuKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtUmVnaW9uLVZhcmlhbnQKKyAgICBzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdoeS1MYXRuLUlUJyksIGBBcm1lbmlhbiAoTGF0aW4sIEl0YWx5KWAp
OyAvLyBMYW5ndWFnZS1TY3JpcHQtUmVnaW9uCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignaHktTGF0bi1hcmV2ZWxhJyksIGBBcm1lbmlhbiAoTGF0aW4sIEVhc3Rlcm4gQXJtZW5pYW4p
YCk7IC8vIExhbmd1YWdlLVNjcmlwdC1WYXJpYW50CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFu
Z3VhZ2VOYW1lcy5vZigiaHktTGF0bi1JVFotYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1l
bnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFn
ZU5hbWVzLm9mKCJoeS1MYXRuLTAwLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1l
cy5vZigiaHktTGF0bi1hcmV2ZWxhenp6enp6enp6enoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50
IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VO
YW1lcy5vZigiaHktTGF0bi1hcmV2ZWxhenp6enp6enp6enoiKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3Vh
Z2VOYW1lcy5vZigiaHl6enp6enp6enotTGF0bi1hcmV2ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworCisgICAgdmFyIHNjcmlwdE5hbWVzID0gbmV3
IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMg
bm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVz
Lm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIkxhdG4wIiksIGBSYW5nZUVy
cm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3co
KCkgPT4gc2NyaXB0TmFtZXMub2YoIkxhbjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHNjcmlwdCBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBzY3JpcHROYW1lcy5v
ZigiTGFuIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7
CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoIkxhdG4iKSwgYExhdGluYCk7CisgICAgc2hv
dWxkQmUoc2NyaXB0TmFtZXMub2YoImxhdG4iKSwgYExhdGluYCk7IC8vIENhbm9uaWNhbGl6YXRp
b24gY2FuIG1ha2UgaXQgd29yay4KKworICAgIHZhciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwu
RGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiBjdXJyZW5jeU5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGVgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBj
dXJyZW5jeU5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxs
LWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lO
YW1lcy5vZigiYWIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVk
IGN1cnJlbmN5IGNvZGVgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9m
KCJqcHl4IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJy
ZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigianAw
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBj
b2RlYCk7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZigianB5IiksIGBKYXBhbmVzZSBZ
ZW5gKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCJKUFkiKSwgYEphcGFuZXNlIFll
bmApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNm
NGUxNjRiOTRkZjEuLmU2MzcyZmY5MjgzYmNmYjU0YmFmYTZkOGI1YjE2ZTRjYWE4ZTMzYzggMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTI2LDYgKzI2LDkgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRp
bWVGb3JtYXQtZGF5UGVyaW9kCiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZvcm1hdFJhbmdl
CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZyYWN0aW9uYWxTZWNvbmREaWdpdHMKKyAgICAj
IEN1cnJlbnRseSwgdGVzdDI2MiBoYXMgYSBidWcgd2l0aCBJbnRsLkRpc3BsYXlOYW1lcywgYW5k
IGV4cG9zaW5nIGl0IGNhbiBjYXVzZSBtYW55IGZhaWx1cmVzIGluIHZhcmlvdXMgSW50bCB0ZXN0
cy4KKyAgICAjIFdlIHNob3VsZCBlbmFibGUgaXQgYWZ0ZXIgZW5zdXJpbmcgdGVzdDI2MiBpcyBm
aXhlZC4KKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Rlc3QyNjIvaXNzdWVzLzI2ODIK
ICAgICAtIEludGwuRGlzcGxheU5hbWVzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKICAgICAtIElu
dGwuTnVtYmVyRm9ybWF0LXVuaWZpZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403261</attachid>
            <date>2020-06-30 21:43:22 -0700</date>
            <delta_ts>2020-06-30 21:43:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209779-20200630214321.patch</filename>
            <type>text/plain</type>
            <size>90804</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzEyOGNlY2RiYzY4YTMwYTFhYjkxNzc1NzAzNDVmYzAyZDcxN2VmLi41N2IzZTRjNDY4ZGM4NDJj
ZjE4NGNjN2M4ODEzNjQ0YTM5Mzg4MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBJbnRsLkRpc3BsYXlOYW1lcyBiZWhpbmQgdXNlSW50bERpc3BsYXlOYW1lcz0xIGZs
YWcuCisgICAgICAgIEludGwuRGlzcGxheU5hbWVzIGNhbiBvZmZlciByZWFkYWJsZSAiZGlzcGxh
eS1uYW1lIiBmb3IgSUNVIGxhbmd1YWdlLCBzY3JpcHQsIHJlZ2lvbiwgY3VycmVuY3kgY29kZXMu
CisgICAgICAgIEZvciBleGFtcGxlLCBpdCBjYW4gb2ZmZXIgIlVuaXRlZCBTdGF0ZXMiIHN0cmlu
ZyBmb3IgIlVTIiByZWdpb24gY29kZS4KKyAgICAgICAgV2UgdXNlIElDVSBVTG9jYWxlRGlzcGxh
eU5hbWVzIHRvIGltcGxlbWVudCBpdCwgZXhjZXB0IGZvciBjdXJyZW5jeSBzaW5jZSBVTG9jYWxl
RGlzcGxheU5hbWVzIGlzIG5vdCBzdXBwb3J0aW5nCisgICAgICAgIGN1cnJlbmN5IGNvcnJlY3Rs
eTogaXQgaWdub3JlcyAibG9uZyIsICJzaG9ydCIsIGFuZCAibmFycm93IiBzdHlsZSBjb25maWd1
cmF0aW9ucy4gV2UgbmVlZCB0byBjYWxsIHVjdXJyX2dldE5hbWUKKyAgICAgICAgZGlyZWN0bHku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGFkZHMgdW5pY29kZS1sYW5ndWFn
ZS1pZCBwYXJzaW5nIGluIEludGxMb2NhbGUuY3BwIHNvIHRoYXQgd2UgY2FuIHZhbGlkYXRlIGxh
bmd1YWdlIGlkCisgICAgICAgIHdoZW4gaXQgaXMgcGFzc2VkIHRvIGBJbnRsLkRpc3BsYXlOYW1l
cyNvZmAgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
czo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6Om9mIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6
OmNhbGxJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZTo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZik6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjppc1VuaWNvZGVTY3JpcHRTdWJ0YWcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
Ojppc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVNjcmlw
dFN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVJlZ2lvblN1YnRhZyk6CisgICAgICAg
IChKU0M6OmlzVW5pY29kZVZhcmlhbnRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVM
YW5ndWFnZUlkKToKKyAgICAgICAgKEpTQzo6aXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6aW50bERpc3BsYXlO
YW1lc0F2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkaXNwbGF5TmFtZXNT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjAtMDYtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbmFibGUgdGhlIHN1cHBvcnQgb2YgRlVMTFNDUkVFTl9BUEkgaW4gV2ViS2l0VGVz
dFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCA4OTFjZTMxNTI1NTI4YWZlNmJkNDI5ZWFjZDk5NTkwOWE5NjZkOTkwLi44
OGI4ZTRkOTQyOTQyYjdhZThmZTQ3NDIwYWM4OWVmOGQ2Nzg0OTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIwLTA2LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg6CisKIDIwMjAtMDYtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIFtHVEtdIFJ1bkxvb3A6OlRpbWVyOjppc0FjdGl2ZSgpIGlzIGluY29y
cmVjdCBmb3IgdGltZXJzIHdoaWxlIHRoZXkgYXJlIGZpcmluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGMyNTkxMDg2ZWJhYzcyMjA2NmE4NjQ0NWZhYzIxMWRlZjgwMzA1
ZTAuLmJkNWEwYWIxMDYxNmE0MDJkYTIwNDhkNDM4M2Q3ZjM2Zjg4YTVlYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwLDYgKzcwLDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWNmZDVhOTBiYzg1YmM3
MDI1MWNmMGRkZjE0MTQ1ZGU5ZWNmMDcuLmQwZDhkZmRjNDhhMzVlODIxN2Y3YzAzNDFjMGZlMDNi
YjQzZTA0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMzgsNiArMTM4LDggQEAgJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxMb2Nh
bGVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA3OWNkZTRlZTUwN2UxM2Y2ZmY3ZmE3ODAwZGM2
NDVjYmY4OTQxYzY3Li4yYmRmNWIyYzgyMmE2ZDllN2I2ZjQ1NmJiMGE5NjE2M2VlMWQ2ZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC0yNyw2ICsyNyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTBmOWZlYzUxZGNlNDg2
ODZmZjg3NDViZWFhNGI1YjVkNWIxMDMzZC4uYzFmZjVlNjI0NzM1MDY4Y2ZmNGMxMmU0Y2Y0OGNk
YzRmYTBhNjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTE1OSw2ICsxNTksOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bENvbGxh
dG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5s
dXQuaCBcCiAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggXAorICAgIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUubHV0LmggXAogICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0LmggXAogICAgIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmODUxYzExNzJj
NmUwNGVhYjgzODhjMjI4MGRhNTA4NDNhNjNiZGQuLmMwNjYzZDdmNjBmOTlkZjFkNDFkZWZlY2Rj
NTZlOWNlNTQ5MmNjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE5LDYg
KzE4MTksOSBAQAogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpT
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRTM1
MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2
IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUz
QzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovOyB9OworCQlFMzUz
QzExRTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExODI0QUE0
Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUz
NTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExQjI0QUE0
Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovOyB9OwogCQlFMzU0
NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclNuaXBwZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25p
cHBldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNTVEMzhGMjI0NDY4NzcwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RDM4RDIyNDQ2ODZCMDA4
RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xODI4LDYgKzE4MzEsOCBAQAogCQlFMzVDQTE1NjFEQkMz
QTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIw
MDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkx
QjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzZCNzY3MDIyRjhENjE5
MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdh
c21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNDk4NSw2ICs0OTkwLDEyIEBACiAJCUUzNEY5MzBCMjMyMkQ4ODEwMDJC
OERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEY5
MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyogSW50bERpc3BsYXlO
YW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxh
eU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTcyNEFBNENC
NjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExOTI0QUE0Q0I2
MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2
MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0
ZXJTbmlwcGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxE
T01HZXR0ZXJTbmlwcGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVEMzhE
MjI0NDY4NkIwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEds
b2JhbEV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMDEsNiAr
NTAxMiw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExp
bmtUaW1lQ29uc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGlua1RpbWVDb25zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVG
MzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzOTI0QUE2MjEyMDBD
OTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI0ODAxMjNFOTU3MzgwMEU0QTY2RSAvKiBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkI3NjZFMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9T
UkVudHJ5UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzY3LDYgKzY3ODAsOCBAQAogCQkJCUExODE5
M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oICovLAogCQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIy
IC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlFMzY1RjMzODI0
QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLywKIAkJ
CQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oICovLAogCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5jcHAgKi8sCkBAIC03MjYyLDYgKzcyNzcsMTIgQEAKIAkJCQlBMTU4N0Q2QTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJ
CQlBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcCAqLywKIAkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmggKi8sCisJCQkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXMuY3BwICovLAorCQkJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzLmggKi8sCisJCQkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTM1M0MxMTgyNEFBNENCNjAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNTNDMTE5MjRB
QTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLywKKwkJCQlF
MzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICov
LAogCQkJCUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLywKIAkJ
CQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovLAogCQkJCUEzQUZG
OTJGMjQ1QTNDRkIwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwICovLApAQCAt
OTc1Miw2ICs5NzczLDExIEBACiAJCQkJQTE1ODdENzUxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdE
NzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTFEMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzEx
RTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMjEyNEFBNENCNzAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNjVGMzNCMjRBQTYyM0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEz
NGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4xYjRmYmY3Y2NhYzQ3ZTllMGQ4Mjg0
ZDY2MzU4MTgxMjFjYWUwZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTQs
NiArODE0LDkgQEAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKK3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lcy5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRs
TG9jYWxlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0lu
dGxMb2NhbGVQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRlYmFj
OWFkYmEyNTI2NmJhLi4zYTQ5N2UwNzRhOTBlMGIxMTk1ODZiZmEwOGQ0ODNlYjMwOTQyMzMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERh
dGUpIFwKICAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3JvKERpc3BsYXlOYW1l
cykgXAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFj
cm8oRnVuY3Rpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhkN2E0YWY5MmU4ODgxNGRkZjY5ZGE4NjY0
NDNkY2M5MDIxMzZhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCkBAIC0wLDAgKzEsMzczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKwor
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERp
c3BsYXlOYW1lcykgfTsKKworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIElu
dGxEaXNwbGF5TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5h
bWVzOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNw
bGF5TmFtZXMKK3ZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHJlcXVlc3RlZExv
Y2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxlcyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTT2JqZWN0KiBv
cHRpb25zOworICAgIGlmIChvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3B0
aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRp
b25zVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICAvLyBEb2VzIG5vdCBzZXQgZWl0aGVy
IG9mICJjYSIgb3IgIm51Ii4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1pbnRsLWRpc3BsYXluYW1lcy1jb25zdHJ1Y3RvcgorICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsKKworICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmlu
Z09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1h
dGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBl
aXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQoImxvY2FsZU1hdGNo
ZXIiX3MsIG1hdGNoZXIpOworCisKKyAgICBhdXRvIGxvY2FsZURhdGEgPSBbXShjb25zdCBTdHJp
bmcmLCBzaXplX3QpIC0+IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFp
bGFibGVMb2NhbGVzKCk7CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9i
amVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBudWxscHRyLCAw
LCBsb2NhbGVEYXRhKTsKKworICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsK
KyAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3Ry
aW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJuYXJyb3ciLCAic2hvcnQiLCAibG9uZyIgfSwg
InN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIi
LCAibG9uZyIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
aWYgKHN0eWxlU3RyaW5nID09ICJuYXJyb3ciX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6
TmFycm93OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAg
bV9zdHlsZSA9IFN0eWxlOjpTaG9ydDsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAibG9u
ZyJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpMb25nOworICAgIGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJp
bmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7
ICJsYW5ndWFnZSIsICJyZWdpb24iLCAic2NyaXB0IiwgImN1cnJlbmN5IiB9LCAidHlwZSBtdXN0
IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3Vy
cmVuY3lcIiIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgaWYgKHR5cGVTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodHlwZVN0cmluZyA9PSAibGFuZ3VhZ2Ui
X3MpCisgICAgICAgIG1fdHlwZSA9IFR5cGU6Okxhbmd1YWdlOworICAgIGVsc2UgaWYgKHR5cGVT
dHJpbmcgPT0gInJlZ2lvbiJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmVnaW9uOworICAg
IGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInNjcmlwdCJfcykKKyAgICAgICAgbV90eXBlID0gVHlw
ZTo6U2NyaXB0OworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQorICAg
ICAgICBtX3R5cGUgPSBUeXBlOjpDdXJyZW5jeTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgU3RyaW5nIGZhbGxiYWNrU3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJm
YWxsYmFjayIpLCB7ICJjb2RlIiwgIm5vbmUiIH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhlciBc
ImNvZGVcIiBvciBcIm5vbmVcIiIsICJjb2RlIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gImNvZGUiX3MpCisgICAg
ICAgIG1fZmFsbGJhY2sgPSBGYWxsYmFjazo6Q29kZTsKKyAgICBlbHNlIGlmIChmYWxsYmFja1N0
cmluZyA9PSAibm9uZSJfcykKKyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpOb25lOwor
ICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyNpZiBIQVZFKElDVV9V
X0xPQ0FMRV9ESVNQTEFZX05BTUVTKQorICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworCisgICAgVURpc3BsYXlDb250ZXh0IGNvbnRleHRzW10gPSB7CisgICAgICAgIC8vIGVu
X0dCIGRpc3BsYXlzIGFzICdFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSknIChTdGFuZGFyZCBOYW1l
cykgb3IgJ0JyaXRpc2ggRW5nbGlzaCcgKERpYWxlY3QgTmFtZXMpLgorICAgICAgICAvLyBXZSB1
c2UgRGlhbGVjdCBOYW1lcyBoZXJlLCBhbGlnbmVkIHRvIHRoZSBleGFtcGxlcyBpbiB0aGUgc3Bl
YyBkcmFmdCBhbmQgVjgncyBiZWhhdmlvci4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMjbGFuZ3VhZ2UtZGlzcGxheS1uYW1lcwor
ICAgICAgICBVRElTUENUWF9ESUFMRUNUX05BTUVTLAorCisgICAgICAgIC8vIENhcGl0YWlsaXph
dGlvbiBtb2RlIGNhbiBiZSBwaWNrZWQgZnJvbSBzZXZlcmFsIG9wdGlvbnMuIFBvc3NpYmx5IGVp
dGhlciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9OT05FIG9yIFVESVNQQ1RYX0NBUElUQUxJWkFU
SU9OX0ZPUl9TVEFOREFMT05FIGlzCisgICAgICAgIC8vIHByZWZlcmFibGUgaW4gSW50bC5EaXNw
bGF5TmFtZXMuIFdlIHVzZSBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBi
ZWNhdXNlIGl0IG1ha2VzIHN0YW5kYWxvbmUgZGF0ZSBmb3JtYXQgYmV0dGVyIChmciAiSnVpbGxl
dCAyMDA4IiBpbiBJQ1UgdGVzdCBzdWl0ZXMpLAorICAgICAgICAvLyBhbmQgRGlzcGxheU5hbWVz
IHdpbGwgc3VwcG9ydCBkYXRlIGZvcm1hdHMgdG9vLgorICAgICAgICBVRElTUENUWF9DQVBJVEFM
SVpBVElPTl9GT1JfU1RBTkRBTE9ORSwKKworICAgICAgICAvLyBOYXJyb3cgYmVjb21lcyBVRElT
UENUWF9MRU5HVEhfU0hPUlQuIEJ1dCBpbiBjdXJyZW5jeSBjYXNlLCB3ZSBoYW5kbGUgZGlmZmVy
ZW50bHkgaW5zdGVhZCBvZiB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzLgorICAgICAgICBtX3N0
eWxlID09IFN0eWxlOjpMb25nID8gVURJU1BDVFhfTEVOR1RIX0ZVTEwgOiBVRElTUENUWF9MRU5H
VEhfU0hPUlQsCisKKyAgICAgICAgLy8gQWx3YXlzIGRpc2FibGUgSUNVIFNVQlNUSVRVVEUgc2lu
Y2UgaXQgZG9lcyBub3QgbWF0Y2ggYWdhaW5zdCB3aGF0IHRoZSBzcGVjIGRlZmluZXMuIElDVSBo
YXMgc29tZSBzcGVjaWFsIHN1YnN0aXR1dGUgcnVsZXMsIGZvciBleGFtcGxlLCBsYW5ndWFnZSAi
ZW4tQUEiCisgICAgICAgIC8vIHJldHVybnMgIkVuZ2xpc2ggKEFBKSIgKHdoaWxlIEFBIGNvdW50
cnkgY29kZSBpcyBub3QgZGVmaW5lZCksIGJ1dCB3ZSB3b3VsZCBsaWtlIHRvIHJldHVybiBlaXRo
ZXIgaW5wdXQgdmFsdWUgb3IgdW5kZWZpbmVkLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBoYXZlIElD
VSBzdWJzdGl0dXRlIHJ1bGVzLgorICAgICAgICBVRElTUENUWF9OT19TVUJTVElUVVRFLAorICAg
IH07CisgICAgbV9sb2NhbGVDU3RyaW5nID0gbV9sb2NhbGUudXRmOCgpOworICAgIG1fZGlzcGxh
eU5hbWVzID0gc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNw
bGF5TmFtZXNEZWxldGVyPih1bGRuX29wZW5Gb3JDb250ZXh0KG1fbG9jYWxlQ1N0cmluZy5kYXRh
KCksIGNvbnRleHRzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbnRleHRzKSwgJnN0YXR1cykpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVzIl9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIEludGwuRGlzcGxheU5hbWVzIHNpbmNl
IHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZlcnNpb24i
X3MpOworICAgIHJldHVybjsKKyNlbmRpZgorfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YK
K0pTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvbnN0Cit7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisj
aWYgSEFWRShJQ1VfVV9MT0NBTEVfRElTUExBWV9OQU1FUykKKyAgICBBU1NFUlQobV9kaXNwbGF5
TmFtZXMpOworICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBWZWN0b3I8
VUNoYXIsIDMyPiBidWZmZXI7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7CisgICAgICAgIC8vIFdlIGRv
IG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1cnJlbmN5Ii4gVGhpcyBpcyBi
ZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KKyAgICAgICAgLy8gICAgIDEuIElDVSBk
b2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8gVURJU1BDVFhfTEVOR1RIX1NI
T1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gICAgIDIuIFRoZXJlIGlzIG5v
IHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURpc3BsYXlOYW1lcyB3aGlsZSBj
dXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KKworICAgICAgICAvLyBDYW5vbmlj
YWxDb2RlRm9yRGlzcGxheU5hbWVzCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFtZXMKKyAg
ICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMgZmFsc2Us
IHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmICghaXNXZWxsRm9ybWVk
Q3VycmVuY3lDb2RlKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNv
ZGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoY29kZS5pc0FsbEFTQ0lJKCkpOworCisgICAgICAgIFVDdXJyTmFtZVN0eWxlIHN0eWxlID0g
VUNVUlJfTE9OR19OQU1FOworICAgICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKKyAgICAgICAgY2Fz
ZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICAgICAg
c3R5bGUgPSBVQ1VSUl9TWU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX05BUlJPV19TWU1C
T0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gNi4g
TGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBhcyBk
ZXNjcmliZWQgaW4gNi4xLgorICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW5jeVs0XSA9IHsKKyAg
ICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzBdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBl
cihjb2RlWzFdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzJdKSwKKyAgICAgICAg
ICAgIHUnXDAnCisgICAgICAgIH07CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgdWN1cnJfZ2V0
TmFtZSBpcyBzdGF0aWMgc3RyaW5nIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gZnJlZSB0aGUg
cmVzdWx0LgorICAgICAgICBpbnQzMl90IGxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IFVDaGFy
KiByZXN1bHQgPSB1Y3Vycl9nZXROYW1lKGN1cnJlbmN5LCBtX2xvY2FsZUNTdHJpbmcuZGF0YSgp
LCBzdHlsZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAg
IC8vIHVjdXJyX2dldE5hbWUgcmV0dXJucyBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUg
ZGlzcGxheS1uYW1lIGlzIG5vdCBmb3VuZC4gQnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlz
IHJldHVybmVkIGV2ZW4gaWYKKyAgICAgICAgLy8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFy
ZSB0aGUgc2FtZTogbmFycm93ICJVU0QiIGlzICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJO
SU5HIHNpbmNlIHNob3J0ICJVU0QiIGlzIGFsc28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCisgICAg
ICAgIC8vIHJlc3VsdCA9PSBjdXJyZW5jeSB0byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBm
YWlsZWQgdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRl
ciBjb21wYXJpc29uIGlzIGVuc3VyZWQgYnkKKyAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4K
KyAgICAgICAgLy8gPiBSZXR1cm5zIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicg
VUNoYXJzLiBJZiB0aGUgcmVzb3VyY2UgZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJl
bmN5JywgdGhlbiAnY3VycmVuY3knIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgICAgaWYgKHN0
YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCisg
ICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRl
ZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
cmVzdWx0LCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisg
ICAgYXV0byBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGUpIC0+IENTdHJpbmcgeworICAgICAgICBBU1NFUlQoY29kZS5pc0Fs
bEFTQ0lJKCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAg
Y2hhciogbXV0YWJsZURhdGEgPSByZXN1bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIC8v
IExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMg
ZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxl
RGF0YVtpbmRleF0gPSB0b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAg
ICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBl
ciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAg
ICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlw
dDogeworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIgaW4gY29kZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUg
c2Vjb25kLCB0aGlyZCBhbmQgZm91cnRoIGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2Us
IGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49
IDEpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJs
ZURhdGFbMF0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwg
cmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2lu
ZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAg
ICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0
Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFnZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJy
b3IgZXhjZXB0aW9uCisgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgewor
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICB9CisgICAgICAgIGF1dG8gbGFuZ3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxh
eU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFn
ZURpc3BsYXlOYW1lIHNpbmNlIGl0IGlzIG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1
YWdlIiB0eXBlLiBJdCByZXR1cm5zICJlbi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBv
ZiAiQW1lcmljYW4gRW5nbGlzaCIuCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbih1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwg
bGFuZ3VhZ2UuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBUeXBlOjpSZWdpb246IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRo
ZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4
Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBp
cyBub3QgYSByZWdpb24gc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIH0KKyAgICAgICAgYXV0byByZWdpb24gPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5h
bWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbih1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgcmVn
aW9uLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlw
ZTo6U2NyaXB0OiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5p
Y29kZV9zY3JpcHRfc3VidGFnIHByb2R1Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRp
b24KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsKKyAgICAgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90
IGEgc2NyaXB0IHN1YnRhZyJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9
CisgICAgICAgIGF1dG8gc2NyaXB0ID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyht
X3R5cGUsIGNvZGUpOworICAgICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24odWxkbl9zY3JpcHREaXNwbGF5TmFtZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHNjcmlwdC5k
YXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1
cnJlbmN5OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICAvLyB1bGRuX2xvY2Fs
ZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lvbkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNw
bGF5TmFtZSByZXR1cm4gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5h
bWUgaXMgbm90IGZvdW5kLgorICAgICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBp
ZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2
YWx1ZS4KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisg
ICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRl
ZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zKTsKKyAg
ICB9CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShjb2RlVmFsdWUpOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJbnRsLkRpc3BsYXlOYW1lcyBzaW5jZSB1
c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9z
KTsKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMKK0pTT2JqZWN0KiBJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHR5cGVTdHJp
bmcobV90eXBlKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImZhbGxiYWNrIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tT
dHJpbmcobV9mYWxsYmFjaykpKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRl
cmFsIEludGxEaXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQoreworICAgIHN3
aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgIHJldHVybiAi
bmFycm93Il9zOworICAgIGNhc2UgU3R5bGU6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0
Il9zOworICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOworfQorCitBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhU
eXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFn
ZToKKyAgICAgICAgcmV0dXJuICJsYW5ndWFnZSJfczsKKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjoK
KyAgICAgICAgcmV0dXJuICJyZWdpb24iX3M7CisgICAgY2FzZSBUeXBlOjpTY3JpcHQ6CisgICAg
ICAgIHJldHVybiAic2NyaXB0Il9zOworICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAg
IHJldHVybiAiY3VycmVuY3kiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxE
aXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQoreworICAgIHN3
aXRjaCAoZmFsbGJhY2spIHsKKyAgICBjYXNlIEZhbGxiYWNrOjpDb2RlOgorICAgICAgICByZXR1
cm4gImNvZGUiX3M7CisgICAgY2FzZSBGYWxsYmFjazo6Tm9uZToKKyAgICAgICAgcmV0dXJuICJu
b25lIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3
NWJhY2E4MGNlYmM2M2ZmMmRjZmFhYzYxN2Q3YzkxOThmZDU3ZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKQEAgLTAs
MCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VsZG5hbWVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvaWN1L0lDVUhlbHBlcnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiAhZGVmaW5lZChI
QVZFX0lDVV9VX0xPQ0FMRV9ESVNQTEFZX05BTUVTKQorLy8gV2UgbmVlZCA2MSBvciBsYXRlciBz
aW5jZSBwYXJ0IG9mIGltcGxlbWVudGF0aW9uIHVzZXMgVUNVUlJfTkFSUk9XX1NZTUJPTF9OQU1F
LgorI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDYxCisjZGVmaW5lIEhBVkVfSUNVX1Vf
TE9DQUxFX0RJU1BMQVlfTkFNRVMgMQorI2VuZGlmCisjZW5kaWYKKworY2xhc3MgSW50bERpc3Bs
YXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1
c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+
KGNlbGwpLT5JbnRsRGlzcGxheU5hbWVzOjp+SW50bERpc3BsYXlOYW1lcygpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHZtLmludGxEaXNwbGF5TmFtZXNTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0
YXRpYyBJbnRsRGlzcGxheU5hbWVzKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplRGlzcGxheU5h
bWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKTsKKworICAgIEpTVmFsdWUgb2YoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKSBjb25z
dDsKKyAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lcyhWTSYsIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50
OF90IHsgTmFycm93LCBTaG9ydCwgTG9uZyB9OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4
X3QgeyBMYW5ndWFnZSwgUmVnaW9uLCBTY3JpcHQsIEN1cnJlbmN5IH07CisgICAgZW51bSBjbGFz
cyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBOb25lIH07CisKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5cGVT
dHJpbmcoVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBmYWxsYmFja1N0cmluZyhGYWxs
YmFjayk7CisKKyAgICB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlciA9IElDVURlbGV0
ZXI8dWxkbl9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMs
IFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPiBtX2Rpc3BsYXlOYW1lczsKKyAgICBTdHJpbmcg
bV9sb2NhbGU7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSBpdCBvbmx5IHdoZW4gbV90
eXBlIGlzIEN1cnJlbmN5LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTM3NzMKKyAgICBDU3RyaW5nIG1fbG9jYWxlQ1N0cmluZzsKKyAgICBTdHlsZSBt
X3N0eWxlIHsgU3R5bGU6OkxvbmcgfTsKKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Okxhbmd1YWdl
IH07CisgICAgRmFsbGJhY2sgbV9mYWxsYmFjayB7IEZhbGxiYWNrOjpDb2RlIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2
ZmJmZjNkOTg5ZmIyNGJlNjM5MDgzMzg0MTYyY2EwZmIzOTExZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3IuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
SW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVj
dG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlO
YW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmRpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFi
bGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CitAZW5kCisqLworCitJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBhdXRv
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3BsYXlO
YW1lc1Byb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUq
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSwgY2FsbEludGxEaXNwbGF5TmFtZXMsIGNvbnN0cnVjdEludGxEaXNwbGF5TmFt
ZXMpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3Rv
dHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkRpc3BsYXlOYW1lcyJfcywg
TmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRp
c3BsYXlOYW1lc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGRpc3BsYXlOYW1lc1Byb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVj
dChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5l
d1RhcmdldCA9PSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3Qt
PmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9u
UmVhbG0odm0sIG5ld1RhcmdldCktPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSW50bERpc3BsYXlOYW1lcyogZGlz
cGxheU5hbWVzID0gSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChkaXNwbGF5TmFtZXMpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGRpc3Bs
YXlOYW1lcy0+aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGlzcGxheU5hbWVzKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1JbnRsLkRpc3BsYXlOYW1lcworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJEaXNwbGF5TmFtZXMiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxl
c09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVk
TG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisgICAgLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5
TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxl
cyBiZSAlRGlzcGxheU5hbWVzJS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxl
TG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2Fs
aXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2Nh
bGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2YWls
YWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7
Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ0NGFlMWU4YTgyNWI4NmY3YTdjOGE5NmM1MDFiNDRmYmNhZDg4YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTsKKwor
Y2xhc3MgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
cHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYThlYzgwZjQyNTM1ZmZkNjBjOTM5
OTc5NDdhMjAyZGEzZmIzMTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5EaXNwbGF5TmFtZXMi
LCAmQmFzZTo6c19pbmZvLCAmZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSkgfTsKKworLyogU291
cmNlIGZvciBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGlzcGxheU5h
bWVzUHJvdG90eXBlVGFibGUKKyAgb2YgICAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlRnVuY09mICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29s
dmVkT3B0aW9ucyAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMg
ICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6Oklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlw
ZS5vZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMgPSBq
c0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2Yg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlz
cGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGRpc3BsYXlOYW1lcy0+b2YoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFt
ZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMg
PSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIERpc3BsYXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMtPnJlc29sdmVkT3B0aW9ucyhnbG9i
YWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2N2U1ODNhNjc1NzQ0ZTQxNWE0ODVlODNlZjFmMzU4NmU5YjEyNDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9j
YWxlLmNwcAppbmRleCA4MGU2NGYxYWIxNzk3MTM4YjI1MmI4ZmNkMTA3MWQ3NmJkZDQ2MjlhLi45
NWI2YzgzZjczOWVlNDQzYjVmYTgwMTNmNTkwY2MzZTIxYThmZTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApAQCAtMTkxLDI3ICsxOTEsNiBAQCBT
dHJpbmcgSW50bExvY2FsZTo6a2V5d29yZFZhbHVlKEFTQ0lJTGl0ZXJhbCBrZXksIGJvb2wgaXNC
b29sZWFuKSBjb25zdAogICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZyh2YWx1ZSkgOiBlbXB0eVN0
cmluZygpOwogfQogCi0vLyB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIsM30gfCBh
bHBoYXs1LDh9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIHJl
dHVybiBsZW5ndGggPj0gMiAmJiBsZW5ndGggPD0gOCAmJiBsZW5ndGggIT0gNCAmJiBzdHJpbmcu
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Ci19Ci0KLS8vIHVuaWNvZGVf
c2NyaXB0X3N1YnRhZyA9IGFscGhhezR9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVNjcmlwdFN1
YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgpID09
IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwotfQot
Ci0vLyB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgPSBhbHBoYXsyfSB8IGRpZ2l0ezN9IDsKLXN0YXRp
YyBib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBh
dXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYm
IHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKLSAgICAgICAg
fHwgKGxlbmd0aCA9PSAzICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlE
aWdpdD4oKSk7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2Nh
bGUKIHZvaWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHRhZ1ZhbHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
aW5kZXggYzM4ZmU5OWUyZjRmMGEzZGIyZjNhYjE3OTkyMmViYTgzOGFhMjkzOC4uMThlYzA5Mzgx
NWY1YWZiYjQxODgyYzNjNTk5MTZhZmY0ZjNiMTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFN0cmluZyBjdXJyZW5jeSA9IGludGxTdHJp
bmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY3VycmVuY3kiKSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwgIWN1cnJlbmN5LmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7CisgICAgICAgIGlmICghaXNXZWxsRm9ybWVk
Q3VycmVuY3lDb2RlKGN1cnJlbmN5KSkgewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjdXJyZW5j
eSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5jcHAKaW5kZXggMWRmYTIwODJhZjE0MjNmNGQzZWQzZTEzMzBhOTQ5NjNiZWVhNDMwMS4u
YTJjYTliMTIzNDlhYTk0N2ZmOGZiZDIxOTRmZGIwMzFiZTY1MjRkNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDkgQEAKICNp
bmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKQEAgLTc3LDYgKzgwLDEz
IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZt
LCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUo
KSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRh
dGVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwgSlNP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PElu
dGxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBp
bnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwganNDYXN0PEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqPihnbG9iYWxPYmplY3Qt
PmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQor
CiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVMb2NhbGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgSW50bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2Jq
ZWN0Kj4ob2JqZWN0KTsKQEAgLTE1Miw2ICsxNjIsMTIgQEAgSW50bE9iamVjdCogSW50bE9iamVj
dDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
Kgogdm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisjaWYgSEFWRShJQ1VfVV9MT0NB
TEVfRElTUExBWV9OQU1FUykKKyAgICBpZiAoT3B0aW9uczo6dXNlSW50bERpc3BsYXlOYW1lcygp
KQorICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+RGlzcGxheU5hbWVzLCBjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgdGhpcyks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKTsKKyNl
bmRpZgogfQogCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODI0
LDYgKzg0MCw3NiBAQCBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNv
bnN0IFN0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBudW1iZXJpbmdTeXN0ZW1zOwogfQogCisv
LyB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIsM30gfCBhbHBoYXs1LDh9IDsKK2Jv
b2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0
byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgcmV0dXJuIGxlbmd0aCA+PSAyICYmIGxl
bmd0aCA8PSA4ICYmIGxlbmd0aCAhPSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9zY3JpcHRfc3VidGFnID0gYWxwaGF7
NH0gOworYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7Cisg
ICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9yZWdpb25fc3VidGFnID0g
YWxwaGF7Mn0gfCBkaWdpdHszfSA7Citib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdW
aWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBy
ZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVND
SUlBbHBoYT4oKSkKKyAgICAgICAgfHwgKGxlbmd0aCA9PSAzICYmIHN0cmluZy5pc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7Cit9CisKKy8vIHVuaWNvZGVfdmFyaWFudF9z
dWJ0YWcgPSAoYWxwaGFudW17NSw4fSB8IGRpZ2l0IGFscGhhbnVtezN9KSA7Citib29sIGlzVW5p
Y29kZVZhcmlhbnRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+PSA1ICYmIGxlbmd0aCA8PSA4KQor
ICAgICAgICByZXR1cm4gc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhh
bnVtZXJpYz4oKTsKKyAgICByZXR1cm4gbGVuZ3RoID09IDQgJiYgaXNBU0NJSURpZ2l0KHN0cmlu
Z1swXSkgJiYgc3RyaW5nLnN1YnN0cmluZygxKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVND
SUlBbHBoYW51bWVyaWM+KCk7Cit9CisKKy8vIHVuaWNvZGVfbGFuZ3VhZ2VfaWQsIGJ1dCBpbnRl
cnNlY3Rpb24gb2YgQkNQNDcgYW5kIFVUUzM1LgorLy8gdW5pY29kZV9sYW5ndWFnZV9pZCA9Cisv
LyAgICAgfCB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyAoc2VwIHVuaWNvZGVfc2NyaXB0X3N1YnRh
Zyk/IChzZXAgdW5pY29kZV9yZWdpb25fc3VidGFnKT8gKHNlcCB1bmljb2RlX3ZhcmlhbnRfc3Vi
dGFnKSogOworLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvaXNzdWVzLzc5Citib29sIGlzVW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgVmVjdG9yPFN0cmluZ1ZpZXcsIDQ+IHN1YnRhZ3M7CisgICAgZm9yIChhdXRv
IHN1YnRhZyA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCctJykpCisgICAgICAg
IHN1YnRhZ3MuYXBwZW5kKHN1YnRhZyk7CisKKyAgICBBU1NFUlQoc3VidGFncy5zaXplKCkgPj0g
MSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICBpZiAoIWlzVW5pY29kZUxhbmd1YWdl
U3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2N1
cnNvcjsKKworICAgIGlmIChjdXJzb3IgPT0gc3VidGFncy5zaXplKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkK
KyAgICAgICAgKytjdXJzb3I7CisKKyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmljb2RlUmVnaW9uU3VidGFnKHN1YnRh
Z3NbY3Vyc29yXSkpCisgICAgICAgICsrY3Vyc29yOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpZiAoIWlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoc3VidGFnc1tjdXJzb3Jd
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytjdXJzb3I7CisgICAgfQor
fQorCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3IGN1cnJlbmN5KQor
eworICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1cnJlbmN5LmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBJbnRsLmdl
dENhbm9uaWNhbExvY2FsZXMobG9jYWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuaAppbmRleCBlZDljMWUxMGI2YWRhNGZkOWQ0MjU3NDYwNmNkZDkyYTkxMjIz
OWI3Li4yNTUxOGYxOWZhN2ZhNTZkYzYwNWQ5NWJiMjlmMTVkMzhmOGUxOWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIFN0
cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7CiBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxD
b2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGlzcGxh
eU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7
IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpIHsg
cmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4g
aW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQpAQCAtNzksNiArODAsMTQgQEAgVmVjdG9yPFN0cmlu
Zz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSk7CiAKIGJv
b2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3RyaW5nVmlldyk7CiAKK2Jvb2wgaXNV
bmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyk7Citib29sIGlzVW5pY29kZVNjcmlwdFN1
YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcp
OworYm9vbCBpc1VuaWNvZGVWYXJpYW50U3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNv
ZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcpOworCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29k
ZShTdHJpbmdWaWV3KTsKKwogc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsK
ICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVyYXRvciopIGNvbnN0OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCAzZWEzMGRiOWUyZTRkNTM4ZGE4ZjIzMmNmODliOWU0Yzk4MjM3MDA2Li5jODc5Mjc0NWI5
MzQ4MDNmZGY2YmFmMWFiNGIwNjdjYThiOTJiYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC03Myw2ICs3Myw4IEBACiAjaW5j
bHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9y
bWF0LmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKQEAgLTk4MSw2ICs5ODMsMTIg
QEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9
IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50bERh
dGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkYXRl
VGltZUZvcm1hdFByb3RvdHlwZSkpOwogICAgICAgICB9KTsKKyAgICBtX2Rpc3BsYXlOYW1lc1N0
cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUgPSBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bERpc3BsYXlOYW1lczo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGlzcGxheU5hbWVzUHJvdG90
eXBlKSk7CisgICAgICAgIH0pOwogICAgIG1fbG9jYWxlU3RydWN0dXJlLmluaXRMYXRlcigKICAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKTsKQEAgLTE4MzIsNiArMTg0MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0
aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9sb2NhbGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9w
bHVyYWxSdWxlc1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRkYzMwYjgyZTU1ODM4N2IwNzdl
NmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjI3Nzc0ZWJiYzYwMzZmN2EzNWJmMzVlZTgxZTE0ZTc2Y2Ew
MmM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaApAQCAtMjkyLDYgKzI5Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kaXNwbGF5
TmFtZXNTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1fbG9jYWxlU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKQEAgLTc5Miw2
ICs3OTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJl
KiBjb2xsYXRvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUuZ2V0KHRo
aXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBk
aXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
bG9jYWxlU3RydWN0dXJlKCkgeyByZXR1cm4gbV9sb2NhbGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CiAgICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFs
UnVsZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAppbmRleCA1ZGNmNDI4YmY0NzcxOWI1OTRiNjcwY2U1OGQ4Nzc3ZDM3
OTI3MjYwLi45MDBjMDE0NWQxN2I2ZmY1NTcwOGNhYWIzN2U3NDBkZjdiMGYxYmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4OCw2ICs0ODgs
NyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNl
OwogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAi
QWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCiAgICAgdihC
b29sLCB1c2VXZWFrUmVmcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25z
dHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VCaWdJbnQsIHRydWUsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUlu
dGxEaXNwbGF5TmFtZXMsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGlzcGxheU5h
bWVzIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2Zp
bGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJh
eSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUg
d2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwKICAgICB2KEJvb2wsIGZvcmNl
UG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBhbHdh
eXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikgXAogICAg
IHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgaXQgd2ls
bCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IDE2N2NmMGY1ZDlmY2ZiYzc3M2IwYzU1ZDcxYjIzY2JhNWZlNjJiNzYuLjQwZGRj
MDUyYjgxOTc4ZjU5MDI1ZGYyYjk2Zjk4MjAwMzcyNzc1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxl
LmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxS
dWxlcy5oIgpAQCAtMzA2LDYgKzMwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICNlbmRpZgogICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKICAgICAsIGludGxEYXRlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3Jt
YXQ+KCkpCisgICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlw
ZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCiAgICAgLCBpbnRsTG9jYWxlSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCiAgICAgLCBpbnRsTnVt
YmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJG
b3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQpAQCAtMTQ4MSw2ICsxNDgzLDcgQEAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckds
b2JhbE9iamVjdFNwYWNlLCBjYWwKICNlbmRpZgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxDb2xsYXRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxU
eXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxheU5hbWVzSGVh
cENlbGxUeXBlLmdldCgpLCBJbnRsRGlzcGxheU5hbWVzKQogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bExvY2FsZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxOdW1iZXJGb3JtYXQpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bFBsdXJhbFJ1bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggYmVkMTY2ODgwNTY2NzliMDNlZDBjMmI4YjRkODA4ODA3NWYyZmIzMy4uOGQ0N2YyMDJhM2Zk
MTNlM2FjM2RmMjk2ZGUyNjVmMTIyZTA3NTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEludGVycHJl
dGVyOwogY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xh
c3MgSW50bERpc3BsYXlOYW1lczsKIGNsYXNzIEludGxMb2NhbGU7CiBjbGFzcyBJbnRsTnVtYmVy
Rm9ybWF0OwogY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwpAQCAtNDAwLDYgKzQwMSw3IEBAIGNsYXNz
IFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtl
ZExpc3ROb2RlPFZNPiB7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKQEAgLTU1Nyw2ICs1NTksNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3Bl
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0
b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRl
VGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bERpc3BsYXlOYW1lc1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bExvY2FsZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CmluZGV4IDZjMzIxNzk2NTA3ZWM1NDgwOWU3YWE2YjBlNThlMWY0ZWRiYzc5YjUuLjkyMGZiZmI3
ZDFmM2QwOTQ1NmZmNDE5MzM0NGIyMDEyMTRhMGUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCkBAIC03NTksNiArNzU5LDEyIEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkNvZGVVbml0cyB7CiBj
bGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3IgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3Rk
Ojpmb3J3YXJkX2l0ZXJhdG9yX3RhZzsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gU3RyaW5nVmll
dzsKKyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJkaWZmX3Q7CisgICAgdXNpbmcgcG9p
bnRlciA9IHZhbHVlX3R5cGUqOworICAgIHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOwor
CiAgICAgU3RyaW5nVmlldyBvcGVyYXRvciooKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBJdGVyYXRvciYgb3BlcmF0b3IrKygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRl
ZjdkNjU1ZjA5YzE5Li45NDQ4YjdlOTAwYjNjYzBhNDY0MmJmNGI4MDVmOGIwOGRjMDE4MTRlIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIwLTA2LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAgKiBzdHJlc3MvaW50
bC1kaXNwbGF5bmFtZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
c2hvdWxkVGhyb3cpOgorICAgICAgICAodm0uaWN1VmVyc2lvbik6CisgICAgICAgICogc3RyZXNz
L2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZtLmljdVZlcnNpb24pOgorICAg
ICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDYtMjYgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWRpc3BsYXluYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmM5ODRhZDk4MTU5N2RjOGNmN2M3NjEy
ZDE4YzViZTc5YmFiMjNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1k
aXNwbGF5bmFtZXMuanMKQEAgLTAsMCArMSwxOTUgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUlu
dGxEaXNwbGF5TmFtZXM9MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVy
cm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworaWYg
KCR2bS5pY3VWZXJzaW9uKCkgPj0gNjEpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50
bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJyb3I6IHR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkYCkK
KworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHJlZ2lvbiBpbiBFbmdsaXNoCisgICAgdmFy
IHJlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdp
b24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKKyAgICBzaG91bGRCZShy
ZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCdVUycpLCAiVW5pdGVkIFN0YXRlcyIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9m
KCdCQScpLCAiQm9zbmlhICYgSGVyemVnb3ZpbmEiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1l
cy5vZignTU0nKSwgIk15YW5tYXIgKEJ1cm1hKSIpOworCisgICAgLy8gR2V0IGRpc3BsYXkgbmFt
ZXMgb2YgcmVnaW9uIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICByZWdpb25OYW1lcyA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAg
aWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCc0MTknKSwgIuaLieS4gee+jua0siIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9m
KCdCWicpLCAi6LKd6YeM5pavIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyks
ICLnvo7lnIsiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIuazouWjq+Ww
vOS6nuiIh+i1q+WhnuWTpee2ree0jSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdN
TScpLCAi57es55S4Iik7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1l
cyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICdzaG9ydCd9KTsKKyAgICBpZiAoJHZt
LmljdVZlcnNpb24oKSA+PSA2NCkKKyAgICAgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQx
OScpLCAiTGF0aW4gQW1lcmljYSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicp
LCAiQmVsaXplIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICJVUyIpOwor
ICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhIik7CisgICAgc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIik7CisKKyAgICByZWdpb25OYW1lcyA9
IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICdu
YXJyb3cnfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKKyAgICBzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdVUycpLCAiVVMiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwg
IkJvc25pYSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciIp
OworCisgICAgLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgbGFuZ3VhZ2UgaW4gRW5nbGlzaAorICAg
IHZhciBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6
ICdsYW5ndWFnZSd9KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJl
bmNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOwor
ICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2gi
KTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9
IDY2KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGlu
ZXNlLCBUcmFkaXRpb25hbCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworICAgIHNob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJBbWVyaWNhbiBFbmdsaXNoIik7CisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKwor
ICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdlIGluIFRyYWRpdGlvbmFsIENoaW5l
c2UKKyAgICBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCdd
LCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2Zy
JyksICLms5XmlociKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aCcpLCAi5Lit
5paHIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIuW+t+aWhyIpOwor
CisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3Nob3J0J30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFt
ZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdk
ZScpLCAiR2VybWFuIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwg
IkNhbmFkaWFuIEZyZW5jaCIpOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2
bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7CisgICAgZWxzZQorICAgICAgICBz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFkaXRpb25hbCBDaGluZXNl
Iik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIlVTIEVuZ2xpc2gi
KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFp
d2FuKSIpOworCisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2Vu
J10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ25hcnJvdyd9KTsKKyAgICBzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+
PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworICAgIGVsc2UK
KyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9u
YWwgQ2hpbmVzZSIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJV
UyBFbmdsaXNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNo
aW5lc2UgKFRhaXdhbikiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBp
biBFbmdsaXNoCisgICAgdmFyIHNjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
ZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7CisgICAgLy8gR2V0IHNjcmlwdCBuYW1lcworICAgIHNo
b3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworICAgIHNob3VsZEJlKHNj
cmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1l
cy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9m
IHNjcmlwdCBpbiBUcmFkaXRpb25hbCBDaGluZXNlCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50
bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0J30pOworICAgIHNob3Vs
ZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICLmi4nkuIHmlociKTsKKyAgICBzaG91bGRCZShz
Y3JpcHROYW1lcy5vZignQXJhYicpLCAi6Zi/5ouJ5Lyv5paHIik7CisgICAgc2hvdWxkQmUoc2Ny
aXB0TmFtZXMub2YoJ0thbmEnKSwgIueJh+WBh+WQjSIpOworCisgICAgc2NyaXB0TmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnc2hv
cnQnfSk7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7Cisg
ICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworICAgIHNob3Vs
ZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisgICAgc2NyaXB0TmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxl
OiAnbmFycm93J30pOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRp
biIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKKyAg
ICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworICAgIC8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaAorICAgIHZhciBj
dXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJy
ZW5jeSd9KTsKKyAgICAvLyBHZXQgY3VycmVuY3kgbmFtZXMKKyAgICBzaG91bGRCZShjdXJyZW5j
eU5hbWVzLm9mKCdVU0QnKSwgIlVTIERvbGxhciIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFt
ZXMub2YoJ0VVUicpLCAiRXVybyIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RX
RCcpLCAiTmV3IFRhaXdhbiBEb2xsYXIiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9m
KCdDTlknKSwgIkNoaW5lc2UgWXVhbiIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2Yo
J0pQWScpLCAiSmFwYW5lc2UgWWVuIik7CisKKyAgICAvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBj
dXJyZW5jeSBjb2RlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICBjdXJyZW5jeU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2N1cnJlbmN5J30pOwor
ICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAi576O5YWDIik7CisgICAgc2hv
dWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLmrZDlhYMiKTsKKyAgICBzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIuaWsOWPsOW5oyIpOworICAgIHNob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0NOWScpLCAi5Lq65rCR5bmjIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignSlBZJyksICLml6XlnJMiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9m
IGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAorICAgIGN1cnJlbmN5TmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICdz
aG9ydCcgfSk7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVVNEJyksICIkIik7Cisg
ICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLigqwiKTsKKyAgICBzaG91bGRC
ZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIk5UJCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ0NOWScpLCAiQ07CpSIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2Yo
J0pQWScpLCAiwqUiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNv
ZGUgaW4gRW5nbGlzaCBpbiBuYXJyb3cKKyAgICBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlz
cGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeScsIHN0eWxlOiAnbmFycm93JyB9KTsK
KyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsKKyAgICBzaG91bGRC
ZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuKCrCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ1RXRCcpLCAiJCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NO
WScpLCAiwqUiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwgIsKlIik7
CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBaJyksICJKUFoiKTsgLy8gRmFsbGJh
Y2sgY29kZQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJlbmN5TmFtZXMucmVzb2x2
ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFycm93IiwidHlwZSI6ImN1
cnJlbmN5IiwiZmFsbGJhY2siOiJjb2RlIn1gKTsKKworICAgIGN1cnJlbmN5TmFtZXMgPSBuZXcg
SW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICduYXJy
b3cnLCBmYWxsYmFjazogJ25vbmUnIH0pOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2Yo
J0pQWicpLCB1bmRlZmluZWQpOyAvLyBGYWxsYmFjayBub25lCisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVu
Iiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5vbmUifWAp
OworCisgICAgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ3JlZ2lvbid9KTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignOTk5JyksICI5OTki
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlv
bnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZh
bGxiYWNrIjoiY29kZSJ9YCk7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlO
YW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgZmFsbGJhY2s6J25vbmUnfSk7CisgICAgc2hv
dWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoi
ZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwiZmFsbGJhY2siOiJub25lIn1gKTsK
KworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlw
ZTogJ2xhbmd1YWdlJ30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLUFBJyks
ICJlbi1BQSIpOworICAgIHZhciBvYmplY3QgPSB7CisgICAgICAgIHRvU3RyaW5nKCkgeworICAg
ICAgICAgICAgcmV0dXJuICdlbi1BQSc7CisgICAgICAgIH0KKyAgICB9OworICAgIHNob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2Yob2JqZWN0KSwgb2JqZWN0KTsKKworICAgIGxhbmd1YWdlTmFtZXMg
PSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFsbGJh
Y2s6ICdub25lJ30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLUFBJyksIHVu
ZGVmaW5lZCk7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCB1bmRlZmlu
ZWQpOworCisgICAgc2hvdWxkQmUoSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlW1N5bWJvbC50
b1N0cmluZ1RhZ10sIGBJbnRsLkRpc3BsYXlOYW1lc2ApOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZigiZW4iKSksIGBbImVu
Il1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLkRpc3BsYXlOYW1lcy5zdXBw
b3J0ZWRMb2NhbGVzT2YoImphLUpQIikpLCBgWyJqYS1KUCJdYCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKHsgbGVuZ3Ro
OiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAzOiAnZGUnIH0pKSwgJ1siZXMiLCJlbiIsImRlIl0nKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiBJbnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVz
T2YoIiIpLCBgUmFuZ2VFcnJvcjogaW52YWxpZCBsYW5ndWFnZSB0YWc6IGApCisKKyAgICBzaG91
bGRUaHJvdygoKSA9PiB7CisgICAgICAgIEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZi5j
YWxsKHt9KTsKKyAgICB9LCBgVHlwZUVycm9yOiBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUu
b2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGlzcGxheU5hbWVzYCk7CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIEludGwu
RGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCh7fSk7CisgICAgfSwg
YFR5cGVFcnJvcjogSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEaXNw
bGF5TmFtZXNgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5p
Y29kZS1zdWJ0YWdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wYXJzZS11bmljb2RlLXN1YnRh
Z3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjA4N2NlZjRmMjhkMzQyNmQ1N2FiMzkwY2U2NTJlODg0Zjc3MDY0
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1z
dWJ0YWdzLmpzCkBAIC0wLDAgKzEsOTIgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNw
bGF5TmFtZXM9MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworaWYgKCR2bS5p
Y3VWZXJzaW9uKCkgPj0gNjEpIHsKKyAgICB2YXIgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiByZWdpb25OYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdp
b24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIi0iKSwg
YFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91
bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lvbk5h
bWVzLm9mKCIwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRh
Z2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCIwMDAwIiksIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhy
b3coKCkgPT4gcmVnaW9uTmFtZXMub2YoImEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5v
ZigiYWFhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7
CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lv
bk5hbWVzLm9mKCI0MTkiKSwgYExhdGluIEFtZXJpY2FgKTsKKyAgICBzaG91bGRCZShyZWdpb25O
YW1lcy5vZigiSlAiKSwgYEphcGFuYCk7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoIlVT
IiksIGBVbml0ZWQgU3RhdGVzYCk7CisKKyAgICB2YXIgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnfSk7CisgICAgc2hvdWxkVGhy
b3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMu
b2YoIi0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7Cisg
ICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLS0iKSwgYFJhbmdlRXJyb3I6
IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
bGFuZ3VhZ2VOYW1lcy5vZigiZW4tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoImVuLVVTIiksIGBB
bWVyaWNhbiBFbmdsaXNoYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5v
ZigiZW5fVVMiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZigiZW4tdXMiKSwgYEFtZXJpY2FuIEVuZ2xp
c2hgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJyb290IiksIGBS
YW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRo
cm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInJvb3QtVVMiKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0g
NjQpCisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoImVzLTQxOSIpLCBgTGF0aW4g
QW1lcmljYW4gU3BhbmlzaGApOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2
bS5pY3VWZXJzaW9uKCkgPD0gNjYpIHsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignemgtSGFudCcpLCBgQ2hpbmVzZSwgVHJhZGl0aW9uYWxgKTsKKyAgICAgICAgc2hvdWxkQmUo
bGFuZ3VhZ2VOYW1lcy5vZignemgtSGFucy1ISycpLCBgQ2hpbmVzZSwgU2ltcGxpZmllZCAoSG9u
ZyBLb25nKWApOworICAgIH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ3poLUhhbnQnKSwgYFRyYWRpdGlvbmFsIENoaW5lc2VgKTsKKyAgICAgICAgc2hvdWxkQmUo
bGFuZ3VhZ2VOYW1lcy5vZignemgtSGFucy1ISycpLCBgU2ltcGxpZmllZCBDaGluZXNlIChIb25n
IEtvbmcpYCk7CisgICAgfQorICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2Yo
IkhhbnQiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7IC8v
IFNjcmlwdCBvbmx5CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignc3ItTGF0bicpLCBg
U2VyYmlhbiAoTGF0aW4pYCk7IC8vIExhbmd1YWdlLVNjcmlwdAorICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3NyLUN5cmwnKSwgYFNlcmJpYW4gKEN5cmlsbGljKWApOyAvLyBMYW5ndWFn
ZS1TY3JpcHQKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJ6aC1ISy1I
YW5zIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NsLXJvemFqJyksIGBTbG92ZW5pYW4gKFJlc2lh
bilgKTsgLy8gTGFuZ3VhZ2UtVmFyaWFudAorICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdl
TmFtZXMub2YoInNsX3JvemFqIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5n
dWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLXJv
emFqLUN5cmwiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigic2wtcm96YWotIiksIGBS
YW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRo
cm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLV9yb3phaiIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5n
dWFnZU5hbWVzLm9mKCJzbC1DeXJsLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEg
bGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCIt
c2wtQ3lybC0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignaHktTGF0bi1JVC1hcmV2ZWxhJyksIGBB
cm1lbmlhbiAoTGF0aW4sIEl0YWx5LCBFYXN0ZXJuIEFybWVuaWFuKWApOyAvLyBMYW5ndWFnZS1T
Y3JpcHQtUmVnaW9uLVZhcmlhbnQKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdoeS1M
YXRuLUlUJyksIGBBcm1lbmlhbiAoTGF0aW4sIEl0YWx5KWApOyAvLyBMYW5ndWFnZS1TY3JpcHQt
UmVnaW9uCisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignaHktTGF0bi1hcmV2ZWxhJyks
IGBBcm1lbmlhbiAoTGF0aW4sIEVhc3Rlcm4gQXJtZW5pYW4pYCk7IC8vIExhbmd1YWdlLVNjcmlw
dC1WYXJpYW50CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0
bi1JVFotYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2Ug
aWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJoeS1MYXRuLTAw
LWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0bi1hcmV2ZWxh
enp6enp6enp6enoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlk
YCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0bi1hcmV2
ZWxhenp6enp6enp6enoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdl
IGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHl6enp6enp6
enotTGF0bi1hcmV2ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFn
ZSBpZGApOworCisgICAgdmFyIHNjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
ZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFt
ZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2Ap
OworICAgIHNob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4gc2NyaXB0TmFtZXMub2YoIkxhdG4wIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBzY3JpcHQgc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2Yo
IkxhbjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiBzY3JpcHROYW1lcy5vZigiTGFuIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CisgICAgc2hvdWxkQmUoc2NyaXB0
TmFtZXMub2YoIkxhdG4iKSwgYExhdGluYCk7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2Yo
ImxhdG4iKSwgYExhdGluYCk7IC8vIENhbm9uaWNhbGl6YXRpb24gY2FuIG1ha2UgaXQgd29yay4K
KworICAgIHZhciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwg
e3R5cGU6ICdjdXJyZW5jeSd9KTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVz
Lm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJl
bmN5IGNvZGVgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9mKCItIiks
IGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2Rl
YCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigiYWIiKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGVgKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiBjdXJyZW5jeU5hbWVzLm9mKCJqcHl4IiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigianAwIiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkQmUo
Y3VycmVuY3lOYW1lcy5vZigianB5IiksIGBKYXBhbmVzZSBZZW5gKTsKKyAgICBzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCJKUFkiKSwgYEphcGFuZXNlIFllbmApOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CmluZGV4IGE3OWYyZGJlMzYxNjZmMGI4ZWJiOTk5ZGI4NWNmNGUxNjRiOTRkZjEuLmU2MzcyZmY5
MjgzYmNmYjU0YmFmYTZkOGI1YjE2ZTRjYWE4ZTMzYzggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTI2
LDYgKzI2LDkgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kCiAg
ICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWZvcm1hdFJhbmdlCiAgICAgLSBJbnRsLkRhdGVUaW1l
Rm9ybWF0LWZyYWN0aW9uYWxTZWNvbmREaWdpdHMKKyAgICAjIEN1cnJlbnRseSwgdGVzdDI2MiBo
YXMgYSBidWcgd2l0aCBJbnRsLkRpc3BsYXlOYW1lcywgYW5kIGV4cG9zaW5nIGl0IGNhbiBjYXVz
ZSBtYW55IGZhaWx1cmVzIGluIHZhcmlvdXMgSW50bCB0ZXN0cy4KKyAgICAjIFdlIHNob3VsZCBl
bmFibGUgaXQgYWZ0ZXIgZW5zdXJpbmcgdGVzdDI2MiBpcyBmaXhlZC4KKyAgICAjIGh0dHBzOi8v
Z2l0aHViLmNvbS90YzM5L3Rlc3QyNjIvaXNzdWVzLzI2ODIKICAgICAtIEludGwuRGlzcGxheU5h
bWVzCiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKICAgICAtIEludGwuTnVtYmVyRm9ybWF0LXVuaWZp
ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403274</attachid>
            <date>2020-06-30 23:40:41 -0700</date>
            <delta_ts>2020-06-30 23:40:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209779-20200630234040.patch</filename>
            <type>text/plain</type>
            <size>91219</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzEyOGNlY2RiYzY4YTMwYTFhYjkxNzc1NzAzNDVmYzAyZDcxN2VmLi41N2IzZTRjNDY4ZGM4NDJj
ZjE4NGNjN2M4ODEzNjQ0YTM5Mzg4MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNi0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBJbnRsLkRpc3BsYXlOYW1lcyBiZWhpbmQgdXNlSW50bERpc3BsYXlOYW1lcz0xIGZs
YWcuCisgICAgICAgIEludGwuRGlzcGxheU5hbWVzIGNhbiBvZmZlciByZWFkYWJsZSAiZGlzcGxh
eS1uYW1lIiBmb3IgSUNVIGxhbmd1YWdlLCBzY3JpcHQsIHJlZ2lvbiwgY3VycmVuY3kgY29kZXMu
CisgICAgICAgIEZvciBleGFtcGxlLCBpdCBjYW4gb2ZmZXIgIlVuaXRlZCBTdGF0ZXMiIHN0cmlu
ZyBmb3IgIlVTIiByZWdpb24gY29kZS4KKyAgICAgICAgV2UgdXNlIElDVSBVTG9jYWxlRGlzcGxh
eU5hbWVzIHRvIGltcGxlbWVudCBpdCwgZXhjZXB0IGZvciBjdXJyZW5jeSBzaW5jZSBVTG9jYWxl
RGlzcGxheU5hbWVzIGlzIG5vdCBzdXBwb3J0aW5nCisgICAgICAgIGN1cnJlbmN5IGNvcnJlY3Rs
eTogaXQgaWdub3JlcyAibG9uZyIsICJzaG9ydCIsIGFuZCAibmFycm93IiBzdHlsZSBjb25maWd1
cmF0aW9ucy4gV2UgbmVlZCB0byBjYWxsIHVjdXJyX2dldE5hbWUKKyAgICAgICAgZGlyZWN0bHku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGFkZHMgdW5pY29kZS1sYW5ndWFn
ZS1pZCBwYXJzaW5nIGluIEludGxMb2NhbGUuY3BwIHNvIHRoYXQgd2UgY2FuIHZhbGlkYXRlIGxh
bmd1YWdlIGlkCisgICAgICAgIHdoZW4gaXQgaXMgcGFzc2VkIHRvIGBJbnRsLkRpc3BsYXlOYW1l
cyNvZmAgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
czo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6Om9mIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6
OmNhbGxJbnRsRGlzcGxheU5hbWVzKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZTo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZik6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsTG9jYWxlLmNwcDoKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjppc1VuaWNvZGVTY3JpcHRTdWJ0YWcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
Ojppc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVNjcmlw
dFN1YnRhZyk6CisgICAgICAgIChKU0M6OmlzVW5pY29kZVJlZ2lvblN1YnRhZyk6CisgICAgICAg
IChKU0M6OmlzVW5pY29kZVZhcmlhbnRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVM
YW5ndWFnZUlkKToKKyAgICAgICAgKEpTQzo6aXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6aW50bERpc3BsYXlO
YW1lc0F2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkaXNwbGF5TmFtZXNT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjAtMDYtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbmFibGUgdGhlIHN1cHBvcnQgb2YgRlVMTFNDUkVFTl9BUEkgaW4gV2ViS2l0VGVz
dFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCA4OTFjZTMxNTI1NTI4YWZlNmJkNDI5ZWFjZDk5NTkwOWE5NjZkOTkwLi44
OGI4ZTRkOTQyOTQyYjdhZThmZTQ3NDIwYWM4OWVmOGQ2Nzg0OTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIwLTA2LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg6CisKIDIwMjAtMDYtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIFtHVEtdIFJ1bkxvb3A6OlRpbWVyOjppc0FjdGl2ZSgpIGlzIGluY29y
cmVjdCBmb3IgdGltZXJzIHdoaWxlIHRoZXkgYXJlIGZpcmluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGMyNTkxMDg2ZWJhYzcyMjA2NmE4NjQ0NWZhYzIxMWRlZjgwMzA1
ZTAuLmJkNWEwYWIxMDYxNmE0MDJkYTIwNDhkNDM4M2Q3ZjM2Zjg4YTVlYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwLDYgKzcwLDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWNmZDVhOTBiYzg1YmM3
MDI1MWNmMGRkZjE0MTQ1ZGU5ZWNmMDcuLmQwZDhkZmRjNDhhMzVlODIxN2Y3YzAzNDFjMGZlMDNi
YjQzZTA0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMzgsNiArMTM4LDggQEAgJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxMb2Nh
bGVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA3OWNkZTRlZTUwN2UxM2Y2ZmY3ZmE3ODAwZGM2
NDVjYmY4OTQxYzY3Li4yYmRmNWIyYzgyMmE2ZDllN2I2ZjQ1NmJiMGE5NjE2M2VlMWQ2ZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC0yNyw2ICsyNyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTBmOWZlYzUxZGNlNDg2
ODZmZjg3NDViZWFhNGI1YjVkNWIxMDMzZC4uYzFmZjVlNjI0NzM1MDY4Y2ZmNGMxMmU0Y2Y0OGNk
YzRmYTBhNjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTE1OSw2ICsxNTksOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bENvbGxh
dG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5s
dXQuaCBcCiAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggXAorICAgIEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUubHV0LmggXAogICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0LmggXAogICAgIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmODUxYzExNzJj
NmUwNGVhYjgzODhjMjI4MGRhNTA4NDNhNjNiZGQuLmMwNjYzZDdmNjBmOTlkZjFkNDFkZWZlY2Rj
NTZlOWNlNTQ5MmNjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE5LDYg
KzE4MTksOSBAQAogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpT
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRTM1
MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2
IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5h
bWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUz
QzExNzI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovOyB9OworCQlFMzUz
QzExRTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExODI0QUE0
Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUz
NTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUzQzExQjI0QUE0
Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovOyB9OwogCQlFMzU0
NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclNuaXBwZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25p
cHBldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNTVEMzhGMjI0NDY4NzcwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RDM4RDIyNDQ2ODZCMDA4
RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xODI4LDYgKzE4MzEsOCBAQAogCQlFMzVDQTE1NjFEQkMz
QTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIw
MDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkx
QjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJ
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzZCNzY3MDIyRjhENjE5
MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdh
c21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNDk4NSw2ICs0OTkwLDEyIEBACiAJCUUzNEY5MzBCMjMyMkQ4ODEwMDJC
OERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEY5
MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyogSW50bERpc3BsYXlO
YW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxh
eU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTcyNEFBNENC
NjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzUzQzExODI0QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExOTI0QUE0Q0I2
MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIElu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2
MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0
ZXJTbmlwcGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxE
T01HZXR0ZXJTbmlwcGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVEMzhE
MjI0NDY4NkIwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEds
b2JhbEV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMDEsNiAr
NTAxMiw4IEBACiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExp
bmtUaW1lQ29uc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGlua1RpbWVDb25zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVG
MzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzOTI0QUE2MjEyMDBD
OTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI0ODAxMjNFOTU3MzgwMEU0QTY2RSAvKiBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkI3NjZFMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9T
UkVudHJ5UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzY3LDYgKzY3ODAsOCBAQAogCQkJCUExODE5
M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oICovLAogCQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIy
IC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlFMzY1RjMzODI0
QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLywKIAkJ
CQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oICovLAogCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5jcHAgKi8sCkBAIC03MjYyLDYgKzcyNzcsMTIgQEAKIAkJCQlBMTU4N0Q2QTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJ
CQlBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcCAqLywKIAkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmggKi8sCisJCQkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXMuY3BwICovLAorCQkJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRs
RGlzcGxheU5hbWVzLmggKi8sCisJCQkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTM1M0MxMTgyNEFBNENCNjAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNTNDMTE5MjRB
QTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLywKKwkJCQlF
MzUzQzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICov
LAogCQkJCUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLywKIAkJ
CQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovLAogCQkJCUEzQUZG
OTJGMjQ1QTNDRkIwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwICovLApAQCAt
OTc1Miw2ICs5NzczLDExIEBACiAJCQkJQTE1ODdENzUxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdE
NzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTNDMTFEMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzEx
RTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzY1RjMzQTI0QUE2MjM5MDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMjEyNEFBNENCNzAw
M0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNjVGMzNCMjRBQTYyM0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMDUwMmEz
NGE2NjVhODUwY2FkNmFmZjljYWY1YzRjOGQ3NGMyNzA1Li4xYjRmYmY3Y2NhYzQ3ZTllMGQ4Mjg0
ZDY2MzU4MTgxMjFjYWUwZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTQs
NiArODE0LDkgQEAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKK3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lcy5jcHAKK3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
LmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRs
TG9jYWxlLmNwcAogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0lu
dGxMb2NhbGVQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjhlZmVkYTE0ZDQ2MTA1MjYwNzVhZmRlYmFj
OWFkYmEyNTI2NmJhLi4zYTQ5N2UwNzRhOTBlMGIxMTk1ODZiZmEwOGQ0ODNlYjMwOTQyMzMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERh
dGUpIFwKICAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3JvKERpc3BsYXlOYW1l
cykgXAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFj
cm8oRnVuY3Rpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE4M2EyYjlmNTZlZGYwNDg1ZDk5MjgzZGRl
NjY0ZDk0OTVlODEyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCkBAIC0wLDAgKzEsMzc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKwor
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERp
c3BsYXlOYW1lcykgfTsKKworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3BsYXlOYW1lczo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4odm0uaGVhcCkpIElu
dGxEaXNwbGF5TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5h
bWVzOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxEaXNwbGF5TmFtZXMo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNw
bGF5TmFtZXMKK3ZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHJlcXVlc3RlZExv
Y2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxlcyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTT2JqZWN0KiBv
cHRpb25zOworICAgIGlmIChvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3B0
aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRp
b25zVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICAvLyBEb2VzIG5vdCBzZXQgZWl0aGVy
IG9mICJjYSIgb3IgIm51Ii4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1k
aXNwbGF5bmFtZXMvI3NlYy1pbnRsLWRpc3BsYXluYW1lcy1jb25zdHJ1Y3RvcgorICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsKKworICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmlu
Z09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1h
dGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBl
aXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQoImxvY2FsZU1hdGNo
ZXIiX3MsIG1hdGNoZXIpOworCisKKyAgICBhdXRvIGxvY2FsZURhdGEgPSBbXShjb25zdCBTdHJp
bmcmLCBzaXplX3QpIC0+IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFp
bGFibGVMb2NhbGVzKCk7CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9i
amVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCBudWxscHRyLCAw
LCBsb2NhbGVEYXRhKTsKKworICAgIG1fbG9jYWxlID0gcmVzdWx0LmdldCgibG9jYWxlIl9zKTsK
KyAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3Ry
aW5nIHN0eWxlU3RyaW5nID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7ICJuYXJyb3ciLCAic2hvcnQiLCAibG9uZyIgfSwg
InN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIi
LCAibG9uZyIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
aWYgKHN0eWxlU3RyaW5nID09ICJuYXJyb3ciX3MpCisgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6
TmFycm93OworICAgIGVsc2UgaWYgKHN0eWxlU3RyaW5nID09ICJzaG9ydCJfcykKKyAgICAgICAg
bV9zdHlsZSA9IFN0eWxlOjpTaG9ydDsKKyAgICBlbHNlIGlmIChzdHlsZVN0cmluZyA9PSAibG9u
ZyJfcykKKyAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpMb25nOworICAgIGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJp
bmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7
ICJsYW5ndWFnZSIsICJyZWdpb24iLCAic2NyaXB0IiwgImN1cnJlbmN5IiB9LCAidHlwZSBtdXN0
IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3Vy
cmVuY3lcIiIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgaWYgKHR5cGVTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodHlwZVN0cmluZyA9PSAibGFuZ3VhZ2Ui
X3MpCisgICAgICAgIG1fdHlwZSA9IFR5cGU6Okxhbmd1YWdlOworICAgIGVsc2UgaWYgKHR5cGVT
dHJpbmcgPT0gInJlZ2lvbiJfcykKKyAgICAgICAgbV90eXBlID0gVHlwZTo6UmVnaW9uOworICAg
IGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInNjcmlwdCJfcykKKyAgICAgICAgbV90eXBlID0gVHlw
ZTo6U2NyaXB0OworICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gImN1cnJlbmN5Il9zKQorICAg
ICAgICBtX3R5cGUgPSBUeXBlOjpDdXJyZW5jeTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgU3RyaW5nIGZhbGxiYWNrU3RyaW5nID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJm
YWxsYmFjayIpLCB7ICJjb2RlIiwgIm5vbmUiIH0sICJmYWxsYmFjayBtdXN0IGJlIGVpdGhlciBc
ImNvZGVcIiBvciBcIm5vbmVcIiIsICJjb2RlIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICBpZiAoZmFsbGJhY2tTdHJpbmcgPT0gImNvZGUiX3MpCisgICAg
ICAgIG1fZmFsbGJhY2sgPSBGYWxsYmFjazo6Q29kZTsKKyAgICBlbHNlIGlmIChmYWxsYmFja1N0
cmluZyA9PSAibm9uZSJfcykKKyAgICAgICAgbV9mYWxsYmFjayA9IEZhbGxiYWNrOjpOb25lOwor
ICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyNpZiBIQVZFKElDVV9V
X0xPQ0FMRV9ESVNQTEFZX05BTUVTKQorICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworCisgICAgVURpc3BsYXlDb250ZXh0IGNvbnRleHRzW10gPSB7CisgICAgICAgIC8vIGVu
X0dCIGRpc3BsYXlzIGFzICdFbmdsaXNoIChVbml0ZWQgS2luZ2RvbSknIChTdGFuZGFyZCBOYW1l
cykgb3IgJ0JyaXRpc2ggRW5nbGlzaCcgKERpYWxlY3QgTmFtZXMpLgorICAgICAgICAvLyBXZSB1
c2UgRGlhbGVjdCBOYW1lcyBoZXJlLCBhbGlnbmVkIHRvIHRoZSBleGFtcGxlcyBpbiB0aGUgc3Bl
YyBkcmFmdCBhbmQgVjgncyBiZWhhdmlvci4KKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMjbGFuZ3VhZ2UtZGlzcGxheS1uYW1lcwor
ICAgICAgICBVRElTUENUWF9ESUFMRUNUX05BTUVTLAorCisgICAgICAgIC8vIENhcGl0YWlsaXph
dGlvbiBtb2RlIGNhbiBiZSBwaWNrZWQgZnJvbSBzZXZlcmFsIG9wdGlvbnMuIFBvc3NpYmx5IGVp
dGhlciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9OT05FIG9yIFVESVNQQ1RYX0NBUElUQUxJWkFU
SU9OX0ZPUl9TVEFOREFMT05FIGlzCisgICAgICAgIC8vIHByZWZlcmFibGUgaW4gSW50bC5EaXNw
bGF5TmFtZXMuIFdlIHVzZSBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSBi
ZWNhdXNlIGl0IG1ha2VzIHN0YW5kYWxvbmUgZGF0ZSBmb3JtYXQgYmV0dGVyIChmciAiSnVpbGxl
dCAyMDA4IiBpbiBJQ1UgdGVzdCBzdWl0ZXMpLAorICAgICAgICAvLyBhbmQgRGlzcGxheU5hbWVz
IHdpbGwgc3VwcG9ydCBkYXRlIGZvcm1hdHMgdG9vLgorICAgICAgICBVRElTUENUWF9DQVBJVEFM
SVpBVElPTl9GT1JfU1RBTkRBTE9ORSwKKworICAgICAgICAvLyBOYXJyb3cgYmVjb21lcyBVRElT
UENUWF9MRU5HVEhfU0hPUlQuIEJ1dCBpbiBjdXJyZW5jeSBjYXNlLCB3ZSBoYW5kbGUgZGlmZmVy
ZW50bHkgaW5zdGVhZCBvZiB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzLgorICAgICAgICBtX3N0
eWxlID09IFN0eWxlOjpMb25nID8gVURJU1BDVFhfTEVOR1RIX0ZVTEwgOiBVRElTUENUWF9MRU5H
VEhfU0hPUlQsCisKKyAgICAgICAgLy8gQWx3YXlzIGRpc2FibGUgSUNVIFNVQlNUSVRVVEUgc2lu
Y2UgaXQgZG9lcyBub3QgbWF0Y2ggYWdhaW5zdCB3aGF0IHRoZSBzcGVjIGRlZmluZXMuIElDVSBo
YXMgc29tZSBzcGVjaWFsIHN1YnN0aXR1dGUgcnVsZXMsIGZvciBleGFtcGxlLCBsYW5ndWFnZSAi
ZW4tQUEiCisgICAgICAgIC8vIHJldHVybnMgIkVuZ2xpc2ggKEFBKSIgKHdoaWxlIEFBIGNvdW50
cnkgY29kZSBpcyBub3QgZGVmaW5lZCksIGJ1dCB3ZSB3b3VsZCBsaWtlIHRvIHJldHVybiBlaXRo
ZXIgaW5wdXQgdmFsdWUgb3IgdW5kZWZpbmVkLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBoYXZlIElD
VSBzdWJzdGl0dXRlIHJ1bGVzLgorICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBlZmZlY3Rp
dmUgYWZ0ZXIgSUNVIDY1LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1v
cmcvaWN1L2NvbW1pdC81M2RkNjIxZTNhNWNmZjNiNzhiNTU3YzQwNWYxYjFkNmYxMjViNDY4Cisg
ICAgICAgIFVESVNQQ1RYX05PX1NVQlNUSVRVVEUsCisgICAgfTsKKyAgICBtX2xvY2FsZUNTdHJp
bmcgPSBtX2xvY2FsZS51dGY4KCk7CisgICAgbV9kaXNwbGF5TmFtZXMgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+KHVsZG5f
b3BlbkZvckNvbnRleHQobV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgY29udGV4dHMsIFdURl9BUlJB
WV9MRU5HVEgoY29udGV4dHMpLCAmc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2Vsc2UKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGluaXRpYWxpemUgSW50bC5EaXNwbGF5TmFtZXMgc2luY2UgdXNlZCBmZWF0dXJlIGlzIG5vdCBz
dXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVyc2lvbiJfcyk7CisgICAgcmV0dXJuOworI2Vu
ZGlmCit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8j
c2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgorSlNWYWx1ZSBJbnRsRGlzcGxheU5h
bWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkg
Y29uc3QKK3sKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyNpZiBIQVZFKElDVV9VX0xPQ0FMRV9E
SVNQTEFZX05BTUVTKQorICAgIEFTU0VSVChtX2Rpc3BsYXlOYW1lcyk7CisgICAgYXV0byBjb2Rl
ID0gY29kZVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKyAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKworICAgIGlmIChtX3R5cGUgPT0g
VHlwZTo6Q3VycmVuY3kpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHVzZSB1bGRuX2tleVZhbHVl
RGlzcGxheU5hbWUgKyAiY3VycmVuY3kiLiBUaGlzIGlzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2lu
ZyByZWFzb25zLgorICAgICAgICAvLyAgICAgMS4gSUNVIGRvZXMgbm90IHJlc3BlY3QgVURJU1BD
VFhfTEVOR1RIX0ZVTEwgLyBVRElTUENUWF9MRU5HVEhfU0hPUlQgaW4gaXRzIGltcGxlbWVudGF0
aW9uLgorICAgICAgICAvLyAgICAgMi4gVGhlcmUgaXMgbm8gd2F5IHRvIHNldCAibmFycm93IiBz
dHlsZSBpbiBVTG9jYWxlRGlzcGxheU5hbWVzIHdoaWxlIGN1cnJlbmN5IGhhdmUgIm5hcnJvdyIg
c3ltYm9sIHN0eWxlLgorCisgICAgICAgIC8vIENhbm9uaWNhbENvZGVGb3JEaXNwbGF5TmFtZXMK
KyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNz
ZWMtY2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcworICAgICAgICAvLyA1LiBJZiAhIElzV2Vs
bEZvcm1lZEN1cnJlbmN5Q29kZShjb2RlKSBpcyBmYWxzZSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4
Y2VwdGlvbi4KKyAgICAgICAgaWYgKCFpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkpIHsK
KyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1l
bnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcyk7CisgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7
CisKKyAgICAgICAgVUN1cnJOYW1lU3R5bGUgc3R5bGUgPSBVQ1VSUl9MT05HX05BTUU7CisgICAg
ICAgIHN3aXRjaCAobV9zdHlsZSkgeworICAgICAgICBjYXNlIFN0eWxlOjpMb25nOgorICAgICAg
ICAgICAgc3R5bGUgPSBVQ1VSUl9MT05HX05BTUU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdHlsZTo6U2hvcnQ6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJSX1NZTUJPTF9O
QU1FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6Ok5hcnJvdzoKKyAg
ICAgICAgICAgIHN0eWxlID0gVUNVUlJfTkFSUk9XX1NZTUJPTF9OQU1FOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyA2LiBMZXQgY29kZSBiZSB0aGUgcmVzdWx0
IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAg
ICAgIGNvbnN0IFVDaGFyIGN1cnJlbmN5WzRdID0geworICAgICAgICAgICAgdG9BU0NJSVVwcGVy
KGNvZGVbMF0pLAorICAgICAgICAgICAgdG9BU0NJSVVwcGVyKGNvZGVbMV0pLAorICAgICAgICAg
ICAgdG9BU0NJSVVwcGVyKGNvZGVbMl0pLAorICAgICAgICAgICAgdSdcMCcKKyAgICAgICAgfTsK
KyAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB1Y3Vycl9nZXROYW1lIGlzIHN0YXRpYyBzdHJpbmcg
c28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBmcmVlIHRoZSByZXN1bHQuCisgICAgICAgIGludDMy
X3QgbGVuZ3RoID0gMDsKKyAgICAgICAgVUJvb2wgaXNDaG9pY2VGb3JtYXQgPSBmYWxzZTsgLy8g
V2UgbmVlZCB0byBwYXNzIHRoaXMsIG90aGVyd2lzZSwgd2Ugd2lsbCBzZWUgY3Jhc2ggaW4gSUNV
IDY0LgorICAgICAgICBjb25zdCBVQ2hhciogcmVzdWx0ID0gdWN1cnJfZ2V0TmFtZShjdXJyZW5j
eSwgbV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgc3R5bGUsICZpc0Nob2ljZUZvcm1hdCwgJmxlbmd0
aCwgJnN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1
ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIC8vIHVjdXJyX2dldE5hbWUgcmV0dXJu
cyBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3Vu
ZC4gQnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlzIHJldHVybmVkIGV2ZW4gaWYKKyAgICAg
ICAgLy8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUgc2FtZTogbmFycm93ICJVU0Qi
IGlzICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIHNpbmNlIHNob3J0ICJVU0QiIGlz
IGFsc28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCisgICAgICAgIC8vIHJlc3VsdCA9PSBjdXJyZW5j
eSB0byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBmYWlsZWQgdG8gZmluZCB0aGUgY29ycmVz
cG9uZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRlciBjb21wYXJpc29uIGlzIGVuc3VyZWQg
YnkKKyAgICAgICAgLy8gSUNVIEFQSSBkb2N1bWVudC4KKyAgICAgICAgLy8gPiBSZXR1cm5zIHBv
aW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiBJZiB0aGUgcmVzb3VyY2Ug
ZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVuY3knIGl0
c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRf
V0FSTklORyAmJiByZXN1bHQgPT0gY3VycmVuY3kpCisgICAgICAgICAgICByZXR1cm4gKG1fZmFs
bGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LCBsZW5ndGgpKTsKKyAgICB9
CisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3Nl
Yy1jYW5vbmljYWxjb2RlZm9yZGlzcGxheW5hbWVzCisgICAgYXV0byBjYW5vbmljYWxpemVDb2Rl
Rm9yRGlzcGxheU5hbWVzID0gW10oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGUpIC0+IENT
dHJpbmcgeworICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNvZGUuYXNjaWkoKTsKKyAgICAgICAgY2hhciogbXV0YWJsZURhdGEgPSByZXN1
bHQubXV0YWJsZURhdGEoKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2Ug
VHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1bHQg
b2YgbWFwcGluZyBjb2RlIHRvIGxvd2VyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5sZW5ndGgoKTsg
KytpbmRleCkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0b0FTQ0lJTG93
ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0
aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2
LjEuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQu
bGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0g
dG9BU0NJSVVwcGVyKG11dGFibGVEYXRhW2luZGV4XSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAgICAgICAgICAgLy8gTGV0
IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gY29k
ZSB0byB1cHBlciBjYXNlLCBhbmQgbWFwcGluZyB0aGUgc2Vjb25kLCB0aGlyZCBhbmQgZm91cnRo
IGNoYXJhY3RlciBpbiBjb2RlIHRvIGxvd2VyIGNhc2UsIGFzIGRlc2NyaWJlZCBpbiA2LjEuCisg
ICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID49IDEpCisgICAgICAgICAgICAgICAgbXV0
YWJsZURhdGFbMF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJsZURhdGFbMF0pOworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4
KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRh
YmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9OworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7
CisgICAgICAgIC8vIElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9sYW5ndWFn
ZV9pZCBwcm9kdWN0aW9uLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlm
ICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZCJf
cyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gbGFu
Z3VhZ2UgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7Cisg
ICAgICAgIC8vIERvIG5vdCB1c2UgdWxkbl9sYW5ndWFnZURpc3BsYXlOYW1lIHNpbmNlIGl0IGlz
IG5vdCBleHBlY3RlZCBvbmUgZm9yIHRoaXMgImxhbmd1YWdlIiB0eXBlLiBJdCByZXR1cm5zICJl
bi1VUyIgZm9yICJlbi1VUyIgY29kZSwgaW5zdGVhZCBvZiAiQW1lcmljYW4gRW5nbGlzaCIuCisg
ICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX2xvY2FsZURp
c3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgbGFuZ3VhZ2UuZGF0YSgpLCBidWZmZXIp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKKyAgICAg
ICAgLy8gSWYgY29kZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcg
cHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlz
VW5pY29kZVJlZ2lvblN1YnRhZyhjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnIl9z
KTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgYXV0byByZWdp
b24gPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAg
ICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bGRuX3JlZ2lvbkRpc3Bs
YXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5nZXQoKSwgcmVnaW9uLmRhdGEoKSwgYnVmZmVyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgIC8v
IElmIGNvZGUgZG9lcyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9zY3JpcHRfc3VidGFnIHByb2R1
Y3Rpb24sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1VuaWNv
ZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7Cisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gc2NyaXB0ID0g
Y2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOworICAgICAgICBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9zY3JpcHREaXNwbGF5TmFt
ZSwgbV9kaXNwbGF5TmFtZXMuZ2V0KCksIHNjcmlwdC5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OkN1cnJlbmN5OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkgeworICAgICAgICAvLyB1bGRuX2xvY2FsZURpc3BsYXlOYW1lLCB1bGRuX3JlZ2lv
bkRpc3BsYXlOYW1lLCBhbmQgdWxkbl9zY3JpcHREaXNwbGF5TmFtZSByZXR1cm4gVV9JTExFR0FM
X0FSR1VNRU5UX0VSUk9SIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLgorICAgICAg
ICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBpZiBmYWxsYmFjayBpcyAibm9uZSIuIE90
aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2YWx1ZS4KKyAgICAgICAgaWYgKHN0YXR1
cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCisgICAgICAgICAgICByZXR1cm4gKG1fZmFs
bGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRlZmluZWQoKSA6IGNvZGVWYWx1ZTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zKTsKKyAgICB9CisgICAgcmV0dXJuIGpzU3RyaW5n
KHZtLCBTdHJpbmcoYnVmZmVyKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb2RlVmFsdWUp
OworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBJbnRsLkRpc3BsYXlOYW1lcyBzaW5jZSB1c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBv
cnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICByZXR1cm4geyB9OworI2Vu
ZGlmCit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8j
c2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMKK0pTT2JqZWN0
KiBJbnRsRGlzcGxheU5hbWVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
SlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0
cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5
bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBl
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHR5cGVTdHJpbmcobV90eXBlKSkpOworICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZhbGxiYWNrIiks
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgZmFsbGJhY2tTdHJpbmcobV9mYWxsYmFjaykpKTsKKyAg
ICByZXR1cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnN0
eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNl
IFN0eWxlOjpOYXJyb3c6CisgICAgICAgIHJldHVybiAibmFycm93Il9zOworICAgIGNhc2UgU3R5
bGU6OlNob3J0OgorICAgICAgICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgU3R5bGU6Okxv
bmc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJSUxpdGVy
YWwgSW50bERpc3BsYXlOYW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZToKKyAgICAgICAgcmV0dXJuICJsYW5n
dWFnZSJfczsKKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjoKKyAgICAgICAgcmV0dXJuICJyZWdpb24i
X3M7CisgICAgY2FzZSBUeXBlOjpTY3JpcHQ6CisgICAgICAgIHJldHVybiAic2NyaXB0Il9zOwor
ICAgIGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIHJldHVybiAiY3VycmVuY3kiX3M7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3Ry
aW5nKEZhbGxiYWNrIGZhbGxiYWNrKQoreworICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKKyAgICBj
YXNlIEZhbGxiYWNrOjpDb2RlOgorICAgICAgICByZXR1cm4gImNvZGUiX3M7CisgICAgY2FzZSBG
YWxsYmFjazo6Tm9uZToKKyAgICAgICAgcmV0dXJuICJub25lIl9zOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NWJhY2E4MGNlYmM2M2ZmMmRjZmFhYzYx
N2Q3YzkxOThmZDU3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VsZG5hbWVzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKKyNpZiAhZGVmaW5lZChIQVZFX0lDVV9VX0xPQ0FMRV9ESVNQTEFZ
X05BTUVTKQorLy8gV2UgbmVlZCA2MSBvciBsYXRlciBzaW5jZSBwYXJ0IG9mIGltcGxlbWVudGF0
aW9uIHVzZXMgVUNVUlJfTkFSUk9XX1NZTUJPTF9OQU1FLgorI2lmIFVfSUNVX1ZFUlNJT05fTUFK
T1JfTlVNID49IDYxCisjZGVmaW5lIEhBVkVfSUNVX1VfTE9DQUxFX0RJU1BMQVlfTkFNRVMgMQor
I2VuZGlmCisjZW5kaWYKKworY2xhc3MgSW50bERpc3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KGNlbGwpLT5JbnRsRGlzcGxheU5hbWVz
Ojp+SW50bERpc3BsYXlOYW1lcygpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmludGxEaXNwbGF5TmFt
ZXNTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgdm9pZCBpbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpTVmFsdWUg
b2YoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKSBjb25zdDsKKyAgICBKU09iamVjdCogcmVzb2x2
ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSW50bERp
c3BsYXlOYW1lcyhWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKworICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1aW50OF90IHsgTmFycm93LCBTaG9ydCwgTG9u
ZyB9OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBMYW5ndWFnZSwgUmVnaW9uLCBT
Y3JpcHQsIEN1cnJlbmN5IH07CisgICAgZW51bSBjbGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBD
b2RlLCBOb25lIH07CisKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxl
KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmcoVHlwZSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBmYWxsYmFja1N0cmluZyhGYWxsYmFjayk7CisKKyAgICB1c2luZyBVTG9j
YWxlRGlzcGxheU5hbWVzRGVsZXRlciA9IElDVURlbGV0ZXI8dWxkbl9jbG9zZT47CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxl
dGVyPiBtX2Rpc3BsYXlOYW1lczsKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBzdG9yZSBpdCBvbmx5IHdoZW4gbV90eXBlIGlzIEN1cnJlbmN5LgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NzMKKyAgICBDU3Ry
aW5nIG1fbG9jYWxlQ1N0cmluZzsKKyAgICBTdHlsZSBtX3N0eWxlIHsgU3R5bGU6OkxvbmcgfTsK
KyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Okxhbmd1YWdlIH07CisgICAgRmFsbGJhY2sgbV9mYWxs
YmFjayB7IEZhbGxiYWNrOjpDb2RlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZmJmZjNkOTg5ZmIyNGJlNjM5MDgzMzg0
MTYyY2EwZmIzOTExZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNU
UlVDVElCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVk
TG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUg
IkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmRpc3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFibGUs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
KSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAor
QGJlZ2luIGRpc3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09m
ICAgICAgICAgICAgIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNP
ZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IqIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRp
c3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1
Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxE
aXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bERpc3BsYXlO
YW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxEaXNw
bGF5TmFtZXMsIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMpCit7Cit9CisKK3ZvaWQgSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgIkRpc3BsYXlOYW1lcyJfcywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91
dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAg
IGRpc3BsYXlOYW1lc1Byb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgp
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgp
CisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPmRp
c3BsYXlOYW1lc1N0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgSW50bERpc3BsYXlOYW1lcyogZGlzcGxheU5hbWVzID0gSW50bERpc3BsYXlO
YW1lczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChkaXNwbGF5TmFtZXMpOwor
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGRpc3BsYXlOYW1lcy0+aW5pdGlhbGl6ZURpc3Bs
YXlOYW1lcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGlzcGxheU5hbWVzKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEaXNw
bGF5TmFtZXMiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgLy8gSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0
aW9uc10pIChFQ01BLTQwMiAyLjApCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09m
CisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGlzcGxheU5hbWVzJS5bW2F2
YWlsYWJsZUxvY2FsZXNdXS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxv
Y2FsZXMgPSBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4g
TGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4K
KyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxl
TGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJu
IFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0
aW9ucykuCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3Vw
cG9ydGVkTG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NGFlMWU4YTgyNWI4NmY3YTdj
OGE5NmM1MDFiNDRmYmNhZDg4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc0Nv
bnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1By
b3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciwgSW50ZXJu
YWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYThlYzgwZjQyNTM1ZmZkNjBjOTM5OTc5NDdhMjAyZGEzZmIzMTczCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIgorCisj
aW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZTo6c19pbmZvID0geyAiSW50bC5EaXNwbGF5TmFtZXMiLCAmQmFzZTo6c19pbmZvLCAmZGlzcGxh
eU5hbWVzUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUKKyAgb2Yg
ICAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJlc29sdmVkT3B0aW9ucyAgSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgICAgRG9udEVudW18RnVuY3Rpb24gMAor
QGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZT4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsK
K30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1l
cy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5vZgorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMgPSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5
TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFt
ZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzIl9zKTsKKworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+b2Yo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1l
cy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMgPSBqc0R5bmFtaWNDYXN0PEludGxEaXNw
bGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkaXNwbGF5
TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3BsYXlOYW1l
cyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShk
aXNwbGF5TmFtZXMtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2N2U1ODNhNjc1NzQ0
ZTQxNWE0ODVlODNlZjFmMzU4NmU5YjEyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
fQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6
CisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA4MGU2NGYxYWIx
Nzk3MTM4YjI1MmI4ZmNkMTA3MWQ3NmJkZDQ2MjlhLi45NWI2YzgzZjczOWVlNDQzYjVmYTgwMTNm
NTkwY2MzZTIxYThmZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TG9jYWxlLmNwcApAQCAtMTkxLDI3ICsxOTEsNiBAQCBTdHJpbmcgSW50bExvY2FsZTo6a2V5d29y
ZFZhbHVlKEFTQ0lJTGl0ZXJhbCBrZXksIGJvb2wgaXNCb29sZWFuKSBjb25zdAogICAgIHJldHVy
biB2YWx1ZSA/IFN0cmluZyh2YWx1ZSkgOiBlbXB0eVN0cmluZygpOwogfQogCi0vLyB1bmljb2Rl
X2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIsM30gfCBhbHBoYXs1LDh9IDsKLXN0YXRpYyBib29s
IGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGF1dG8g
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIHJldHVybiBsZW5ndGggPj0gMiAmJiBsZW5n
dGggPD0gOCAmJiBsZW5ndGggIT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0FTQ0lJQWxwaGE+KCk7Ci19Ci0KLS8vIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyA9IGFscGhhezR9
IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykK
LXsKLSAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgpID09IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwotfQotCi0vLyB1bmljb2RlX3JlZ2lvbl9zdWJ0
YWcgPSBhbHBoYXsyfSB8IGRpZ2l0ezN9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVJlZ2lvblN1
YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKLSAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKLSAgICAgICAgfHwgKGxlbmd0aCA9PSAzICYmIHN0cmlu
Zy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7Ci19Ci0KIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUKIHZvaWQgSW50bExvY2FsZTo6aW5p
dGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhZ1Zh
bHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYzM4ZmU5OWUyZjRmMGEzZGIy
ZjNhYjE3OTkyMmViYTgzOGFhMjkzOC4uMThlYzA5MzgxNWY1YWZiYjQxODgyYzNjNTk5MTZhZmY0
ZjNiMTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YQogICAgIFN0cmluZyBjdXJyZW5jeSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3VycmVuY3kiKSwgeyB9LCBudWxs
cHRyLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
ICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0
aCgpICE9IDMgfHwgIWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhh
PigpKSB7CisgICAgICAgIGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGN1cnJlbmN5KSkg
ewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBj
dXJyZW5jeSBjb2RlIl9zKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMWRmYTIwODJh
ZjE0MjNmNGQzZWQzZTEzMzBhOTQ5NjNiZWVhNDMwMS4uYTJjYTliMTIzNDlhYTk0N2ZmOGZiZDIx
OTRmZGIwMzFiZTY1MjRkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDkgQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNw
bGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2Fs
ZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxM
b2NhbGVQcm90b3R5cGUuaCIKQEAgLTc3LDYgKzgwLDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0
ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAg
IHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkt
PnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZURp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBJ
bnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qo
dm0pOworICAgIHJldHVybiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgp
LT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQorCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVM
b2NhbGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9i
amVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTE1Miw2
ICsxNjIsMTIgQEAgSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKgogdm9pZCBJbnRsT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisjaWYgSEFWRShJQ1VfVV9MT0NBTEVfRElTUExBWV9OQU1FUykKKyAgICBp
ZiAoT3B0aW9uczo6dXNlSW50bERpc3BsYXlOYW1lcygpKQorICAgICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RGlzcGxheU5hbWVzLCBjcmVhdGVE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNy
ZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKTsKKyNlbmRpZgogfQogCiBTdHJ1Y3R1cmUqIElu
dGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODI0LDYgKzg0MCw3NiBAQCBWZWN0b3I8U3Ry
aW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAg
IHJldHVybiBudW1iZXJpbmdTeXN0ZW1zOwogfQogCisvLyB1bmljb2RlX2xhbmd1YWdlX3N1YnRh
ZyA9IGFscGhhezIsM30gfCBhbHBoYXs1LDh9IDsKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0
YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CisgICAgcmV0dXJuIGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA4ICYmIGxlbmd0aCAhPSA0
ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKwor
Ly8gdW5pY29kZV9zY3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOworYm9vbCBpc1VuaWNvZGVTY3Jp
cHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgo
KSA9PSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsK
K30KKworLy8gdW5pY29kZV9yZWdpb25fc3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Citi
b29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRv
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0
cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKKyAgICAgICAgfHwg
KGxlbmd0aCA9PSAzICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdp
dD4oKSk7Cit9CisKKy8vIHVuaWNvZGVfdmFyaWFudF9zdWJ0YWcgPSAoYWxwaGFudW17NSw4fSB8
IGRpZ2l0IGFscGhhbnVtezN9KSA7Citib29sIGlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoU3RyaW5n
VmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAg
aWYgKGxlbmd0aCA+PSA1ICYmIGxlbmd0aCA8PSA4KQorICAgICAgICByZXR1cm4gc3RyaW5nLmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhbnVtZXJpYz4oKTsKKyAgICByZXR1cm4g
bGVuZ3RoID09IDQgJiYgaXNBU0NJSURpZ2l0KHN0cmluZ1swXSkgJiYgc3RyaW5nLnN1YnN0cmlu
ZygxKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYW51bWVyaWM+KCk7Cit9CisK
Ky8vIHVuaWNvZGVfbGFuZ3VhZ2VfaWQsIGJ1dCBpbnRlcnNlY3Rpb24gb2YgQkNQNDcgYW5kIFVU
UzM1LgorLy8gdW5pY29kZV9sYW5ndWFnZV9pZCA9CisvLyAgICAgfCB1bmljb2RlX2xhbmd1YWdl
X3N1YnRhZyAoc2VwIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyk/IChzZXAgdW5pY29kZV9yZWdpb25f
c3VidGFnKT8gKHNlcCB1bmljb2RlX3ZhcmlhbnRfc3VidGFnKSogOworLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvaXNzdWVzLzc5Citib29sIGlz
VW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgVmVjdG9yPFN0cmlu
Z1ZpZXcsIDQ+IHN1YnRhZ3M7CisgICAgZm9yIChhdXRvIHN1YnRhZyA6IHN0cmluZy5zcGxpdEFs
bG93aW5nRW1wdHlFbnRyaWVzKCctJykpCisgICAgICAgIHN1YnRhZ3MuYXBwZW5kKHN1YnRhZyk7
CisKKyAgICBBU1NFUlQoc3VidGFncy5zaXplKCkgPj0gMSk7CisgICAgdW5zaWduZWQgY3Vyc29y
ID0gMDsKKyAgICBpZiAoIWlzVW5pY29kZUxhbmd1YWdlU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2N1cnNvcjsKKworICAgIGlmIChjdXJzb3Ig
PT0gc3VidGFncy5zaXplKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChpc1VuaWNv
ZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgKytjdXJzb3I7CisKKyAg
ICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoaXNVbmljb2RlUmVnaW9uU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICsr
Y3Vyc29yOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGN1cnNvciA9PSBzdWJ0
YWdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWlzVW5p
Y29kZVZhcmlhbnRTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgKytjdXJzb3I7CisgICAgfQorfQorCitib29sIGlzV2VsbEZvcm1lZEN1
cnJlbmN5Q29kZShTdHJpbmdWaWV3IGN1cnJlbmN5KQoreworICAgIHJldHVybiBjdXJyZW5jeS5s
ZW5ndGgoKSA9PSAzICYmIGN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFs
cGhhPigpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5j
R2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBJbnRsLmdldENhbm9uaWNhbExvY2FsZXMobG9jYWxl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBlZDlj
MWUxMGI2YWRhNGZkOWQ0MjU3NDYwNmNkZDkyYTkxMjIzOWI3Li4yNTUxOGYxOWZhN2ZhNTZkYzYw
NWQ5NWJiMjlmMTVkMzhmOGUxOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oCkBAIC02MCw2ICs2MCw3IEBAIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xv
YmFsT2JqZWN0Kik7CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVz
KCk7CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMo
KTsKIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWls
YWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGlzcGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcygp
IHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0
PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50
bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50
bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2Nh
bGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxSZWxhdGl2ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsg
fQpAQCAtNzksNiArODAsMTQgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0Zvckxv
Y2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSk7CiAKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRp
ZmllclR5cGUoU3RyaW5nVmlldyk7CiAKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3Ry
aW5nVmlldyk7Citib29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wg
aXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVWYXJpYW50
U3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZUlkKFN0cmluZ1ZpZXcp
OworCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3KTsKKwogc3RydWN0
IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKICAgICB2b2lkIG9wZXJhdG9yKCkoVUZp
ZWxkUG9zaXRpb25JdGVyYXRvciopIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzZWEzMGRiOWUyZTRkNTM4ZGE4
ZjIzMmNmODliOWU0Yzk4MjM3MDA2Li5jODc5Mjc0NWI5MzQ4MDNmZGY2YmFmMWFiNGIwNjdjYThi
OTJiYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03Myw2ICs3Myw4IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgor
I2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9j
YWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXQuaCIKQEAgLTk4MSw2ICs5ODMsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3Ry
dWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5h
bWUKICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSkpOwog
ICAgICAgICB9KTsKKyAgICBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAg
ICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBkaXNw
bGF5TmFtZXNQcm90b3R5cGUgPSBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGUoaW5p
dC52bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAg
ICAgICAgaW5pdC5zZXQoSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZGlzcGxheU5hbWVzUHJvdG90eXBlKSk7CisgICAgICAgIH0pOwogICAg
IG1fbG9jYWxlU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTE4MzIs
NiArMTg0MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xs
YXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9sb2NhbGVTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IGRkYzMwYjgyZTU1ODM4N2IwNzdlNmQ5Y2JkMTdlMzZhYjIwMzE0YzEuLjI3
Nzc0ZWJiYzYwMzZmN2EzNWJmMzVlZTgxZTE0ZTc2Y2EwMmM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjkyLDYgKzI5Miw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1
bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9jb2xsYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0
cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmU7CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbG9jYWxlU3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1h
dFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKQEAgLTc5Miw2ICs3OTMsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBk
YXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBkaXNwbGF5TmFtZXNTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1
cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0
dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbG9jYWxlU3RydWN0dXJlKCkgeyByZXR1
cm4gbV9sb2NhbGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbHVyYWxS
dWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA1
ZGNmNDI4YmY0NzcxOWI1OTRiNjcwY2U1OGQ4Nzc3ZDM3OTI3MjYwLi45MDBjMDE0NWQxN2I2ZmY1
NTcwOGNhYWIzN2U3NDBkZjdiMGYxYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4OCw2ICs0ODgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlV2ViQXNz
ZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2Fz
bSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywgZmFsc2Us
IE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29s
LCB1c2VCaWdJbnQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxlIEJpZ0lu
dCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxEaXNwbGF5TmFtZXMsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGlzcGxheU5hbWVzIGNvbnN0cnVjdG9yLiIpIFwKICAg
ICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4g
SWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUg
dW5kZWNpZGVkLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFs
LCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRo
IGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikgXAogICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2Rl
LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgaXQgd2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24u
IikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDE2N2NmMGY1ZDlmY2Zi
Yzc3M2IwYzU1ZDcxYjIzY2JhNWZlNjJiNzYuLjQwZGRjMDUyYjgxOTc4ZjU5MDI1ZGYyYjk2Zjk4
MjAwMzcyNzc1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY1LDYg
KzY1LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxDb2xsYXRv
ci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEaXNw
bGF5TmFtZXMuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bE51bWJl
ckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgpAQCAtMzA2LDYgKzMwNyw3
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRpZgogICAg
ICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxD
b2xsYXRvcj4oKSkKICAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCisgICAgLCBpbnRsRGlzcGxh
eU5hbWVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFt
ZXM+KCkpCiAgICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxMb2NhbGU+KCkpCiAgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1
cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1
bGVzPigpKQpAQCAtMTQ4MSw2ICsxNDgzLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWwKICNl
bmRpZgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRv
clNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvcikKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRT
cGFjZSwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVG
b3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3Bs
YXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGlz
cGxheU5hbWVzKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxM
b2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExvY2FsZSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3Bh
Y2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXQp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVz
U3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJhbFJ1bGVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYmVkMTY2ODgwNTY2NzliMDNlZDBj
MmI4YjRkODA4ODA3NWYyZmIzMy4uOGQ0N2YyMDJhM2ZkMTNlM2FjM2RmMjk2ZGUyNjVmMTIyZTA3
NTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMjYsNiArMTI2LDcgQEAg
Y2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENvbGxhdG9y
OwogY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50bERpc3BsYXlOYW1lczsKIGNs
YXNzIEludGxMb2NhbGU7CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50bFBsdXJh
bFJ1bGVzOwpAQCAtNDAwLDYgKzQwMSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjZW5kaWYK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsK
QEAgLTU1Nyw2ICs1NTksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1
bGVzU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDZjMzIxNzk2NTA3ZWM1NDgw
OWU3YWE2YjBlNThlMWY0ZWRiYzc5YjUuLjkyMGZiZmI3ZDFmM2QwOTQ1NmZmNDE5MzM0NGIyMDEy
MTRhMGUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC03NTksNiArNzU5LDEyIEBA
IGNsYXNzIFN0cmluZ1ZpZXc6OkNvZGVVbml0cyB7CiBjbGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJl
c3VsdDo6SXRlcmF0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgor
ICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZzsK
KyAgICB1c2luZyB2YWx1ZV90eXBlID0gU3RyaW5nVmlldzsKKyAgICB1c2luZyBkaWZmZXJlbmNl
X3R5cGUgPSBwdHJkaWZmX3Q7CisgICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOworICAg
IHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOworCiAgICAgU3RyaW5nVmlldyBvcGVyYXRv
ciooKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCBhNjM1OTdmNGEyMGVkNjFlNjZmMjg5ODk4NWRlZjdkNjU1ZjA5YzE5Li45NDQ4YjdlOTAw
YjNjYzBhNDY0MmJmNGI4MDVmOGIwOGRjMDE4MTRlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA2LTMw
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAy
XSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3Mg
S2lyc2xpbmcuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAo
dm0uaWN1VmVyc2lvbik6CisgICAgICAgICogc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0
YWdzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKHZtLmljdVZlcnNpb24pOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlh
bWw6CisKIDIwMjAtMDYtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1k
aXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yM2MzZWU2ODcxYzBkZWEwN2E0MzYwZDVkOGY4NzM5ZDYzODhlODQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMKQEAgLTAsMCAr
MSwyMDAgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNwbGF5TmFtZXM9MSIpCitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjEp
IHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5EaXNwbGF5TmFtZXMsIGBUeXBlRXJy
b3I6IHR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkYCkKKworICAgIC8vIEdldCBkaXNwbGF5IG5h
bWVzIG9mIHJlZ2lvbiBpbiBFbmdsaXNoCisgICAgdmFyIHJlZ2lvbk5hbWVzID0gbmV3IEludGwu
RGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAgaWYgKCR2bS5pY3VW
ZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwg
IkxhdGluIEFtZXJpY2EiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJl
bGl6ZSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVW5pdGVkIFN0YXRl
cyIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhICYgSGVyemVn
b3ZpbmEiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIgKEJ1
cm1hKSIpOworCisgICAgLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgcmVnaW9uIGluIFRyYWRpdGlv
bmFsIENoaW5lc2UKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3po
LUhhbnQnXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0g
NjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIuaLieS4gee+jua0
siIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAi6LKd6YeM5pavIik7Cisg
ICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICLnvo7lnIsiKTsKKyAgICBzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignQkEnKSwgIuazouWjq+WwvOS6nuiIh+i1q+WhnuWTpee2ree0jSIp
OworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAi57es55S4Iik7CisKKyAgICBy
ZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9u
Jywgc3R5bGU6ICdzaG9ydCd9KTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCkKKyAg
ICAgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOwor
ICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7CisgICAgc2hvdWxk
QmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICJVUyIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCdCQScpLCAiQm9zbmlhIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyks
ICJNeWFubWFyIik7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhb
J2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICduYXJyb3cnfSk7CisgICAgaWYgKCR2bS5p
Y3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTkn
KSwgIkxhdGluIEFtZXJpY2EiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwg
IkJlbGl6ZSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVVMiKTsKKyAg
ICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworICAgIHNob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciIpOworCisgICAgLy8gR2V0IGRpc3BsYXkg
bmFtZXMgb2YgbGFuZ3VhZ2UgaW4gRW5nbGlzaAorICAgIHZhciBsYW5ndWFnZU5hbWVzID0gbmV3
IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKKyAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFt
ZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZtLmljdVZlcnNp
b24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBzaG91bGRCZShs
YW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworICAg
IGVsc2UKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJh
ZGl0aW9uYWwgQ2hpbmVzZSIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVT
JyksICJBbWVyaWNhbiBFbmdsaXNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
emgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVz
IG9mIGxhbmd1YWdlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICBsYW5ndWFnZU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOwor
ICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsKKyAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aCcpLCAi5Lit5paHIik7CisgICAgc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZignZGUnKSwgIuW+t+aWhyIpOworCisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5l
dyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3No
b3J0J30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsK
KyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2VybWFuIik7CisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwgIkNhbmFkaWFuIEZyZW5jaCIpOworICAg
IGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisg
ICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRy
YWRpdGlvbmFsIik7CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCd6aC1IYW50JyksICJUcmFkaXRpb25hbCBDaGluZXNlIik7CisgICAgc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignZW4tVVMnKSwgIlVTIEVuZ2xpc2giKTsKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIpOworCisgICAgbGFuZ3VhZ2VO
YW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBz
dHlsZTogJ25hcnJvdyd9KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAi
RnJlbmNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIp
OworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVu
Y2giKTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigp
IDw9IDY2KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJD
aGluZXNlLCBUcmFkaXRpb25hbCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworICAgIHNob3Vs
ZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7CisgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworICAg
IC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBFbmdsaXNoCisgICAgdmFyIHNjcmlw
dE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7
CisgICAgLy8gR2V0IHNjcmlwdCBuYW1lcworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdM
YXRuJyksICJMYXRpbiIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJB
cmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEi
KTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBUcmFkaXRpb25hbCBD
aGluZXNlCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50
J10sIHt0eXBlOiAnc2NyaXB0J30pOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRu
JyksICLmi4nkuIHmlociKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAi
6Zi/5ouJ5Lyv5paHIik7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIueJ
h+WBh+WQjSIpOworCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydl
biddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnc2hvcnQnfSk7CisgICAgc2hvdWxkQmUoc2Ny
aXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMu
b2YoJ0FyYWInKSwgIkFyYWJpYyIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5h
JyksICJLYXRha2FuYSIpOworCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFt
ZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnbmFycm93J30pOworICAgIHNob3Vs
ZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworICAgIHNob3VsZEJlKHNjcmlw
dE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5v
ZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1
cnJlbmN5IGNvZGUgaW4gRW5nbGlzaAorICAgIHZhciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwu
RGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKKyAgICAvLyBHZXQgY3Vy
cmVuY3kgbmFtZXMKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIlVTIERv
bGxhciIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAiRXVybyIpOwor
ICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiTmV3IFRhaXdhbiBEb2xsYXIi
KTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIkNoaW5lc2UgWXVhbiIp
OworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiSmFwYW5lc2UgWWVuIik7
CisKKyAgICAvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGluIFRyYWRpdGlv
bmFsIENoaW5lc2UKKyAgICBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
emgtSGFudCddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFt
ZXMub2YoJ1VTRCcpLCAi576O5YWDIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZign
RVVSJyksICLmrZDlhYMiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwg
IuaWsOWPsOW5oyIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAi5Lq6
5rCR5bmjIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICLml6XlnJMi
KTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlz
aCBpbiBzaG9ydAorICAgIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydl
biddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICdzaG9ydCcgfSk7CisgICAgc2hvdWxkQmUo
Y3VycmVuY3lOYW1lcy5vZignVVNEJyksICIkIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1l
cy5vZignRVVSJyksICLigqwiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0Qn
KSwgIk5UJCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiQ07CpSIp
OworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKKworICAgIC8v
IEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBuYXJyb3cK
KyAgICBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6
ICdjdXJyZW5jeScsIHN0eWxlOiAnbmFycm93JyB9KTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5h
bWVzLm9mKCdVU0QnKSwgIiQiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVIn
KSwgIuKCrCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiJCIpOwor
ICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKKyAgICBzaG91bGRC
ZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwgIsKlIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignSlBaJyksICJKUFoiKTsgLy8gRmFsbGJhY2sgY29kZQorICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUi
OiJlbiIsInN0eWxlIjoibmFycm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJjb2Rl
In1gKTsKKworICAgIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbidd
LCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICduYXJyb3cnLCBmYWxsYmFjazogJ25vbmUnIH0p
OworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWicpLCB1bmRlZmluZWQpOyAvLyBG
YWxsYmFjayBub25lCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVuY3lOYW1lcy5y
ZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBl
IjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5vbmUifWApOworCisgICAgcmVnaW9uTmFtZXMgPSBu
ZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsKKyAgICBzaG91
bGRCZShyZWdpb25OYW1lcy5vZignOTk5JyksICI5OTkiKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwi
c3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoiY29kZSJ9YCk7CisKKyAg
ICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVn
aW9uJywgZmFsbGJhY2s6J25vbmUnfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPiA2NCkK
KyAgICAgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCB1bmRlZmluZWQpOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwg
YHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwiZmFsbGJhY2si
OiJub25lIn1gKTsKKworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
WydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID4g
NjQpIHsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgImVuLUFB
Iik7CisgICAgICAgIHZhciBvYmplY3QgPSB7CisgICAgICAgICAgICB0b1N0cmluZygpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJ2VuLUFBJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCBvYmplY3QpOworICAg
IH0KKworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7
dHlwZTogJ2xhbmd1YWdlJywgZmFsbGJhY2s6ICdub25lJ30pOworICAgIGlmICgkdm0uaWN1VmVy
c2lvbigpID4gNjQpIHsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEn
KSwgdW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3Qp
LCB1bmRlZmluZWQpOworICAgIH0KKworICAgIHNob3VsZEJlKEludGwuRGlzcGxheU5hbWVzLnBy
b3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddLCBgSW50bC5EaXNwbGF5TmFtZXNgKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVz
T2YoImVuIikpLCBgWyJlbiJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5E
aXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJqYS1KUCIpKSwgYFsiamEtSlAiXWApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExv
Y2FsZXNPZih7IGxlbmd0aDogNCwgMTogJ2VuJywgMDogJ2VzJywgMzogJ2RlJyB9KSksICdbImVz
IiwiZW4iLCJkZSJdJyk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gSW50bC5EaXNwbGF5TmFtZXMu
c3VwcG9ydGVkTG9jYWxlc09mKCIiKSwgYFJhbmdlRXJyb3I6IGludmFsaWQgbGFuZ3VhZ2UgdGFn
OiBgKQorCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBJbnRsLkRpc3BsYXlOYW1l
cy5wcm90b3R5cGUub2YuY2FsbCh7fSk7CisgICAgfSwgYFR5cGVFcnJvcjogSW50bC5EaXNwbGF5
TmFtZXMucHJvdG90eXBlLm9mIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIERpc3BsYXlOYW1lc2ApOworCisgICAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNh
bGwoe30pOworICAgIH0sIGBUeXBlRXJyb3I6IEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgRGlzcGxheU5hbWVzYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFy
c2UtdW5pY29kZS1zdWJ0YWdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwODdjZWY0ZjI4ZDM0MjZkNTdhYjM5
MGNlNjUyZTg4NGY3NzA2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRs
LXBhcnNlLXVuaWNvZGUtc3VidGFncy5qcwpAQCAtMCwwICsxLDkyIEBACisvL0AgcnVuRGVmYXVs
dCgiLS11c2VJbnRsRGlzcGxheU5hbWVzPTEiKQorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOwor
ICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9
IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2Up
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7
Cit9CisKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDYxKSB7CisgICAgdmFyIHJlZ2lvbk5hbWVz
ID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1l
bnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lv
bk5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3Vi
dGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAiKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiByZWdpb25OYW1lcy5vZigiMDAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5v
ZigiMDAwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2Ap
OworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCJhIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4gcmVnaW9uTmFtZXMub2YoImFhYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEg
cmVnaW9uIHN1YnRhZ2ApOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0KQorICAgICAg
ICBzaG91bGRCZShyZWdpb25OYW1lcy5vZigiNDE5IiksIGBMYXRpbiBBbWVyaWNhYCk7CisgICAg
c2hvdWxkQmUocmVnaW9uTmFtZXMub2YoIkpQIiksIGBKYXBhbmApOworICAgIHNob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCJVUyIpLCBgVW5pdGVkIFN0YXRlc2ApOworCisgICAgdmFyIGxhbmd1YWdl
TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30p
OworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJv
cjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiBsYW5ndWFnZU5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi0t
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNo
b3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImVuLSIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVz
Lm9mKCJlbi1VUyIpLCBgQW1lcmljYW4gRW5nbGlzaGApOworICAgIHNob3VsZFRocm93KCgpID0+
IGxhbmd1YWdlTmFtZXMub2YoImVuX1VTIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoImVuLXVzIiks
IGBBbWVyaWNhbiBFbmdsaXNoYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1l
cy5vZigicm9vdCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRg
KTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJyb290LVVTIiksIGBS
YW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIGlmICgkdm0u
aWN1VmVyc2lvbigpID49IDY0KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJl
cy00MTkiKSwgYExhdGluIEFtZXJpY2FuIFNwYW5pc2hgKTsKKyAgICBpZiAoJHZtLmljdVZlcnNp
b24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KSB7CisgICAgICAgIHNob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgYENoaW5lc2UsIFRyYWRpdGlvbmFsYCk7Cisg
ICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwgYENoaW5lc2Us
IFNpbXBsaWZpZWQgKEhvbmcgS29uZylgKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksIGBUcmFkaXRpb25hbCBDaGluZXNlYCk7Cisg
ICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwgYFNpbXBsaWZp
ZWQgQ2hpbmVzZSAoSG9uZyBLb25nKWApOworICAgIH0KKyAgICBzaG91bGRUaHJvdygoKSA9PiBs
YW5ndWFnZU5hbWVzLm9mKCJIYW50IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBs
YW5ndWFnZSBpZGApOyAvLyBTY3JpcHQgb25seQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ3NyLUxhdG4nKSwgYFNlcmJpYW4gKExhdGluKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQKKyAg
ICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzci1DeXJsJyksIGBTZXJiaWFuIChDeXJpbGxp
YylgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VO
YW1lcy5vZigiemgtSEstSGFucyIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFu
Z3VhZ2UgaWRgKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzbC1yb3phaicpLCBg
U2xvdmVuaWFuIChSZXNpYW4pYCk7IC8vIExhbmd1YWdlLVZhcmlhbnQKKyAgICBzaG91bGRUaHJv
dygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbF9yb3phaiIpLCBgUmFuZ2VFcnJvcjogYXJndW1l
bnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFn
ZU5hbWVzLm9mKCJzbC1yb3phai1DeXJsIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2Yo
InNsLXJvemFqLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRg
KTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1fcm96YWoiKSwg
YFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigic2wtQ3lybC0iKSwgYFJhbmdlRXJyb3I6IGFy
Z3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFu
Z3VhZ2VOYW1lcy5vZigiLXNsLUN5cmwtIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5LUxhdG4t
SVQtYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFseSwgRWFzdGVybiBBcm1lbmlhbilg
KTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVJlZ2lvbi1WYXJpYW50CisgICAgc2hvdWxkQmUobGFuZ3Vh
Z2VOYW1lcy5vZignaHktTGF0bi1JVCcpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFseSlgKTsgLy8g
TGFuZ3VhZ2UtU2NyaXB0LVJlZ2lvbgorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5
LUxhdG4tYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBFYXN0ZXJuIEFybWVuaWFuKWApOyAv
LyBMYW5ndWFnZS1TY3JpcHQtVmFyaWFudAorICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdl
TmFtZXMub2YoImh5LUxhdG4tSVRaLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlz
IG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1l
cy5vZigiaHktTGF0bi0wMC1hcmV2ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3Qg
YSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2Yo
Imh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBu
b3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMu
b2YoImh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFt
ZXMub2YoImh5enp6enp6enp6LUxhdG4tYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKworICAgIHZhciBzY3JpcHROYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0J30pOworICAgIHNob3VsZFRocm93
KCgpID0+IHNjcmlwdE5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBh
IHNjcmlwdCBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBzY3JpcHROYW1lcy5vZigi
LSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAg
IHNob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYXRuMCIpLCBgUmFuZ2VFcnJvcjog
YXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+
IHNjcmlwdE5hbWVzLm9mKCJMYW4wIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBz
Y3JpcHQgc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIkxh
biIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAg
IHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJMYXRuIiksIGBMYXRpbmApOworICAgIHNob3VsZEJl
KHNjcmlwdE5hbWVzLm9mKCJsYXRuIiksIGBMYXRpbmApOyAvLyBDYW5vbmljYWxpemF0aW9uIGNh
biBtYWtlIGl0IHdvcmsuCisKKyAgICB2YXIgY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3Bs
YXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knfSk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4gY3VycmVuY3lOYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3
ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVu
Y3lOYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3Jt
ZWQgY3VycmVuY3kgY29kZWApOworICAgIHNob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMu
b2YoImFiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJy
ZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigianB5
eCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kg
Y29kZWApOworICAgIHNob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImpwMCIpLCBg
UmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWAp
OworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoImpweSIpLCBgSmFwYW5lc2UgWWVuYCk7
CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZigiSlBZIiksIGBKYXBhbmVzZSBZZW5gKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAppbmRleCBhNzlmMmRiZTM2MTY2ZjBiOGViYjk5OWRiODVjZjRlMTY0
Yjk0ZGYxLi5lNjM3MmZmOTI4M2JjZmI1NGJhZmE2ZDhiNWIxNmU0Y2FhOGUzM2M4IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCkBAIC0yNiw2ICsyNiw5IEBAIHNraXA6CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9y
bWF0LWRheVBlcmlvZAogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mb3JtYXRSYW5nZQogICAg
IC0gSW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCisgICAgIyBDdXJy
ZW50bHksIHRlc3QyNjIgaGFzIGEgYnVnIHdpdGggSW50bC5EaXNwbGF5TmFtZXMsIGFuZCBleHBv
c2luZyBpdCBjYW4gY2F1c2UgbWFueSBmYWlsdXJlcyBpbiB2YXJpb3VzIEludGwgdGVzdHMuCisg
ICAgIyBXZSBzaG91bGQgZW5hYmxlIGl0IGFmdGVyIGVuc3VyaW5nIHRlc3QyNjIgaXMgZml4ZWQu
CisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS90ZXN0MjYyL2lzc3Vlcy8yNjgyCiAgICAg
LSBJbnRsLkRpc3BsYXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRsLk51
bWJlckZvcm1hdC11bmlmaWVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404623</attachid>
            <date>2020-07-17 17:19:23 -0700</date>
            <delta_ts>2020-07-17 17:19:23 -0700</delta_ts>
            <desc>Rebaselined</desc>
            <filename>bug-209779-20200717171922.patch</filename>
            <type>text/plain</type>
            <size>91456</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li4zZGE4ZDE1NDU1YWM4Yzlm
NGNmMWM1NWFkNzg5YjFiZDZjYjhlMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAyMC0wNy0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBJbnRsLkRpc3BsYXlOYW1lcyBiZWhpbmQgdXNlSW50bERpc3BsYXlOYW1lcz0xIGZs
YWcuCisgICAgICAgIEludGwuRGlzcGxheU5hbWVzIGNhbiBvZmZlciByZWFkYWJsZSAiZGlzcGxh
eS1uYW1lIiBmb3IgSUNVIGxhbmd1YWdlLCBzY3JpcHQsIHJlZ2lvbiwgY3VycmVuY3kgY29kZXMu
CisgICAgICAgIEZvciBleGFtcGxlLCBpdCBjYW4gb2ZmZXIgIlVuaXRlZCBTdGF0ZXMiIHN0cmlu
ZyBmb3IgIlVTIiByZWdpb24gY29kZS4KKyAgICAgICAgV2UgdXNlIElDVSBVTG9jYWxlRGlzcGxh
eU5hbWVzIHRvIGltcGxlbWVudCBpdCwgZXhjZXB0IGZvciBjdXJyZW5jeSBzaW5jZSBVTG9jYWxl
RGlzcGxheU5hbWVzIGlzIG5vdCBzdXBwb3J0aW5nCisgICAgICAgIGN1cnJlbmN5IGNvcnJlY3Rs
eTogaXQgaWdub3JlcyAibG9uZyIsICJzaG9ydCIsIGFuZCAibmFycm93IiBzdHlsZSBjb25maWd1
cmF0aW9ucy4gV2UgbmVlZCB0byBjYWxsIHVjdXJyX2dldE5hbWUKKyAgICAgICAgZGlyZWN0bHku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGFkZHMgdW5pY29kZS1sYW5ndWFn
ZS1pZCBwYXJzaW5nIGluIEludGxMb2NhbGUuY3BwIHNvIHRoYXQgd2UgY2FuIHZhbGlkYXRlIGxh
bmd1YWdlIGlkCisgICAgICAgIHdoZW4gaXQgaXMgcGFzc2VkIHRvIGBJbnRsLkRpc3BsYXlOYW1l
cyNvZmAgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
czo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6Om9mIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmguCisgICAgICAgICogcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAo
SlNDOjpjYWxsSW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YpOgorICAgICAgICAoSlNDOjpJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVu
dGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bExvY2FsZS5jcHA6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlU3VidGFn
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVnaW9uU3VidGFnKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVT
Y3JpcHRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOgorICAg
ICAgICAoSlNDOjppc1VuaWNvZGVWYXJpYW50U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmlj
b2RlTGFuZ3VhZ2VJZCk6CisgICAgICAgIChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6
CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmludGxEaXNw
bGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGlzcGxheU5hbWVzU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
CiAyMDIwLTA3LTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gQ2xlYW4gdXAgcmVzb2x2ZUxvY2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYmM3ZWI3ZWU3YzM4NWY4YWJm
YmQ4MWU5OThjNzM0YjA1NTY1YTg4Li5hYmRmNGI1ODAwMTljNjQ2NDA3YjZhNDc3MjFhZWEwMjQ5
YzQ0ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTE3ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5E
aXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisKIDIwMjAtMDctMTcgIEZ1amlpIEhpcm9ub3Jp
ICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgRG9uJ3QgaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+IGluIFNWR1BhcnNlclV0aWxpdGllcy5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzZhMDgzMGZhNTFlOWIyMjlhNGVmMzE4YTkwYzllNzUy
MmMwYWJlNy4uMmMwZWUxYWFjODcwNzg5MDkxNmVmZDJjOGFhNTA0NGYxOTAzNGFiNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzAsNiArNzAsOCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYTMxZDIwNzk0NDEx
Zjg3YTMzMWQ0Y2RkMGNkMGFmZjRkOGY0MDU5NC4uNWEwYzg4M2Q1MzQ4ZTY1NjdhZWZmOTZhZWJj
MDgxZmJhMDc2Y2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsOCBAQCAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50
bExvY2FsZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc5Y2RlNGVlNTA3ZTEzZjZmZjdmYTc4
MDBkYzY0NWNiZjg5NDFjNjcuLjJiZGY1YjJjODIyYTZkOWU3YjZmNDU2YmIwYTk2MTYzZWUxZDZk
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTI3LDYgKzI3LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5s
dXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjE4NDBjNzcx
MzJiOTExZDk2NzZiNTQxNTM2MjE3ZmYxMmJjNGQ3Li5kNWQ2ZjJiYmQwMTMzMDdjODRhODEwMzdj
MDFiNTIxY2JkMmFhNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTU4LDYgKzE1OCw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRs
Q29sbGF0b3JQcm90b3R5cGUubHV0LmggXAogICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAorICAg
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaCBcCiAgICAg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNkNzRj
MjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4uYTQzNjgzZWZjNDhiYmVhODg3NGI2
ODNhNzg0NWE5Zjk1MjBjMDExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4
MTksNiArMTgxOSw5IEBACiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVE
QkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQg
LyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyB9Owog
CQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4
OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1M0MxMUQyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggKi87IH07CisJ
CUUzNTNDMTFFMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTE4
MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLzsgfTsK
KwkJRTM1M0MxMjEyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTFC
MjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggKi87IH07CiAJ
CUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1
NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRD
YWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0
ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1NUQzOEYyMjQ0Njg3NzAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVEMzhEMjI0NDY4
NkIwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MjgsNiArMTgzMSw4IEBACiAJCUUzNUNBMTU2
MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjM3RUU3MjM2
RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8q
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUUzNjVGMzNCMjRBQTYyM0Iw
MEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIy
IC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUUzNkI3NjcwMjJG
OEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIyRjhENjExMDBEMDk4MTgg
LyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZDQzk0NzIwODYzMTRGMDA1
MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00OTg0LDYgKzQ5ODksMTIgQEAKIAkJRTM0RjkzMEIyMzIyRDg4
MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxE
aXNwbGF5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExNzI0
QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE5MjRB
QTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExQTI0QUE0Q0I2MDAzRkJERjMg
LyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
Q2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2xvYmFsRXhlY3V0YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTAw
MCw2ICs1MDExLDggQEAKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3Rh
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEg
LyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMaW5rVGltZUNvbnN0YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVGMzM5MjRBQTYy
MTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2QjQ4MDEyM0U5NTczODAwRTRBNjZF
IC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM2Qjc2NkUyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NjUsNiArNjc3OCw4IEBACiAJCQkJ
QTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAq
LywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlFMzY1RjMzOTI0QUE2MjEyMDBD
OTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzNjVG
MzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICov
LAogCQkJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggKi8sCiAJCQkJQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKQEAgLTcyNjAsNiArNzI3NSwxMiBAQAogCQkJCUExNTg3
RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICov
LAogCQkJCUExNTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwICovLAogCQkJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lcy5jcHAgKi8sCisJCQkJRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8q
IEludGxEaXNwbGF5TmFtZXMuaCAqLywKKwkJCQlFMzUzQzExQTI0QUE0Q0I2MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzUzQzExODI0QUE0Q0I2
MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi8sCisJCQkJRTM1M0Mx
MTkyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwICovLAor
CQkJCUUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmggKi8sCiAJCQkJQTNBRkY5MkQyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGUuY3BwICov
LAogCQkJCUEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi8sCiAJCQkJ
QTNBRkY5MkYyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAgKi8s
CkBAIC05NzUwLDYgKzk3NzEsMTEgQEAKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTU4N0Q3MjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUQyNEFB
NENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
NTNDMTFFMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzEyMTI0QUE0
Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkYxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMw
NTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjFiNGZiZjdjY2FjNDdlOWUw
ZDgyODRkNjYzNTgxODEyMWNhZTBmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTgxNCw2ICs4MTQsOSBAQCBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorcnVu
dGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiBydW50aW1l
L0ludGxMb2NhbGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2OGVmZWRhMTRkNDYxMDUyNjA3NWFm
ZGViYWM5YWRiYTI1MjY2YmEuLjNhNDk3ZTA3NGE5MGUwYjExOTU4NmJmYTA4ZDQ4M2ViMzA5NDIz
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMzQsNiArMzQsNyBAQAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFj
cm8oRGF0ZSkgXAogICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCisgICAgbWFjcm8oRGlzcGxh
eU5hbWVzKSBcCiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAg
ICBtYWNybyhGdW5jdGlvbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjI0NjgzY2Y0ODg0NjBhMjhkODQ4
NDRmZWQ4NWNiMjAxYzNmOGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTAsMCArMSwzNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5o
IgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vs
b2MuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSW50bERpc3BsYXlOYW1lcykgfTsKKworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3Bs
YXlOYW1lczo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4o
dm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJ
bnRsRGlzcGxheU5hbWVzOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxE
aXNwbGF5TmFtZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5EaXNwbGF5TmFtZXMKK3ZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURp
c3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMs
IEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwg
bG9jYWxlcyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IEpTT2JqZWN0KiBvcHRpb25zOworICAgIGlmIChvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3Qt
Pm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG9w
dGlvbnMgPSBvcHRpb25zVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICAvLyBEb2VzIG5v
dCBzZXQgZWl0aGVyIG9mICJjYSIgb3IgIm51Ii4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1pbnRsLWRpc3BsYXluYW1lcy1jb25zdHJ1Y3Rv
cgorICAgIFJlc29sdmVMb2NhbGVPcHRpb25zIGxvY2FsZU9wdGlvbnM7CisKKyAgICBMb2NhbGVN
YXRjaGVyIGxvY2FsZU1hdGNoZXIgPSBpbnRsT3B0aW9uPExvY2FsZU1hdGNoZXI+KGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlciwgeyB7ICJsb29r
dXAiX3MsIExvY2FsZU1hdGNoZXI6Okxvb2t1cCB9LCB7ICJiZXN0IGZpdCJfcywgTG9jYWxlTWF0
Y2hlcjo6QmVzdEZpdCB9IH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3Vw
XCIgb3IgXCJiZXN0IGZpdFwiIl9zLCBMb2NhbGVNYXRjaGVyOjpCZXN0Rml0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgYXV0byBsb2NhbGVEYXRhID0g
W10oY29uc3QgU3RyaW5nJiwgUmVsZXZhbnRFeHRlbnNpb25LZXkpIC0+IFZlY3RvcjxTdHJpbmc+
IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9j
YWxlcyA9IGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgYXV0byByZXNv
bHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1
ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVyLCBsb2NhbGVPcHRpb25zLCB7IH0sIGxvY2FsZURh
dGEpOworCisgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7CisgICAgaWYgKG1fbG9jYWxl
LmlzRW1wdHkoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWUgZHVlIHRvIGludmFsaWQgbG9jYWxl
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9u
PFN0eWxlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7
IHsgIm5hcnJvdyJfcywgU3R5bGU6Ok5hcnJvdyB9LCB7ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0
IH0sIHsgImxvbmciX3MsIFN0eWxlOjpMb25nIH0gfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwi
bmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiX3MsIFN0eWxlOjpMb25nKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgYXV0byB0eXBlID0gaW50
bE9wdGlvbjxPcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdp
b24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJj
dXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxh
bmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiJfcywgV1RG
OjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAg
IGlmICghdHlwZSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAidHlwZSBtdXN0IG5vdCBiZSB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fdHlwZSA9IHR5cGUudmFsdWUoKTsKKworICAgIG1fZmFsbGJhY2sgPSBpbnRsT3B0
aW9uPEZhbGxiYWNrPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJmYWxsYmFjayIpLCB7IHsgImNvZGUiX3MsIEZhbGxiYWNrOjpDb2RlIH0sIHsgIm5v
bmUiX3MsIEZhbGxiYWNrOjpOb25lIH0gfSwgImZhbGxiYWNrIG11c3QgYmUgZWl0aGVyIFwiY29k
ZVwiIG9yIFwibm9uZVwiIl9zLCBGYWxsYmFjazo6Q29kZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworI2lmIEhBVkUoSUNVX1VfTE9DQUxFX0RJU1BMQVlfTkFN
RVMpCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBVRGlzcGxh
eUNvbnRleHQgY29udGV4dHNbXSA9IHsKKyAgICAgICAgLy8gZW5fR0IgZGlzcGxheXMgYXMgJ0Vu
Z2xpc2ggKFVuaXRlZCBLaW5nZG9tKScgKFN0YW5kYXJkIE5hbWVzKSBvciAnQnJpdGlzaCBFbmds
aXNoJyAoRGlhbGVjdCBOYW1lcykuCisgICAgICAgIC8vIFdlIHVzZSBEaWFsZWN0IE5hbWVzIGhl
cmUsIGFsaWduZWQgdG8gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjIGRyYWZ0IGFuZCBWOCdzIGJl
aGF2aW9yLgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pbnRs
LWRpc3BsYXluYW1lcyNsYW5ndWFnZS1kaXNwbGF5LW5hbWVzCisgICAgICAgIFVESVNQQ1RYX0RJ
QUxFQ1RfTkFNRVMsCisKKyAgICAgICAgLy8gQ2FwaXRhaWxpemF0aW9uIG1vZGUgY2FuIGJlIHBp
Y2tlZCBmcm9tIHNldmVyYWwgb3B0aW9ucy4gUG9zc2libHkgZWl0aGVyIFVESVNQQ1RYX0NBUElU
QUxJWkFUSU9OX05PTkUgb3IgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUg
aXMKKyAgICAgICAgLy8gcHJlZmVyYWJsZSBpbiBJbnRsLkRpc3BsYXlOYW1lcy4gV2UgdXNlIFVE
SVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FIGJlY2F1c2UgaXQgbWFrZXMgc3Rh
bmRhbG9uZSBkYXRlIGZvcm1hdCBiZXR0ZXIgKGZyICJKdWlsbGV0IDIwMDgiIGluIElDVSB0ZXN0
IHN1aXRlcyksCisgICAgICAgIC8vIGFuZCBEaXNwbGF5TmFtZXMgd2lsbCBzdXBwb3J0IGRhdGUg
Zm9ybWF0cyB0b28uCisgICAgICAgIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFM
T05FLAorCisgICAgICAgIC8vIE5hcnJvdyBiZWNvbWVzIFVESVNQQ1RYX0xFTkdUSF9TSE9SVC4g
QnV0IGluIGN1cnJlbmN5IGNhc2UsIHdlIGhhbmRsZSBkaWZmZXJlbnRseSBpbnN0ZWFkIG9mIHVz
aW5nIFVMb2NhbGVEaXNwbGF5TmFtZXMuCisgICAgICAgIG1fc3R5bGUgPT0gU3R5bGU6Okxvbmcg
PyBVRElTUENUWF9MRU5HVEhfRlVMTCA6IFVESVNQQ1RYX0xFTkdUSF9TSE9SVCwKKworICAgICAg
ICAvLyBBbHdheXMgZGlzYWJsZSBJQ1UgU1VCU1RJVFVURSBzaW5jZSBpdCBkb2VzIG5vdCBtYXRj
aCBhZ2FpbnN0IHdoYXQgdGhlIHNwZWMgZGVmaW5lcy4gSUNVIGhhcyBzb21lIHNwZWNpYWwgc3Vi
c3RpdHV0ZSBydWxlcywgZm9yIGV4YW1wbGUsIGxhbmd1YWdlICJlbi1BQSIKKyAgICAgICAgLy8g
cmV0dXJucyAiRW5nbGlzaCAoQUEpIiAod2hpbGUgQUEgY291bnRyeSBjb2RlIGlzIG5vdCBkZWZp
bmVkKSwgYnV0IHdlIHdvdWxkIGxpa2UgdG8gcmV0dXJuIGVpdGhlciBpbnB1dCB2YWx1ZSBvciB1
bmRlZmluZWQsIHNvIHdlIGRvIG5vdCB3YW50IHRvIGhhdmUgSUNVIHN1YnN0aXR1dGUgcnVsZXMu
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGVmZmVjdGl2ZSBhZnRlciBJQ1UgNjUuCisg
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvY29tbWl0LzUzZGQ2
MjFlM2E1Y2ZmM2I3OGI1NTdjNDA1ZjFiMWQ2ZjEyNWI0NjgKKyAgICAgICAgVURJU1BDVFhfTk9f
U1VCU1RJVFVURSwKKyAgICB9OworICAgIG1fbG9jYWxlQ1N0cmluZyA9IG1fbG9jYWxlLnV0Zjgo
KTsKKyAgICBtX2Rpc3BsYXlOYW1lcyA9IHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlzcGxheU5h
bWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4odWxkbl9vcGVuRm9yQ29udGV4dChtX2xv
Y2FsZUNTdHJpbmcuZGF0YSgpLCBjb250ZXh0cywgV1RGX0FSUkFZX0xFTkdUSChjb250ZXh0cyks
ICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3Bs
YXlOYW1lcyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZWxzZQorICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJbnRsLkRp
c3BsYXlOYW1lcyBzaW5jZSB1c2VkIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgbGlu
a2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICByZXR1cm47CisjZW5kaWYKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFt
ZXMucHJvdG90eXBlLm9mCitKU1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29kZVZhbHVlKSBjb25zdAoreworCisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworI2lmIEhBVkUoSUNVX1VfTE9DQUxFX0RJU1BMQVlfTkFNRVMpCisgICAg
QVNTRVJUKG1fZGlzcGxheU5hbWVzKTsKKyAgICBhdXRvIGNvZGUgPSBjb2RlVmFsdWUudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworCisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpDdXJyZW5jeSkgewor
ICAgICAgICAvLyBXZSBkbyBub3QgdXNlIHVsZG5fa2V5VmFsdWVEaXNwbGF5TmFtZSArICJjdXJy
ZW5jeSIuIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnMuCisgICAgICAg
IC8vICAgICAxLiBJQ1UgZG9lcyBub3QgcmVzcGVjdCBVRElTUENUWF9MRU5HVEhfRlVMTCAvIFVE
SVNQQ1RYX0xFTkdUSF9TSE9SVCBpbiBpdHMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vICAg
ICAyLiBUaGVyZSBpcyBubyB3YXkgdG8gc2V0ICJuYXJyb3ciIHN0eWxlIGluIFVMb2NhbGVEaXNw
bGF5TmFtZXMgd2hpbGUgY3VycmVuY3kgaGF2ZSAibmFycm93IiBzeW1ib2wgc3R5bGUuCisKKyAg
ICAgICAgLy8gQ2Fub25pY2FsQ29kZUZvckRpc3BsYXlOYW1lcworICAgICAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1jYW5vbmljYWxjb2RlZm9y
ZGlzcGxheW5hbWVzCisgICAgICAgIC8vIDUuIElmICEgSXNXZWxsRm9ybWVkQ3VycmVuY3lDb2Rl
KGNvZGUpIGlzIGZhbHNlLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICBp
ZiAoIWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjb2RlKSkgeworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZv
cm1lZCBjdXJyZW5jeSBjb2RlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKGNvZGUuaXNBbGxBU0NJSSgpKTsKKworICAgICAgICBVQ3Vyck5h
bWVTdHlsZSBzdHlsZSA9IFVDVVJSX0xPTkdfTkFNRTsKKyAgICAgICAgc3dpdGNoIChtX3N0eWxl
KSB7CisgICAgICAgIGNhc2UgU3R5bGU6Okxvbmc6CisgICAgICAgICAgICBzdHlsZSA9IFVDVVJS
X0xPTkdfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlOjpTaG9y
dDoKKyAgICAgICAgICAgIHN0eWxlID0gVUNVUlJfU1lNQk9MX05BTUU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTdHlsZTo6TmFycm93OgorICAgICAgICAgICAgc3R5bGUgPSBV
Q1VSUl9OQVJST1dfU1lNQk9MX05BTUU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIDYuIExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGluZyBjb2RlIHRv
IHVwcGVyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgY29uc3QgVUNoYXIgY3Vy
cmVuY3lbNF0gPSB7CisgICAgICAgICAgICB0b0FTQ0lJVXBwZXIoY29kZVswXSksCisgICAgICAg
ICAgICB0b0FTQ0lJVXBwZXIoY29kZVsxXSksCisgICAgICAgICAgICB0b0FTQ0lJVXBwZXIoY29k
ZVsyXSksCisgICAgICAgICAgICB1J1wwJworICAgICAgICB9OworICAgICAgICAvLyBUaGUgcmVz
dWx0IG9mIHVjdXJyX2dldE5hbWUgaXMgc3RhdGljIHN0cmluZyBzbyB0aGF0IHdlIGRvIG5vdCBu
ZWVkIHRvIGZyZWUgdGhlIHJlc3VsdC4KKyAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOworICAg
ICAgICBVQm9vbCBpc0Nob2ljZUZvcm1hdCA9IGZhbHNlOyAvLyBXZSBuZWVkIHRvIHBhc3MgdGhp
cywgb3RoZXJ3aXNlLCB3ZSB3aWxsIHNlZSBjcmFzaCBpbiBJQ1UgNjQuCisgICAgICAgIGNvbnN0
IFVDaGFyKiByZXN1bHQgPSB1Y3Vycl9nZXROYW1lKGN1cnJlbmN5LCBtX2xvY2FsZUNTdHJpbmcu
ZGF0YSgpLCBzdHlsZSwgJmlzQ2hvaWNlRm9ybWF0LCAmbGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUu
Il9zKTsKKyAgICAgICAgLy8gdWN1cnJfZ2V0TmFtZSByZXR1cm5zIFVfVVNJTkdfREVGQVVMVF9X
QVJOSU5HIGlmIHRoZSBkaXNwbGF5LW5hbWUgaXMgbm90IGZvdW5kLiBCdXQgVV9VU0lOR19ERUZB
VUxUX1dBUk5JTkcgaXMgcmV0dXJuZWQgZXZlbiBpZgorICAgICAgICAvLyBuYXJyb3cgYW5kIHNo
b3J0IHJlc3VsdHMgYXJlIHRoZSBzYW1lOiBuYXJyb3cgIlVTRCIgaXMgIiQiIHdpdGggVV9VU0lO
R19ERUZBVUxUX1dBUk5JTkcgc2luY2Ugc2hvcnQgIlVTRCIgaXMgYWxzbyAiJCIuIFdlIG5lZWQg
dG8gY2hlY2sKKyAgICAgICAgLy8gcmVzdWx0ID09IGN1cnJlbmN5IHRvIGNoZWNrIHdoZXRoZXIg
SUNVIGFjdHVhbGx5IGZhaWxlZCB0byBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGRpc3BsYXktbmFt
ZS4gVGhpcyBwb2ludGVyIGNvbXBhcmlzb24gaXMgZW5zdXJlZCBieQorICAgICAgICAvLyBJQ1Ug
QVBJIGRvY3VtZW50LgorICAgICAgICAvLyA+IFJldHVybnMgcG9pbnRlciB0byBkaXNwbGF5IHN0
cmluZyBvZiAnbGVuJyBVQ2hhcnMuIElmIHRoZSByZXNvdXJjZSBkYXRhIGNvbnRhaW5zIG5vIGVu
dHJ5IGZvciAnY3VycmVuY3knLCB0aGVuICdjdXJyZW5jeScgaXRzZWxmIGlzIHJldHVybmVkLgor
ICAgICAgICBpZiAoc3RhdHVzID09IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HICYmIHJlc3VsdCA9
PSBjdXJyZW5jeSkKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6
Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICByZXR1cm4ganNTdHJp
bmcodm0sIFN0cmluZyhyZXN1bHQsIGxlbmd0aCkpOworICAgIH0KKworICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3Jk
aXNwbGF5bmFtZXMKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMgPSBb
XShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZSkgLT4gQ1N0cmluZyB7CisgICAgICAgIEFT
U0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29kZS5hc2Np
aSgpOworICAgICAgICBjaGFyKiBtdXRhYmxlRGF0YSA9IHJlc3VsdC5tdXRhYmxlRGF0YSgpOwor
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpMYW5ndWFnZTogewor
ICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUgdG8g
bG93ZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAg
ICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlMb3dlcihtdXRhYmxlRGF0YVtpbmRl
eF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlOjpS
ZWdpb246IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1bHQgb2YgbWFwcGlu
ZyBjb2RlIHRvIHVwcGVyIGNhc2UgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkK
KyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0b0FTQ0lJVXBwZXIobXV0YWJs
ZURhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVHlwZTo6U2NyaXB0OiB7CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0
IG9mIG1hcHBpbmcgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBjb2RlIHRvIHVwcGVyIGNhc2UsIGFu
ZCBtYXBwaW5nIHRoZSBzZWNvbmQsIHRoaXJkIGFuZCBmb3VydGggY2hhcmFjdGVyIGluIGNvZGUg
dG8gbG93ZXIgY2FzZSwgYXMgZGVzY3JpYmVkIGluIDYuMS4KKyAgICAgICAgICAgIGlmIChyZXN1
bHQubGVuZ3RoKCkgPj0gMSkKKyAgICAgICAgICAgICAgICBtdXRhYmxlRGF0YVswXSA9IHRvQVND
SUlVcHBlcihtdXRhYmxlRGF0YVswXSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMTsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAg
bXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxvd2VyKG11dGFibGVEYXRhW2luZGV4XSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6OkN1cnJlbmN5
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CisKKyAgICBzd2l0Y2gg
KG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKKyAgICAgICAgLy8gSWYgY29k
ZSBkb2VzIG5vdCBtYXRjaGVzIHRoZSB1bmljb2RlX2xhbmd1YWdlX2lkIHByb2R1Y3Rpb24sIHRo
cm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVMYW5ndWFn
ZUlkKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zKTsKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgYXV0byBsYW5ndWFnZSA9IGNhbm9uaWNhbGl6
ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKKyAgICAgICAgLy8gRG8gbm90IHVz
ZSB1bGRuX2xhbmd1YWdlRGlzcGxheU5hbWUgc2luY2UgaXQgaXMgbm90IGV4cGVjdGVkIG9uZSBm
b3IgdGhpcyAibGFuZ3VhZ2UiIHR5cGUuIEl0IHJldHVybnMgImVuLVVTIiBmb3IgImVuLVVTIiBj
b2RlLCBpbnN0ZWFkIG9mICJBbWVyaWNhbiBFbmdsaXNoIi4KKyAgICAgICAgc3RhdHVzID0gY2Fs
bEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIG1fZGlzcGxh
eU5hbWVzLmdldCgpLCBsYW5ndWFnZS5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFR5cGU6OlJlZ2lvbjogeworICAgICAgICAvLyBJZiBjb2RlIGRvZXMg
bm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyBwcm9kdWN0aW9uLCB0aHJvdyBh
IFJhbmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3VidGFn
KGNvZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3MpOworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHJlZ2lvbiA9IGNhbm9uaWNhbGl6ZUNv
ZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIG1fZGlzcGxheU5h
bWVzLmdldCgpLCByZWdpb24uZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBUeXBlOjpTY3JpcHQ6IHsKKyAgICAgICAgLy8gSWYgY29kZSBkb2VzIG5vdCBt
YXRjaGVzIHRoZSB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgcHJvZHVjdGlvbiwgdGhyb3cgYSBSYW5n
ZUVycm9yIGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZVNjcmlwdFN1YnRhZyhjb2Rl
KSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIH0KKyAgICAgICAgYXV0byBzY3JpcHQgPSBjYW5vbmljYWxpemVDb2RlRm9y
RGlzcGxheU5hbWVzKG1fdHlwZSwgY29kZSk7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bGRuX3NjcmlwdERpc3BsYXlOYW1lLCBtX2Rpc3BsYXlOYW1lcy5n
ZXQoKSwgc2NyaXB0LmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgVHlwZTo6Q3VycmVuY3k6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CisgICAgICAg
IC8vIHVsZG5fbG9jYWxlRGlzcGxheU5hbWUsIHVsZG5fcmVnaW9uRGlzcGxheU5hbWUsIGFuZCB1
bGRuX3NjcmlwdERpc3BsYXlOYW1lIHJldHVybiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IgaWYg
dGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuCisgICAgICAgIC8vIFdlIHNob3VsZCByZXR1
cm4gdW5kZWZpbmVkIGlmIGZhbGxiYWNrIGlzICJub25lIi4gT3RoZXJ3aXNlLCB3ZSBzaG91bGQg
cmV0dXJuIGlucHV0IHZhbHVlLgorICAgICAgICBpZiAoc3RhdHVzID09IFVfSUxMRUdBTF9BUkdV
TUVOVF9FUlJPUikKKyAgICAgICAgICAgIHJldHVybiAobV9mYWxsYmFjayA9PSBGYWxsYmFjazo6
Tm9uZSkgPyBqc1VuZGVmaW5lZCgpIDogY29kZVZhbHVlOworICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3BsYXkg
bmFtZS4iX3MpOworICAgIH0KKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIp
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvZGVWYWx1ZSk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIEludGwuRGlzcGxh
eU5hbWVzIHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQg
SUNVIHZlcnNpb24iX3MpOworICAgIHJldHVybiB7IH07CisjZW5kaWYKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFt
ZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucworSlNPYmplY3QqIEludGxEaXNwbGF5TmFtZXM6
OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9ucyA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgdHlwZVN0cmluZyhtX3R5cGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmFsbGJhY2siKSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBmYWxsYmFja1N0cmluZyhtX2ZhbGxiYWNrKSkpOworICAgIHJldHVybiBvcHRpb25zOwor
fQorCitBU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgU3R5bGU6Ok5hcnJvdzoKKyAg
ICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgY2FzZSBTdHlsZTo6U2hvcnQ6CisgICAgICAg
IHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgcmV0dXJu
ICJsb25nIl9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
Ojp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFR5cGU6Okxhbmd1YWdlOgorICAgICAgICByZXR1cm4gImxhbmd1YWdlIl9zOworICAgIGNhc2Ug
VHlwZTo6UmVnaW9uOgorICAgICAgICByZXR1cm4gInJlZ2lvbiJfczsKKyAgICBjYXNlIFR5cGU6
OlNjcmlwdDoKKyAgICAgICAgcmV0dXJuICJzY3JpcHQiX3M7CisgICAgY2FzZSBUeXBlOjpDdXJy
ZW5jeToKKyAgICAgICAgcmV0dXJuICJjdXJyZW5jeSJfczsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCitBU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2sgZmFsbGJh
Y2spCit7CisgICAgc3dpdGNoIChmYWxsYmFjaykgeworICAgIGNhc2UgRmFsbGJhY2s6OkNvZGU6
CisgICAgICAgIHJldHVybiAiY29kZSJfczsKKyAgICBjYXNlIEZhbGxiYWNrOjpOb25lOgorICAg
ICAgICByZXR1cm4gIm5vbmUiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODFhZmM5MGViYzZjNGJhYzJjYzUyMTE1Y2UzYjNlYTVkMGZiOTc0YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxkbmFtZXMuaD4KKyNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
I2lmICFkZWZpbmVkKEhBVkVfSUNVX1VfTE9DQUxFX0RJU1BMQVlfTkFNRVMpCisvLyBXZSBuZWVk
IDYxIG9yIGxhdGVyIHNpbmNlIHBhcnQgb2YgaW1wbGVtZW50YXRpb24gdXNlcyBVQ1VSUl9OQVJS
T1dfU1lNQk9MX05BTUUuCisjaWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNjEKKyNkZWZp
bmUgSEFWRV9JQ1VfVV9MT0NBTEVfRElTUExBWV9OQU1FUyAxCisjZW5kaWYKKyNlbmRpZgorCitl
bnVtIGNsYXNzIFJlbGV2YW50RXh0ZW5zaW9uS2V5IDogdWludDhfdDsKKworY2xhc3MgSW50bERp
c3BsYXlOYW1lcyBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SW50bERpc3BsYXlOYW1l
cyo+KGNlbGwpLT5JbnRsRGlzcGxheU5hbWVzOjp+SW50bERpc3BsYXlOYW1lcygpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHZtLmludGxEaXNwbGF5TmFtZXNTcGFjZTxtb2RlPigpOworICAgIH0KKworICAg
IHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplRGlzcGxh
eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKTsKKworICAgIEpTVmFsdWUgb2YoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKSBj
b25zdDsKKyAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lcyhWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIGVudW0gY2xhc3MgU3R5bGUgOiB1
aW50OF90IHsgTmFycm93LCBTaG9ydCwgTG9uZyB9OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVp
bnQ4X3QgeyBMYW5ndWFnZSwgUmVnaW9uLCBTY3JpcHQsIEN1cnJlbmN5IH07CisgICAgZW51bSBj
bGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBOb25lIH07CisKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5
cGVTdHJpbmcoVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBmYWxsYmFja1N0cmluZyhG
YWxsYmFjayk7CisKKyAgICB1c2luZyBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlciA9IElDVURl
bGV0ZXI8dWxkbl9jbG9zZT47CisgICAgc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5TmFt
ZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPiBtX2Rpc3BsYXlOYW1lczsKKyAgICBTdHJp
bmcgbV9sb2NhbGU7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSBpdCBvbmx5IHdoZW4g
bV90eXBlIGlzIEN1cnJlbmN5LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTM3NzMKKyAgICBDU3RyaW5nIG1fbG9jYWxlQ1N0cmluZzsKKyAgICBTdHls
ZSBtX3N0eWxlIHsgU3R5bGU6OkxvbmcgfTsKKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Okxhbmd1
YWdlIH07CisgICAgRmFsbGJhY2sgbV9mYWxsYmFjayB7IEZhbGxiYWNrOjpDb2RlIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY2ZmJmZjNkOTg5ZmIyNGJlNjM5MDgzMzg0MTYyY2EwZmIzOTExZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVk
ZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5s
dXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmRp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
VGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCitAZW5kCisqLworCitJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkKK3sKKyAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2
bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRpc3Bs
YXlOYW1lc1Byb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1
cmUqIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEaXNwbGF5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKKworSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSwgY2FsbEludGxEaXNwbGF5TmFtZXMsIGNvbnN0cnVjdEludGxEaXNwbGF5
TmFtZXMpCit7Cit9CisKK3ZvaWQgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlOYW1lc1By
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkRpc3BsYXlOYW1lcyJf
cywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGRpc3BsYXlOYW1lc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIGRpc3BsYXlOYW1lc1Byb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0
aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxEaXNwbGF5
TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09i
amVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmpl
Y3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0
aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSW50bERpc3BsYXlOYW1lcyog
ZGlzcGxheU5hbWVzID0gSW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIEFTU0VSVChkaXNwbGF5TmFtZXMpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGRp
c3BsYXlOYW1lcy0+aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZGlzcGxheU5hbWVzKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJEaXNwbGF5TmFtZXMiKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9j
YWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9y
dGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNw
bGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9j
YWxlcyBiZSAlRGlzcGxheU5hbWVzJS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsRGlzcGxheU5hbWVzQXZhaWxh
YmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25p
Y2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRM
b2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9j
YWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
KSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0NGFlMWU4YTgyNWI4NmY3YTdjOGE5NmM1MDFiNDRmYmNhZDg4YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTsK
KworY2xhc3MgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9u
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYThlYzgwZjQyNTM1ZmZkNjBj
OTM5OTc5NDdhMjAyZGEzZmIzMTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwx
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6c19pbmZvID0geyAiSW50bC5EaXNwbGF5TmFt
ZXMiLCAmQmFzZTo6c19pbmZvLCAmZGlzcGxheU5hbWVzUHJvdG90eXBlVGFibGUsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSkgfTsKKworLyog
U291cmNlIGZvciBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGlzcGxh
eU5hbWVzUHJvdG90eXBlVGFibGUKKyAgb2YgICAgICAgICAgICAgICBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlRnVuY09mICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJl
c29sdmVkT3B0aW9ucyAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlv
bnMgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZSogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZT4odm0uaGVhcCkpIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6
OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3Rv
dHlwZS5vZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlRnVuY09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFtZXMg
PSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUu
b2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGlzcGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+b2YoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5
bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBkaXNwbGF5TmFt
ZXMgPSBqc0R5bmFtaWNDYXN0PEludGxEaXNwbGF5TmFtZXMqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CisgICAgaWYgKCFkaXNwbGF5TmFtZXMpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIERpc3BsYXlOYW1lcyJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMtPnJlc29sdmVkT3B0aW9ucyhn
bG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU2N2U1ODNhNjc1NzQ0ZTQxNWE0ODVlODNlZjFmMzU4NmU5YjEyNDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TG9jYWxlLmNwcAppbmRleCAwNzQzMDY3ZWQ4OGNhYzc4ZmE4ZGQyZjkxNjU3YTA0MjM1ZDhiYjJk
Li40ZWFjMjAxODRhNzBiNzkyNzNmMTc3MmYwOTc3ZGU4ZThhZTRjYTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApAQCAtMTkxLDI3ICsxOTEsNiBA
QCBTdHJpbmcgSW50bExvY2FsZTo6a2V5d29yZFZhbHVlKEFTQ0lJTGl0ZXJhbCBrZXksIGJvb2wg
aXNCb29sZWFuKSBjb25zdAogICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZyh2YWx1ZSkgOiBlbXB0
eVN0cmluZygpOwogfQogCi0vLyB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIsM30g
fCBhbHBoYXs1LDh9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmlu
Z1ZpZXcgc3RyaW5nKQotewotICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAg
IHJldHVybiBsZW5ndGggPj0gMiAmJiBsZW5ndGggPD0gOCAmJiBsZW5ndGggIT0gNCAmJiBzdHJp
bmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Ci19Ci0KLS8vIHVuaWNv
ZGVfc2NyaXB0X3N1YnRhZyA9IGFscGhhezR9IDsKLXN0YXRpYyBib29sIGlzVW5pY29kZVNjcmlw
dFN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgp
ID09IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwot
fQotCi0vLyB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcgPSBhbHBoYXsyfSB8IGRpZ2l0ezN9IDsKLXN0
YXRpYyBib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAg
ICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICByZXR1cm4gKGxlbmd0aCA9PSAy
ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkKLSAgICAg
ICAgfHwgKGxlbmd0aCA9PSAzICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVND
SUlEaWdpdD4oKSk7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5M
b2NhbGUKIHZvaWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRhZ1ZhbHVlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHAKaW5kZXggZmQwZTI3NDA2NGJlNTgxNDIwZGE2MzMwZjNhOThlY2IzMDBkMTJlZC4uNmY2NWVl
OTEzYWY0MDlkM2Y5YWVhM2M1Y2U0MjBmOGZiOWU4MTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTIwMiw3ICsyMDIs
NyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFN0cmluZyBjdXJyZW5jeSA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY3VycmVuY3kiKSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsK
LSAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwgIWN1cnJlbmN5LmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7CisgICAgICAgIGlmICghaXNXZWxsRm9y
bWVkQ3VycmVuY3lDb2RlKGN1cnJlbmN5KSkgewogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjdXJy
ZW5jeSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKaW5kZXggMGM3YWRkNjZiZmVmYTQxNGJmOWYxZDMyMzAzZjU0ZTY2MDA5YjFm
YS4uY2U1MWQ4ODIyMzUzZDA4NWEyMGJhZWMyOWMzOTE2ZWM0YmViMzE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDkgQEAK
ICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKQEAgLTc4LDYgKzgx
LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0m
IHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3Qt
PmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwg
SlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0
PEludGxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblBy
b3RvdHlwZSgpKSwganNDYXN0PEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPmRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwor
fQorCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVMb2NhbGVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRs
T2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTE1Myw2ICsxNjMsMTIgQEAgSW50bE9iamVjdCogSW50bE9i
amVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKgogdm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisjaWYgSEFWRShJQ1VfVV9M
T0NBTEVfRElTUExBWV9OQU1FUykKKyAgICBpZiAoT3B0aW9uczo6dXNlSW50bERpc3BsYXlOYW1l
cygpKQorICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+RGlzcGxheU5hbWVzLCBjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcih2bSwgdGhp
cyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKTsK
KyNlbmRpZgogfQogCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAt
ODE1LDYgKzgzMSw3NiBAQCBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxl
KGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBudW1iZXJpbmdTeXN0ZW1zOwogfQog
CisvLyB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyA9IGFscGhhezIsM30gfCBhbHBoYXs1LDh9IDsK
K2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAg
YXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgcmV0dXJuIGxlbmd0aCA+PSAyICYm
IGxlbmd0aCA8PSA4ICYmIGxlbmd0aCAhPSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0
ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9zY3JpcHRfc3VidGFnID0gYWxw
aGF7NH0gOworYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7
CisgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9yZWdpb25fc3VidGFn
ID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7Citib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJp
bmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAg
ICByZXR1cm4gKGxlbmd0aCA9PSAyICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlz
QVNDSUlBbHBoYT4oKSkKKyAgICAgICAgfHwgKGxlbmd0aCA9PSAzICYmIHN0cmluZy5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlEaWdpdD4oKSk7Cit9CisKKy8vIHVuaWNvZGVfdmFyaWFu
dF9zdWJ0YWcgPSAoYWxwaGFudW17NSw4fSB8IGRpZ2l0IGFscGhhbnVtezN9KSA7Citib29sIGlz
VW5pY29kZVZhcmlhbnRTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+PSA1ICYmIGxlbmd0aCA8PSA4
KQorICAgICAgICByZXR1cm4gc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFs
cGhhbnVtZXJpYz4oKTsKKyAgICByZXR1cm4gbGVuZ3RoID09IDQgJiYgaXNBU0NJSURpZ2l0KHN0
cmluZ1swXSkgJiYgc3RyaW5nLnN1YnN0cmluZygxKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlz
QVNDSUlBbHBoYW51bWVyaWM+KCk7Cit9CisKKy8vIHVuaWNvZGVfbGFuZ3VhZ2VfaWQsIGJ1dCBp
bnRlcnNlY3Rpb24gb2YgQkNQNDcgYW5kIFVUUzM1LgorLy8gdW5pY29kZV9sYW5ndWFnZV9pZCA9
CisvLyAgICAgfCB1bmljb2RlX2xhbmd1YWdlX3N1YnRhZyAoc2VwIHVuaWNvZGVfc2NyaXB0X3N1
YnRhZyk/IChzZXAgdW5pY29kZV9yZWdpb25fc3VidGFnKT8gKHNlcCB1bmljb2RlX3ZhcmlhbnRf
c3VidGFnKSogOworLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW50bC1kaXNw
bGF5bmFtZXMvaXNzdWVzLzc5Citib29sIGlzVW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyBz
dHJpbmcpCit7CisgICAgVmVjdG9yPFN0cmluZ1ZpZXcsIDQ+IHN1YnRhZ3M7CisgICAgZm9yIChh
dXRvIHN1YnRhZyA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCctJykpCisgICAg
ICAgIHN1YnRhZ3MuYXBwZW5kKHN1YnRhZyk7CisKKyAgICBBU1NFUlQoc3VidGFncy5zaXplKCkg
Pj0gMSk7CisgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICBpZiAoIWlzVW5pY29kZUxhbmd1
YWdlU3VidGFnKHN1YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAr
K2N1cnNvcjsKKworICAgIGlmIChjdXJzb3IgPT0gc3VidGFncy5zaXplKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc3VidGFnc1tjdXJzb3Jd
KSkKKyAgICAgICAgKytjdXJzb3I7CisKKyAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXNVbmljb2RlUmVnaW9uU3VidGFnKHN1
YnRhZ3NbY3Vyc29yXSkpCisgICAgICAgICsrY3Vyc29yOworCisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBpZiAoIWlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoc3VidGFnc1tjdXJz
b3JdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytjdXJzb3I7CisgICAg
fQorfQorCitib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3IGN1cnJlbmN5
KQoreworICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1cnJlbmN5LmlzQWxs
U3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyBJbnRs
LmdldENhbm9uaWNhbExvY2FsZXMobG9jYWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaAppbmRleCBhZDgyMjZlN2I2ODEyZmU5Y2NjMGMyOTQyMGYzMmQ5ZTQy
NTNlYWIxLi4wYjBhN2JiNmJhNDFjMWVmMjkxYTI4MjIzYjg1MDM4MTg3Zjc2OGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC04Miw2ICs4Miw3IEBA
IFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7CiBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGlu
dGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZh
aWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGlz
cGxheU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVz
KCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFp
bGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5l
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygp
IHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KIGlubGluZSBjb25zdCBIYXNoU2V0
PFN0cmluZz4mIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1
cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQpAQCAtMTExLDYgKzExMiwxNCBAQCBWZWN0b3I8
U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKTsK
IAogYm9vbCBpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShTdHJpbmdWaWV3KTsKIAorYm9v
bCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlU2Ny
aXB0U3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVSZWdpb25TdWJ0YWcoU3RyaW5n
Vmlldyk7Citib29sIGlzVW5pY29kZVZhcmlhbnRTdWJ0YWcoU3RyaW5nVmlldyk7Citib29sIGlz
VW5pY29kZUxhbmd1YWdlSWQoU3RyaW5nVmlldyk7CisKK2Jvb2wgaXNXZWxsRm9ybWVkQ3VycmVu
Y3lDb2RlKFN0cmluZ1ZpZXcpOworCiBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0
ZXIgewogICAgIHZvaWQgb3BlcmF0b3IoKShVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKikgY29uc3Q7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oCmluZGV4IDE1MTBhNGZhYjU4OTU4MDFkYzg3ZmE2NzM2NjQ3OGYyOGNi
YTY5YzkuLjkzMTc1ODNhMWI2MzlkM2E0N2UwZDVmMDQ2NDY1NjlkNzY0ZWM0NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2VudW0gY2xhc3Mg
UmVsZXZhbnRFeHRlbnNpb25LZXkgOiB1aW50OF90OworCiBjbGFzcyBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNlYTMwZGI5ZTJlNGQ1MzhkYThmMjMy
Y2Y4OWI5ZTRjOTgyMzcwMDYuLmM4NzkyNzQ1YjkzNDgwM2ZkZjZiYWYxYWI0YjA2N2NhOGI5MmJj
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTczLDYgKzczLDggQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5j
bHVkZSAiSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGUu
aCIKICNpbmNsdWRlICJJbnRsTG9jYWxlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bE51bWJl
ckZvcm1hdC5oIgpAQCAtOTgxLDYgKzk4MywxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQog
ICAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
aW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CiAgICAgICAgICAgICBpbml0LnNldChJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKSk7CiAgICAg
ICAgIH0pOworICAgIG1fZGlzcGxheU5hbWVzU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGRpc3BsYXlO
YW1lc1Byb3RvdHlwZSA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAg
ICBpbml0LnNldChJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBkaXNwbGF5TmFtZXNQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CiAgICAgbV9s
b2NhbGVTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMTgzMiw2ICsx
ODQwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fZGVmYXVsdENvbGxhdG9y
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2xvY2FsZVN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0KHZp
c2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggZGRjMzBiODJlNTU4Mzg3YjA3N2U2ZDljYmQxN2UzNmFiMjAzMTRjMS4uMjc3NzRl
YmJjNjAzNmY3YTM1YmYzNWVlODFlMTRlNzZjYTAyYzYyZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTIsNiArMjkyLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENv
bGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2Nv
bGxhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9sb2NhbGVTdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Bs
dXJhbFJ1bGVzU3RydWN0dXJlOwpAQCAtNzkyLDYgKzc5Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogI2VuZGlmIC8vIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKCkgeyByZXR1
cm4gbV9jb2xsYXRvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGRhdGVU
aW1lRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGRpc3BsYXlOYW1lc1N0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fZGlzcGxheU5hbWVzU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBsb2NhbGVTdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X2xvY2FsZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVz
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGFkZmI3
OWZkZGE4MTgzY2E5MTMxNWM1MjA2NDcwZDE0MjMxMjk0NTQuLjVmOTNlNzg1ZWY0NDA4NGNkOTJk
ZmU5ZTM1ZGQ1N2YwYWIwMTU0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaApAQCAtNDg4LDYgKzQ4OCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdl
YkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJs
eU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNtIG11
bGl0LXZhbHVlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9y
bWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVz
ZUJpZ0ludCwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1
cHBvcnQuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bERpc3BsYXlOYW1lcywgZmFsc2UsIE5vcm1h
bCwgIkV4cG9zZSB0aGUgSW50bC5EaXNwbGF5TmFtZXMgY29uc3RydWN0b3IuIikgXAogICAgIHYo
Qm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVl
LCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBm
YWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRl
Y2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3JtYWwsICJJ
ZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBw
b2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1pbmlWTU1vZGUsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0gbW9kZSBvbi4iKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOGNhYTQ4YzFiZTMxMWI1ZDg3
ZTg2MDM4YmEwZjQwNDE4Mzg4OGMyYS4uNjYxNzRmOTdkMTRiZTcwZGRiNjg0NTM2ODQwNmI5MGFm
YmRkMmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNjUsNiArNjUs
NyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgi
CiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlO
YW1lcy5oIgogI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCkBAIC0zMDQsNiArMzA1LDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1
bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAjZW5kaWYKICAgICAsIGludGxDb2xsYXRvckhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0b3I+KCkpCiAgICAgLCBpbnRs
RGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERh
dGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigpKQogICAgICwgaW50bExvY2Fs
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigpKQogICAg
ICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKQEAgLTE0OTgsNiArMTUw
MCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQ
SVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsCiAjZW5kaWYKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVh
cENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1h
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgaW50bERpc3Bs
YXlOYW1lc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERpc3BsYXlOYW1lcykKIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2NhbGUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVh
cENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDYwZjU5NzI5ZmVjMmUwMmU2OTc2YzMxZWQ1MWIxNDhhNWM2ZWFhMDUuLmE0
YmQ5MWE0YTgyMmU1NDRmMDk4ZTFlNThlY2U0YmEyMzQ1ZjQzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaApAQCAtMTI3LDYgKzEyNyw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFz
cyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRlVGltZUZv
cm1hdDsKK2NsYXNzIEludGxEaXNwbGF5TmFtZXM7CiBjbGFzcyBJbnRsTG9jYWxlOwogY2xhc3Mg
SW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxSdWxlczsKQEAgLTM5OSw2ICs0MDAs
NyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVhcENl
bGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVI
ZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51
bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CkBAIC01NTYsNiArNTU4LDcgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGludGxEaXNwbGF5TmFtZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaAppbmRleCA2YzMyMTc5NjUwN2VjNTQ4MDllN2FhNmIwZTU4ZTFmNGVkYmM3OWI1
Li45MjBmYmZiN2QxZjNkMDk0NTZmZjQxOTMzNDRiMjAxMjE0YTBlMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaApAQCAtNzU5LDYgKzc1OSwxMiBAQCBjbGFzcyBTdHJpbmdWaWV3OjpDb2Rl
VW5pdHMgewogY2xhc3MgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICB1c2luZyBpdGVyYXRvcl9jYXRl
Z29yeSA9IHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWc7CisgICAgdXNpbmcgdmFsdWVfdHlwZSA9
IFN0cmluZ1ZpZXc7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAg
IHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgICB1c2luZyByZWZlcmVuY2UgPSB2YWx1
ZV90eXBlJjsKKwogICAgIFN0cmluZ1ZpZXcgb3BlcmF0b3IqKCkgY29uc3Q7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTljODViNjJjYmMxYzAxNjBj
Yzc5NzFmNzIzNzZjMzk1Yzc0ZjRkNS4uNDE0N2IxZTZiODVkMzYwOTJkNGJlMjkzNmMzNmQ0MjYw
NDA4YmU5YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNy0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxh
eU5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICog
c3RyZXNzL2ludGwtZGlzcGxheW5hbWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZtLmljdVZlcnNpb24pOgorICAgICAg
ICAqIHN0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFncy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh2bS5pY3VWZXJz
aW9uKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA3LTE3ICBYYW4g
TG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBNYXRoLm1heCgpIGNhbiB5aWVsZCB0
aGUgd3JvbmcgcmVzdWx0IGZvciBtYXgoMCwgLTApLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1kaXNwbGF5bmFtZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1l
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yM2MzZWU2ODcxYzBkZWEwN2E0MzYwZDVkOGY4NzM5ZDYzODhlODQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanMK
QEAgLTAsMCArMSwyMDAgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUludGxEaXNwbGF5TmFtZXM9
MSIpCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworaWYgKCR2bS5pY3VWZXJzaW9u
KCkgPj0gNjEpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5EaXNwbGF5TmFtZXMs
IGBUeXBlRXJyb3I6IHR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkYCkKKworICAgIC8vIEdldCBk
aXNwbGF5IG5hbWVzIG9mIHJlZ2lvbiBpbiBFbmdsaXNoCisgICAgdmFyIHJlZ2lvbk5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAgaWYg
KCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9m
KCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZign
QlonKSwgIkJlbGl6ZSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVW5p
dGVkIFN0YXRlcyIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlh
ICYgSGVyemVnb3ZpbmEiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15
YW5tYXIgKEJ1cm1hKSIpOworCisgICAgLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgcmVnaW9uIGlu
IFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlO
YW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJz
aW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIuaL
ieS4gee+jua0siIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAi6LKd6YeM
5pavIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICLnvo7lnIsiKTsKKyAg
ICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIuazouWjq+WwvOS6nuiIh+i1q+WhnuWT
pee2ree0jSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAi57es55S4Iik7
CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAncmVnaW9uJywgc3R5bGU6ICdzaG9ydCd9KTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+
PSA2NCkKKyAgICAgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1l
cmljYSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCWicpLCAiQmVsaXplIik7Cisg
ICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VTJyksICJVUyIpOworICAgIHNob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoJ01NJyksICJNeWFubWFyIik7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3Bs
YXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICduYXJyb3cnfSk7CisgICAg
aWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVz
Lm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5v
ZignQlonKSwgIkJlbGl6ZSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAi
VVMiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEnKSwgIkJvc25pYSIpOworICAg
IHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScpLCAiTXlhbm1hciIpOworCisgICAgLy8gR2V0
IGRpc3BsYXkgbmFtZXMgb2YgbGFuZ3VhZ2UgaW4gRW5nbGlzaAorICAgIHZhciBsYW5ndWFnZU5h
bWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsK
KyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworICAgIHNob3VsZEJlKGxh
bmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZt
LmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBz
aG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25h
bCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFu
dCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMu
b2YoJ2VuLVVTJyksICJBbWVyaWNhbiBFbmdsaXNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VO
YW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworICAgIC8vIEdldCBkaXNw
bGF5IG5hbWVzIG9mIGxhbmd1YWdlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICBsYW5ndWFn
ZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2xhbmd1
YWdlJ30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsK
KyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aCcpLCAi5Lit5paHIik7CisgICAgc2hv
dWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIuW+t+aWhyIpOworCisgICAgbGFuZ3VhZ2VO
YW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBz
dHlsZTogJ3Nob3J0J30pOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJG
cmVuY2giKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdkZScpLCAiR2VybWFuIik7
CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZnItQ0EnKSwgIkNhbmFkaWFuIEZyZW5j
aCIpOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkg
PD0gNjYpCisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNo
aW5lc2UsIFRyYWRpdGlvbmFsIik7CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFkaXRpb25hbCBDaGluZXNlIik7CisgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwgIlVTIEVuZ2xpc2giKTsKKyAgICBzaG91bGRC
ZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAiQ2hpbmVzZSAoVGFpd2FuKSIpOworCisgICAg
bGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFu
Z3VhZ2UnLCBzdHlsZTogJ25hcnJvdyd9KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwg
Ikdlcm1hbiIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5h
ZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1
VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1I
YW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOwor
ICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJVUyBFbmdsaXNoIik7Cisg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbiki
KTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBFbmdsaXNoCisgICAg
dmFyIHNjcmlwdE5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdz
Y3JpcHQnfSk7CisgICAgLy8gR2V0IHNjcmlwdCBuYW1lcworICAgIHNob3VsZEJlKHNjcmlwdE5h
bWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdB
cmFiJyksICJBcmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAi
S2F0YWthbmEiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBUcmFk
aXRpb25hbCBDaGluZXNlCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
Wyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0J30pOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVz
Lm9mKCdMYXRuJyksICLmi4nkuIHmlociKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZign
QXJhYicpLCAi6Zi/5ouJ5Lyv5paHIik7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0th
bmEnKSwgIueJh+WBh+WQjSIpOworCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5
TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnc2hvcnQnfSk7CisgICAgc2hv
dWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwgIkxhdGluIik7CisgICAgc2hvdWxkQmUoc2Ny
aXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVz
Lm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisgICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5E
aXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcsIHN0eWxlOiAnbmFycm93J30pOwor
ICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworICAgIHNob3Vs
ZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3Jp
cHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5h
bWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaAorICAgIHZhciBjdXJyZW5jeU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeSd9KTsKKyAgICAv
LyBHZXQgY3VycmVuY3kgbmFtZXMKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0Qn
KSwgIlVTIERvbGxhciIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAi
RXVybyIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiTmV3IFRhaXdh
biBEb2xsYXIiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdDTlknKSwgIkNoaW5l
c2UgWXVhbiIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiSmFwYW5l
c2UgWWVuIik7CisKKyAgICAvLyBHZXQgZGlzcGxheSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGlu
IFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxh
eU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2N1cnJlbmN5J30pOworICAgIHNob3VsZEJlKGN1
cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAi576O5YWDIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lO
YW1lcy5vZignRVVSJyksICLmrZDlhYMiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9m
KCdUV0QnKSwgIuaWsOWPsOW5oyIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NO
WScpLCAi5Lq65rCR5bmjIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyks
ICLml6XlnJMiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUg
aW4gRW5nbGlzaCBpbiBzaG9ydAorICAgIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5
TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICdzaG9ydCcgfSk7CisgICAg
c2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVVNEJyksICIkIik7CisgICAgc2hvdWxkQmUoY3Vy
cmVuY3lOYW1lcy5vZignRVVSJyksICLigqwiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVz
Lm9mKCdUV0QnKSwgIk5UJCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScp
LCAiQ07CpSIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsK
KworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBp
biBuYXJyb3cKKyAgICBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4n
XSwge3R5cGU6ICdjdXJyZW5jeScsIHN0eWxlOiAnbmFycm93JyB9KTsKKyAgICBzaG91bGRCZShj
dXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVz
Lm9mKCdFVVInKSwgIuKCrCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcp
LCAiJCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKKyAg
ICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdKUFknKSwgIsKlIik7CisgICAgc2hvdWxkQmUo
Y3VycmVuY3lOYW1lcy5vZignSlBaJyksICJKUFoiKTsgLy8gRmFsbGJhY2sgY29kZQorICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJlbmN5TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBg
eyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFycm93IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJh
Y2siOiJjb2RlIn1gKTsKKworICAgIGN1cnJlbmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFt
ZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywgc3R5bGU6ICduYXJyb3cnLCBmYWxsYmFjazog
J25vbmUnIH0pOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0pQWicpLCB1bmRlZmlu
ZWQpOyAvLyBGYWxsYmFjayBub25lCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVu
Y3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJuYXJy
b3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFjayI6Im5vbmUifWApOworCisgICAgcmVnaW9u
TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsK
KyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignOTk5JyksICI5OTkiKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2Fs
ZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6InJlZ2lvbiIsImZhbGxiYWNrIjoiY29kZSJ9
YCk7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0
eXBlOiAncmVnaW9uJywgZmFsbGJhY2s6J25vbmUnfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9u
KCkgPiA2NCkKKyAgICAgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJzk5OScpLCB1bmRlZmlu
ZWQpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0
aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHlsZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwi
ZmFsbGJhY2siOiJub25lIn1gKTsKKworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIGlmICgkdm0uaWN1VmVy
c2lvbigpID4gNjQpIHsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEn
KSwgImVuLUFBIik7CisgICAgICAgIHZhciBvYmplY3QgPSB7CisgICAgICAgICAgICB0b1N0cmlu
ZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2VuLUFBJzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCBvYmpl
Y3QpOworICAgIH0KKworICAgIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
WydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFsbGJhY2s6ICdub25lJ30pOworICAgIGlmICgk
dm0uaWN1VmVyc2lvbigpID4gNjQpIHsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZW4tQUEnKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZihvYmplY3QpLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIHNob3VsZEJlKEludGwuRGlzcGxh
eU5hbWVzLnByb3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddLCBgSW50bC5EaXNwbGF5TmFtZXNg
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0
ZWRMb2NhbGVzT2YoImVuIikpLCBgWyJlbiJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCJqYS1KUCIpKSwgYFsiamEt
SlAiXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1
cHBvcnRlZExvY2FsZXNPZih7IGxlbmd0aDogNCwgMTogJ2VuJywgMDogJ2VzJywgMzogJ2RlJyB9
KSksICdbImVzIiwiZW4iLCJkZSJdJyk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gSW50bC5EaXNw
bGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCIiKSwgYFJhbmdlRXJyb3I6IGludmFsaWQgbGFu
Z3VhZ2UgdGFnOiBgKQorCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBJbnRsLkRp
c3BsYXlOYW1lcy5wcm90b3R5cGUub2YuY2FsbCh7fSk7CisgICAgfSwgYFR5cGVFcnJvcjogSW50
bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3BsYXlOYW1lc2ApOworCisgICAgc2hvdWxkVGhy
b3coKCkgPT4geworICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zLmNhbGwoe30pOworICAgIH0sIGBUeXBlRXJyb3I6IEludGwuRGlzcGxheU5hbWVzLnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2Jq
ZWN0IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFncy5qcyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwODdjZWY0ZjI4ZDM0
MjZkNTdhYjM5MGNlNjUyZTg4NGY3NzA2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFncy5qcwpAQCAtMCwwICsxLDkyIEBACisvL0Ag
cnVuRGVmYXVsdCgiLS11c2VJbnRsRGlzcGxheU5hbWVzPTEiKQorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhl
cnJvcil9YCk7Cit9CisKK2lmICgkdm0uaWN1VmVyc2lvbigpID49IDYxKSB7CisgICAgdmFyIHJl
Z2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24n
fSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJv
cjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgp
ID0+IHJlZ2lvbk5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBy
ZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAi
KSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBz
aG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiMDAiKSwgYFJhbmdlRXJyb3I6IGFyZ3Vt
ZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdp
b25OYW1lcy5vZigiMDAwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9u
IHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCJhIiksIGBS
YW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoImFhYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0
KQorICAgICAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZigiNDE5IiksIGBMYXRpbiBBbWVyaWNh
YCk7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoIkpQIiksIGBKYXBhbmApOworICAgIHNo
b3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCJVUyIpLCBgVW5pdGVkIFN0YXRlc2ApOworCisgICAgdmFy
IGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xh
bmd1YWdlJ30pOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIiIpLCBg
UmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRU
aHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCItIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFt
ZXMub2YoIi0tIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGAp
OworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImVuLSIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRCZShsYW5n
dWFnZU5hbWVzLm9mKCJlbi1VUyIpLCBgQW1lcmljYW4gRW5nbGlzaGApOworICAgIHNob3VsZFRo
cm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImVuX1VTIiksIGBSYW5nZUVycm9yOiBhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
ImVuLXVzIiksIGBBbWVyaWNhbiBFbmdsaXNoYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFu
Z3VhZ2VOYW1lcy5vZigicm9vdCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFu
Z3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJyb290
LVVTIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAg
IGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCJlcy00MTkiKSwgYExhdGluIEFtZXJpY2FuIFNwYW5pc2hgKTsKKyAgICBpZiAoJHZt
LmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KSB7CisgICAgICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgYENoaW5lc2UsIFRyYWRpdGlv
bmFsYCk7CisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwg
YENoaW5lc2UsIFNpbXBsaWZpZWQgKEhvbmcgS29uZylgKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksIGBUcmFkaXRpb25hbCBDaGlu
ZXNlYCk7CisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwg
YFNpbXBsaWZpZWQgQ2hpbmVzZSAoSG9uZyBLb25nKWApOworICAgIH0KKyAgICBzaG91bGRUaHJv
dygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJIYW50IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBsYW5ndWFnZSBpZGApOyAvLyBTY3JpcHQgb25seQorICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3NyLUxhdG4nKSwgYFNlcmJpYW4gKExhdGluKWApOyAvLyBMYW5ndWFnZS1T
Y3JpcHQKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzci1DeXJsJyksIGBTZXJiaWFu
IChDeXJpbGxpYylgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
bGFuZ3VhZ2VOYW1lcy5vZigiemgtSEstSGFucyIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMg
bm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzbC1y
b3phaicpLCBgU2xvdmVuaWFuIChSZXNpYW4pYCk7IC8vIExhbmd1YWdlLVZhcmlhbnQKKyAgICBz
aG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbF9yb3phaiIpLCBgUmFuZ2VFcnJv
cjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1yb3phai1DeXJsIiksIGBSYW5nZUVycm9yOiBhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdl
TmFtZXMub2YoInNsLXJvemFqLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFu
Z3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1f
cm96YWoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7Cisg
ICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigic2wtQ3lybC0iKSwgYFJhbmdl
RXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3co
KCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLXNsLUN5cmwtIiksIGBSYW5nZUVycm9yOiBhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J2h5LUxhdG4tSVQtYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFseSwgRWFzdGVybiBB
cm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVJlZ2lvbi1WYXJpYW50CisgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignaHktTGF0bi1JVCcpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFs
eSlgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVJlZ2lvbgorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFt
ZXMub2YoJ2h5LUxhdG4tYXJldmVsYScpLCBgQXJtZW5pYW4gKExhdGluLCBFYXN0ZXJuIEFybWVu
aWFuKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtVmFyaWFudAorICAgIHNob3VsZFRocm93KCgpID0+
IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tSVRaLWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFy
Z3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFu
Z3VhZ2VOYW1lcy5vZigiaHktTGF0bi0wMC1hcmV2ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdl
TmFtZXMub2YoImh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1
YWdlTmFtZXMub2YoImh5LUxhdG4tYXJldmVsYXp6enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBh
cmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxh
bmd1YWdlTmFtZXMub2YoImh5enp6enp6enp6LUxhdG4tYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjog
YXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKworICAgIHZhciBzY3JpcHROYW1lcyA9
IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnc2NyaXB0J30pOworICAgIHNo
b3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50
IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBzY3JpcHRO
YW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRh
Z2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYXRuMCIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAgIHNob3VsZFRo
cm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYW4wIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFt
ZXMub2YoIkxhbiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRh
Z2ApOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJMYXRuIiksIGBMYXRpbmApOworICAg
IHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJsYXRuIiksIGBMYXRpbmApOyAvLyBDYW5vbmljYWxp
emF0aW9uIGNhbiBtYWtlIGl0IHdvcmsuCisKKyAgICB2YXIgY3VycmVuY3lOYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnY3VycmVuY3knfSk7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4gY3VycmVuY3lOYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEg
d2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworICAgIHNob3VsZFRocm93KCgpID0+IGN1cnJl
bmN5TmFtZXMub2YoImFiIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZv
cm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1l
cy5vZigianB5eCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQg
Y3VycmVuY3kgY29kZWApOworICAgIHNob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2Yo
ImpwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVu
Y3kgY29kZWApOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoImpweSIpLCBgSmFwYW5l
c2UgWWVuYCk7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZigiSlBZIiksIGBKYXBhbmVz
ZSBZZW5gKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA2ZTkwNDAwZWYzMDE5ZWYwNmJkMzBhODcz
ZWUxMTI5ZTEwY2Y3Y2NmLi5kNzVlZDFhYjliYmFmN2YwZWNjODFhNTU2Y2E2YjNjMGRiMzU5YTJk
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yNiw2ICsyNiw5IEBAIHNraXA6CiAgICAgLSBJbnRsLkRh
dGVUaW1lRm9ybWF0LWRheVBlcmlvZAogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mb3JtYXRS
YW5nZQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCisg
ICAgIyBDdXJyZW50bHksIHRlc3QyNjIgaGFzIGEgYnVnIHdpdGggSW50bC5EaXNwbGF5TmFtZXMs
IGFuZCBleHBvc2luZyBpdCBjYW4gY2F1c2UgbWFueSBmYWlsdXJlcyBpbiB2YXJpb3VzIEludGwg
dGVzdHMuCisgICAgIyBXZSBzaG91bGQgZW5hYmxlIGl0IGFmdGVyIGVuc3VyaW5nIHRlc3QyNjIg
aXMgZml4ZWQuCisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS90ZXN0MjYyL2lzc3Vlcy8y
NjgyCiAgICAgLSBJbnRsLkRpc3BsYXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAg
LSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404640</attachid>
            <date>2020-07-18 04:14:29 -0700</date>
            <delta_ts>2020-07-18 04:14:29 -0700</delta_ts>
            <desc>Rebaselined</desc>
            <filename>bug-209779-20200718041428.patch</filename>
            <type>text/plain</type>
            <size>91369</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGJhMmZhZGUwNDJkODZmOWVkYzExNTZkMGQ4NjQyY2JmYzUwZTk3Li5mY2IyYWYxZGQ5ODZjY2Zi
M2NjMjYzZGQ2ODQ1NGVkYWE2MTFlYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAyMC0wNy0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuRGlzcGxheU5hbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBJbnRsLkRpc3BsYXlOYW1lcyBiZWhpbmQgdXNlSW50bERpc3BsYXlOYW1lcz0xIGZs
YWcuCisgICAgICAgIEludGwuRGlzcGxheU5hbWVzIGNhbiBvZmZlciByZWFkYWJsZSAiZGlzcGxh
eS1uYW1lIiBmb3IgSUNVIGxhbmd1YWdlLCBzY3JpcHQsIHJlZ2lvbiwgY3VycmVuY3kgY29kZXMu
CisgICAgICAgIEZvciBleGFtcGxlLCBpdCBjYW4gb2ZmZXIgIlVuaXRlZCBTdGF0ZXMiIHN0cmlu
ZyBmb3IgIlVTIiByZWdpb24gY29kZS4KKyAgICAgICAgV2UgdXNlIElDVSBVTG9jYWxlRGlzcGxh
eU5hbWVzIHRvIGltcGxlbWVudCBpdCwgZXhjZXB0IGZvciBjdXJyZW5jeSBzaW5jZSBVTG9jYWxl
RGlzcGxheU5hbWVzIGlzIG5vdCBzdXBwb3J0aW5nCisgICAgICAgIGN1cnJlbmN5IGNvcnJlY3Rs
eTogaXQgaWdub3JlcyAibG9uZyIsICJzaG9ydCIsIGFuZCAibmFycm93IiBzdHlsZSBjb25maWd1
cmF0aW9ucy4gV2UgbmVlZCB0byBjYWxsIHVjdXJyX2dldE5hbWUKKyAgICAgICAgZGlyZWN0bHku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb3ByaWF0ZWx5IGFkZHMgdW5pY29kZS1sYW5ndWFn
ZS1pZCBwYXJzaW5nIGluIEludGxMb2NhbGUuY3BwIHNvIHRoYXQgd2UgY2FuIHZhbGlkYXRlIGxh
bmd1YWdlIGlkCisgICAgICAgIHdoZW4gaXQgaXMgcGFzc2VkIHRvIGBJbnRsLkRpc3BsYXlOYW1l
cyNvZmAgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SW50bERpc3BsYXlOYW1lczo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lczo6SW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXM6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1l
czo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXM6Om9mIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJp
bmcpOgorICAgICAgICAoSlNDOjpJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmguCisgICAgICAgICogcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEaXNwbGF5TmFtZXMpOgorICAgICAgICAo
SlNDOjpjYWxsSW50bERpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGU6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jT2YpOgorICAgICAgICAoSlNDOjpJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVu
dGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bExvY2FsZS5jcHA6CisgICAgICAgIChKU0M6OmlzVW5pY29kZUxhbmd1YWdlU3VidGFn
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3VidGFnKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVnaW9uU3VidGFnKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVT
Y3JpcHRTdWJ0YWcpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVSZWdpb25TdWJ0YWcpOgorICAg
ICAgICAoSlNDOjppc1VuaWNvZGVWYXJpYW50U3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmlj
b2RlTGFuZ3VhZ2VJZCk6CisgICAgICAgIChKU0M6OmlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZSk6
CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmludGxEaXNw
bGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGlzcGxheU5hbWVzU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
CiAyMDIwLTA3LTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gQ2xlYW4gdXAgcmVzb2x2ZUxvY2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYmM3ZWI3ZWU3YzM4NWY4YWJm
YmQ4MWU5OThjNzM0YjA1NTY1YTg4Li4xMmFiYzUxOWNjNGViYjVkNDdkODBmOWE4MmVhOTNhMjdl
ZDMwZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTE4ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5E
aXNwbGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisKIDIwMjAtMDctMTcgIEZ1amlpIEhpcm9ub3Jp
ICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgRG9uJ3QgaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+IGluIFNWR1BhcnNlclV0aWxpdGllcy5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzZhMDgzMGZhNTFlOWIyMjlhNGVmMzE4YTkwYzllNzUy
MmMwYWJlNy4uMmMwZWUxYWFjODcwNzg5MDkxNmVmZDJjOGFhNTA0NGYxOTAzNGFiNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzAsNiArNzAsOCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYTMxZDIwNzk0NDEx
Zjg3YTMzMWQ0Y2RkMGNkMGFmZjRkOGY0MDU5NC4uNWEwYzg4M2Q1MzQ4ZTY1NjdhZWZmOTZhZWJj
MDgxZmJhMDc2Y2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTEzNyw2ICsxMzcsOCBAQCAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1l
L0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50
bExvY2FsZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDc5Y2RlNGVlNTA3ZTEzZjZmZjdmYTc4
MDBkYzY0NWNiZjg5NDFjNjcuLjJiZGY1YjJjODIyYTZkOWU3YjZmNDU2YmIwYTk2MTYzZWUxZDZk
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTI3LDYgKzI3LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5s
dXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTG9jYWxlUHJvdG90eXBlLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjYjE4NDBjNzcx
MzJiOTExZDk2NzZiNTQxNTM2MjE3ZmYxMmJjNGQ3Li5kNWQ2ZjJiYmQwMTMzMDdjODRhODEwMzdj
MDFiNTIxY2JkMmFhNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTU4LDYgKzE1OCw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRs
Q29sbGF0b3JQcm90b3R5cGUubHV0LmggXAogICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAorICAg
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bERpc3BsYXlOYW1l
c1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaCBcCiAgICAg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNkNzRj
MjUyMmVhMmJlOWQxMjZjODhmZGIyMDk4MzdkOWE1MmI1Zi4uYTQzNjgzZWZjNDhiYmVhODg3NGI2
ODNhNzg0NWE5Zjk1MjBjMDExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4
MTksNiArMTgxOSw5IEBACiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVE
QkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQg
LyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyB9Owog
CQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4
OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1M0MxMUQyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggKi87IH07CisJ
CUUzNTNDMTFFMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTE4
MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCAqLzsgfTsK
KwkJRTM1M0MxMjEyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTNDMTFC
MjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggKi87IH07CiAJ
CUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1
NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRD
YWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0
ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1NUQzOEYyMjQ0Njg3NzAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVEMzhEMjI0NDY4
NkIwMDhGMUFENiAvKiBHbG9iYWxFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MjgsNiArMTgzMSw4IEBACiAJCUUzNUNBMTU2
MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjM3RUU3MjM2
RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8q
IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRs
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUUzNjVGMzNCMjRBQTYyM0Iw
MEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIy
IC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUUzNkI3NjcwMjJG
OEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIyRjhENjExMDBEMDk4MTgg
LyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZDQzk0NzIwODYzMTRGMDA1
MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00OTg0LDYgKzQ5ODksMTIgQEAKIAkJRTM0RjkzMEIyMzIyRDg4
MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxE
aXNwbGF5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExNzI0
QUE0Q0I2MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNTNDMTE4MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE5MjRB
QTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzQzExQTI0QUE0Q0I2MDAzRkJERjMg
LyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
Q2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2xvYmFsRXhlY3V0YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTAw
MCw2ICs1MDExLDggQEAKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3Rh
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEg
LyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMaW5rVGltZUNvbnN0YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjVGMzM5MjRBQTYy
MTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2QjQ4MDEyM0U5NTczODAwRTRBNjZF
IC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM2Qjc2NkUyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NjUsNiArNjc3OCw4IEBACiAJCQkJ
QTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAq
LywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlFMzY1RjMzOTI0QUE2MjEyMDBD
OTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzNjVG
MzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1dC5oICov
LAogCQkJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggKi8sCiAJCQkJQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKQEAgLTcyNjAsNiArNzI3NSwxMiBAQAogCQkJCUExNTg3
RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICov
LAogCQkJCUExNTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwICovLAogCQkJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlFMzUzQzExNjI0QUE0Q0I1MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lcy5jcHAgKi8sCisJCQkJRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8q
IEludGxEaXNwbGF5TmFtZXMuaCAqLywKKwkJCQlFMzUzQzExQTI0QUE0Q0I2MDAzRkJERjMgLyog
SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzUzQzExODI0QUE0Q0I2
MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmggKi8sCisJCQkJRTM1M0Mx
MTkyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwICovLAor
CQkJCUUzNTNDMTFCMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmggKi8sCiAJCQkJQTNBRkY5MkQyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGUuY3BwICov
LAogCQkJCUEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi8sCiAJCQkJ
QTNBRkY5MkYyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAgKi8s
CkBAIC05NzUwLDYgKzk3NzEsMTEgQEAKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTU4N0Q3MjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUQyNEFB
NENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
NTNDMTFFMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUzQzEyMTI0QUE0
Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkYxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMw
NTAyYTM0YTY2NWE4NTBjYWQ2YWZmOWNhZjVjNGM4ZDc0YzI3MDUuLjFiNGZiZjdjY2FjNDdlOWUw
ZDgyODRkNjYzNTgxODEyMWNhZTBmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTgxNCw2ICs4MTQsOSBAQCBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorcnVu
dGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3Ry
dWN0b3IuY3BwCitydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCiBydW50aW1l
L0ludGxMb2NhbGUuY3BwCiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2OGVmZWRhMTRkNDYxMDUyNjA3NWFm
ZGViYWM5YWRiYTI1MjY2YmEuLjNhNDk3ZTA3NGE5MGUwYjExOTU4NmJmYTA4ZDQ4M2ViMzA5NDIz
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMzQsNiArMzQsNyBAQAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFj
cm8oRGF0ZSkgXAogICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCisgICAgbWFjcm8oRGlzcGxh
eU5hbWVzKSBcCiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAg
ICBtYWNybyhGdW5jdGlvbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGlzcGxheU5hbWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjRjNmQyYjk4MTlkZTMxNGUwNjQ4
YjRjOTljYzI2Yzg5MTcyOTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTAsMCArMSwzNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5o
IgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vs
b2MuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5TmFtZXM6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSW50bERpc3BsYXlOYW1lcykgfTsKKworSW50bERpc3BsYXlOYW1lcyogSW50bERpc3Bs
YXlOYW1lczo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3BsYXlOYW1lcz4o
dm0uaGVhcCkpIEludGxEaXNwbGF5TmFtZXModm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJ
bnRsRGlzcGxheU5hbWVzOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEaXNwbGF5TmFtZXM6OkludGxE
aXNwbGF5TmFtZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5EaXNwbGF5TmFtZXMKK3ZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURp
c3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMs
IEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwg
bG9jYWxlcyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IEpTT2JqZWN0KiBvcHRpb25zID0gb3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIC8vIERvZXMg
bm90IHNldCBlaXRoZXIgb2YgImNhIiBvciAibnUiLgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWludGwtZGlzcGxheW5hbWVzLWNvbnN0cnVj
dG9yCisgICAgUmVzb2x2ZUxvY2FsZU9wdGlvbnMgbG9jYWxlT3B0aW9uczsKKworICAgIExvY2Fs
ZU1hdGNoZXIgbG9jYWxlTWF0Y2hlciA9IGludGxPcHRpb248TG9jYWxlTWF0Y2hlcj4oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7IHsgImxv
b2t1cCJfcywgTG9jYWxlTWF0Y2hlcjo6TG9va3VwIH0sIHsgImJlc3QgZml0Il9zLCBMb2NhbGVN
YXRjaGVyOjpCZXN0Rml0IH0gfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29r
dXBcIiBvciBcImJlc3QgZml0XCIiX3MsIExvY2FsZU1hdGNoZXI6OkJlc3RGaXQpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBhdXRvIGxvY2FsZURhdGEg
PSBbXShjb25zdCBTdHJpbmcmLCBSZWxldmFudEV4dGVuc2lvbktleSkgLT4gVmVjdG9yPFN0cmlu
Zz4geworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvJiBhdmFpbGFibGVM
b2NhbGVzID0gaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRvIHJl
c29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJl
cXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNoZXIsIGxvY2FsZU9wdGlvbnMsIHsgfSwgbG9jYWxl
RGF0YSk7CisKKyAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKKyAgICBpZiAobV9sb2Nh
bGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZSBkdWUgdG8gaW52YWxpZCBsb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zdHlsZSA9IGludGxPcHRp
b248U3R5bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUs
IHsgeyAibmFycm93Il9zLCBTdHlsZTo6TmFycm93IH0sIHsgInNob3J0Il9zLCBTdHlsZTo6U2hv
cnQgfSwgeyAibG9uZyJfcywgU3R5bGU6OkxvbmcgfSB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIg
XCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBvciBcImxvbmdcIiJfcywgU3R5bGU6OkxvbmcpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBhdXRvIHR5cGUgPSBp
bnRsT3B0aW9uPE9wdGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJl
Z2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsg
ImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9IH0sICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwi
bGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJyZW5jeVwiIl9zLCBX
VEY6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgaWYgKCF0eXBlKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV90eXBlID0gdHlwZS52YWx1ZSgpOworCisgICAgbV9mYWxsYmFjayA9IGludGxP
cHRpb248RmFsbGJhY2s+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImZhbGxiYWNrIiksIHsgeyAiY29kZSJfcywgRmFsbGJhY2s6OkNvZGUgfSwgeyAi
bm9uZSJfcywgRmFsbGJhY2s6Ok5vbmUgfSB9LCAiZmFsbGJhY2sgbXVzdCBiZSBlaXRoZXIgXCJj
b2RlXCIgb3IgXCJub25lXCIiX3MsIEZhbGxiYWNrOjpDb2RlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisjaWYgSEFWRShJQ1VfVV9MT0NBTEVfRElTUExBWV9O
QU1FUykKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKworICAgIFVEaXNw
bGF5Q29udGV4dCBjb250ZXh0c1tdID0geworICAgICAgICAvLyBlbl9HQiBkaXNwbGF5cyBhcyAn
RW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pJyAoU3RhbmRhcmQgTmFtZXMpIG9yICdCcml0aXNoIEVu
Z2xpc2gnIChEaWFsZWN0IE5hbWVzKS4KKyAgICAgICAgLy8gV2UgdXNlIERpYWxlY3QgTmFtZXMg
aGVyZSwgYWxpZ25lZCB0byB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMgZHJhZnQgYW5kIFY4J3Mg
YmVoYXZpb3IuCisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWlu
dGwtZGlzcGxheW5hbWVzI2xhbmd1YWdlLWRpc3BsYXktbmFtZXMKKyAgICAgICAgVURJU1BDVFhf
RElBTEVDVF9OQU1FUywKKworICAgICAgICAvLyBDYXBpdGFpbGl6YXRpb24gbW9kZSBjYW4gYmUg
cGlja2VkIGZyb20gc2V2ZXJhbCBvcHRpb25zLiBQb3NzaWJseSBlaXRoZXIgVURJU1BDVFhfQ0FQ
SVRBTElaQVRJT05fTk9ORSBvciBVRElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9O
RSBpcworICAgICAgICAvLyBwcmVmZXJhYmxlIGluIEludGwuRGlzcGxheU5hbWVzLiBXZSB1c2Ug
VURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUgYmVjYXVzZSBpdCBtYWtlcyBz
dGFuZGFsb25lIGRhdGUgZm9ybWF0IGJldHRlciAoZnIgIkp1aWxsZXQgMjAwOCIgaW4gSUNVIHRl
c3Qgc3VpdGVzKSwKKyAgICAgICAgLy8gYW5kIERpc3BsYXlOYW1lcyB3aWxsIHN1cHBvcnQgZGF0
ZSBmb3JtYXRzIHRvby4KKyAgICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5E
QUxPTkUsCisKKyAgICAgICAgLy8gTmFycm93IGJlY29tZXMgVURJU1BDVFhfTEVOR1RIX1NIT1JU
LiBCdXQgaW4gY3VycmVuY3kgY2FzZSwgd2UgaGFuZGxlIGRpZmZlcmVudGx5IGluc3RlYWQgb2Yg
dXNpbmcgVUxvY2FsZURpc3BsYXlOYW1lcy4KKyAgICAgICAgbV9zdHlsZSA9PSBTdHlsZTo6TG9u
ZyA/IFVESVNQQ1RYX0xFTkdUSF9GVUxMIDogVURJU1BDVFhfTEVOR1RIX1NIT1JULAorCisgICAg
ICAgIC8vIEFsd2F5cyBkaXNhYmxlIElDVSBTVUJTVElUVVRFIHNpbmNlIGl0IGRvZXMgbm90IG1h
dGNoIGFnYWluc3Qgd2hhdCB0aGUgc3BlYyBkZWZpbmVzLiBJQ1UgaGFzIHNvbWUgc3BlY2lhbCBz
dWJzdGl0dXRlIHJ1bGVzLCBmb3IgZXhhbXBsZSwgbGFuZ3VhZ2UgImVuLUFBIgorICAgICAgICAv
LyByZXR1cm5zICJFbmdsaXNoIChBQSkiICh3aGlsZSBBQSBjb3VudHJ5IGNvZGUgaXMgbm90IGRl
ZmluZWQpLCBidXQgd2Ugd291bGQgbGlrZSB0byByZXR1cm4gZWl0aGVyIGlucHV0IHZhbHVlIG9y
IHVuZGVmaW5lZCwgc28gd2UgZG8gbm90IHdhbnQgdG8gaGF2ZSBJQ1Ugc3Vic3RpdHV0ZSBydWxl
cy4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgZWZmZWN0aXZlIGFmdGVyIElDVSA2NS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9jb21taXQvNTNk
ZDYyMWUzYTVjZmYzYjc4YjU1N2M0MDVmMWIxZDZmMTI1YjQ2OAorICAgICAgICBVRElTUENUWF9O
T19TVUJTVElUVVRFLAorICAgIH07CisgICAgbV9sb2NhbGVDU3RyaW5nID0gbV9sb2NhbGUudXRm
OCgpOworICAgIG1fZGlzcGxheU5hbWVzID0gc3RkOjp1bmlxdWVfcHRyPFVMb2NhbGVEaXNwbGF5
TmFtZXMsIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyPih1bGRuX29wZW5Gb3JDb250ZXh0KG1f
bG9jYWxlQ1N0cmluZy5kYXRhKCksIGNvbnRleHRzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbnRleHRz
KSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlz
cGxheU5hbWVzIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIEludGwu
RGlzcGxheU5hbWVzIHNpbmNlIHVzZWQgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBs
aW5rZWQgSUNVIHZlcnNpb24iX3MpOworICAgIHJldHVybjsKKyNlbmRpZgorfQorCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlO
YW1lcy5wcm90b3R5cGUub2YKK0pTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvbnN0Cit7CisKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisjaWYgSEFWRShJQ1VfVV9MT0NBTEVfRElTUExBWV9OQU1FUykKKyAg
ICBBU1NFUlQobV9kaXNwbGF5TmFtZXMpOworICAgIGF1dG8gY29kZSA9IGNvZGVWYWx1ZS50b1dU
RlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkN1cnJlbmN5KSB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB1c2UgdWxkbl9rZXlWYWx1ZURpc3BsYXlOYW1lICsgImN1
cnJlbmN5Ii4gVGhpcyBpcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29ucy4KKyAgICAg
ICAgLy8gICAgIDEuIElDVSBkb2VzIG5vdCByZXNwZWN0IFVESVNQQ1RYX0xFTkdUSF9GVUxMIC8g
VURJU1BDVFhfTEVOR1RIX1NIT1JUIGluIGl0cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8g
ICAgIDIuIFRoZXJlIGlzIG5vIHdheSB0byBzZXQgIm5hcnJvdyIgc3R5bGUgaW4gVUxvY2FsZURp
c3BsYXlOYW1lcyB3aGlsZSBjdXJyZW5jeSBoYXZlICJuYXJyb3ciIHN5bWJvbCBzdHlsZS4KKwor
ICAgICAgICAvLyBDYW5vbmljYWxDb2RlRm9yRGlzcGxheU5hbWVzCisgICAgICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVm
b3JkaXNwbGF5bmFtZXMKKyAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNv
ZGUoY29kZSkgaXMgZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCisgICAgICAg
IGlmICghaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpKSB7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwt
Zm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoY29kZS5pc0FsbEFTQ0lJKCkpOworCisgICAgICAgIFVDdXJy
TmFtZVN0eWxlIHN0eWxlID0gVUNVUlJfTE9OR19OQU1FOworICAgICAgICBzd2l0Y2ggKG1fc3R5
bGUpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6TG9uZzoKKyAgICAgICAgICAgIHN0eWxlID0gVUNV
UlJfTE9OR19OQU1FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGU6OlNo
b3J0OgorICAgICAgICAgICAgc3R5bGUgPSBVQ1VSUl9TWU1CT0xfTkFNRTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CisgICAgICAgICAgICBzdHlsZSA9
IFVDVVJSX05BUlJPV19TWU1CT0xfTkFNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgLy8gNi4gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBwaW5nIGNvZGUg
dG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICBjb25zdCBVQ2hhciBj
dXJyZW5jeVs0XSA9IHsKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzBdKSwKKyAgICAg
ICAgICAgIHRvQVNDSUlVcHBlcihjb2RlWzFdKSwKKyAgICAgICAgICAgIHRvQVNDSUlVcHBlcihj
b2RlWzJdKSwKKyAgICAgICAgICAgIHUnXDAnCisgICAgICAgIH07CisgICAgICAgIC8vIFRoZSBy
ZXN1bHQgb2YgdWN1cnJfZ2V0TmFtZSBpcyBzdGF0aWMgc3RyaW5nIHNvIHRoYXQgd2UgZG8gbm90
IG5lZWQgdG8gZnJlZSB0aGUgcmVzdWx0LgorICAgICAgICBpbnQzMl90IGxlbmd0aCA9IDA7Cisg
ICAgICAgIFVCb29sIGlzQ2hvaWNlRm9ybWF0ID0gZmFsc2U7IC8vIFdlIG5lZWQgdG8gcGFzcyB0
aGlzLCBvdGhlcndpc2UsIHdlIHdpbGwgc2VlIGNyYXNoIGluIElDVSA2NC4KKyAgICAgICAgY29u
c3QgVUNoYXIqIHJlc3VsdCA9IHVjdXJyX2dldE5hbWUoY3VycmVuY3ksIG1fbG9jYWxlQ1N0cmlu
Zy5kYXRhKCksIHN0eWxlLCAmaXNDaG9pY2VGb3JtYXQsICZsZW5ndGgsICZzdGF0dXMpOworICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3BsYXkgbmFt
ZS4iX3MpOworICAgICAgICAvLyB1Y3Vycl9nZXROYW1lIHJldHVybnMgVV9VU0lOR19ERUZBVUxU
X1dBUk5JTkcgaWYgdGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuIEJ1dCBVX1VTSU5HX0RF
RkFVTFRfV0FSTklORyBpcyByZXR1cm5lZCBldmVuIGlmCisgICAgICAgIC8vIG5hcnJvdyBhbmQg
c2hvcnQgcmVzdWx0cyBhcmUgdGhlIHNhbWU6IG5hcnJvdyAiVVNEIiBpcyAiJCIgd2l0aCBVX1VT
SU5HX0RFRkFVTFRfV0FSTklORyBzaW5jZSBzaG9ydCAiVVNEIiBpcyBhbHNvICIkIi4gV2UgbmVl
ZCB0byBjaGVjaworICAgICAgICAvLyByZXN1bHQgPT0gY3VycmVuY3kgdG8gY2hlY2sgd2hldGhl
ciBJQ1UgYWN0dWFsbHkgZmFpbGVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGlzcGxheS1u
YW1lLiBUaGlzIHBvaW50ZXIgY29tcGFyaXNvbiBpcyBlbnN1cmVkIGJ5CisgICAgICAgIC8vIElD
VSBBUEkgZG9jdW1lbnQuCisgICAgICAgIC8vID4gUmV0dXJucyBwb2ludGVyIHRvIGRpc3BsYXkg
c3RyaW5nIG9mICdsZW4nIFVDaGFycy4gSWYgdGhlIHJlc291cmNlIGRhdGEgY29udGFpbnMgbm8g
ZW50cnkgZm9yICdjdXJyZW5jeScsIHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMgcmV0dXJuZWQu
CisgICAgICAgIGlmIChzdGF0dXMgPT0gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgJiYgcmVzdWx0
ID09IGN1cnJlbmN5KQorICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNr
OjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBjb2RlVmFsdWU7CisgICAgICAgIHJldHVybiBqc1N0
cmluZyh2bSwgU3RyaW5nKHJlc3VsdCwgbGVuZ3RoKSk7CisgICAgfQorCisgICAgLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtY2Fub25pY2FsY29kZWZv
cmRpc3BsYXluYW1lcworICAgIGF1dG8gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyA9
IFtdKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlKSAtPiBDU3RyaW5nIHsKKyAgICAgICAg
QVNTRVJUKGNvZGUuaXNBbGxBU0NJSSgpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjb2RlLmFz
Y2lpKCk7CisgICAgICAgIGNoYXIqIG11dGFibGVEYXRhID0gcmVzdWx0Lm11dGFibGVEYXRhKCk7
CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOiB7
CisgICAgICAgICAgICAvLyBMZXQgY29kZSBiZSB0aGUgcmVzdWx0IG9mIG1hcHBpbmcgY29kZSB0
byBsb3dlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCByZXN1bHQubGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAg
ICAgICAgICAgbXV0YWJsZURhdGFbaW5kZXhdID0gdG9BU0NJSUxvd2VyKG11dGFibGVEYXRhW2lu
ZGV4XSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGU6
OlJlZ2lvbjogeworICAgICAgICAgICAgLy8gTGV0IGNvZGUgYmUgdGhlIHJlc3VsdCBvZiBtYXBw
aW5nIGNvZGUgdG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgcmVzdWx0Lmxlbmd0aCgpOyArK2luZGV4
KQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhW2luZGV4XSA9IHRvQVNDSUlVcHBlcihtdXRh
YmxlRGF0YVtpbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBUeXBlOjpTY3JpcHQ6IHsKKyAgICAgICAgICAgIC8vIExldCBjb2RlIGJlIHRoZSByZXN1
bHQgb2YgbWFwcGluZyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIGNvZGUgdG8gdXBwZXIgY2FzZSwg
YW5kIG1hcHBpbmcgdGhlIHNlY29uZCwgdGhpcmQgYW5kIGZvdXJ0aCBjaGFyYWN0ZXIgaW4gY29k
ZSB0byBsb3dlciBjYXNlLCBhcyBkZXNjcmliZWQgaW4gNi4xLgorICAgICAgICAgICAgaWYgKHJl
c3VsdC5sZW5ndGgoKSA+PSAxKQorICAgICAgICAgICAgICAgIG11dGFibGVEYXRhWzBdID0gdG9B
U0NJSVVwcGVyKG11dGFibGVEYXRhWzBdKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAxOyBpbmRleCA8IHJlc3VsdC5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAg
ICBtdXRhYmxlRGF0YVtpbmRleF0gPSB0b0FTQ0lJTG93ZXIobXV0YWJsZURhdGFbaW5kZXhdKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZTo6Q3VycmVu
Y3k6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIHN3aXRj
aCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMYW5ndWFnZTogeworICAgICAgICAvLyBJZiBj
b2RlIGRvZXMgbm90IG1hdGNoZXMgdGhlIHVuaWNvZGVfbGFuZ3VhZ2VfaWQgcHJvZHVjdGlvbiwg
dGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbgorICAgICAgICBpZiAoIWlzVW5pY29kZUxhbmd1
YWdlSWQoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWQiX3MpOworICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGxhbmd1YWdlID0gY2Fub25pY2Fs
aXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOworICAgICAgICAvLyBEbyBub3Qg
dXNlIHVsZG5fbGFuZ3VhZ2VEaXNwbGF5TmFtZSBzaW5jZSBpdCBpcyBub3QgZXhwZWN0ZWQgb25l
IGZvciB0aGlzICJsYW5ndWFnZSIgdHlwZS4gSXQgcmV0dXJucyAiZW4tVVMiIGZvciAiZW4tVVMi
IGNvZGUsIGluc3RlYWQgb2YgIkFtZXJpY2FuIEVuZ2xpc2giLgorICAgICAgICBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwgbV9kaXNw
bGF5TmFtZXMuZ2V0KCksIGxhbmd1YWdlLmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CisgICAgICAgIC8vIElmIGNvZGUgZG9l
cyBub3QgbWF0Y2hlcyB0aGUgdW5pY29kZV9yZWdpb25fc3VidGFnIHByb2R1Y3Rpb24sIHRocm93
IGEgUmFuZ2VFcnJvciBleGNlcHRpb24KKyAgICAgICAgaWYgKCFpc1VuaWNvZGVSZWdpb25TdWJ0
YWcoY29kZSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZyJfcyk7CisgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gcmVnaW9uID0gY2Fub25pY2FsaXpl
Q29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIGNvZGUpOworICAgICAgICBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgbV9kaXNwbGF5
TmFtZXMuZ2V0KCksIHJlZ2lvbi5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIFR5cGU6OlNjcmlwdDogeworICAgICAgICAvLyBJZiBjb2RlIGRvZXMgbm90
IG1hdGNoZXMgdGhlIHVuaWNvZGVfc2NyaXB0X3N1YnRhZyBwcm9kdWN0aW9uLCB0aHJvdyBhIFJh
bmdlRXJyb3IgZXhjZXB0aW9uCisgICAgICAgIGlmICghaXNVbmljb2RlU2NyaXB0U3VidGFnKGNv
ZGUpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWciX3MpOworICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHNjcmlwdCA9IGNhbm9uaWNhbGl6ZUNvZGVG
b3JEaXNwbGF5TmFtZXMobV90eXBlLCBjb2RlKTsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVsZG5fc2NyaXB0RGlzcGxheU5hbWUsIG1fZGlzcGxheU5hbWVz
LmdldCgpLCBzY3JpcHQuZGF0YSgpLCBidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBUeXBlOjpDdXJyZW5jeToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAg
ICAgLy8gdWxkbl9sb2NhbGVEaXNwbGF5TmFtZSwgdWxkbl9yZWdpb25EaXNwbGF5TmFtZSwgYW5k
IHVsZG5fc2NyaXB0RGlzcGxheU5hbWUgcmV0dXJuIFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUiBp
ZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3VuZC4KKyAgICAgICAgLy8gV2Ugc2hvdWxkIHJl
dHVybiB1bmRlZmluZWQgaWYgZmFsbGJhY2sgaXMgIm5vbmUiLiBPdGhlcndpc2UsIHdlIHNob3Vs
ZCByZXR1cm4gaW5wdXQgdmFsdWUuCisgICAgICAgIGlmIChzdGF0dXMgPT0gVV9JTExFR0FMX0FS
R1VNRU5UX0VSUk9SKQorICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxiYWNrID09IEZhbGxiYWNr
OjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBjb2RlVmFsdWU7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxh
eSBuYW1lLiJfcyk7CisgICAgfQorICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZl
cikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29kZVZhbHVlKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgSW50bC5EaXNw
bGF5TmFtZXMgc2luY2UgdXNlZCBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtl
ZCBJQ1UgdmVyc2lvbiJfcyk7CisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorfQorCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRpc3BsYXlO
YW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zCitKU09iamVjdCogSW50bERpc3BsYXlOYW1l
czo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0Cit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvcHRpb25z
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBvcHRpb25zLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxl
KSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOworICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCB0eXBlU3RyaW5nKG1fdHlwZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmYWxsYmFjayIpLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGZhbGxiYWNrU3RyaW5nKG1fZmFsbGJhY2spKSk7CisgICAgcmV0dXJuIG9wdGlvbnM7
Cit9CisKK0FTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpzdHlsZVN0cmluZyhTdHlsZSBz
dHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTdHlsZTo6TmFycm93Ogor
ICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKKyAgICBjYXNlIFN0eWxlOjpTaG9ydDoKKyAgICAg
ICAgcmV0dXJuICJzaG9ydCJfczsKKyAgICBjYXNlIFN0eWxlOjpMb25nOgorICAgICAgICByZXR1
cm4gImxvbmciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFt
ZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgVHlwZTo6TGFuZ3VhZ2U6CisgICAgICAgIHJldHVybiAibGFuZ3VhZ2UiX3M7CisgICAgY2Fz
ZSBUeXBlOjpSZWdpb246CisgICAgICAgIHJldHVybiAicmVnaW9uIl9zOworICAgIGNhc2UgVHlw
ZTo6U2NyaXB0OgorICAgICAgICByZXR1cm4gInNjcmlwdCJfczsKKyAgICBjYXNlIFR5cGU6OkN1
cnJlbmN5OgorICAgICAgICByZXR1cm4gImN1cnJlbmN5Il9zOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK0FT
Q0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBmYWxs
YmFjaykKK3sKKyAgICBzd2l0Y2ggKGZhbGxiYWNrKSB7CisgICAgY2FzZSBGYWxsYmFjazo6Q29k
ZToKKyAgICAgICAgcmV0dXJuICJjb2RlIl9zOworICAgIGNhc2UgRmFsbGJhY2s6Ok5vbmU6Cisg
ICAgICAgIHJldHVybiAibm9uZSJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MWFmYzkwZWJjNmM0YmFjMmNjNTIxMTVjZTNiM2VhNWQwZmI5NzRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91bGRuYW1lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CisjaWYgIWRlZmluZWQoSEFWRV9JQ1VfVV9MT0NBTEVfRElTUExBWV9OQU1FUykKKy8vIFdlIG5l
ZWQgNjEgb3IgbGF0ZXIgc2luY2UgcGFydCBvZiBpbXBsZW1lbnRhdGlvbiB1c2VzIFVDVVJSX05B
UlJPV19TWU1CT0xfTkFNRS4KKyNpZiBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA2MQorI2Rl
ZmluZSBIQVZFX0lDVV9VX0xPQ0FMRV9ESVNQTEFZX05BTUVTIDEKKyNlbmRpZgorI2VuZGlmCisK
K2VudW0gY2xhc3MgUmVsZXZhbnRFeHRlbnNpb25LZXkgOiB1aW50OF90OworCitjbGFzcyBJbnRs
RGlzcGxheU5hbWVzIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRsRGlzcGxheU5h
bWVzKj4oY2VsbCktPkludGxEaXNwbGF5TmFtZXM6On5JbnRsRGlzcGxheU5hbWVzKCk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICByZXR1cm4gdm0uaW50bERpc3BsYXlOYW1lc1NwYWNlPG1vZGU+KCk7CisgICAgfQorCisg
ICAgc3RhdGljIEludGxEaXNwbGF5TmFtZXMqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGluaXRpYWxpemVEaXNw
bGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXNWYWx1ZSwgSlNWYWx1ZSBv
cHRpb25zVmFsdWUpOworCisgICAgSlNWYWx1ZSBvZihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
IGNvbnN0OworICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzKFZNJiwgU3RydWN0dXJlKik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgZW51bSBjbGFzcyBTdHlsZSA6
IHVpbnQ4X3QgeyBOYXJyb3csIFNob3J0LCBMb25nIH07CisgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7IExhbmd1YWdlLCBSZWdpb24sIFNjcmlwdCwgQ3VycmVuY3kgfTsKKyAgICBlbnVt
IGNsYXNzIEZhbGxiYWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKKworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
dHlwZVN0cmluZyhUeXBlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGZhbGxiYWNrU3RyaW5n
KEZhbGxiYWNrKTsKKworICAgIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyID0gSUNV
RGVsZXRlcjx1bGRuX2Nsb3NlPjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2FsZURpc3BsYXlO
YW1lcywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+IG1fZGlzcGxheU5hbWVzOworICAgIFN0
cmluZyBtX2xvY2FsZTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN0b3JlIGl0IG9ubHkgd2hl
biBtX3R5cGUgaXMgQ3VycmVuY3kuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzc3MworICAgIENTdHJpbmcgbV9sb2NhbGVDU3RyaW5nOworICAgIFN0
eWxlIG1fc3R5bGUgeyBTdHlsZTo6TG9uZyB9OworICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6TGFu
Z3VhZ2UgfTsKKyAgICBGYWxsYmFjayBtX2ZhbGxiYWNrIHsgRmFsbGJhY2s6OkNvZGUgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGEwZGY1NGNhMTRkMTQ5MzU2MTg2ZmNmNDg3NmE1YzU4NDU4MTRiNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgiCisKKyNpbmNs
dWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGlzcGxheU5hbWVzQ29u
c3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlz
cGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
Lmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAm
ZGlzcGxheU5hbWVzQ29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gZGlzcGxheU5hbWVzQ29uc3RydWN0
b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bERpc3BsYXlOYW1l
c0NvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKK0BlbmQKKyovCisKK0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvciogSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVzUHJvdG90eXBlKQoreworICAg
IGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZGlz
cGxheU5hbWVzUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVj
dHVyZSogSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERpc3BsYXlO
YW1lcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworCitJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlLCBjYWxsSW50bERpc3BsYXlOYW1lcywgY29uc3RydWN0SW50bERpc3Bs
YXlOYW1lcykKK3sKK30KKwordm9pZCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVz
UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiRGlzcGxheU5hbWVz
Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZGlzcGxheU5hbWVzUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMiksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgZGlzcGxheU5hbWVzUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkRpc3BsYXlOYW1l
cworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERpc3Bs
YXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gbmV3VGFyZ2V0ID09IGNhbGxGcmFtZS0+anNDYWxsZWUoKQorICAgICAgICA/IGdsb2JhbE9i
amVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCkKKyAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG5ld1RhcmdldCwgZ2V0RnVu
Y3Rpb25SZWFsbSh2bSwgbmV3VGFyZ2V0KS0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBJbnRsRGlzcGxheU5hbWVz
KiBkaXNwbGF5TmFtZXMgPSBJbnRsRGlzcGxheU5hbWVzOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7
CisgICAgQVNTRVJUKGRpc3BsYXlOYW1lcyk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
ZGlzcGxheU5hbWVzLT5pbml0aWFsaXplRGlzcGxheU5hbWVzKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuRGlzcGxheU5hbWVzCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSW50bERpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRpc3BsYXlOYW1lcyIpKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3JTdXBwb3J0ZWRM
b2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAvLyBJbnRsLkRpc3BsYXlOYW1lcy5zdXBw
b3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1kaXNwbGF5bmFtZXMvI3NlYy1JbnRsLkRp
c3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YKKworICAgIC8vIDEuIExldCBhdmFpbGFibGVM
b2NhbGVzIGJlICVEaXNwbGF5TmFtZXMlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxEaXNwbGF5TmFtZXNBdmFp
bGFibGVMb2NhbGVzKCk7CisKKyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5v
bmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3Rl
ZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVM
b2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKGdsb2JhbE9iamVjdCwg
YXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSkpKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDQ0YWUxZThhODI1Yjg2ZjdhN2M4YTk2YzUwMWI0NGZiY2FkODhiZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
OworCitjbGFzcyBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50
ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rp
b247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBJ
bnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxE
aXNwbGF5TmFtZXNQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvcihWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsRGlzcGxheU5hbWVzUHJv
dG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhOGVjODBmNDI1MzVmZmQ2
MGM5Mzk5Nzk0N2EyMDJkYTNmYjMxNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgi
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNP
ZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJJbnRsLkRpc3BsYXlO
YW1lcyIsICZCYXNlOjpzX2luZm8sICZkaXNwbGF5TmFtZXNQcm90b3R5cGVUYWJsZSwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKSB9OworCisv
KiBTb3VyY2UgZm9yIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBkaXNw
bGF5TmFtZXNQcm90b3R5cGVUYWJsZQorICBvZiAgICAgICAgICAgICAgIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGVGdW5jT2YgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
cmVzb2x2ZWRPcHRpb25zICBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyAgICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZTo6SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMtSW50bC5EaXNwbGF5TmFtZXMucHJv
dG90eXBlLm9mCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNQ
cm90b3R5cGVGdW5jT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGRpc3BsYXlOYW1l
cyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIWRpc3BsYXlOYW1lcykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlzcGxheU5hbWVzLnByb3RvdHlw
ZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMg
YSBEaXNwbGF5TmFtZXMiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoZGlzcGxheU5hbWVzLT5vZihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLWRpc3Bs
YXluYW1lcy8jc2VjLUludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGRpc3BsYXlO
YW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRpc3BsYXlOYW1lcykKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlzcGxheU5hbWVzLnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5hbWVzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+cmVzb2x2ZWRPcHRpb25z
KGdsb2JhbE9iamVjdCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTY3ZTU4M2E2NzU3NDRlNDE1YTQ4NWU4M2VmMWYzNTg2ZTliMTI0Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXNQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwCmluZGV4IDA3NDMwNjdlZDg4Y2FjNzhmYThkZDJmOTE2NTdhMDQyMzVkOGJi
MmQuLjRlYWMyMDE4NGE3MGI3OTI3M2YxNzcyZjA5NzdkZThlOGFlNGNhN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCkBAIC0xOTEsMjcgKzE5MSw2
IEBAIFN0cmluZyBJbnRsTG9jYWxlOjprZXl3b3JkVmFsdWUoQVNDSUlMaXRlcmFsIGtleSwgYm9v
bCBpc0Jvb2xlYW4pIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nKHZhbHVlKSA6IGVt
cHR5U3RyaW5nKCk7CiB9CiAKLS8vIHVuaWNvZGVfbGFuZ3VhZ2Vfc3VidGFnID0gYWxwaGF7Miwz
fSB8IGFscGhhezUsOH0gOwotc3RhdGljIGJvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3Ry
aW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0g
ICAgcmV0dXJuIGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA4ICYmIGxlbmd0aCAhPSA0ICYmIHN0
cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKLX0KLQotLy8gdW5p
Y29kZV9zY3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOwotc3RhdGljIGJvb2wgaXNVbmljb2RlU2Ny
aXB0U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIHJldHVybiBzdHJpbmcubGVuZ3Ro
KCkgPT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7
Ci19Ci0KLS8vIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9IHwgZGlnaXR7M30gOwot
c3RhdGljIGJvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQotewot
ICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIHJldHVybiAobGVuZ3RoID09
IDIgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKQotICAg
ICAgICB8fCAobGVuZ3RoID09IDMgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNB
U0NJSURpZ2l0PigpKTsKLX0KLQogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRs
LkxvY2FsZQogdm9pZCBJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFnVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAppbmRleCBmZDBlMjc0MDY0YmU1ODE0MjBkYTYzMzBmM2E5OGVjYjMwMGQxMmVkLi42ZjY1
ZWU5MTNhZjQwOWQzZjlhZWEzYzVjZTQyMGY4ZmI5ZTgxNzljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMjAyLDcgKzIw
Miw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgU3RyaW5nIGN1cnJlbmN5ID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjdXJyZW5jeSIpLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFjdXJyZW5jeS5pc051bGwoKSkg
ewotICAgICAgICBpZiAoY3VycmVuY3kubGVuZ3RoKCkgIT0gMyB8fCAhY3VycmVuY3kuaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpIHsKKyAgICAgICAgaWYgKCFpc1dlbGxG
b3JtZWRDdXJyZW5jeUNvZGUoY3VycmVuY3kpKSB7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgImN1
cnJlbmN5IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcAppbmRleCAwYzdhZGQ2NmJmZWZhNDE0YmY5ZjFkMzIzMDNmNTRlNjYwMDli
MWZhLi5jZTUxZDg4MjIzNTNkMDg1YTIwYmFlYzI5YzM5MTZlYzRiZWIzMTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMzUsNiArMzUsOSBA
QAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgorI2luY2x1ZGUgIkludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgpAQCAtNzgsNiAr
ODEsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihW
TSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2JhbE9iamVj
dC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsK
IH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZt
LCBKU09iamVjdCogb2JqZWN0KQoreworICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nh
c3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9u
UHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSo+KGdsb2JhbE9i
amVjdC0+ZGlzcGxheU5hbWVzU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUxvY2FsZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNP
YmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PElu
dGxPYmplY3QqPihvYmplY3QpOwpAQCAtMTUzLDYgKzE2MywxMiBAQCBJbnRsT2JqZWN0KiBJbnRs
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqCiB2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyNpZiBIQVZFKElDVV9V
X0xPQ0FMRV9ESVNQTEFZX05BTUVTKQorICAgIGlmIChPcHRpb25zOjp1c2VJbnRsRGlzcGxheU5h
bWVzKCkpCisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5EaXNwbGF5TmFtZXMsIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKHZtLCB0
aGlzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY3JlYXRlRGlzcGxheU5hbWVzQ29uc3RydWN0b3Ip
OworI2VuZGlmCiB9CiAKIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBA
IC04MTUsNiArODMxLDc2IEBAIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JMb2Nh
bGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXM7CiB9
CiAKKy8vIHVuaWNvZGVfbGFuZ3VhZ2Vfc3VidGFnID0gYWxwaGF7MiwzfSB8IGFscGhhezUsOH0g
OworYm9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAg
ICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICByZXR1cm4gbGVuZ3RoID49IDIg
JiYgbGVuZ3RoIDw9IDggJiYgbGVuZ3RoICE9IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM8aXNBU0NJSUFscGhhPigpOworfQorCisvLyB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgPSBh
bHBoYXs0fSA7Citib29sIGlzVW5pY29kZVNjcmlwdFN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgpID09IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOworfQorCisvLyB1bmljb2RlX3JlZ2lvbl9zdWJ0
YWcgPSBhbHBoYXsyfSB8IGRpZ2l0ezN9IDsKK2Jvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0
cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIHJldHVybiAobGVuZ3RoID09IDIgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNBU0NJSUFscGhhPigpKQorICAgICAgICB8fCAobGVuZ3RoID09IDMgJiYgc3RyaW5nLmlzQWxs
U3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSURpZ2l0PigpKTsKK30KKworLy8gdW5pY29kZV92YXJp
YW50X3N1YnRhZyA9IChhbHBoYW51bXs1LDh9IHwgZGlnaXQgYWxwaGFudW17M30pIDsKK2Jvb2wg
aXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoID49IDUgJiYgbGVuZ3RoIDw9
IDgpCisgICAgICAgIHJldHVybiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJ
QWxwaGFudW1lcmljPigpOworICAgIHJldHVybiBsZW5ndGggPT0gNCAmJiBpc0FTQ0lJRGlnaXQo
c3RyaW5nWzBdKSAmJiBzdHJpbmcuc3Vic3RyaW5nKDEpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNBU0NJSUFscGhhbnVtZXJpYz4oKTsKK30KKworLy8gdW5pY29kZV9sYW5ndWFnZV9pZCwgYnV0
IGludGVyc2VjdGlvbiBvZiBCQ1A0NyBhbmQgVVRTMzUuCisvLyB1bmljb2RlX2xhbmd1YWdlX2lk
ID0KKy8vICAgICB8IHVuaWNvZGVfbGFuZ3VhZ2Vfc3VidGFnIChzZXAgdW5pY29kZV9zY3JpcHRf
c3VidGFnKT8gKHNlcCB1bmljb2RlX3JlZ2lvbl9zdWJ0YWcpPyAoc2VwIHVuaWNvZGVfdmFyaWFu
dF9zdWJ0YWcpKiA7CisvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1pbnRsLWRp
c3BsYXluYW1lcy9pc3N1ZXMvNzkKK2Jvb2wgaXNVbmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICBWZWN0b3I8U3RyaW5nVmlldywgND4gc3VidGFnczsKKyAgICBmb3Ig
KGF1dG8gc3VidGFnIDogc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy0nKSkKKyAg
ICAgICAgc3VidGFncy5hcHBlbmQoc3VidGFnKTsKKworICAgIEFTU0VSVChzdWJ0YWdzLnNpemUo
KSA+PSAxKTsKKyAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAgIGlmICghaXNVbmljb2RlTGFu
Z3VhZ2VTdWJ0YWcoc3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICsrY3Vyc29yOworCisgICAgaWYgKGN1cnNvciA9PSBzdWJ0YWdzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKGlzVW5pY29kZVNjcmlwdFN1YnRhZyhzdWJ0YWdzW2N1cnNv
cl0pKQorICAgICAgICArK2N1cnNvcjsKKworICAgIGlmIChjdXJzb3IgPT0gc3VidGFncy5zaXpl
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChpc1VuaWNvZGVSZWdpb25TdWJ0YWco
c3VidGFnc1tjdXJzb3JdKSkKKyAgICAgICAgKytjdXJzb3I7CisKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBpZiAoY3Vyc29yID09IHN1YnRhZ3Muc2l6ZSgpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGlmICghaXNVbmljb2RlVmFyaWFudFN1YnRhZyhzdWJ0YWdzW2N1
cnNvcl0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICArK2N1cnNvcjsKKyAg
ICB9Cit9CisKK2Jvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmluZ1ZpZXcgY3VycmVu
Y3kpCit7CisgICAgcmV0dXJuIGN1cnJlbmN5Lmxlbmd0aCgpID09IDMgJiYgY3VycmVuY3kuaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Cit9CisKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgaW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIElu
dGwuZ2V0Q2Fub25pY2FsTG9jYWxlcyhsb2NhbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGFkODIyNmU3YjY4MTJmZTljY2MwYzI5NDIwZjMyZDll
NDI1M2VhYjEuLjBiMGE3YmI2YmE0MWMxZWYyOTFhMjgyMjNiODUwMzgxODdmNzY4ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTgyLDYgKzgyLDcg
QEAgU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqKTsKIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxB
dmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxE
aXNwbGF5TmFtZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2Fs
ZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxp
bmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVz
KCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJl
dHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CkBAIC0xMTEsNiArMTEyLDE0IEBAIFZlY3Rv
cjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUp
OwogCiBib29sIGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcpOwogCiti
b29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcpOworYm9vbCBpc1VuaWNvZGVT
Y3JpcHRTdWJ0YWcoU3RyaW5nVmlldyk7Citib29sIGlzVW5pY29kZVJlZ2lvblN1YnRhZyhTdHJp
bmdWaWV3KTsKK2Jvb2wgaXNVbmljb2RlVmFyaWFudFN1YnRhZyhTdHJpbmdWaWV3KTsKK2Jvb2wg
aXNVbmljb2RlTGFuZ3VhZ2VJZChTdHJpbmdWaWV3KTsKKworYm9vbCBpc1dlbGxGb3JtZWRDdXJy
ZW5jeUNvZGUoU3RyaW5nVmlldyk7CisKIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVs
ZXRlciB7CiAgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25z
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKaW5kZXggMTUxMGE0ZmFiNTg5NTgwMWRjODdmYTY3MzY2NDc4ZjI4
Y2JhNjljOS4uOTMxNzU4M2ExYjYzOWQzYTQ3ZTBkNWYwNDY0NjU2OWQ3NjRlYzQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuaApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZW51bSBjbGFz
cyBSZWxldmFudEV4dGVuc2lvbktleSA6IHVpbnQ4X3Q7CisKIGNsYXNzIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2VhMzBkYjllMmU0ZDUzOGRhOGYy
MzJjZjg5YjllNGM5ODIzNzAwNi4uYzg3OTI3NDViOTM0ODAzZmRmNmJhZjFhYjRiMDY3Y2E4Yjky
YmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNp
bmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bExvY2Fs
ZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCkBAIC05ODEsNiArOTgzLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKICAg
ICAgICAgfSk7CisgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOworICAgICAgICAgICAgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxh
eU5hbWVzUHJvdG90eXBlID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQu
dm0sIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEludGxEaXNwbGF5TmFtZXM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGRpc3BsYXlOYW1lc1Byb3RvdHlwZSkpOworICAgICAgICB9KTsKICAgICBt
X2xvY2FsZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xODMyLDYg
KzE4NDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0
b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCBkZGMzMGI4MmU1NTgzODdiMDc3ZTZkOWNiZDE3ZTM2YWIyMDMxNGMxLi4yNzc3
NGViYmM2MDM2ZjdhMzViZjM1ZWU4MWUxNGU3NmNhMDJjNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0
Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
Y29sbGF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CkBAIC03OTIsNiArNzkzLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJl
LmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogZGlzcGxheU5hbWVzU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0aGlzKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWRm
Yjc5ZmRkYTgxODNjYTkxMzE1YzUyMDY0NzBkMTQyMzEyOTQ1NC4uNWY5M2U3ODVlZjQ0MDg0Y2Q5
MmRmZTllMzVkZDU3ZjBhYjAxNTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC00ODgsNiArNDg4LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2Vt
Ymx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20g
bXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwg
dXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQg
c3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGlzcGxheU5hbWVzLCBmYWxzZSwgTm9y
bWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRpc3BsYXlOYW1lcyBjb25zdHJ1Y3Rvci4iKSBcCiAgICAg
dihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElm
IGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVu
ZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwg
IklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBh
IHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4Y2FhNDhjMWJlMzExYjVk
ODdlODYwMzhiYTBmNDA0MTgzODg4YzJhLi42NjE3NGY5N2QxNGJlNzBkZGI2ODQ1MzY4NDA2Yjkw
YWZiZGQyZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02NSw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3Iu
aCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxh
eU5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAgLTMwNCw2ICszMDUsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCog
cnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICNlbmRpZgogICAgICwgaW50bENvbGxhdG9ySGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKICAgICAsIGlu
dGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRs
RGF0ZVRpbWVGb3JtYXQ+KCkpCisgICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCiAgICAgLCBpbnRsTG9j
YWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCiAg
ICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQpAQCAtMTQ5OCw2ICsx
NTAwLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNr
QVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWwKICNlbmRpZgogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1lRm9y
bWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlz
cGxheU5hbWVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGlzcGxheU5hbWVzKQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2Fs
ZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExvY2FsZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXQpCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxl
c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJhbFJ1bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggNjBmNTk3MjlmZWMyZTAyZTY5NzZjMzFlZDUxYjE0OGE1YzZlYWEwNS4u
YTRiZDkxYTRhODIyZTU0NGYwOThlMWU1OGVjZTRiYTIzNDVmNDMzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgY2xhc3MgSWRlbnRpZmllcjsKIGNs
YXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50bERhdGVUaW1l
Rm9ybWF0OworY2xhc3MgSW50bERpc3BsYXlOYW1lczsKIGNsYXNzIEludGxMb2NhbGU7CiBjbGFz
cyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwpAQCAtMzk5LDYgKzQw
MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGlj
IERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNIZWFw
Q2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2Fs
ZUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRs
TnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKQEAgLTU1Niw2ICs1NTgsNyBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlM
aW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2l0aFNjb3BlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsQ29sbGF0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCmluZGV4IDZjMzIxNzk2NTA3ZWM1NDgwOWU3YWE2YjBlNThlMWY0ZWRiYzc5
YjUuLjkyMGZiZmI3ZDFmM2QwOTQ1NmZmNDE5MzM0NGIyMDEyMTRhMGUwMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCkBAIC03NTksNiArNzU5LDEyIEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkNv
ZGVVbml0cyB7CiBjbGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHVzaW5nIGl0ZXJhdG9yX2Nh
dGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZzsKKyAgICB1c2luZyB2YWx1ZV90eXBl
ID0gU3RyaW5nVmlldzsKKyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJkaWZmX3Q7Cisg
ICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOworICAgIHVzaW5nIHJlZmVyZW5jZSA9IHZh
bHVlX3R5cGUmOworCiAgICAgU3RyaW5nVmlldyBvcGVyYXRvciooKSBjb25zdDsKIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvciYgb3BlcmF0b3IrKygpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxOWM4NWI2MmNiYzFjMDE2
MGNjNzk3MWY3MjM3NmMzOTVjNzRmNGQ1Li41OGM0ZWE0MTQxNDgxYzFlYjI2OTliNDUwNDdjMjMw
MTYzMjFmNmYxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA3LTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5EaXNw
bGF5TmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAg
KiBzdHJlc3MvaW50bC1kaXNwbGF5bmFtZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodm0uaWN1VmVyc2lvbik6CisgICAg
ICAgICogc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHZtLmljdVZl
cnNpb24pOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDctMTcgIFhh
biBMb3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1hdGgubWF4KCkgY2FuIHlpZWxk
IHRoZSB3cm9uZyByZXN1bHQgZm9yIG1heCgwLCAtMCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGlzcGxheW5h
bWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZmMTU0NTdmYjM3ZGU5ZDY1OGVhNzg3YzA4YmFlMjgzZDFkNjM4
YzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRpc3BsYXluYW1lcy5q
cwpAQCAtMCwwICsxLDIwMSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlSW50bERpc3BsYXlOYW1l
cz0xIikKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitpZiAoJHZtLmljdVZlcnNp
b24oKSA+PSA2MSkgeworICAgIHNob3VsZEJlKEludGwuRGlzcGxheU5hbWVzLmxlbmd0aCwgMik7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuRGlzcGxheU5hbWVzLCBgVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmV3IEludGwuRGlzcGxh
eU5hbWVzJylgKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIHJlZ2lvbiBpbiBFbmds
aXNoCisgICAgdmFyIHJlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwg
e3R5cGU6ICdyZWdpb24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAg
ICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsKKyAg
ICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworICAgIHNob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVW5pdGVkIFN0YXRlcyIpOworICAgIHNob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhICYgSGVyemVnb3ZpbmEiKTsKKyAgICBzaG91bGRC
ZShyZWdpb25OYW1lcy5vZignTU0nKSwgIk15YW5tYXIgKEJ1cm1hKSIpOworCisgICAgLy8gR2V0
IGRpc3BsYXkgbmFtZXMgb2YgcmVnaW9uIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICByZWdp
b25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ3poLUhhbnQnXSwge3R5cGU6ICdyZWdp
b24nfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisgICAgICAgIHNob3VsZEJl
KHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIuaLieS4gee+jua0siIpOworICAgIHNob3VsZEJlKHJl
Z2lvbk5hbWVzLm9mKCdCWicpLCAi6LKd6YeM5pavIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFt
ZXMub2YoJ1VTJyksICLnvo7lnIsiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQkEn
KSwgIuazouWjq+WwvOS6nuiIh+i1q+WhnuWTpee2ree0jSIpOworICAgIHNob3VsZEJlKHJlZ2lv
bk5hbWVzLm9mKCdNTScpLCAi57es55S4Iik7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJbnRs
LkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgc3R5bGU6ICdzaG9ydCd9KTsK
KyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCkKKyAgICAgICAgc2hvdWxkQmUocmVnaW9u
TmFtZXMub2YoJzQxOScpLCAiTGF0aW4gQW1lcmljYSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5h
bWVzLm9mKCdCWicpLCAiQmVsaXplIik7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ1VT
JyksICJVUyIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdCQScpLCAiQm9zbmlhIik7
CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMub2YoJ01NJyksICJNeWFubWFyIik7CisKKyAgICBy
ZWdpb25OYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9u
Jywgc3R5bGU6ICduYXJyb3cnfSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPj0gNjQpCisg
ICAgICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCc0MTknKSwgIkxhdGluIEFtZXJpY2EiKTsK
KyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZignQlonKSwgIkJlbGl6ZSIpOworICAgIHNob3Vs
ZEJlKHJlZ2lvbk5hbWVzLm9mKCdVUycpLCAiVVMiKTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1l
cy5vZignQkEnKSwgIkJvc25pYSIpOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCdNTScp
LCAiTXlhbm1hciIpOworCisgICAgLy8gR2V0IGRpc3BsYXkgbmFtZXMgb2YgbGFuZ3VhZ2UgaW4g
RW5nbGlzaAorICAgIHZhciBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsn
ZW4nXSwge3R5cGU6ICdsYW5ndWFnZSd9KTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwg
Ikdlcm1hbiIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5h
ZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1
VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1I
YW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcpLCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOwor
ICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2VuLVVTJyksICJBbWVyaWNhbiBFbmdsaXNo
Iik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtVFcnKSwgIkNoaW5lc2UgKFRh
aXdhbikiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGxhbmd1YWdlIGluIFRyYWRp
dGlvbmFsIENoaW5lc2UKKyAgICBsYW5ndWFnZU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVz
KFsnemgtSGFudCddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIHNob3VsZEJlKGxhbmd1YWdl
TmFtZXMub2YoJ2ZyJyksICLms5XmlociKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9m
KCd6aCcpLCAi5Lit5paHIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwg
IuW+t+aWhyIpOworCisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhb
J2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ3Nob3J0J30pOworICAgIHNob3VsZEJl
KGxhbmd1YWdlTmFtZXMub2YoJ2ZyJyksICJGcmVuY2giKTsKKyAgICBzaG91bGRCZShsYW5ndWFn
ZU5hbWVzLm9mKCdkZScpLCAiR2VybWFuIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5v
ZignZnItQ0EnKSwgIkNhbmFkaWFuIEZyZW5jaCIpOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigp
ID49IDY0ICYmICR2bS5pY3VWZXJzaW9uKCkgPD0gNjYpCisgICAgICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3poLUhhbnQnKSwgIkNoaW5lc2UsIFRyYWRpdGlvbmFsIik7CisgICAgZWxz
ZQorICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJUcmFkaXRp
b25hbCBDaGluZXNlIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tVVMnKSwg
IlVTIEVuZ2xpc2giKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1UVycpLCAi
Q2hpbmVzZSAoVGFpd2FuKSIpOworCisgICAgbGFuZ3VhZ2VOYW1lcyA9IG5ldyBJbnRsLkRpc3Bs
YXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAnbGFuZ3VhZ2UnLCBzdHlsZTogJ25hcnJvdyd9KTsKKyAg
ICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdmcicpLCAiRnJlbmNoIik7CisgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignZGUnKSwgIkdlcm1hbiIpOworICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ2ZyLUNBJyksICJDYW5hZGlhbiBGcmVuY2giKTsKKyAgICBpZiAoJHZtLmlj
dVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1VmVyc2lvbigpIDw9IDY2KQorICAgICAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6aC1IYW50JyksICJDaGluZXNlLCBUcmFkaXRpb25hbCIp
OworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignemgtSGFudCcp
LCAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIpOworICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2Yo
J2VuLVVTJyksICJVUyBFbmdsaXNoIik7CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZign
emgtVFcnKSwgIkNoaW5lc2UgKFRhaXdhbikiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVz
IG9mIHNjcmlwdCBpbiBFbmdsaXNoCisgICAgdmFyIHNjcmlwdE5hbWVzID0gbmV3IEludGwuRGlz
cGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdzY3JpcHQnfSk7CisgICAgLy8gR2V0IHNjcmlwdCBu
YW1lcworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICJMYXRpbiIpOworICAg
IHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJBcmFiaWMiKTsKKyAgICBzaG91bGRC
ZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEiKTsKKworICAgIC8vIEdldCBkaXNw
bGF5IG5hbWVzIG9mIHNjcmlwdCBpbiBUcmFkaXRpb25hbCBDaGluZXNlCisgICAgc2NyaXB0TmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWyd6aC1IYW50J10sIHt0eXBlOiAnc2NyaXB0J30p
OworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdMYXRuJyksICLmi4nkuIHmlociKTsKKyAg
ICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignQXJhYicpLCAi6Zi/5ouJ5Lyv5paHIik7CisgICAg
c2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0thbmEnKSwgIueJh+WBh+WQjSIpOworCisgICAgc2Ny
aXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3NjcmlwdCcs
IHN0eWxlOiAnc2hvcnQnfSk7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0xhdG4nKSwg
IkxhdGluIik7CisgICAgc2hvdWxkQmUoc2NyaXB0TmFtZXMub2YoJ0FyYWInKSwgIkFyYWJpYyIp
OworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdLYW5hJyksICJLYXRha2FuYSIpOworCisg
ICAgc2NyaXB0TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ3Nj
cmlwdCcsIHN0eWxlOiAnbmFycm93J30pOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdM
YXRuJyksICJMYXRpbiIpOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCdBcmFiJyksICJB
cmFiaWMiKTsKKyAgICBzaG91bGRCZShzY3JpcHROYW1lcy5vZignS2FuYScpLCAiS2F0YWthbmEi
KTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlz
aAorICAgIHZhciBjdXJyZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwg
e3R5cGU6ICdjdXJyZW5jeSd9KTsKKyAgICAvLyBHZXQgY3VycmVuY3kgbmFtZXMKKyAgICBzaG91
bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIlVTIERvbGxhciIpOworICAgIHNob3VsZEJl
KGN1cnJlbmN5TmFtZXMub2YoJ0VVUicpLCAiRXVybyIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ1RXRCcpLCAiTmV3IFRhaXdhbiBEb2xsYXIiKTsKKyAgICBzaG91bGRCZShjdXJy
ZW5jeU5hbWVzLm9mKCdDTlknKSwgIkNoaW5lc2UgWXVhbiIpOworICAgIHNob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0pQWScpLCAiSmFwYW5lc2UgWWVuIik7CisKKyAgICAvLyBHZXQgZGlzcGxh
eSBuYW1lcyBvZiBjdXJyZW5jeSBjb2RlIGluIFRyYWRpdGlvbmFsIENoaW5lc2UKKyAgICBjdXJy
ZW5jeU5hbWVzID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnemgtSGFudCddLCB7dHlwZTogJ2N1
cnJlbmN5J30pOworICAgIHNob3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1VTRCcpLCAi576O5YWD
Iik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLmrZDlhYMiKTsKKyAg
ICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIuaWsOWPsOW5oyIpOworICAgIHNo
b3VsZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAi5Lq65rCR5bmjIik7CisgICAgc2hvdWxk
QmUoY3VycmVuY3lOYW1lcy5vZignSlBZJyksICLml6XlnJMiKTsKKworICAgIC8vIEdldCBkaXNw
bGF5IG5hbWVzIG9mIGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBzaG9ydAorICAgIGN1cnJl
bmN5TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5
Jywgc3R5bGU6ICdzaG9ydCcgfSk7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignVVNE
JyksICIkIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignRVVSJyksICLigqwiKTsK
KyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdUV0QnKSwgIk5UJCIpOworICAgIHNob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ0NOWScpLCAiQ07CpSIpOworICAgIHNob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0pQWScpLCAiwqUiKTsKKworICAgIC8vIEdldCBkaXNwbGF5IG5hbWVzIG9m
IGN1cnJlbmN5IGNvZGUgaW4gRW5nbGlzaCBpbiBuYXJyb3cKKyAgICBjdXJyZW5jeU5hbWVzID0g
bmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwge3R5cGU6ICdjdXJyZW5jeScsIHN0eWxlOiAn
bmFycm93JyB9KTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdVU0QnKSwgIiQiKTsK
KyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdFVVInKSwgIuKCrCIpOworICAgIHNob3Vs
ZEJlKGN1cnJlbmN5TmFtZXMub2YoJ1RXRCcpLCAiJCIpOworICAgIHNob3VsZEJlKGN1cnJlbmN5
TmFtZXMub2YoJ0NOWScpLCAiwqUiKTsKKyAgICBzaG91bGRCZShjdXJyZW5jeU5hbWVzLm9mKCdK
UFknKSwgIsKlIik7CisgICAgc2hvdWxkQmUoY3VycmVuY3lOYW1lcy5vZignSlBaJyksICJKUFoi
KTsgLy8gRmFsbGJhY2sgY29kZQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGN1cnJlbmN5
TmFtZXMucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJlbiIsInN0eWxlIjoibmFycm93
IiwidHlwZSI6ImN1cnJlbmN5IiwiZmFsbGJhY2siOiJjb2RlIn1gKTsKKworICAgIGN1cnJlbmN5
TmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2N1cnJlbmN5Jywg
c3R5bGU6ICduYXJyb3cnLCBmYWxsYmFjazogJ25vbmUnIH0pOworICAgIHNob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoJ0pQWicpLCB1bmRlZmluZWQpOyAvLyBGYWxsYmFjayBub25lCisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVuY3lOYW1lcy5yZXNvbHZlZE9wdGlvbnMoKSksIGB7
ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJuYXJyb3ciLCJ0eXBlIjoiY3VycmVuY3kiLCJmYWxsYmFj
ayI6Im5vbmUifWApOworCisgICAgcmVnaW9uTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMo
WydlbiddLCB7dHlwZTogJ3JlZ2lvbid9KTsKKyAgICBzaG91bGRCZShyZWdpb25OYW1lcy5vZign
OTk5JyksICI5OTkiKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZWdpb25OYW1lcy5y
ZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwic3R5bGUiOiJsb25nIiwidHlwZSI6
InJlZ2lvbiIsImZhbGxiYWNrIjoiY29kZSJ9YCk7CisKKyAgICByZWdpb25OYW1lcyA9IG5ldyBJ
bnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBlOiAncmVnaW9uJywgZmFsbGJhY2s6J25vbmUn
fSk7CisgICAgaWYgKCR2bS5pY3VWZXJzaW9uKCkgPiA2NCkKKyAgICAgICAgc2hvdWxkQmUocmVn
aW9uTmFtZXMub2YoJzk5OScpLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHJlZ2lvbk5hbWVzLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZW4iLCJzdHls
ZSI6ImxvbmciLCJ0eXBlIjoicmVnaW9uIiwiZmFsbGJhY2siOiJub25lIn1gKTsKKworICAgIGxh
bmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1
YWdlJ30pOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID4gNjQpIHsKKyAgICAgICAgc2hvdWxk
QmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgImVuLUFBIik7CisgICAgICAgIHZhciBvYmpl
Y3QgPSB7CisgICAgICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
J2VuLUFBJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgc2hvdWxkQmUobGFu
Z3VhZ2VOYW1lcy5vZihvYmplY3QpLCBvYmplY3QpOworICAgIH0KKworICAgIGxhbmd1YWdlTmFt
ZXMgPSBuZXcgSW50bC5EaXNwbGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJywgZmFs
bGJhY2s6ICdub25lJ30pOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID4gNjQpIHsKKyAgICAg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignZW4tQUEnKSwgdW5kZWZpbmVkKTsKKyAgICAg
ICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZihvYmplY3QpLCB1bmRlZmluZWQpOworICAgIH0K
KworICAgIHNob3VsZEJlKEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZVtTeW1ib2wudG9TdHJp
bmdUYWddLCBgSW50bC5EaXNwbGF5TmFtZXNgKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShJbnRsLkRpc3BsYXlOYW1lcy5zdXBwb3J0ZWRMb2NhbGVzT2YoImVuIikpLCBgWyJlbiJdYCk7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVk
TG9jYWxlc09mKCJqYS1KUCIpKSwgYFsiamEtSlAiXWApOworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KEludGwuRGlzcGxheU5hbWVzLnN1cHBvcnRlZExvY2FsZXNPZih7IGxlbmd0aDogNCwg
MTogJ2VuJywgMDogJ2VzJywgMzogJ2RlJyB9KSksICdbImVzIiwiZW4iLCJkZSJdJyk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5EaXNwbGF5TmFtZXMuc3VwcG9ydGVkTG9jYWxlc09mKCIi
KSwgYFJhbmdlRXJyb3I6IGludmFsaWQgbGFuZ3VhZ2UgdGFnOiBgKQorCisgICAgc2hvdWxkVGhy
b3coKCkgPT4geworICAgICAgICBJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YuY2FsbCh7
fSk7CisgICAgfSwgYFR5cGVFcnJvcjogSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERpc3Bs
YXlOYW1lc2ApOworCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBJbnRsLkRpc3Bs
YXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoe30pOworICAgIH0sIGBUeXBl
RXJyb3I6IEludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGlzcGxheU5h
bWVzYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUt
c3VidGFncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGFyc2UtdW5pY29kZS1zdWJ0YWdzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYwODdjZWY0ZjI4ZDM0MjZkNTdhYjM5MGNlNjUyZTg4NGY3NzA2NDgKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBhcnNlLXVuaWNvZGUtc3VidGFn
cy5qcwpAQCAtMCwwICsxLDkyIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VJbnRsRGlzcGxheU5h
bWVzPTEiKQorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2lmICgkdm0uaWN1VmVy
c2lvbigpID49IDYxKSB7CisgICAgdmFyIHJlZ2lvbk5hbWVzID0gbmV3IEludGwuRGlzcGxheU5h
bWVzKFsnZW4nXSwge3R5cGU6ICdyZWdpb24nfSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVn
aW9uTmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1
YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHJlZ2lvbk5hbWVzLm9mKCItIiksIGBSYW5n
ZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSByZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhy
b3coKCkgPT4gcmVnaW9uTmFtZXMub2YoIjAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5v
dCBhIHJlZ2lvbiBzdWJ0YWdgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5v
ZigiMDAiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWdgKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiByZWdpb25OYW1lcy5vZigiMDAwMCIpLCBgUmFuZ2VFcnJv
cjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgp
ID0+IHJlZ2lvbk5hbWVzLm9mKCJhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBy
ZWdpb24gc3VidGFnYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gcmVnaW9uTmFtZXMub2YoImFh
YSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgcmVnaW9uIHN1YnRhZ2ApOworICAg
IGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0KQorICAgICAgICBzaG91bGRCZShyZWdpb25OYW1l
cy5vZigiNDE5IiksIGBMYXRpbiBBbWVyaWNhYCk7CisgICAgc2hvdWxkQmUocmVnaW9uTmFtZXMu
b2YoIkpQIiksIGBKYXBhbmApOworICAgIHNob3VsZEJlKHJlZ2lvbk5hbWVzLm9mKCJVUyIpLCBg
VW5pdGVkIFN0YXRlc2ApOworCisgICAgdmFyIGxhbmd1YWdlTmFtZXMgPSBuZXcgSW50bC5EaXNw
bGF5TmFtZXMoWydlbiddLCB7dHlwZTogJ2xhbmd1YWdlJ30pOworICAgIHNob3VsZFRocm93KCgp
ID0+IGxhbmd1YWdlTmFtZXMub2YoIiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEg
bGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCIt
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNo
b3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoIi0tIiksIGBSYW5nZUVycm9yOiBhcmd1
bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1
YWdlTmFtZXMub2YoImVuLSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3Vh
Z2UgaWRgKTsKKyAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlbi1VUyIpLCBgQW1lcmlj
YW4gRW5nbGlzaGApOworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImVu
X1VTIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoImVuLXVzIiksIGBBbWVyaWNhbiBFbmdsaXNoYCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigicm9vdCIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygo
KSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJyb290LVVTIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBp
cyBub3QgYSBsYW5ndWFnZSBpZGApOworICAgIGlmICgkdm0uaWN1VmVyc2lvbigpID49IDY0KQor
ICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCJlcy00MTkiKSwgYExhdGluIEFtZXJp
Y2FuIFNwYW5pc2hgKTsKKyAgICBpZiAoJHZtLmljdVZlcnNpb24oKSA+PSA2NCAmJiAkdm0uaWN1
VmVyc2lvbigpIDw9IDY2KSB7CisgICAgICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3po
LUhhbnQnKSwgYENoaW5lc2UsIFRyYWRpdGlvbmFsYCk7CisgICAgICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwgYENoaW5lc2UsIFNpbXBsaWZpZWQgKEhvbmcgS29u
ZylgKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91bGRCZShsYW5ndWFnZU5hbWVzLm9mKCd6
aC1IYW50JyksIGBUcmFkaXRpb25hbCBDaGluZXNlYCk7CisgICAgICAgIHNob3VsZEJlKGxhbmd1
YWdlTmFtZXMub2YoJ3poLUhhbnMtSEsnKSwgYFNpbXBsaWZpZWQgQ2hpbmVzZSAoSG9uZyBLb25n
KWApOworICAgIH0KKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJIYW50
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOyAvLyBTY3Jp
cHQgb25seQorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ3NyLUxhdG4nKSwgYFNlcmJp
YW4gKExhdGluKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQKKyAgICBzaG91bGRCZShsYW5ndWFnZU5h
bWVzLm9mKCdzci1DeXJsJyksIGBTZXJiaWFuIChDeXJpbGxpYylgKTsgLy8gTGFuZ3VhZ2UtU2Ny
aXB0CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiemgtSEstSGFucyIp
LCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91
bGRCZShsYW5ndWFnZU5hbWVzLm9mKCdzbC1yb3phaicpLCBgU2xvdmVuaWFuIChSZXNpYW4pYCk7
IC8vIExhbmd1YWdlLVZhcmlhbnQKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVz
Lm9mKCJzbF9yb3phaiIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2Ug
aWRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1yb3phai1D
eXJsIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAg
IHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoInNsLXJvemFqLSIpLCBgUmFuZ2VF
cnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRgKTsKKyAgICBzaG91bGRUaHJvdygo
KSA9PiBsYW5ndWFnZU5hbWVzLm9mKCJzbC1fcm96YWoiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50
IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VO
YW1lcy5vZigic2wtQ3lybC0iKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1
YWdlIGlkYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiLXNsLUN5
cmwtIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAg
IHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5LUxhdG4tSVQtYXJldmVsYScpLCBgQXJtZW5p
YW4gKExhdGluLCBJdGFseSwgRWFzdGVybiBBcm1lbmlhbilgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0
LVJlZ2lvbi1WYXJpYW50CisgICAgc2hvdWxkQmUobGFuZ3VhZ2VOYW1lcy5vZignaHktTGF0bi1J
VCcpLCBgQXJtZW5pYW4gKExhdGluLCBJdGFseSlgKTsgLy8gTGFuZ3VhZ2UtU2NyaXB0LVJlZ2lv
bgorICAgIHNob3VsZEJlKGxhbmd1YWdlTmFtZXMub2YoJ2h5LUxhdG4tYXJldmVsYScpLCBgQXJt
ZW5pYW4gKExhdGluLCBFYXN0ZXJuIEFybWVuaWFuKWApOyAvLyBMYW5ndWFnZS1TY3JpcHQtVmFy
aWFudAorICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tSVRa
LWFyZXZlbGEiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkYCk7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4gbGFuZ3VhZ2VOYW1lcy5vZigiaHktTGF0bi0wMC1hcmV2
ZWxhIiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOworICAg
IHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tYXJldmVsYXp6enp6
enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGApOwor
ICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5LUxhdG4tYXJldmVsYXp6
enp6enp6enp6IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBsYW5ndWFnZSBpZGAp
OworICAgIHNob3VsZFRocm93KCgpID0+IGxhbmd1YWdlTmFtZXMub2YoImh5enp6enp6enp6LUxh
dG4tYXJldmVsYSIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgbGFuZ3VhZ2UgaWRg
KTsKKworICAgIHZhciBzY3JpcHROYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10s
IHt0eXBlOiAnc2NyaXB0J30pOworICAgIHNob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9m
KCIiKSwgYFJhbmdlRXJyb3I6IGFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWdgKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiBzY3JpcHROYW1lcy5vZigiLSIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHNj
cmlwdE5hbWVzLm9mKCJMYXRuMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgc2Ny
aXB0IHN1YnRhZ2ApOworICAgIHNob3VsZFRocm93KCgpID0+IHNjcmlwdE5hbWVzLm9mKCJMYW4w
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnYCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4gc2NyaXB0TmFtZXMub2YoIkxhbiIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZ2ApOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVz
Lm9mKCJMYXRuIiksIGBMYXRpbmApOworICAgIHNob3VsZEJlKHNjcmlwdE5hbWVzLm9mKCJsYXRu
IiksIGBMYXRpbmApOyAvLyBDYW5vbmljYWxpemF0aW9uIGNhbiBtYWtlIGl0IHdvcmsuCisKKyAg
ICB2YXIgY3VycmVuY3lOYW1lcyA9IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHt0eXBl
OiAnY3VycmVuY3knfSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigi
IiksIGBSYW5nZUVycm9yOiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBj
b2RlYCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigiLSIpLCBgUmFu
Z2VFcnJvcjogYXJndW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOwor
ICAgIHNob3VsZFRocm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImFiIiksIGBSYW5nZUVycm9y
OiBhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlYCk7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4gY3VycmVuY3lOYW1lcy5vZigianB5eCIpLCBgUmFuZ2VFcnJvcjogYXJn
dW1lbnQgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworICAgIHNob3VsZFRo
cm93KCgpID0+IGN1cnJlbmN5TmFtZXMub2YoImpwMCIpLCBgUmFuZ2VFcnJvcjogYXJndW1lbnQg
aXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZWApOworICAgIHNob3VsZEJlKGN1cnJl
bmN5TmFtZXMub2YoImpweSIpLCBgSmFwYW5lc2UgWWVuYCk7CisgICAgc2hvdWxkQmUoY3VycmVu
Y3lOYW1lcy5vZigiSlBZIiksIGBKYXBhbmVzZSBZZW5gKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRl
eCA2ZTkwNDAwZWYzMDE5ZWYwNmJkMzBhODczZWUxMTI5ZTEwY2Y3Y2NmLi5kNzVlZDFhYjliYmFm
N2YwZWNjODFhNTU2Y2E2YjNjMGRiMzU5YTJkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yNiw2ICsy
Niw5IEBAIHNraXA6CiAgICAgLSBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZAogICAgIC0g
SW50bC5EYXRlVGltZUZvcm1hdC1mb3JtYXRSYW5nZQogICAgIC0gSW50bC5EYXRlVGltZUZvcm1h
dC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCisgICAgIyBDdXJyZW50bHksIHRlc3QyNjIgaGFzIGEg
YnVnIHdpdGggSW50bC5EaXNwbGF5TmFtZXMsIGFuZCBleHBvc2luZyBpdCBjYW4gY2F1c2UgbWFu
eSBmYWlsdXJlcyBpbiB2YXJpb3VzIEludGwgdGVzdHMuCisgICAgIyBXZSBzaG91bGQgZW5hYmxl
IGl0IGFmdGVyIGVuc3VyaW5nIHRlc3QyNjIgaXMgZml4ZWQuCisgICAgIyBodHRwczovL2dpdGh1
Yi5jb20vdGMzOS90ZXN0MjYyL2lzc3Vlcy8yNjgyCiAgICAgLSBJbnRsLkRpc3BsYXlOYW1lcwog
ICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>