<?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>152294</bug_id>
          
          <creation_ts>2015-12-14 21:35:35 -0800</creation_ts>
          <short_desc>Web Inspector: Parse InjectedScriptSource as a built-in to get guaranteed non-user-overriden JSC built-ins</short_desc>
          <delta_ts>2024-04-01 00:08:40 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>239774</blocked>
    
    <blocked>271610</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1149207</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-14 21:35:35 -0800</bug_when>
    <thetext>* SUMMARY
Parse InjectedScriptSource as a built-in to get guaranteed non-user-overriden built-ins.

During debugging, InjectedScriptSource.js gets evaluated in the main context of each page / JSGlobalContext. Because of this it must be careful to avoid user overridable functions that may not behave as expected.

For example instead it cannot just use `Object` because that is `global.Object` and can be overridden by the page to do whatever it wants, like `global.Object = function() { throw &quot;Error&quot;; }`.

There are many functions which we cannot &quot;avoid&quot; using, but cannot be guaranteed that they aren&apos;t overriden by the user.

    Object, Array, String
    Object.getOwnPropertyNames
    Object.getOwnPropertyDescriptor
    Object.getOwnPropertySymbols
    Object.prototype.hasOwnProperty
    Object.prototype.__defineGetter__
    Function.prototype.call
    Element.prototype.hasAttribute

There are plenty we could re-implement ourselves, but would mostly be a waste:

    Set
    String.prototype.trim
    String.prototype.replace

Instead, we should just use the built-in logic in which case we can guarantee we are using the built-in versions of these:

    @Set
    @Object.@getOwnPropertySymbols
    ...

It might get a bit tricky as we move to WebCore accessors (Element.prototype.hasAttribute), but we can fix the majority of brittle code here by using builtins.

* TEST
&lt;script&gt;
window.Set = function() { throw &quot;Error&quot;; }
&lt;/script&gt;

* STEPS TO REPRODUCE
1. Inspect test page
2. js&gt; window
3. Expand window object in the console
  =&gt; ASSERT in debug builds, No properties in Release builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149208</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-14 21:36:08 -0800</bug_when>
    <thetext>&lt;rdar://problem/23895760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149303</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-15 09:07:21 -0800</bug_when>
    <thetext>This would be awesome. Are you going to put up a patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166133</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-18 12:27:23 -0800</bug_when>
    <thetext>*** Bug 154403 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863145</commentid>
    <comment_count>4</comment_count>
      <attachid>458022</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-20 17:47:01 -0700</bug_when>
    <thetext>Created attachment 458022
WIP v0.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863146</commentid>
    <comment_count>5</comment_count>
      <attachid>458022</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-20 17:47:53 -0700</bug_when>
    <thetext>Comment on attachment 458022
WIP v0.1

Not intended for review yet - trying to gauge if/how many tests are broken in various corners of the test suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863147</commentid>
    <comment_count>6</comment_count>
      <attachid>458023</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-20 17:52:06 -0700</bug_when>
    <thetext>Created attachment 458023
WIP v0.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863181</commentid>
    <comment_count>7</comment_count>
      <attachid>458033</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-20 20:15:53 -0700</bug_when>
    <thetext>Created attachment 458033
WIP v0.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863496</commentid>
    <comment_count>8</comment_count>
      <attachid>458104</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-21 17:36:49 -0700</bug_when>
    <thetext>Created attachment 458104
WIP v0.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863836</commentid>
    <comment_count>9</comment_count>
      <attachid>458193</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-22 18:41:02 -0700</bug_when>
    <thetext>Created attachment 458193
WIP v0.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863851</commentid>
    <comment_count>10</comment_count>
      <attachid>458193</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-22 21:30:58 -0700</bug_when>
    <thetext>Comment on attachment 458193
WIP v0.5

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1085
&gt; +    auto* jsonProperty = JSONObject::create(vm, JSONObject::createStructure(vm, this, m_objectPrototype.get()));
&gt; +    m_jsonProperty.set(vm, this, jsonProperty);
&gt; +    m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::JSON)].set(vm, this, jsonProperty);

Let&apos;s not newly create JSONObject. Let&apos;s

1. Convert JSON object definition from PropertyCallback to CellProperty+LazyProperty
2. Define lazy init function to initialize it
3. Use that lazy initializer inside m_linkTimeConstants&apos;s initLater.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863852</commentid>
    <comment_count>11</comment_count>
      <attachid>458193</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-22 21:32:46 -0700</bug_when>
    <thetext>Comment on attachment 458193
WIP v0.5

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

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1085
&gt;&gt; +    m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::JSON)].set(vm, this, jsonProperty);
&gt; 
&gt; Let&apos;s not newly create JSONObject. Let&apos;s
&gt; 
&gt; 1. Convert JSON object definition from PropertyCallback to CellProperty+LazyProperty
&gt; 2. Define lazy init function to initialize it
&gt; 3. Use that lazy initializer inside m_linkTimeConstants&apos;s initLater.

Ah, but in this case, probably, just exposing JSON.stringify / JSON.parse directly. And share the functions with JSON object by defining them lazily in JSGlobalObject.
Anyway, we are not designing creating multiple JSONObject in one JSGlobalObject, so avoid it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863950</commentid>
    <comment_count>12</comment_count>
      <attachid>458228</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-23 23:34:58 -0700</bug_when>
    <thetext>Created attachment 458228
WIP v0.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863980</commentid>
    <comment_count>13</comment_count>
      <attachid>458236</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-24 13:01:58 -0700</bug_when>
    <thetext>Created attachment 458236
WIP v0.7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864283</commentid>
    <comment_count>14</comment_count>
      <attachid>458308</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-25 16:29:54 -0700</bug_when>
    <thetext>Created attachment 458308
WIP v0.8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864574</commentid>
    <comment_count>15</comment_count>
      <attachid>458389</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-26 12:42:25 -0700</bug_when>
    <thetext>Created attachment 458389
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864592</commentid>
    <comment_count>16</comment_count>
      <attachid>458389</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-26 13:24:29 -0700</bug_when>
    <thetext>Comment on attachment 458389
Patch v1.0

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

omg yes so awesome =D

as we discussed offline, i think there are still a few spots that need to be adjusted to use a builtin, but you got almost all of them :)

it&apos;d be super nice if we could have a test that simulates a page overriding some of these builtins to confirm that this is working as expected (e.g. have a page override `Array.prototype.push = function() { didPush = true; }` and then confirm `!didPush` once the injected script logic has finished)

&gt; Source/JavaScriptCore/Scripts/wkbuiltins/builtins_model.py:337
&gt; +                # FIXME: &lt;webkit.org/b/######&gt; Regular expressions containing unbalanced quotation marks (like the one

oops?

&gt; Source/JavaScriptCore/builtins/IteratorHelpers.js:64
&gt; +    if (@isUndefinedOrNull(iteratorFunction))
&gt; +        @throwTypeError(&quot;builtinIterable requires that the property `iterable[Symbol.iterator]` exists.&quot;);

NIT: is it really useful to distinguish between &quot;not set&quot; and &quot;not callable&quot;?

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1047
&gt; +            return value[@@toStringTag];

NIT: can we do `value.@@toStringTag?`

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1065
&gt; +        // FIXME: &lt;webkit.org/b/239774&gt; Injected script should use WebCore built-ins.

FWIW you could probably do this by having something similar to `_inspectObject` so that the WebCore builtins stay in WebCore :)

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1140
&gt; +            properties: isTableRowsRequest ? 1000 : (5 &gt; firstLevelKeysCount ? 5 : firstLevelKeysCount),
&gt; +            indexes: isTableRowsRequest ? 1000 : (10 &gt; firstLevelKeysCount ? 10 : firstLevelKeysCount),

Style: I&apos;d flip the order so that the variable is first (and this way the constant numbers are closer together)

NIT: maybe we should make our `function max` along the lines of how we already have a `toString`?

&gt; Source/WebCore/inspector/CommandLineAPIModule.cpp:56
&gt; +    ASSERT_NOT_REACHED();

should this be a `RELEASE_ASSERT_NOT_REACHED`?

&gt; LayoutTests/ChangeLog:12
&gt; +        - The Injected script (and modules) will no longer appear as scripts in Web Inspector.

i wonder if we should find some other internal script (e.g. modern media controls) and use that as the thing we step inside</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864886</commentid>
    <comment_count>17</comment_count>
      <attachid>458460</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-27 12:17:51 -0700</bug_when>
    <thetext>Created attachment 458460
Patch v1.1 - More @s, more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865046</commentid>
    <comment_count>18</comment_count>
      <attachid>458489</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-27 21:18:56 -0700</bug_when>
    <thetext>Created attachment 458489
Patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865047</commentid>
    <comment_count>19</comment_count>
      <attachid>458490</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-27 21:20:02 -0700</bug_when>
    <thetext>Created attachment 458490
Patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866219</commentid>
    <comment_count>20</comment_count>
      <attachid>458754</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-03 13:30:07 -0700</bug_when>
    <thetext>Created attachment 458754
Patch v1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866239</commentid>
    <comment_count>21</comment_count>
      <attachid>458754</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-03 14:07:21 -0700</bug_when>
    <thetext>Comment on attachment 458754
Patch v1.3

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

r=mews, awesome work!  Thanks for iterating :)

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:31
&gt; +function createPrototypelessObject(/* key1, value1, key2, value2, ... */)

NIT: `createObjectWithoutPrototype`?

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:44
&gt; +function createPrototypelessArray(/* value1, value2, ... */)

ditto (:31) `createArrayWithoutPrototype`

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:118
&gt; +function createPrototypelessArrayFromArguments(argumentsObject) {

ditto (:31) `createArrayWithoutPrototypeFromArguments`

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:269
&gt; +        return this._getProperties(objectId, collectionMode, @createPrototypelessObject(&quot;fetchStart&quot;, fetchStart, &quot;fetchCount&quot;, fetchCount, &quot;generatePreview&quot;, generatePreview));

NIT: I&apos;d put this onto separate lines so that it&apos;s easier to read

ditto for every `@createObjectWithoutPrototype` that has more than two arguments (i.e. one property) below

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:811
&gt; +            if (@Object.@getOwnPropertySymbols) {

NIT: I dont think we need this check anymore 🤔

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:912
&gt; +        let existingIndex = this._savedResults.@indexOf(result);

will this actually work if it doesn&apos;t inherit from `Array.prototype`?

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1243
&gt; +        if (firstLevelKeys &amp;&amp; !firstLevelKeys.@includes(name))

ditto (:912)

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1347
&gt; +            entries.@pop();

ditto (:912)

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1357
&gt; +        preview.entries = entries.@map(function(entry) {

ditto (:912)

&gt; LayoutTests/inspector/injected-script/observable.html:141
&gt; +        propertyString: &quot;\&quot;push\&quot;&quot;,

we may also wanna add tests for something like `Array.prototype.get 42` and/or `Object.prototype.get subtype` and/or etc. (i.e. find something in one of the objects we pass into functions just like `options = {}` and see what happens if you make `Object.prototype` have one of those properties) to make sure that `createObjectWithoutPrototype`/`createArrayWithoutPrototype` are doing the right thing (i.e. not allowing getters on the prototype to interfere with the injected script)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866285</commentid>
    <comment_count>22</comment_count>
      <attachid>458754</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-05-03 15:44:04 -0700</bug_when>
    <thetext>Comment on attachment 458754
Patch v1.3

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

Very cool!

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:46
&gt; +    let array = new @Array();

Maybe `new @Array(arguments.length)`?

&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1496
&gt; +InjectedScript.CallFrameProxy._scopeTypeNames[0] = &quot;global&quot;; // GLOBAL_SCOPE

Was there an issue with the `@createPrototypelessObject` arguments convenience?

```
InjectedScript.CallFrameProxy._scopeTypeNames = @createPrototypelessObject(
    0, &quot;global&quot;,
    1, &quot;with&quot;,
    …
);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866320</commentid>
    <comment_count>23</comment_count>
      <attachid>458754</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-03 17:14:23 -0700</bug_when>
    <thetext>Comment on attachment 458754
Patch v1.3

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

&gt;&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:912
&gt;&gt; +        let existingIndex = this._savedResults.@indexOf(result);
&gt; 
&gt; will this actually work if it doesn&apos;t inherit from `Array.prototype`?

This works by accident, it seems. I need to `array.__proto__ = null;` in the create method.

&gt;&gt; Source/JavaScriptCore/inspector/InjectedScriptSource.js:1496
&gt;&gt; +InjectedScript.CallFrameProxy._scopeTypeNames[0] = &quot;global&quot;; // GLOBAL_SCOPE
&gt; 
&gt; Was there an issue with the `@createPrototypelessObject` arguments convenience?
&gt; 
&gt; ```
&gt; InjectedScript.CallFrameProxy._scopeTypeNames = @createPrototypelessObject(
&gt;     0, &quot;global&quot;,
&gt;     1, &quot;with&quot;,
&gt;     …
&gt; );
&gt; ```

No issue - I had actually made this change at one point, but must have reverted it locally somehow!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866351</commentid>
    <comment_count>24</comment_count>
      <attachid>458769</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-03 19:02:53 -0700</bug_when>
    <thetext>Created attachment 458769
Patch v1.4 - Review nits and notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866468</commentid>
    <comment_count>25</comment_count>
      <attachid>458798</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-04 08:33:31 -0700</bug_when>
    <thetext>Created attachment 458798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866477</commentid>
    <comment_count>26</comment_count>
      <attachid>458802</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-04 08:53:40 -0700</bug_when>
    <thetext>Created attachment 458802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866537</commentid>
    <comment_count>27</comment_count>
      <attachid>458813</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-04 11:04:50 -0700</bug_when>
    <thetext>Created attachment 458813
Patch v1.7 - For Windows EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866587</commentid>
    <comment_count>28</comment_count>
      <attachid>458825</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-04 13:55:13 -0700</bug_when>
    <thetext>Created attachment 458825
Patch v1.8 - For Windows EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866594</commentid>
    <comment_count>29</comment_count>
      <attachid>458826</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-04 14:34:21 -0700</bug_when>
    <thetext>Created attachment 458826
Patch v1.8.1 - For Windows EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866700</commentid>
    <comment_count>30</comment_count>
      <attachid>458840</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-04 18:51:54 -0700</bug_when>
    <thetext>Created attachment 458840
Patch v1.8.2 - For Windows EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866863</commentid>
    <comment_count>31</comment_count>
      <attachid>458877</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-05 09:02:35 -0700</bug_when>
    <thetext>Created attachment 458877
Patch v1.9 - Only a LinkTimeConstant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867056</commentid>
    <comment_count>32</comment_count>
      <attachid>458928</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-05 17:25:32 -0700</bug_when>
    <thetext>Created attachment 458928
Patch v1.10 - This seems to actually pass the tests on Windows - still needs cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867326</commentid>
    <comment_count>33</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-06 13:13:43 -0700</bug_when>
    <thetext>Windows test crashes have been narrowed down to something to do with building. If you build the patch twice back-to-back, the tests pass. I&apos;m going to upload a rebased copy of this patch since it seems a few bits have gone stale since v1.4, which is the code that was intended to be landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867329</commentid>
    <comment_count>34</comment_count>
      <attachid>458971</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-06 13:51:34 -0700</bug_when>
    <thetext>Created attachment 458971
Patch v2.0 - Rebase of v1.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867581</commentid>
    <comment_count>35</comment_count>
      <attachid>459031</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-09 00:03:01 -0700</bug_when>
    <thetext>Created attachment 459031
Patch v2.1 - With Windows build fix that prevents using a stale WebCoreJSBuiltinInternals.h for dependent targets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867582</commentid>
    <comment_count>36</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-09 00:05:02 -0700</bug_when>
    <thetext>(In reply to Patrick Angle from comment #35)
&gt; Created attachment 459031 [details]
&gt; Patch v2.1 - With Windows build fix that prevents using a stale
&gt; WebCoreJSBuiltinInternals.h for dependent targets

Patch name is a bit misleading, really. This issue exists for all cmake platforms as best as I can tell, but only Windows is effected for testing because the other cmake platforms don&apos;t run their tests against WebKitLegacy/DumpRenderTree, which is where the stale header was being used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868184</commentid>
    <comment_count>37</comment_count>
      <attachid>459174</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-11 11:33:40 -0700</bug_when>
    <thetext>Created attachment 459174
Patch v2.2 - With WIP build fix from bug 240297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868189</commentid>
    <comment_count>38</comment_count>
      <attachid>459176</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-11 11:48:45 -0700</bug_when>
    <thetext>Created attachment 459176
Patch v2.2.1 - With WIP build fix from bug 240297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868210</commentid>
    <comment_count>39</comment_count>
      <attachid>459181</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-11 13:39:40 -0700</bug_when>
    <thetext>Created attachment 459181
Patch v2.3 - For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868211</commentid>
    <comment_count>40</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-11 13:42:51 -0700</bug_when>
    <thetext>AppleWin bot will fail tests after first build, and begin passing tests after the next incremental build - this is being addressed in bug 240297. The build fix in that bug was used to test v2.2.1 of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868260</commentid>
    <comment_count>41</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-11 17:33:07 -0700</bug_when>
    <thetext>Committed r294082 (250474@main): &lt;https://commits.webkit.org/250474@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 459181.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458022</attachid>
            <date>2022-04-20 17:47:01 -0700</date>
            <delta_ts>2022-04-20 17:52:03 -0700</delta_ts>
            <desc>WIP v0.1</desc>
            <filename>bug-152294-20220420174700.patch</filename>
            <type>text/plain</type>
            <size>186609</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Yjk0M2U2M2UxYzM4MjRjMjdlNmU2ZjE2Mjk2MjI5ZDNmNzY1MTZhLi4zZTk3MWFiY2IzN2IxNGVl
ODA2YWI3YjM1N2E4MjM3MTk3MDg2MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wNC0yMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVu
Y3Rpb25zKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QnVpbHRpbi5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLmV4ZWN1dGUpOgorICAgICAgICAobGV0
LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5hd2FpdFByb21pc2UpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5jYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChsZXQuSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKGxldC5Jbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcEpTT05TdHJpbmcpOgorICAgICAgICAobGV0LkluamVj
dGVkU2NyaXB0LnByb3RvdHlwZS53cmFwVGFibGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2Ny
aXB0LnByb3RvdHlwZS5pbmplY3RNb2R1bGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0
LnByb3RvdHlwZS5fcmVzb2x2ZUNhbGxBcmd1bWVudCk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRT
Y3JpcHQucHJvdG90eXBlLl9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yLmNyZWF0ZUZha2VWYWx1
ZURlc2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9y
RWFjaFByb3BlcnR5RGVzY3JpcHRvci5wcm9jZXNzUHJvcGVydHkpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9zYXZlUmVzdWx0KToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChsZXQuUmVtb3RlT2JqZWN0KToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3Quc2V0IF9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwpOgor
ICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5wcm90b3R5cGUuX2lzUHJldmlld2FibGVPYmplY3Qu
c2V0IGFkZCk6CisgICAgICAgIChDb21tYW5kTGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJl
ZF9oZXJlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIyLTA0
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBB
dG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3Qg
Y2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTUxZmFkNzE1NTcyNjYzNDE2ZDc0NjZjN2FlODI5NTU5OTZl
NmU2ZS4uNWNjMDBiYTYwYzZkOTNiNmRmNzI3Y2QzMjYxODg5ZjkzNGM2NDhmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA0LTIwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNv
dXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBi
dWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcy4KKyAgICAgICAg
KGluamVjdE1vZHVsZSk6CisKIDIwMjItMDQtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gc2Nyb2xsSW50b1ZpZXcg
ZmFpbHMgd2l0aCBzY3JvbGwtc25hcC10eXBlIG9uIDpyb290CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMjNjNGE3NGY4ODY4NjNhMWVmY2UwYjNjYTM2YmYxNjYxM2VmNDk1
NC4uZGVkOWRjY2FjMThhOTUwZTU0MmY3NTI2MjFmMDQ3MTBiZjE1NDM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQwNSwxNyArMTQwNSw2IEBAIGxpc3QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9V
VFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0
U291cmNlLmggJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNj
cmlwdFNvdXJjZS5taW4uanMKLSAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBz
b3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0ph
dmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzID4+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2Ny
aXB0U291cmNlX2pzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9IRUFERVJTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlm
IChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAppbmRleCBiOTIxYjJmODI4NjQzMDFhMGM1YmY3MTU0NjRkODFiNWZhYWYwOGJl
Li40N2FmODFiY2VkMTMwMjBiYzhkNTM4YjI3NGNhOWZkZDcxMmJlZTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtODgsNyArODgsNyBAQCAkKFBST0pFQ1RfRElSKS9nZW5lcmF0b3IvVGVtcGxhdGUucmIKICQo
UFJPSkVDVF9ESVIpL2dlbmVyYXRvci9UeXBlLnJiCiAkKFBST0pFQ1RfRElSKS9nZW5lcmF0b3Iv
V2FzbS5yYgogJChQUk9KRUNUX0RJUikvZ2VuZXJhdG9yL21haW4ucmIKLSQoUFJPSkVDVF9ESVIp
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworJChQUk9KRUNUX0RJUikvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QnVpbHRpbi5qcwogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3By
b3RvY29sL0FuaW1hdGlvbi5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wv
QXBwbGljYXRpb25DYWNoZS5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wv
QXVkaXQuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi5hMTAzMjgyNzI4NTFl
NThlMTI1M2E5ZDNjMzBmM2FiOWIwZmQ0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtNjgsNyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBc
Ci0gICAgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtl
eXdvcmRMb29rdXAuaCBcCiAgICAgUmVnRXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3
IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9XZWJBc3NlbWJseS5qcyBcCisJJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QnVpbHRpbi5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91
dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0
b3Igc2NyaXB0cywgc28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVS
QVQKIAkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
cHJlcHJvY2Vzcy5wbCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMu
anMuaW4gLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1
dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQu
cGwKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMiID4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJ
bmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5q
cwotCiBBSVJfT1BDT0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNv
ZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzVlYTQxNmY3MGFj
YzZlMWFmNjc4MmE0OGQzZWYxNjg5NTQ0MjM5Yi4uNWViNGMwZTljMzJkZjMzMmU5NDhjMTEwOTAz
N2M0YjA5MjQwMjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3MjIsNyAr
NDcyMiw3IEBACiAJCUE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0
SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0
SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCQzE4NUJGQUNDMDA3
RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzMxODVGOTJDOTAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdEJ1aWx0aW4uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNF
NUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjUzLDEzICs5MjUzLDEzIEBACiAJCQkJQTUxM0U1
QjYxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmggKi8sCiAJCQkJQTUxNEIyQzAx
ODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8sCiAJCQkJQTUxNEIy
QzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovLAorCQkJCUE1MTNF
NUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMgKi8sCiAJCQkJ
QTU4RTM1OTAxODYwREVDNzAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJ
CQkJQTUxM0U1QjkxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovLAog
CQkJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
ICovLAogCQkJCUE1MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCAqLywKIAkJCQlBNTg0MEUxRTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwICovLAogCQkJCUE1ODQwRTFGMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNj
cmlwdE1vZHVsZS5oICovLAotCQkJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyAqLywKIAkJCQlBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5z
cGVjdG9yQWdlbnRCYXNlLmggKi8sCiAJCQkJQTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIElu
c3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAogCQkJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQppbmRl
eCA2NWRjMTVjY2FkZjVmMDBhNmYyZjQ5MDEwNzMwMTk3OWE4NmQxNjg3Li4xMzVmMzM5ZTdhNDQx
MDVhYWM4MmRjMzA0NjgzYmI5MWZmMGM1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTMw
MywyMSArMzAzLDU1IEBAIGNsYXNzIEJ1aWx0aW5zQ29sbGVjdGlvbjoKICAgICAgICAgZnVuY3Rp
b25Cb3VuZHMgPSBbXQogICAgICAgICBzdGFydCA9IDAKICAgICAgICAgZW5kID0gMAorCiAgICAg
ICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgogICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFy
dCgpCiAgICAgICAgICAgICBpZiBzdGFydCA8IGVuZDoKICAgICAgICAgICAgICAgICBjb250aW51
ZQogICAgICAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKICAgICAgICAgICAgIHdoaWxlIHRleHRb
ZW5kXSAhPSAneyc6Ci0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAg
ICAgIGVuZCArPSAxCiAgICAgICAgICAgICBkZXB0aCA9IDEKLSAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAg
ICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyID0gTm9uZQogICAgICAgICAgICAgd2hpbGUg
ZGVwdGggPiAwOgotICAgICAgICAgICAgICAgIGlmIHRleHRbZW5kXSA9PSAneyc6Ci0gICAgICAg
ICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB0ZXh0
W2VuZF0gPT0gJ30nOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQorICAg
ICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPSB0ZXh0W2VuZF0KKworICAgICAgICAgICAg
ICAgIGlmIGlzRXNjYXBpbmdDaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBp
bmdDaGFyYWN0ZXIgPSBGYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFy
YWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJl
bnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVu
dFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBp
c0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgICAgICAgICAgIyBGSVhNRTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJlZ3VsYXIg
ZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0
aGUgb25lCisgICAgICAgICAgICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdz
IGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWlu
ZworICAgICAgICAgICAgICAgICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJv
dW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2gg
bGluZQorICAgICAgICAgICAgICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUg
c3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRh
aW5zCisgICAgICAgICAgICAgICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xv
c2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0
aGUgZWFybGllcgorICAgICAgICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4g
dW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09
ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgJ2AnOgorICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5n
U3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAg
ICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJh
Y3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAg
ICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVu
ZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgp
IGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNl
MzBkZGZjMmEwMGM1MmFlYmM1ZC4uYmU4OTVhOWYyNzU3M2U3MzUzZjE4MWY0MzQ2YTQ2NGQ0ZTZm
MTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aApAQCAtMTkyLDYgKzE5MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVS
ZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNy
byhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhwYXJzZUpTT04p
IFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRP
d25Qcm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisg
ICAgbWFjcm8oaGFzT3duUHJvcGVydHkpIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRl
eCAxYzQ3ZWVlYmE4NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi4xNTdjOTQzOTBjNTQx
MjE0M2NkMjMxOTBjMmNkNWY5OGJhZTI0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOCBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBc
CiAgICAgdihpc1JlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51
bGxwdHIpIFwKKyAgICB2KHBhcnNlSlNPTiwgbnVsbHB0cikgXAorICAgIHYoU3RyaW5nLCBudWxs
cHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2Rl
KSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJ1aWx0aW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDQ5MzNjNTE1OGE2YWYxNWMyYTgx
MWI3NzU1NjUzMzZiM2MwNDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMKQEAgLTAsMCArMSwxNTQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAZ2xv
YmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0
ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7
CisKK2Z1bmN0aW9uIHRvU3RyaW5nKG9iaikKK3sKKyAgICByZXR1cm4gQFN0cmluZyhvYmopOwor
fQorCitmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKK3sKKyAgICBpZiAob2JqID09
PSAwICYmIDEgLyBvYmogPCAwKQorICAgICAgICByZXR1cm4gIi0wIjsKKworICAgIGlmIChpc0Jp
Z0ludChvYmopKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcob2JqKSArICJuIjsKKworICAgIHJl
dHVybiB0b1N0cmluZyhvYmopOworfQorCitmdW5jdGlvbiBpc1VJbnQzMihvYmopCit7CisgICAg
aWYgKHR5cGVvZiBvYmogPT09ICJudW1iZXIiKQorICAgICAgICByZXR1cm4gb2JqID4+PiAwID09
PSBvYmogJiYgKG9iaiA+IDAgfHwgMSAvIG9iaiA+IDApOworICAgIHJldHVybiAiIiArIChvYmog
Pj4+IDApID09PSBvYmo7Cit9CisKK2Z1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKQoreworICAgIHJl
dHVybiB0eXBlb2YgdmFsdWUgPT09ICJzeW1ib2wiOworfQorCitmdW5jdGlvbiBpc0JpZ0ludCh2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAiYmlnaW50IjsKK30KKworZnVu
Y3Rpb24gaXNFbXB0eU9iamVjdChvYmplY3QpCit7CisgICAgZm9yIChsZXQga2V5IGluIG9iamVj
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlv
biBpc0RlZmluZWQodmFsdWUpCit7CisgICAgcmV0dXJuICEhdmFsdWUgfHwgSW5qZWN0ZWRTY3Jp
cHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24odmFsdWUpOworfQorCitmdW5jdGlvbiBpc1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKQoreworICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgY2Fz
ZSAiYm9vbGVhbiI6CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICBjYXNlICJzdHJpbmciOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4g
IUluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0aW9uKHZhbHVlKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyAtLS0tLS0tCisKK2xl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0Cit7CisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOworICAgICAg
ICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IHt9OworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0
R3JvdXBOYW1lID0ge307CisgICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OworICAgICAg
ICB0aGlzLl9tb2R1bGVzID0ge307CisgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4
ID0gMTsKKyAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgfQorCisgICAgLy8g
SW5qZWN0ZWRTY3JpcHQgQysrIEFQSQorCisgICAgZXhlY3V0ZShmdW5jdGlvblN0cmluZywgb2Jq
ZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQ
cmV2aWV3LCBzYXZlUmVzdWx0LCBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dy
YXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3
LCBzYXZlUmVzdWx0LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFt
ZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRT
Y3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3Qs
IGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
KS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGV2
YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKKyAgICB7CisgICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLl9l
dmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxP
bkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQpOworICAgIH0KKworICAgIGF3YWl0UHJvbWlzZShwcm9taXNl
T2JqZWN0SWQsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBsZXQgcGFyc2VkUHJvbWlzZU9iamVjdElkID0gdGhpcy5f
cGFyc2VPYmplY3RJZChwcm9taXNlT2JqZWN0SWQpOworICAgICAgICBsZXQgcHJvbWlzZU9iamVj
dCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZFByb21pc2VPYmplY3RJZCk7CisgICAgICAgIGxl
dCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJz
ZWRQcm9taXNlT2JqZWN0SWQuaWRdOworCisgICAgICAgIGlmICghaXNEZWZpbmVkKHByb21pc2VP
YmplY3QpKSB7CisgICAgICAgICAgICBjYWxsYmFjaygiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdp
dGggZ2l2ZW4gaWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBAUHJvbWlzZSkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBnaXZlbiBpZCBpcyBub3QgYSBQcm9taXNlIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgcmVzb2x2ZSA9ICh2YWx1
ZSkgPT4geworICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IHsKKyAgICAgICAgICAgICAg
ICB3YXNUaHJvd246IGZhbHNlLAorICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0
LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2Vu
ZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChzYXZlUmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CisgICAg
ICAgICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdChyZXR1cm5PYmplY3QucmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFjayhyZXR1cm5PYmplY3QpOwor
ICAgICAgICB9OworICAgICAgICBsZXQgcmVqZWN0ID0gKHJlYXNvbikgPT4geworICAgICAgICAg
ICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUocmVhc29uLCBwcm9taXNlT2JqZWN0
R3JvdXBOYW1lKSk7CisgICAgICAgIH07CisgICAgICAgIHByb21pc2VPYmplY3QudGhlbihyZXNv
bHZlLCByZWplY3QpOworICAgIH0KKworICAgIGV2YWx1YXRlT25DYWxsRnJhbWUodG9wQ2FsbEZy
YW1lLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQorICAg
IHsKKyAgICAgICAgbGV0IGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxG
cmFtZSwgY2FsbEZyYW1lSWQpOworICAgICAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAg
IHJldHVybiAiQ291bGQgbm90IGZpbmQgY2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAg
ICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy5f
ZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgY2Fs
bEZyYW1lLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVz
dWx0KTsKKyAgICB9CisKKyAgICBjYWxsRnVuY3Rpb25PbihvYmplY3RJZCwgZXhwcmVzc2lvbiwg
YXJncywgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0
IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAg
IGxldCBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAg
IGxldCBvYmplY3RHcm91cE5hbWUgPSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW3BhcnNlZE9i
amVjdElkLmlkXTsKKworICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQorICAgICAgICAg
ICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CisKKyAgICAg
ICAgbGV0IHJlc29sdmVkQXJncyA9IFtdOworICAgICAgICBpZiAoYXJncykgeworICAgICAgICAg
ICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOworICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9
IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOworICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgbGV0IGZ1bmMgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigi
ICsgZXhwcmVzc2lvbiArICIpIik7CisgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJm
dW5jdGlvbiIpCisgICAgICAgICAgICAgICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9uIGRvZXMg
bm90IGV2YWx1YXRlIHRvIGEgZnVuY3Rpb24iOworCisgICAgICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCisgICAgICAgICAgICAgICAgcmVzdWx0OiBS
ZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2Jq
ZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCisgICAgICAgICAg
ICB9OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3Jl
YXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGdldEZ1bmN0aW9uRGV0YWlscyhvYmplY3RJZCkKKyAgICB7CisgICAgICAgIGxldCBwYXJz
ZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICBsZXQg
b2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOworICAgICAgICBpZiAo
dHlwZW9mIG9iamVjdCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90
IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQuIjsKKyAgICAgICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25E
ZXRhaWxzKG9iamVjdCk7CisgICAgfQorCisgICAgZnVuY3Rpb25EZXRhaWxzKGZ1bmMpCisgICAg
eworICAgICAgICBsZXQgZGV0YWlscyA9IEluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkRldGFp
bHMoZnVuYyk7CisgICAgICAgIGlmICghZGV0YWlscykKKyAgICAgICAgICAgIHJldHVybiAiQ2Fu
bm90IHJlc29sdmUgZnVuY3Rpb24gZGV0YWlscy4iOworICAgICAgICByZXR1cm4gZGV0YWlsczsK
KyAgICB9CisKKyAgICBnZXRQcmV2aWV3KG9iamVjdElkKQorICAgIHsKKyAgICAgICAgbGV0IHBh
cnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxl
dCBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIHJl
dHVybiBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKG9iamVjdCwgdHJ1
ZSk7CisgICAgfQorCisgICAgZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAg
bGV0IGNvbGxlY3Rpb25Nb2RlID0gb3duUHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxl
Y3Rpb25Nb2RlLk93blByb3BlcnRpZXMgOiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5B
bGxQcm9wZXJ0aWVzOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJ
ZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZp
ZXd9KTsKKyAgICB9CisKKyAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZl
dGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKKyAgICB7CisgICAgICAgIGxl
dCBjb2xsZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3Bl
cnRpZXMgfCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0
aWVzOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVj
dGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2
ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZX0pOworICAgIH0KKworICAgIGdldEludGVybmFsUHJvcGVy
dGllcyhvYmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNl
ZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxldCBv
YmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIGxldCBv
YmplY3RHcm91cE5hbWUgPSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW3BhcnNlZE9iamVjdElk
LmlkXTsKKworICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmIChpc1N5bWJvbChvYmplY3QpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHRoaXMuX2ludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOworICAgICAgICBpZiAoIWRlc2NyaXB0b3JzKQor
ICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVz
Y3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gZGVz
Y3JpcHRvcnNbaV07CisgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiBkZXNjcmlwdG9yKQorICAg
ICAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2Ny
aXB0b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CisgICAgfQorCisgICAgZ2V0
Q29sbGVjdGlvbkVudHJpZXMob2JqZWN0SWQsIG9iamVjdEdyb3VwTmFtZSwgZmV0Y2hTdGFydCwg
ZmV0Y2hDb3VudCkKKyAgICB7CisgICAgICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3Bh
cnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICBsZXQgb2JqZWN0ID0gdGhpcy5fb2JqZWN0
Rm9ySWQocGFyc2VkT2JqZWN0SWQpOworICAgICAgICBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RH
cm91cE5hbWUgfHwgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5pZF07
CisKKyAgICAgICAgaWYgKCFpc0RlZmluZWQob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gIm9iamVjdCIpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbGV0IGVudHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5q
ZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7
CisgICAgICAgIHJldHVybiBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAg
ICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5LnZhbHVlLCBvYmplY3RH
cm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkK
KyAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5Lmtl
eSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZW50
cnk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNP
TikKKyAgICB7CisgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOworCisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBsZXQgY2FsbEFyZ3VtZW50ID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmV2YWx1YXRlKCIoIiArIGNhbGxBcmd1bWVudEpTT04gKyAiKSIpOworICAgICAgICAgICAgbGV0
IHZhbHVlID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJndW1lbnQpOworICAgICAg
ICAgICAgdGhpcy5fc2F2ZVJlc3VsdCh2YWx1ZSk7CisgICAgICAgIH0gY2F0Y2ggeyB9CisKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7CisgICAgfQorCisgICAgd3JhcENh
bGxGcmFtZXMoY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gTUFSSzogW1BDQV0gQXJyYXkKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgZGVwdGggPSAwOworICAgICAgICBk
byB7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOworICAgICAgICAgICAgY2FsbEZyYW1l
ID0gY2FsbEZyYW1lLmNhbGxlcjsKKyAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB3cmFwT2JqZWN0KG9iamVjdCwgZ3JvdXBO
YW1lLCBjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKKyAg
ICB7CisgICAgICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrV3JhcHBlcihvYmplY3QpOworCisgICAgICAgIHJl
dHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJh
dGVQcmV2aWV3KTsKKyAgICB9CisKKyAgICB3cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBncm91
cE5hbWUsIGdlbmVyYXRlUHJldmlldykKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBwYXJzZUpTT04oanNvblN0cmluZyksIGdyb3VwTmFt
ZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdyYXBUYWJsZShjYW5BY2Nl
c3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1bW5zKQorICAgIHsKKyAgICAgICAg
aWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fZmFsbGJhY2tXcmFwcGVyKHRhYmxlKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IGNvbHVtbnMgYXJlIGlnbm9yZWQuIEluc3RlYWQsIHRoZSBmcm9udGVuZCBmaWx0ZXJzIGFs
bAorICAgICAgICAvLyBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFt
ZXMgYW5kIGluIHRoZSBwcm92aWRlZCBvcmRlci4KKyAgICAgICAgLy8gV2UgY291bGQgZmlsdGVy
IGhlcmUgdG8gYXZvaWQgc2VuZGluZyB2ZXJ5IGxhcmdlIHByZXZpZXcgb2JqZWN0cy4KKworICAg
ICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOworICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMg
PT09ICJzdHJpbmciKQorICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKworICAgICAg
ICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsK
KyAgICAgICAgICAgIC8vIE1BUks6IFtQQ0FdIEFycmF5CisgICAgICAgICAgICBjb2x1bW5OYW1l
cyA9IFtdOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tp
XSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUodGFi
bGUsICJjb25zb2xlIiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKKyAgICB9CisKKyAgICBw
cmV2aWV3VmFsdWUodmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNy
ZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZSh2YWx1ZSwgdHJ1ZSk7CisgICAgfQorCisgICAgc2V0
RXZlbnRWYWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2V2ZW50VmFsdWUgPSB2YWx1
ZTsKKyAgICB9CisKKyAgICBjbGVhckV2ZW50VmFsdWUoKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2V2ZW50VmFsdWU7CisgICAgfQorCisgICAgc2V0RXhjZXB0aW9uVmFsdWUodmFsdWUp
CisgICAgeworICAgICAgICB0aGlzLl9leGNlcHRpb25WYWx1ZSA9IHZhbHVlOworICAgIH0KKwor
ICAgIGNsZWFyRXhjZXB0aW9uVmFsdWUoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V4
Y2VwdGlvblZhbHVlOworICAgIH0KKworICAgIGZpbmRPYmplY3RCeUlkKG9iamVjdElkKQorICAg
IHsKKyAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmpl
Y3RJZCk7CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7
CisgICAgfQorCisgICAgcmVsZWFzZU9iamVjdChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIGxl
dCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAg
ICB0aGlzLl9yZWxlYXNlT2JqZWN0KHBhcnNlZE9iamVjdElkLmlkKTsKKyAgICB9CisKKyAgICBy
ZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXBOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG9i
amVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUiKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5f
bGFzdFJlc3VsdDsKKyAgICAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsK
KyAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOworICAgICAgICB9CisKKyAgICAg
ICAgbGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CisgICAg
ICAgIGlmICghZ3JvdXApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRoaXMuX3JlbGVhc2VP
YmplY3QoZ3JvdXBbaV0pOworCisgICAgICAgIGRlbGV0ZSB0aGlzLl9vYmplY3RHcm91cHNbb2Jq
ZWN0R3JvdXBOYW1lXTsKKyAgICB9CisKKyAgICBjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChj
YWxsRnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRMaW5lQVBJKGNhbGxG
cmFtZSB8fCBudWxsKTsKKyAgICB9CisKKyAgICAvLyBDb21tYW5kTGluZUFQSQorCisgICAgaW5z
cGVjdE9iamVjdChvYmplY3QpCisgICAgeworICAgICAgICBpZiAodGhpcy5faW5zcGVjdE9iamVj
dCkKKyAgICAgICAgICAgIHRoaXMuX2luc3BlY3RPYmplY3Qob2JqZWN0KTsKKyAgICB9CisKKyAg
ICAvLyBJbmplY3RlZFNjcmlwdE1vZHVsZSBDKysgQVBJCisKKyAgICBoYXNJbmplY3RlZE1vZHVs
ZShuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CisgICAg
fQorCisgICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0aW9uLCBob3N0KQorICAgIHsK
KyAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOworCisgICAgICAgIGlmICh0eXBl
b2YgbW9kdWxlRnVuY3Rpb24gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyAiRXJy
b3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVuY3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1
bGUiOworICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29t
bWFuZExpbmVBUEl9LCBob3N0KTsKKworICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gdHJ1
ZTsKKyAgICB9CisKKyAgICAvLyBJbmplY3RlZFNjcmlwdE1vZHVsZSBKYXZhU2NyaXB0IEFQSQor
CisgICAgaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpc1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfcGFy
c2VPYmplY3RJZChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dEhvc3QuZXZhbHVhdGUoIigiICsgb2JqZWN0SWQgKyAiKSIpOworICAgIH0KKworICAgIF9vYmpl
Y3RGb3JJZChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pZFRvV3JhcHBl
ZE9iamVjdFtvYmplY3RJZC5pZF07CisgICAgfQorCisgICAgX2JpbmQob2JqZWN0LCBvYmplY3RH
cm91cE5hbWUpCisgICAgeworICAgICAgICBsZXQgaWQgPSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJ
ZCsrOworICAgICAgICBsZXQgb2JqZWN0SWQgPSBgeyJpbmplY3RlZFNjcmlwdElkIjoke2luamVj
dGVkU2NyaXB0SWR9LCJpZCI6JHtpZH19YDsKKworICAgICAgICB0aGlzLl9pZFRvV3JhcHBlZE9i
amVjdFtpZF0gPSBvYmplY3Q7CisKKyAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgeworICAg
ICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07
CisgICAgICAgICAgICBpZiAoIWdyb3VwKSB7CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdy
b3VwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAg
ICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9iamVjdEdyb3VwTmFtZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBvYmplY3RJZDsKKyAgICB9CisKKyAgICBfcmVsZWFz
ZU9iamVjdChpZCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvV3JhcHBlZE9iamVj
dFtpZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXTsKKyAg
ICB9CisKKyAgICBfZmFsbGJhY2tXcmFwcGVyKG9iamVjdCkKKyAgICB7CisgICAgICAgIGxldCBy
ZXN1bHQgPSB7fTsKKyAgICAgICAgcmVzdWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAg
ICBpZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQorICAgICAgICAgICAgcmVzdWx0LnZhbHVl
ID0gb2JqZWN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQuZGVzY3JpcHRpb24g
PSB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iamVjdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTikKKyAgICB7
CisgICAgICAgIGlmICgidmFsdWUiIGluIGNhbGxBcmd1bWVudEpTT04pCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbEFyZ3VtZW50SlNPTi52YWx1ZTsKKworICAgICAgICBsZXQgb2JqZWN0SWQgPSBj
YWxsQXJndW1lbnRKU09OLm9iamVjdElkOworICAgICAgICBpZiAob2JqZWN0SWQpIHsKKyAgICAg
ICAgICAgIGxldCBwYXJzZWRBcmdJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwor
ICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdJZCB8fCBwYXJzZWRBcmdJZFsiaW5qZWN0ZWRTY3Jp
cHRJZCJdICE9PSBpbmplY3RlZFNjcmlwdElkKQorICAgICAgICAgICAgICAgIHRocm93ICJBcmd1
bWVudHMgc2hvdWxkIGJlbG9uZyB0byB0aGUgc2FtZSBKYXZhU2NyaXB0IHdvcmxkIGFzIHRoZSB0
YXJnZXQgb2JqZWN0LiI7CisKKyAgICAgICAgICAgIGxldCByZXNvbHZlZEFyZyA9IHRoaXMuX29i
amVjdEZvcklkKHBhcnNlZEFyZ0lkKTsKKyAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKHJlc29s
dmVkQXJnKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdp
dGggZ2l2ZW4gaWQiOworCisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBfY3JlYXRlVGhy
b3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQorICAgIHsKKyAgICAgICAgbGV0IHJlbW90ZU9i
amVjdCA9IFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIG9iamVjdEdyb3VwKTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVz
Y3JpcHRpb24odmFsdWUpOworICAgICAgICB9IGNhdGNoIHsgfQorICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAorICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVP
YmplY3QKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5j
dGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUs
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBz
YXZlUmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChv
YmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24s
IG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIF93cmFwQW5kU2F2ZUNhbGwob2JqZWN0
R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgZnVuYykK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl93cmFwQ2FsbChvYmplY3RHcm91cCwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CisgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gZnVuYygpOworICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpCisgICAg
ICAgICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX3dyYXBDYWxsKG9iamVjdEdyb3Vw
LCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGZ1bmMpCisgICAg
eworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7
CisKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7CisgICAgICAgICAgICAgICAgd2Fz
VGhyb3duOiBmYWxzZSwKKyAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVh
dGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQor
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2
ZWRSZXN1bHRJbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJ
bmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7CisKKyAgICAgICAgICAgIHJldHVybiByZXR1
cm5PYmplY3Q7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBfZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFs
T25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkKKyAgICB7CisgICAgICAgIGxldCBj
b21tYW5kTGluZUFQSSA9IG51bGw7CisgICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkp
CisgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElP
YmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBudWxsKTsKKyAgICAgICAgcmV0dXJu
IGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwor
ICAgIH0KKworICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQor
ICAgIHsKKyAgICAgICAgbGV0IHBhcnNlZENhbGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmV2YWx1YXRlKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKKyAgICAgICAgbGV0IG9yZGluYWwg
PSBwYXJzZWRDYWxsRnJhbWVJZFsib3JkaW5hbCJdOworICAgICAgICBsZXQgY2FsbEZyYW1lID0g
dG9wQ2FsbEZyYW1lOworICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1l
KQorICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKKyAgICAgICAgcmV0
dXJuIGNhbGxGcmFtZTsKKyAgICB9CisKKyAgICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29s
bGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5h
dGl2ZUdldHRlcnNBc1ZhbHVlc30pCisgICAgeworICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQg
PSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKKyAgICAgICAgbGV0IG9iamVjdCA9IHRo
aXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKKyAgICAgICAgbGV0IG9iamVjdEdyb3Vw
TmFtZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOworCisg
ICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKGlzU3ltYm9sKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgbGV0IHN0YXJ0ID0gZmV0Y2hTdGFydCB8fCAwOworICAgICAgICBpZiAo
c3RhcnQgPCAwKQorICAgICAgICAgICAgc3RhcnQgPSAwOworCisgICAgICAgIGxldCBjb3VudCA9
IGZldGNoQ291bnQgfHwgMDsKKyAgICAgICAgaWYgKGNvdW50IDwgMCkKKyAgICAgICAgICAgIGNv
dW50ID0gMDsKKworICAgICAgICAvLyBBbHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVu
ZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRjaC4KKyAgICAgICAgbGV0IGluY2x1ZGVQcm90
byA9ICFzdGFydDsKKworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgdGhp
cy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVz
Y3JpcHRvcikgPT4geworICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgeworICAgICAgICAgICAg
ICAgIC0tc3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICgiZ2V0IiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLmdldCwgb2JqZWN0R3JvdXBOYW1lKTsKKyAg
ICAgICAgICAgIGlmICgic2V0IiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnNldCwgb2JqZWN0R3Jv
dXBOYW1lKTsKKyAgICAgICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpCisgICAgICAg
ICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRv
ci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAg
ICAgICAgIGlmICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2Jq
ZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7
CisKKyAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMu
bGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cDsKKworICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0g
Y291bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAgfSwge25hdGl2
ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7CisgICAgICAgIHJldHVybiBkZXNjcmlw
dG9yczsKKyAgICB9CisKKyAgICBfaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwg
Y29tcGxldGVEZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgbGV0IGludGVybmFsUHJvcGVydGll
cyA9IEluamVjdGVkU2NyaXB0SG9zdC5nZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0KTsKKyAg
ICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBpbnRlcm5hbFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGxldCBw
cm9wZXJ0eSA9IGludGVybmFsUHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlw
dG9yID0ge25hbWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07CisgICAg
ICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3IuaXNPd24gPSB0cnVlOworICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9y
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CisgICAgfQorCisgICAg
X2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJh
Y2ssIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pCisgICAgeworICAgICAg
ICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0
OworCisgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KKyAgICAg
ICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsKKworICAgICAgICBmdW5jdGlvbiBj
cmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Q
cm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IHtuYW1lLCB2
YWx1ZTogb2JqZWN0W25hbWVdfTsKKyAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZha2VEZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAocG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQorICAgICAgICAg
ICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5uYXRpdmVHZXR0ZXIgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGlmIChpc093blByb3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3Jp
cHRvci5pc093biA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAgICAgICAg
ICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOworICAgICAgICAgICAg
ICAgIC8vIFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25z
IGNyZWF0ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRo
aXMgb2JqZWN0LgorICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0
YW5jZW9mIEBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdp
dGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAgICAg
ICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKKyAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVl
OiBlLCB3YXNUaHJvd246IHRydWV9OworICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5
KQorICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOworICAg
ICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3Jp
cHRvci5zeW1ib2wgPSBzeW1ib2w7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yRGVzY3Jp
cHRvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2Nl
c3NEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmlu
ZGluZ0dldHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQWxsIHByb3BlcnRpZXMuCisg
ICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9u
TW9kZS5BbGxQcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhkZXNj
cmlwdG9yKTsKKworICAgICAgICAgICAgLy8gT3duIHByb3BlcnRpZXMuCisgICAgICAgICAgICBp
ZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9w
ZXJ0aWVzICYmIGlzT3duUHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KGRlc2NyaXB0b3IpOworCisgICAgICAgICAgICAvLyBOYXRpdmUgR2V0dGVyIHByb3BlcnRpZXMu
CisgICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0
aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHBv
c3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5h
bWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLkNvbnRpbnVlOworCisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVy
dHlOYW1lKTsKKworICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9w
ZXJ0eU5hbWUgOiBudWxsOworCisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3Qu
QGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
aWYgKCFkZXNjcmlwdG9yKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlw
dG9yLiBDYW4gd2UgZ2V0IGhlcmU/CisgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZl
cnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlw
dG9yID0gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3Is
IGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzRGVzY3JpcHRv
cihmYWtlRGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
U3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICgh
ZGVzY3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5AaGFzT3duUHJvcGVydHkoImdldCIpICYmICFk
ZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLkBoYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3Jp
cHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgLy8g
bGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmluZWR9
KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCisgICAgICAgICAgICAg
ICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFt
ZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCBpc093blBy
b3BlcnR5LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGRlc2NyaXB0b3IubmFtZSA9IG5hbWU7CisgICAgICAgICAgICBpZiAoaXNPd25Qcm9w
ZXJ0eSkKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBzeW1i
b2w7CisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgaXNP
d25Qcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxz
ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0
LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAm
JiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAgfSBjYXRjaCB7IH0KKworICAgICAgICBmb3Ig
KGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVP
ZihvKSkgeworICAgICAgICAgICAgbGV0IGlzT3duUHJvcGVydHkgPSBvID09PSBvYmplY3Q7Cisg
ICAgICAgICAgICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE4NjE+IFdlYiBJbnNwZWN0b3I6IHNob3cgYXV0
b2NvbXBsZXRlIGVudHJpZXMgZm9yIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGFycmF5cworICAg
ICAgICAgICAgaWYgKGlzQXJyYXlMaWtlICYmIGlzT3duUHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG8ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCEoaSBpbiBvKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgdG9T
dHJpbmcoaSksIGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVh
ayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlO
YW1lcyhvKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFt
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nl
c3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5KTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFr
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0
T3duUHJvcGVydHlTeW1ib2xzKG8pOworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blBy
b3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IElu
amVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQnJl
YWspCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChjb2xsZWN0aW9u
TW9kZSA9PT0gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcykKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmNsdWRlUHJv
dG8pIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5fX3By
b3RvX18pCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHtuYW1lOiAiX19wcm90b19fIiwg
dmFsdWU6IG9iamVjdC5fX3Byb3RvX18sIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRy
dWUsIGlzT3duOiB0cnVlfSk7CisgICAgICAgICAgICB9IGNhdGNoIHsgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50
KQorICAgIHsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKworICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBTZXQucHJvdG90eXBlW1N5
bWJvbC5pdGVyYXRvcl0uCisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIG9iamVjdCkgeworICAg
ICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CisgICAgICAgICAgICAgICAgZmV0Y2hTdGFy
dC0tOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisKKyAgICAgICAgICAgIGlmIChmZXRjaENvdW50
ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisgICAgfQorCisgICAgX2dl
dE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQorICAgIHsKKyAgICAg
ICAgbGV0IGVudHJpZXMgPSBbXTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZh
YmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0u
CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBvYmplY3QpIHsKKyAgICAgICAgICAg
IGlmIChmZXRjaFN0YXJ0ID4gMCkgeworICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZW50
cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisKKyAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYm
IGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisgICAgfQorCisgICAgX2dldFdl
YWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3Qud2Vha01hcEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKKyAg
ICB9CisKKyAgICBfZ2V0V2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC53ZWFrU2V0RW50cmllcyhvYmplY3Qs
IGZldGNoQ291bnQpOworICAgIH0KKworICAgIF9nZXRJdGVyYXRvckVudHJpZXMob2JqZWN0LCBm
ZXRjaENvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pdGVy
YXRvckVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKKyAgICB9CisKKyAgICBfZW50cmllcyhv
YmplY3QsIHN1YnR5cGUsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpCisgICAgeworICAgICAgICBp
ZiAoc3VidHlwZSA9PT0gInNldCIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U2V0RW50
cmllcyhvYmplY3QsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOworICAgICAgICBpZiAoc3VidHlw
ZSA9PT0gIm1hcCIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWFwRW50cmllcyhvYmpl
Y3QsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIndl
YWttYXAiKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFdlYWtNYXBFbnRyaWVzKG9iamVj
dCwgZmV0Y2hDb3VudCk7CisgICAgICAgIGlmIChzdWJ0eXBlID09PSAid2Vha3NldCIpCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0V2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50
KTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIpCisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fZ2V0SXRlcmF0b3JFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7CisKKyAgICAg
ICAgdGhyb3cgInVuZXhwZWN0ZWQgdHlwZSI7CisgICAgfQorCisgICAgX3NhdmVSZXN1bHQocmVz
dWx0KQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKKworICAgICAg
ICBpZiAocmVzdWx0ID09PSBAdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVz
dWx0cy5pbmRleE9mKHJlc3VsdCk7CisgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkg
eworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zYXZlZFJlc3Vs
dEluZGV4ID0gdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXg7CisgICAgICAgIHRoaXMuX3NhdmVk
UmVzdWx0c1t0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCsrXSA9IHJlc3VsdDsKKworICAgICAg
ICAvLyAkbiBpcyBsaW1pdGVkIGZyb20gJDEtJDk5LiAkMCBpcyBzcGVjaWFsLgorICAgICAgICBp
ZiAodGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPj0gMTAwKQorICAgICAgICAgICAgdGhpcy5f
bmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOworICAgIH0KK307CisKK0luamVjdGVkU2NyaXB0LkNv
bGxlY3Rpb25Nb2RlID0geworICAgIE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8g
b3duIHByb3BlcnRpZXMuCisgICAgTmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBu
YXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICBBbGxQ
cm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90
b3R5cGUgY2hhaW4uCit9OworCitJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uID0g
eworICAgIENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBT
dG9wOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIpLAorfQorCit2YXIgaW5qZWN0ZWRTY3Jp
cHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CisKKy8vIC0tLS0tLS0KKworbGV0IFJlbW90ZU9iamVj
dCA9IGNsYXNzIFJlbW90ZU9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKG9iamVjdCwgb2JqZWN0
R3JvdXBOYW1lLCBmb3JjZVZhbHVlVHlwZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcykK
KyAgICB7CisgICAgICAgIHRoaXMudHlwZSA9IHR5cGVvZiBvYmplY3Q7CisKKyAgICAgICAgaWYg
KHRoaXMudHlwZSA9PT0gInVuZGVmaW5lZCIgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFs
bENvbGxlY3Rpb24ob2JqZWN0KSkKKyAgICAgICAgICAgIHRoaXMudHlwZSA9ICJvYmplY3QiOwor
CisgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkgfHwgaXNCaWdJbnQob2JqZWN0
KSB8fCBvYmplY3QgPT09IG51bGwgfHwgZm9yY2VWYWx1ZVR5cGUpIHsKKyAgICAgICAgICAgIC8v
IFdlIGRvbid0IHNlbmQgdW5kZWZpbmVkIHZhbHVlcyBvdmVyIEpTT04uCisgICAgICAgICAgICAv
LyBCaWdJbnQgdmFsdWVzIGFyZSBub3QgSlNPTiBzZXJpYWxpemFibGUuCisgICAgICAgICAgICBp
ZiAodGhpcy50eXBlICE9PSAidW5kZWZpbmVkIiAmJiB0aGlzLnR5cGUgIT09ICJiaWdpbnQiKQor
ICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBvYmplY3Q7CisKKyAgICAgICAgICAgIC8vIE51
bGwgb2JqZWN0IGlzIG9iamVjdCB3aXRoICdudWxsJyBzdWJ0eXBlLgorICAgICAgICAgICAgaWYg
KG9iamVjdCA9PT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnR5cGUgPSAibnVsbCI7
CisKKyAgICAgICAgICAgIC8vIFByb3ZpZGUgdXNlci1mcmllbmRseSBudW1iZXIgdmFsdWVzLgor
ICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gIm51bWJlciIgfHwgdGhpcy50eXBlID09PSAi
YmlnaW50IikKKyAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNj
cmlwdGlvbihvYmplY3QpOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLm9iamVjdElkID0gaW5qZWN0ZWRTY3JpcHQuX2JpbmQob2JqZWN0LCBvYmplY3RH
cm91cE5hbWUpOworCisgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KTsKKyAgICAgICAgaWYgKHN1YnR5cGUpCisgICAgICAgICAgICB0aGlzLnN1YnR5cGUg
PSBzdWJ0eXBlOworCisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmludGVybmFsQ29uc3RydWN0b3JOYW1lKG9iamVjdCk7CisgICAgICAgIHRoaXMuZGVzY3JpcHRp
b24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUob2JqZWN0KTsKKworICAgICAgICBpZiAoc3VidHlw
ZSA9PT0gImFycmF5IikKKyAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHR5cGVvZiBvYmplY3QubGVu
Z3RoID09PSAibnVtYmVyIiA/IG9iamVjdC5sZW5ndGggOiAwOworICAgICAgICBlbHNlIGlmIChz
dWJ0eXBlID09PSAic2V0IiB8fCBzdWJ0eXBlID09PSAibWFwIikKKyAgICAgICAgICAgIHRoaXMu
c2l6ZSA9IG9iamVjdC5zaXplOworICAgICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAid2Vha21h
cCIpCisgICAgICAgICAgICB0aGlzLnNpemUgPSBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha01hcFNp
emUob2JqZWN0KTsKKyAgICAgICAgZWxzZSBpZiAoc3VidHlwZSA9PT0gIndlYWtzZXQiKQorICAg
ICAgICAgICAgdGhpcy5zaXplID0gSW5qZWN0ZWRTY3JpcHRIb3N0LndlYWtTZXRTaXplKG9iamVj
dCk7CisgICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJjbGFzcyIpIHsKKyAgICAgICAgICAg
IHRoaXMuY2xhc3NQcm90b3R5cGUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdC5wcm90b3R5
cGUsIG9iamVjdEdyb3VwTmFtZSk7CisgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IG9iamVj
dC5uYW1lOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdlbmVyYXRlUHJldmlldyAmJiB0aGlz
LnR5cGUgPT09ICJvYmplY3QiKSB7CisgICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5
IikgeworICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmll
dyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhv
YmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFN0YXRpYworCisgICAgc3RhdGljIGNyZWF0ZShvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwg
Zm9yY2VWYWx1ZVR5cGUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCisgICAgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVPYmplY3Qob2JqZWN0LCBv
YmplY3RHcm91cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5h
bWVzKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9u
OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFJlbW90
ZU9iamVjdC5kZXNjcmliZShlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAg
ICAgICAgICAgYWxlcnQoZXgubWVzc2FnZSk7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24g
PSAiPGZhaWxlZCB0byBjb252ZXJ0IGV4Y2VwdGlvbiB0byBzdHJpbmc+IjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KGRlc2NyaXB0aW9uKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUo
dmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCisgICAgeworICAgICAgICBsZXQg
cmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVuZGVmaW5lZCwgZmFsc2Us
IGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOworICAgICAgICBpZiAocmVtb3RlT2JqZWN0
Lm9iamVjdElkKQorICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1v
dGVPYmplY3Qub2JqZWN0SWQpOworICAgICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90
eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkKKyAgICAgICAgICAg
IGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3QocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBl
Lm9iamVjdElkKTsKKyAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdC5wcmV2aWV3IHx8IHJlbW90
ZU9iamVjdC5fZW1wdHlQcmV2aWV3KCk7CisgICAgfQorCisgICAgc3RhdGljIHN1YnR5cGUodmFs
dWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICByZXR1
cm4gIm51bGwiOworCisgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSB8fCBpc0Jp
Z0ludCh2YWx1ZSkgfHwgaXNTeW1ib2wodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0aW9uKHZh
bHVlKSkKKyAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOworCisgICAgICAgIGxldCBwcmVjaXNl
VHlwZSA9IEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKHZhbHVlKTsKKyAgICAgICAgaWYgKHBy
ZWNpc2VUeXBlKQorICAgICAgICAgICAgcmV0dXJuIHByZWNpc2VUeXBlOworCisgICAgICAgIC8v
IEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBp
ZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5s
ZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOworICAgICAgICB9IGNhdGNo
IHsgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHN0YXRpYyBkZXNjcmli
ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmIChpc0JpZ0ludCh2YWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKQor
ICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKKworICAgICAgICBsZXQgc3VidHlw
ZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKKworICAgICAgICBpZiAoc3VidHlwZSA9
PT0gInJlZ2V4cCIpCisgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOworCisgICAg
ICAgIGlmIChzdWJ0eXBlID09PSAiZGF0ZSIpCisgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmco
dmFsdWUpOworCisgICAgICAgIGlmIChzdWJ0eXBlID09PSAiZXJyb3IiKQorICAgICAgICAgICAg
cmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKKworICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5
IikKKyAgICAgICAgICAgIHJldHVybiAiUHJveHkiOworCisgICAgICAgIGlmIChzdWJ0eXBlID09
PSAibm9kZSIpCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3KHZh
bHVlKTsKKworICAgICAgICBsZXQgY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVy
bmFsQ29uc3RydWN0b3JOYW1lKHZhbHVlKTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJh
eSIpCisgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOworCisgICAgICAgIGlmIChzdWJ0eXBl
ID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworCisgICAgICAgIC8vIE5vZGVM
aXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4K
KyAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZS50b1N0cmluZygpOworCisgICAgICAgIC8vIElmIE9iamVjdCwgdHJ5IGZvciBh
IGJldHRlciBuYW1lIGZyb20gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBpZiAoY2xhc3NOYW1l
ID09PSAiT2JqZWN0IikgeworICAgICAgICAgICAgbGV0IGNvbnN0cnVjdG9yTmFtZSA9IHZhbHVl
LmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAgICAgICBpZiAo
Y29uc3RydWN0b3JOYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWU7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xhc3NOYW1lOworICAgIH0KKworICAgIHN0
YXRpYyBub2RlUHJldmlldyhub2RlKQorICAgIHsKKyAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQg
PSBub2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsK
KyAgICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBu
b2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgc3dpdGNoIChub2RlLm5vZGVU
eXBlKSB7CisgICAgICAgIGNhc2UgMTogLy8gTm9kZS5FTEVNRU5UX05PREUKKyAgICAgICAgICAg
IGlmIChub2RlLmlkKQorICAgICAgICAgICAgICAgIHJldHVybiAiPCIgKyBub2RlTmFtZSArICIg
aWQ9XCIiICsgbm9kZS5pZCArICJcIj4iOworICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIGNsYXNz
PVwiIiArIG5vZGUuY2xhc3NMaXN0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrLywgIiAiKSArICJc
Ij4iOworICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUudHlwZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIHR5cGU9XCIiICsgbm9k
ZS50eXBlICsgIlwiPiI7CisgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiPiI7
CisKKyAgICAgICAgY2FzZSAzOiAvLyBOb2RlLlRFWFRfTk9ERQorICAgICAgICAgICAgcmV0dXJu
IG5vZGVOYW1lICsgIiBcIiIgKyBub2RlLm5vZGVWYWx1ZSArICJcIiI7CisKKyAgICAgICAgY2Fz
ZSA4OiAvLyBOb2RlLkNPTU1FTlRfTk9ERQorICAgICAgICAgICAgcmV0dXJuICI8IS0tIiArIG5v
ZGUubm9kZVZhbHVlICsgIi0tPiI7CisKKyAgICAgICAgY2FzZSAxMDogLy8gTm9kZS5ET0NVTUVO
VF9UWVBFX05PREUKKyAgICAgICAgICAgIHJldHVybiAiPCFET0NUWVBFICIgKyBub2RlTmFtZSAr
ICI+IjsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2luaXRpYWxQcmV2aWV3
KCkKKyAgICB7CisgICAgICAgIGxldCBwcmV2aWV3ID0geworICAgICAgICAgICAgdHlwZTogdGhp
cy50eXBlLAorICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9T
dHJpbmcodGhpcy52YWx1ZSksCisgICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKKyAgICAgICAg
fTsKKworICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7CisgICAgICAgICAgICBwcmV2aWV3LnN1
YnR5cGUgPSB0aGlzLnN1YnR5cGU7CisgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAi
bnVsbCIpIHsKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoInNpemUiIGluIHRoaXMpCisgICAgICAgICAgICBwcmV2aWV3
LnNpemUgPSB0aGlzLnNpemU7CisKKyAgICAgICAgcmV0dXJuIHByZXZpZXc7CisgICAgfQorCisg
ICAgX2VtcHR5UHJldmlldygpCisgICAgeworICAgICAgICBsZXQgcHJldmlldyA9IHRoaXMuX2lu
aXRpYWxQcmV2aWV3KCk7CisKKyAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwg
dGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0
aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIp
IHsKKyAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKKyAgICAgICAgICAgICAgICBwcmV2aWV3
LmVudHJpZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcHJldmlldzsKKyAgICB9CisKKyAgICBfZ2Vu
ZXJhdGVQcmV2aWV3KG9iamVjdCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cykKKyAg
ICB7CisgICAgICAgIGxldCBwcmV2aWV3ID0gdGhpcy5faW5pdGlhbFByZXZpZXcoKTsKKyAgICAg
ICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBz
ZWNvbmRMZXZlbEtleXM7CisgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RM
ZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOworCisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzVGhyZXNob2xkID0geworICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NS
ZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAg
ICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBm
aXJzdExldmVsS2V5c0NvdW50KQorICAgICAgICB9OworCisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAvLyBNYXBzLCBTZXRzLCBhbmQgSXRlcmF0b3JzIGhhdmUgZW50cmllcy4KKyAgICAgICAg
ICAgIGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIg
fHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3Nl
dCIgfHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0b3IiKQorICAgICAgICAgICAgICAgIHRoaXMu
X2FwcGVuZEVudHJ5UHJldmlld3Mob2JqZWN0LCBwcmV2aWV3KTsKKworICAgICAgICAgICAgcHJl
dmlldy5wcm9wZXJ0aWVzID0gW107CisKKyAgICAgICAgICAgIC8vIEludGVybmFsIFByb3BlcnRp
ZXMuCisgICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0gaW5qZWN0
ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUpOworICAg
ICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycykgeworICAgICAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQ
cm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtl
eXMsIHtpbnRlcm5hbDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcHJldmlldzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChwcmV2aWV3LmVudHJpZXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHByZXZpZXc7CisKKyAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCisgICAgICAgICAg
ICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVj
dGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmpl
Y3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxL
ZXlzLCBzZWNvbmRMZXZlbEtleXMpOworICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1Zh
bHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVlfSkKKyAgICAgICAgfSBjYXRjaCB7CisgICAg
ICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gcHJldmlldzsKKyAgICB9CisKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVj
dCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtl
eXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IHt9KQorICAgIHsKKyAgICAgICAgLy8g
RXJyb3IgaW4gZGVzY3JpcHRvci4KKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7
CisgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIERvIG5vdCBzaG93ICJfX3Byb3RvX18iIGluIHByZXZpZXcuCisgICAg
ICAgIGxldCBuYW1lID0gZGVzY3JpcHRvci5uYW1lOworICAgICAgICBpZiAobmFtZSA9PT0gIl9f
cHJvdG9fXyIpIHsKKyAgICAgICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2JqZWN0cyBt
YXkgaGF2ZSBpbnRlcmVzdGluZywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hvdy4KKyAg
ICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3Ry
dWN0b3IKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9
PSBAT2JqZWN0CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3Rv
ciAhPT0gQEFycmF5CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1
Y3RvciAhPT0gQFJlZ0V4cCkKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlv
bi5Db250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvciBhcnJheXMsIG9ubHkgYWxs
b3cgaW5kZXhlcy4KKyAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiAhaXNV
SW50MzIobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKKworICAgICAgICAvLyBEbyBub3Qgc2hvdyBub24tZW51bWVy
YWJsZSBub24tb3duIHByb3BlcnRpZXMuCisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBhbGxv
dyBhcnJheSBpbmRleGVzIHRoYXQgbWF5IGJlIG9uIHRoZSBwcm90b3R5cGUuCisgICAgICAgIC8v
IFNwZWNpYWwgY2FzZSB0byBhbGxvdyBuYXRpdmUgZ2V0dGVycyBvbiBub24tUmVnRXhwIG9iamVj
dHMuCisgICAgICAgIGlmICghZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmICFkZXNjcmlwdG9yLmlz
T3duICYmICEodGhpcy5zdWJ0eXBlID09PSAiYXJyYXkiIHx8ICh0aGlzLnN1YnR5cGUgIT09ICJy
ZWdleHAiICYmIGRlc2NyaXB0b3IubmF0aXZlR2V0dGVyKSkpCisgICAgICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKworICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVy
LgorICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBv
biB0aGUgYmFja2VuZC4KKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVs
S2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOworCisgICAgICAgIGZ1bmN0aW9uIGFwcGVuZFBy
ZXZpZXcocHJvcGVydHkpIHsKKyAgICAgICAgICAgIGlmICh0b1N0cmluZyhwcm9wZXJ0eS5uYW1l
ID4+PiAwKSA9PT0gcHJvcGVydHkubmFtZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzVGhy
ZXNob2xkLmluZGV4ZXMtLTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0aWVzVGhyZXNob2xkLnByb3BlcnRpZXMtLTsKKworICAgICAgICAgICAgaWYgKHByb3BlcnRp
ZXNUaHJlc2hvbGQuaW5kZXhlcyA8IDAgfHwgcHJvcGVydGllc1RocmVzaG9sZC5wcm9wZXJ0aWVz
IDwgMCkgeworICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCisgICAgICAgICAgICAgICAgcHJvcGVydHku
aW50ZXJuYWwgPSB0cnVlOworCisgICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChw
cm9wZXJ0eSk7CisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRj
aEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdldHRlci9zZXR0ZXIu
CisgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKKyAgICAgICAgICAgIHBy
ZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3
KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOdWxs
IHZhbHVlLgorICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOworICAgICAgICBp
ZiAodmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFt
ZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOworCisg
ICAgICAgIC8vIElnbm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCisgICAgICAgIGxldCB0
eXBlID0gdHlwZW9mIHZhbHVlOworICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZW51bWVyYWJsZSAm
JiB0eXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CisKKyAgICAgICAgLy8gRml4IHR5cGUgb2Yg
ZG9jdW1lbnQuYWxsLgorICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENv
bGxlY3Rpb24odmFsdWUpKQorICAgICAgICAgICAgdHlwZSA9ICJvYmplY3QiOworCisgICAgICAg
IC8vIFByaW1pdGl2ZS4KKyAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gMTAwOworICAgICAgICBp
ZiAoaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkgfHwgaXNCaWdJbnQodmFsdWUpKSB7CisgICAgICAg
ICAgICBpZiAodHlwZSA9PT0gInN0cmluZyIgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVlLCBt
YXhMZW5ndGgsIHRydWUpOworICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1l
LCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFN5bWJvbC4KKyAgICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkgeworICAg
ICAgICAgICAgbGV0IHN5bWJvbFN0cmluZyA9IHRvU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChzeW1ib2xTdHJpbmcubGVuZ3RoID4gbWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAg
c3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1heExl
bmd0aCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5
cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9iamVj
dC4KKyAgICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OworICAgICAgICBsZXQgc3Vi
dHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKKyAgICAgICAgaWYgKHN1YnR5cGUp
CisgICAgICAgICAgICBwcm9wZXJ0eS5zdWJ0eXBlID0gc3VidHlwZTsKKworICAgICAgICAvLyBT
ZWNvbmQgbGV2ZWwuCisgICAgICAgIGlmICgoc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8IHNl
Y29uZExldmVsS2V5cykgfHwgdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0
KSkgeworICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2Vjb25kTGV2ZWxLZXlzIGZp
bHRlciB0byBjb250aW51ZSB3ZSB3b3VsZCBuZWVkIHNvbWUgcmVmYWN0b3JpbmcuCisgICAgICAg
ICAgICBsZXQgc3ViUHJldmlldyA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9y
VmFsdWUodmFsdWUsIHZhbHVlICE9PSBvYmplY3QsIHNlY29uZExldmVsS2V5cyk7CisgICAgICAg
ICAgICBwcm9wZXJ0eS52YWx1ZVByZXZpZXcgPSBzdWJQcmV2aWV3OworICAgICAgICAgICAgaWYg
KCFzdWJQcmV2aWV3Lmxvc3NsZXNzKQorICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3Mg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzdWJQcmV2aWV3Lm92ZXJmbG93KQorICAgICAgICAg
ICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0aW9uID0gIiI7CisgICAgICAgICAgICBpZiAodHlwZSAhPT0gImZ1
bmN0aW9uIiB8fCBzdWJ0eXBlID09PSAiY2xhc3MiKSB7CisgICAgICAgICAgICAgICAgbGV0IGZ1
bGxEZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikK
KyAgICAgICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gImNsYXNzICIgKyB2YWx1ZS5u
YW1lOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJub2RlIikKKyAgICAg
ICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZ1bGxE
ZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZSh2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb24gPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKGZ1bGxEZXNjcmlwdGlvbiwg
bWF4TGVuZ3RoLCBzdWJ0eXBlID09PSAicmVnZXhwIik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBwcm9wZXJ0eS52YWx1ZSA9IGRlc2NyaXB0aW9uOworICAgICAgICAgICAgcHJldmlldy5s
b3NzbGVzcyA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZp
ZXcocHJvcGVydHkpOworICAgIH0KKworICAgIF9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwg
cHJldmlldykKKyAgICB7CisgICAgICAgIC8vIEZldGNoIDYsIGJ1dCBvbmx5IHJldHVybiA1LCBz
byB3ZSBjYW4gdGVsbCBpZiB3ZSBvdmVyZmxvd2VkLgorICAgICAgICBsZXQgZW50cmllcyA9IGlu
amVjdGVkU2NyaXB0Ll9lbnRyaWVzKG9iamVjdCwgdGhpcy5zdWJ0eXBlLCAwLCA2KTsKKyAgICAg
ICAgaWYgKCFlbnRyaWVzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlbnRy
aWVzLmxlbmd0aCA+IDUpIHsKKyAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAg
ICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKKyAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3Mg
PSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1haW5QcmV2aWV3
KHN1YlByZXZpZXcpIHsKKyAgICAgICAgICAgIGlmICghc3ViUHJldmlldy5sb3NzbGVzcykKKyAg
ICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAg
ICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0Zv
clZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKKyAgICAgICAgICAg
IHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIGlmICgia2V5IiBp
biBlbnRyeSkgeworICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVjdC5jcmVh
dGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkua2V5LCBlbnRyeS5rZXkgIT09IG9iamVjdCk7
CisgICAgICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkua2V5KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKKyAgICB7CisgICAgICAgIGxl
dCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2JqZWN0KTsKKworICAgICAgICBy
ZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEpOwor
ICAgIH0KKworICAgIF9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0LCBrbm93bk9i
amVjdHMsIGRlcHRoKQorICAgIHsKKyAgICAgICAgLy8gRGVlcCBvYmplY3QuCisgICAgICAgIGlm
IChkZXB0aCA+IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gUHJp
bWl0aXZlLgorICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpIHx8IGlzQmlnSW50
KG9iamVjdCkgfHwgaXNTeW1ib2wob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIC8vIE51bGwuCisgICAgICAgIGlmIChvYmplY3QgPT09IG51bGwpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KKyAgICAgICAg
aWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICArK2RlcHRoOworICAgICAgICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisK
KyAgICAgICAgLy8gQXJyYXlzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDUgb3IgbGVzcyBzaW1w
bGUgb2JqZWN0cy4KKyAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShv
YmplY3QpOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gImFycmF5IikgeworICAgICAgICAgICAg
bGV0IGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7CisgICAgICAgICAgICBpZiAobGVuZ3RoID4gNSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZp
ZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0W2ldLCBrbm93bk9iamVjdHMsIGRlcHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3QgYSBiYXNpYyBvYmpl
Y3QuCisgICAgICAgIGlmIChvYmplY3QuX19wcm90b19fICYmIG9iamVjdC5fX3Byb3RvX18uX19w
cm90b19fKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIE9iamVjdHMg
YXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVz
LgorICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0KTsKKyAgICAgICAgaWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
QE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2lz
UHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmpl
Y3RzLCBkZXB0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgX2FiYnJldmlhdGVTdHJpbmcoc3Ry
aW5nLCBtYXhMZW5ndGgsIG1pZGRsZSkKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcubGVuZ3Ro
IDw9IG1heExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICAgICAgaWYg
KG1pZGRsZSkgeworICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7Cisg
ICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOworICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBz
dHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1
MjAyNiI7CisgICAgfQorfTsKKworLy8gLS0tLS0tLQorCitJbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eSA9IGZ1bmN0aW9uKG9yZGluYWwsIGNhbGxGcmFtZSkKK3sKKyAgICB0aGlzLmNhbGxG
cmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmpl
Y3RlZFNjcmlwdElkfX1gOworICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0
aW9uTmFtZTsKKyAgICB0aGlzLmxvY2F0aW9uID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1l
LnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2Fs
bEZyYW1lLmNvbHVtbn07CisgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hh
aW4oY2FsbEZyYW1lKTsKKyAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxG
cmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7CisgICAgdGhpcy5pc1RhaWxEZWxldGVkID0g
Y2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7Cit9OworCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eS5wcm90b3R5cGUgPSB7CisgICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKKyAgICB7
CisgICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CisgICAgICAg
IGxldCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwor
CisgICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgc2NvcGVDaGFpblBy
b3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihz
Y29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOworICAgICAg
ICByZXR1cm4gc2NvcGVDaGFpblByb3h5OworICAgIH0KK307CisKK0luamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKKyAgICAwOiAiZ2xvYmFsIiwgLy8gR0xP
QkFMX1NDT1BFCisgICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAgMjogImNsb3N1cmUi
LCAvLyBDTE9TVVJFX1NDT1BFCisgICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAgICA0
OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAgIDU6ICJnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQor
ICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKK307CisKK0lu
amVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihv
YmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCit7CisgICAgbGV0IHNjb3Bl
ID0geworICAgICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElk
KSwKKyAgICAgICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlw
ZU5hbWVzW3R5cGVdLAorICAgIH07CisKKyAgICBpZiAobmFtZSkKKyAgICAgICAgc2NvcGUubmFt
ZSA9IG5hbWU7CisKKyAgICBpZiAobG9jYXRpb24pCisgICAgICAgIHNjb3BlLmxvY2F0aW9uID0g
bG9jYXRpb247CisKKyAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQorICAgICAgICBzY29w
ZS5lbXB0eSA9IHRydWU7CisKKyAgICByZXR1cm4gc2NvcGU7Cit9CisKKy8vIC0tLS0tLS0KKwor
ZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQoreworICAgIGxldCBzYXZlZFJlc3Vs
dEFsaWFzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LnNhdmVkUmVzdWx0QWxpYXM7CisKKyAgICBsZXQg
ZGVmaW5lR2V0dGVyID0gKGtleSwgdmFsdWUsIHdyYXApID0+IHsKKyAgICAgICAgaWYgKHdyYXAp
IHsKKyAgICAgICAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICB2
YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2luYWxWYWx1ZTsgfTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKKyAgICAg
ICAgaWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQorICAg
ICAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZh
bHVlKTsKKyAgICB9OworCisgICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQp
CisgICAgICAgIGRlZmluZUdldHRlcigiXyIsIGluamVjdGVkU2NyaXB0Ll9sYXN0UmVzdWx0LCB0
cnVlKTsKKworICAgIGlmICgiX2V4Y2VwdGlvblZhbHVlIiBpbiBpbmplY3RlZFNjcmlwdCkKKyAg
ICAgICAgZGVmaW5lR2V0dGVyKCJleGNlcHRpb24iLCBpbmplY3RlZFNjcmlwdC5fZXhjZXB0aW9u
VmFsdWUsIHRydWUpOworCisgICAgaWYgKCJfZXZlbnRWYWx1ZSIgaW4gaW5qZWN0ZWRTY3JpcHQp
CisgICAgICAgIGRlZmluZUdldHRlcigiZXZlbnQiLCBpbmplY3RlZFNjcmlwdC5fZXZlbnRWYWx1
ZSwgdHJ1ZSk7CisKKyAgICAvLyAkMS0kOTkKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluamVj
dGVkU2NyaXB0Ll9zYXZlZFJlc3VsdHMubGVuZ3RoOyArK2kpCisgICAgICAgIGRlZmluZUdldHRl
cihpLCBpbmplY3RlZFNjcmlwdC5fc2F2ZWRSZXN1bHRzW2ldLCB0cnVlKTsKKworICAgIGZvciAo
bGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkuZ2V0dGVycykKKyAgICAgICAgZGVmaW5lR2V0dGVy
KG5hbWUsIENvbW1hbmRMaW5lQVBJLmdldHRlcnNbbmFtZV0pOworCisgICAgZm9yIChsZXQgbmFt
ZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1tuYW1lXTsKK30KKworQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9
OworCitDb21tYW5kTGluZUFQSS5tZXRob2RzID0ge307CisKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmpl
Y3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9OworCitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7IH07CisKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0
ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9OworCitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291
bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y291bnQoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVz
ZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y291bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVi
dWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
ZGVidWcoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJn
dW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50
cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4u
LmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1l
bnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1l
bnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNo
b3QoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5h
cmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFy
Z3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJn
dW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3Vt
ZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsg
fTsKKworZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgIENvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJm
dW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKworcmV0
dXJuIGluamVjdGVkU2NyaXB0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGUxM2NjNzI5ZThi
ZWQ0ODRiNTc1NzM5YTIyMWQwYzU1N2E0MWE3YzYuLjA5NjQ3Y2E2MDZiZWQ1MTZjMTU2Y2M5NzRm
MzQ0YTk0YTc5ZGE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAor
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgog
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5qZWN0ZWRT
Y3JpcHQuY2xlYXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5q
ZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0
cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQg
aWQpCitFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2Us
IHsgfSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bFRoaXMoKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
LSAgICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9u
bWVudC5ldmFsdWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFs
dWF0ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2
YWx1YXRpb25FeGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byog
ZnVuY3Rpb25WYWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5saW5rVGlt
ZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUu
ZXhjZXB0aW9uKCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvblZh
bHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAg
LTE2Niw3ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdz
KTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdC5nZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVkU2NyaXB0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlk
ID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3JlYXRlUmVz
dWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFs
T2JqZWN0LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlw
dChnbG9iYWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAgICAgICBh
dXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NFUlQoZXJyb3Ip
OwpAQCAtMTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAg
aWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4g
Y3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50
b1dURlN0cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJN
aXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIl
c1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDFm
NzQwYzQwNjg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIy
ZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCArNzUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50PiBtX3Nj
cmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVu
dDsKICAgICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWEx
MS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1
cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAg
ICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5l
QW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hl
biBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5h
bWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNj
cmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAg
ICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghaGFzSW5qZWN0
ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVS
ZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJj
ZSgpKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKGluamVj
dE1vZHVsZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwogICAgICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RNb2R1bGVS
ZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24pOwogICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyArOTEsNiBA
QCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+
IDApCiAgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdp
bmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRhdGEo
KSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0
KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXgg
Mjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZh
MDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGlj
OgogICAgIH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3Ry
aW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5q
ZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4
YzQ5MjVmNmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0
ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3RlZFNj
cmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkgewotCi0v
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFy
c2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBu
b24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwotCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0
b3I7Ci0KLWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKLXsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7
Ci19Ci0KLWZ1bmN0aW9uIHRvU3RyaW5nRGVzY3JpcHRpb24ob2JqKQotewotICAgIGlmIChvYmog
PT09IDAgJiYgMSAvIG9iaiA8IDApCi0gICAgICAgIHJldHVybiAiLTAiOwotCi0gICAgaWYgKGlz
QmlnSW50KG9iaikpCi0gICAgICAgIHJldHVybiB0b1N0cmluZyhvYmopICsgIm4iOwotCi0gICAg
cmV0dXJuIHRvU3RyaW5nKG9iaik7Ci19Ci0KLWZ1bmN0aW9uIGlzVUludDMyKG9iaikKLXsKLSAg
ICBpZiAodHlwZW9mIG9iaiA9PT0gIm51bWJlciIpCi0gICAgICAgIHJldHVybiBvYmogPj4+IDAg
PT09IG9iaiAmJiAob2JqID4gMCB8fCAxIC8gb2JqID4gMCk7Ci0gICAgcmV0dXJuICIiICsgKG9i
aiA+Pj4gMCkgPT09IG9iajsKLX0KLQotZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpCi17Ci0gICAg
cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gInN5bWJvbCI7Ci19Ci0KLWZ1bmN0aW9uIGlzQmlnSW50
KHZhbHVlKQotewotICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICJiaWdpbnQiOwotfQotCi1m
dW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9iamVjdCkKLXsKLSAgICBmb3IgKGxldCBrZXkgaW4gb2Jq
ZWN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0
aW9uIGlzRGVmaW5lZCh2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1ZSB8fCBJbmplY3RlZFNj
cmlwdEhvc3QuaXNIVE1MQWxsQ29sbGVjdGlvbih2YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGlzUHJp
bWl0aXZlVmFsdWUodmFsdWUpCi17Ci0gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKLSAgICBj
YXNlICJib29sZWFuIjoKLSAgICBjYXNlICJudW1iZXIiOgotICAgIGNhc2UgInN0cmluZyI6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgInVuZGVmaW5lZCI6Ci0gICAgICAgIHJldHVy
biAhSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24odmFsdWUpOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLS8vIC0tLS0tLS0KLQot
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKLXsKLSAgICBjb25zdHJ1
Y3RvcigpCi0gICAgewotICAgICAgICB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAg
ICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmpl
Y3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAg
ICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKLSAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5k
ZXggPSAxOwotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBbXTsKLSAgICB9Ci0KLSAgICAv
LyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCi0KLSAgICBleGVjdXRlKGZ1bmN0aW9uU3RyaW5nLCBv
YmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGFyZ3MpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
d3JhcEFuZFNhdmVDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZp
ZXcsIHNhdmVSZXN1bHQsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZy
YW1lID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9z
dCwgZnVuY3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVB
UEkpLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGV2
YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
dmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxP
bkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQpOwotICAgIH0KLQotICAgIGF3YWl0UHJvbWlzZShwcm9taXNl
T2JqZWN0SWQsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgY2Fs
bGJhY2spCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkUHJvbWlzZU9iamVjdElkID0gdGhpcy5f
cGFyc2VPYmplY3RJZChwcm9taXNlT2JqZWN0SWQpOwotICAgICAgICBsZXQgcHJvbWlzZU9iamVj
dCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZFByb21pc2VPYmplY3RJZCk7Ci0gICAgICAgIGxl
dCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJz
ZWRQcm9taXNlT2JqZWN0SWQuaWRdOwotCi0gICAgICAgIGlmICghaXNEZWZpbmVkKHByb21pc2VP
YmplY3QpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdp
dGggZ2l2ZW4gaWQiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlKSkgewotICAgICAgICAgICAg
Y2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVl
KSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAg
IHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3Qu
Y3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5l
cmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKHNhdmVSZXN1
bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9zYXZlUmVzdWx0KHJldHVybk9iamVjdC5yZXN1bHQpOwotICAgICAg
ICAgICAgICAgIGlmICh0aGlzLl9zYXZlZFJlc3VsdEluZGV4KQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrKHJldHVybk9iamVjdCk7Ci0g
ICAgICAgIH07Ci0gICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RH
cm91cE5hbWUpKTsKLSAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29s
dmUsIHJlamVjdCk7Ci0gICAgfQotCi0gICAgZXZhbHVhdGVPbkNhbGxGcmFtZSh0b3BDYWxsRnJh
bWUsIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCi0gICAg
ewotICAgICAgICBsZXQgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZy
YW1lLCBjYWxsRnJhbWVJZCk7Ci0gICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAg
cmV0dXJuICJDb3VsZCBub3QgZmluZCBjYWxsIGZyYW1lIHdpdGggZ2l2ZW4gaWQiOwotICAgICAg
ICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
dmFsdWF0ZUFuZFdyYXAoY2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBjYWxs
RnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1
bHQpOwotICAgIH0KLQotICAgIGNhbGxGdW5jdGlvbk9uKG9iamVjdElkLCBleHByZXNzaW9uLCBh
cmdzLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgewotICAgICAgICBsZXQg
cGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAg
bGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAg
bGV0IG9iamVjdEdyb3VwTmFtZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2Jq
ZWN0SWQuaWRdOwotCi0gICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAg
ICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKLQotICAgICAg
ICBsZXQgcmVzb2x2ZWRBcmdzID0gW107Ci0gICAgICAgIGlmIChhcmdzKSB7Ci0gICAgICAgICAg
ICBsZXQgY2FsbEFyZ3MgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7Ci0gICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0g
dGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJnc1tpXSk7Ci0gICAgICAgICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBsZXQgZnVuYyA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIg
KyBleHByZXNzaW9uICsgIikiKTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1
bmN0aW9uIikKLSAgICAgICAgICAgICAgICByZXR1cm4gIkdpdmVuIGV4cHJlc3Npb24gZG9lcyBu
b3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlvbiI7Ci0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJl
bW90ZU9iamVjdC5jcmVhdGUoZnVuYy5hcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVj
dEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAg
fTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0
ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBnZXRGdW5jdGlvbkRldGFpbHMob2JqZWN0SWQpCi0gICAgewotICAgICAgICBsZXQgcGFyc2Vk
T2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9i
amVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgaWYgKHR5
cGVvZiBvYmplY3QgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICByZXR1cm4gIkNhbm5vdCBy
ZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7Ci0gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uRGV0
YWlscyhvYmplY3QpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uRGV0YWlscyhmdW5jKQotICAgIHsK
LSAgICAgICAgbGV0IGRldGFpbHMgPSBJbmplY3RlZFNjcmlwdEhvc3QuZnVuY3Rpb25EZXRhaWxz
KGZ1bmMpOwotICAgICAgICBpZiAoIWRldGFpbHMpCi0gICAgICAgICAgICByZXR1cm4gIkNhbm5v
dCByZXNvbHZlIGZ1bmN0aW9uIGRldGFpbHMuIjsKLSAgICAgICAgcmV0dXJuIGRldGFpbHM7Ci0g
ICAgfQotCi0gICAgZ2V0UHJldmlldyhvYmplY3RJZCkKLSAgICB7Ci0gICAgICAgIGxldCBwYXJz
ZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwotICAgICAgICBsZXQg
b2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOwotICAgICAgICByZXR1
cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZShvYmplY3QsIHRydWUp
OwotICAgIH0KLQotICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZl
dGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGxl
dCBjb2xsZWN0aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0
aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxs
UHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQs
IGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3
fSk7Ci0gICAgfQotCi0gICAgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKG9iamVjdElkLCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgewotICAgICAgICBsZXQg
Y29sbGVjdGlvbk1vZGUgPSBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0
aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuTmF0aXZlR2V0dGVyUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3LCBuYXRpdmVH
ZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsKLSAgICB9Ci0KLSAgICBnZXRJbnRlcm5hbFByb3BlcnRp
ZXMob2JqZWN0SWQsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGxldCBwYXJzZWRP
YmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwotICAgICAgICBsZXQgb2Jq
ZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOwotICAgICAgICBsZXQgb2Jq
ZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5p
ZF07Ci0KLSAgICAgICAgaWYgKCFpc0RlZmluZWQob2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAoaXNTeW1ib2wob2JqZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSB0aGlzLl9pbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsKLSAgICAgICAgaWYgKCFkZXNjcmlwdG9ycykKLSAg
ICAgICAgICAgIHJldHVybiBbXTsKLQotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc2Ny
aXB0b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IGRlc2Ny
aXB0b3JzW2ldOwotICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikKLSAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlw
dG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwotICAgIH0KLQotICAgIGdldENv
bGxlY3Rpb25FbnRyaWVzKG9iamVjdElkLCBvYmplY3RHcm91cE5hbWUsIGZldGNoU3RhcnQsIGZl
dGNoQ291bnQpCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJz
ZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZv
cklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgb2JqZWN0R3JvdXBOYW1lID0gb2JqZWN0R3Jv
dXBOYW1lIHx8IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwot
Ci0gICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgIT09ICJvYmplY3QiKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGxldCBlbnRyaWVzID0gdGhpcy5fZW50cmllcyhvYmplY3QsIEluamVj
dGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCksIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwot
ICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAg
IGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS52YWx1ZSwgb2JqZWN0R3Jv
dXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpCi0g
ICAgICAgICAgICAgICAgZW50cnkua2V5ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS5rZXks
IG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5
OwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04p
Ci0gICAgewotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKLQotICAgICAgICB0
cnkgewotICAgICAgICAgICAgbGV0IGNhbGxBcmd1bWVudCA9IEluamVjdGVkU2NyaXB0SG9zdC5l
dmFsdWF0ZSgiKCIgKyBjYWxsQXJndW1lbnRKU09OICsgIikiKTsKLSAgICAgICAgICAgIGxldCB2
YWx1ZSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3VtZW50KTsKLSAgICAgICAg
ICAgIHRoaXMuX3NhdmVSZXN1bHQodmFsdWUpOwotICAgICAgICB9IGNhdGNoIHsgfQotCi0gICAg
ICAgIHJldHVybiB0aGlzLl9zYXZlZFJlc3VsdEluZGV4OwotICAgIH0KLQotICAgIHdyYXBDYWxs
RnJhbWVzKGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICAgICAg
bGV0IGRlcHRoID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3
IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKLSAgICAgICAgfSB3aGlsZSAo
Y2FsbEZyYW1lKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB3cmFwT2Jq
ZWN0KG9iamVjdCwgZ3JvdXBOYW1lLCBjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdl
bmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkR2xv
YmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrV3JhcHBlcihvYmpl
Y3QpOwotCi0gICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBO
YW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICB9Ci0KLSAgICB3cmFwSlNPTlN0cmlu
Zyhqc29uU3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNv
blN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICAgICAgfSBj
YXRjaCB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHdyYXBUYWJsZShjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1bW5z
KQotICAgIHsKLSAgICAgICAgaWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tXcmFwcGVyKHRhYmxlKTsKLQotICAgICAg
ICAvLyBGSVhNRTogQ3VycmVudGx5IGNvbHVtbnMgYXJlIGlnbm9yZWQuIEluc3RlYWQsIHRoZSBm
cm9udGVuZCBmaWx0ZXJzIGFsbAotICAgICAgICAvLyBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBw
cm92aWRlZCBjb2x1bW4gbmFtZXMgYW5kIGluIHRoZSBwcm92aWRlZCBvcmRlci4KLSAgICAgICAg
Ly8gV2UgY291bGQgZmlsdGVyIGhlcmUgdG8gYXZvaWQgc2VuZGluZyB2ZXJ5IGxhcmdlIHByZXZp
ZXcgb2JqZWN0cy4KLQotICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOwotICAgICAgICBp
ZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtj
b2x1bW5zXTsKLQotICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1u
cykgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gW107Ci0gICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICAgICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBm
YWxzZSwgdHJ1ZSwgY29sdW1uTmFtZXMpOwotICAgIH0KLQotICAgIHByZXZpZXdWYWx1ZSh2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmll
d0ZvclZhbHVlKHZhbHVlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBzZXRFdmVudFZhbHVlKHZhbHVl
KQotICAgIHsKLSAgICAgICAgdGhpcy5fZXZlbnRWYWx1ZSA9IHZhbHVlOwotICAgIH0KLQotICAg
IGNsZWFyRXZlbnRWYWx1ZSgpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZXZlbnRWYWx1
ZTsKLSAgICB9Ci0KLSAgICBzZXRFeGNlcHRpb25WYWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX2V4Y2VwdGlvblZhbHVlID0gdmFsdWU7Ci0gICAgfQotCi0gICAgY2xlYXJFeGNlcHRp
b25WYWx1ZSgpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZXhjZXB0aW9uVmFsdWU7Ci0g
ICAgfQotCi0gICAgZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICBsZXQg
cGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICB9Ci0KLSAgICBy
ZWxlYXNlT2JqZWN0KG9iamVjdElkKQotICAgIHsKLSAgICAgICAgbGV0IHBhcnNlZE9iamVjdElk
ID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7Ci0gICAgICAgIHRoaXMuX3JlbGVhc2VP
YmplY3QocGFyc2VkT2JqZWN0SWQuaWQpOwotICAgIH0KLQotICAgIHJlbGVhc2VPYmplY3RHcm91
cChvYmplY3RHcm91cE5hbWUpCi0gICAgewotICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lID09
PSAiY29uc29sZSIpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0OwotICAg
ICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAgICAgICAgdGhp
cy5fc2F2ZWRSZXN1bHRzID0gW107Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgZ3JvdXAgPSB0
aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKLSAgICAgICAgaWYgKCFncm91cCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3Vw
Lmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgdGhpcy5fcmVsZWFzZU9iamVjdChncm91cFtpXSk7
Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwot
ICAgIH0KLQotICAgIGNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KGNhbGxGcmFtZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lIHx8IG51bGwpOwot
ICAgIH0KLQotICAgIC8vIENvbW1hbmRMaW5lQVBJCi0KLSAgICBpbnNwZWN0T2JqZWN0KG9iamVj
dCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9pbnNwZWN0T2JqZWN0KQotICAgICAgICAgICAg
dGhpcy5faW5zcGVjdE9iamVjdChvYmplY3QpOwotICAgIH0KLQotICAgIC8vIEluamVjdGVkU2Ny
aXB0TW9kdWxlIEMrKyBBUEkKLQotICAgIGhhc0luamVjdGVkTW9kdWxlKG5hbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKLSAgICB9Ci0KLSAgICBpbmplY3RN
b2R1bGUobmFtZSwgc291cmNlLCBob3N0KQotICAgIHsKLSAgICAgICAgdGhpcy5fbW9kdWxlc1tu
YW1lXSA9IGZhbHNlOwotCi0gICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2Ny
aXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwotICAgICAgICBpZiAodHlwZW9m
IG1vZHVsZUZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9y
OiBXZWIgSW5zcGVjdG9yOiBhIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxl
IjsKLSAgICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1h
bmRMaW5lQVBJfSwgaG9zdCk7Ci0KLSAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7
Ci0gICAgfQotCi0gICAgLy8gSW5qZWN0ZWRTY3JpcHRNb2R1bGUgSmF2YVNjcmlwdCBBUEkKLQot
ICAgIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gaXNQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3BhcnNl
T2JqZWN0SWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0LmV2YWx1YXRlKCIoIiArIG9iamVjdElkICsgIikiKTsKLSAgICB9Ci0KLSAgICBfb2JqZWN0
Rm9ySWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWRUb1dyYXBwZWRP
YmplY3Rbb2JqZWN0SWQuaWRdOwotICAgIH0KLQotICAgIF9iaW5kKG9iamVjdCwgb2JqZWN0R3Jv
dXBOYW1lKQotICAgIHsKLSAgICAgICAgbGV0IGlkID0gdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQr
KzsKLSAgICAgICAgbGV0IG9iamVjdElkID0gYHsiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3Rl
ZFNjcmlwdElkfSwiaWQiOiR7aWR9fWA7Ci0KLSAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmpl
Y3RbaWRdID0gb2JqZWN0OwotCi0gICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUpIHsKLSAgICAg
ICAgICAgIGxldCBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwot
ICAgICAgICAgICAgaWYgKCFncm91cCkgewotICAgICAgICAgICAgICAgIGdyb3VwID0gW107Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91
cDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2goaWQpOwotICAgICAgICAg
ICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5hbWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gb2JqZWN0SWQ7Ci0gICAgfQotCi0gICAgX3JlbGVhc2VP
YmplY3QoaWQpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5faWRUb1dyYXBwZWRPYmplY3Rb
aWRdOwotICAgICAgICBkZWxldGUgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF07Ci0gICAg
fQotCi0gICAgX2ZhbGxiYWNrV3JhcHBlcihvYmplY3QpCi0gICAgewotICAgICAgICBsZXQgcmVz
dWx0ID0ge307Ci0gICAgICAgIHJlc3VsdC50eXBlID0gdHlwZW9mIG9iamVjdDsKLSAgICAgICAg
aWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKLSAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9
IG9iamVjdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmRlc2NyaXB0aW9uID0g
dG9TdHJpbmdEZXNjcmlwdGlvbihvYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLQotICAgIF9yZXNvbHZlQ2FsbEFyZ3VtZW50KGNhbGxBcmd1bWVudEpTT04pCi0gICAgewot
ICAgICAgICBpZiAoInZhbHVlIiBpbiBjYWxsQXJndW1lbnRKU09OKQotICAgICAgICAgICAgcmV0
dXJuIGNhbGxBcmd1bWVudEpTT04udmFsdWU7Ci0KLSAgICAgICAgbGV0IG9iamVjdElkID0gY2Fs
bEFyZ3VtZW50SlNPTi5vYmplY3RJZDsKLSAgICAgICAgaWYgKG9iamVjdElkKSB7Ci0gICAgICAg
ICAgICBsZXQgcGFyc2VkQXJnSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAg
ICAgICAgICAgIGlmICghcGFyc2VkQXJnSWQgfHwgcGFyc2VkQXJnSWRbImluamVjdGVkU2NyaXB0
SWQiXSAhPT0gaW5qZWN0ZWRTY3JpcHRJZCkKLSAgICAgICAgICAgICAgICB0aHJvdyAiQXJndW1l
bnRzIHNob3VsZCBiZWxvbmcgdG8gdGhlIHNhbWUgSmF2YVNjcmlwdCB3b3JsZCBhcyB0aGUgdGFy
Z2V0IG9iamVjdC4iOwotCi0gICAgICAgICAgICBsZXQgcmVzb2x2ZWRBcmcgPSB0aGlzLl9vYmpl
Y3RGb3JJZChwYXJzZWRBcmdJZCk7Ci0gICAgICAgICAgICBpZiAoIWlzRGVmaW5lZChyZXNvbHZl
ZEFyZykpCi0gICAgICAgICAgICAgICAgdGhyb3cgIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRo
IGdpdmVuIGlkIjsKLQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQXJnOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0KLSAgICBfY3JlYXRlVGhyb3du
VmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQotICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVj
dCA9IFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIG9iamVjdEdyb3VwKTsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3Jp
cHRpb24odmFsdWUpOwotICAgICAgICB9IGNhdGNoIHsgfQotICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmpl
Y3QKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlv
biwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZl
UmVzdWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmpl
Y3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9
PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9i
amVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIF93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3Jv
dXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgZnVuYykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl93cmFwQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlW
YWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7Ci0gICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gZnVuYygpOwotICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpCi0gICAgICAg
ICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdChyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgX3dyYXBDYWxsKG9iamVjdEdyb3VwLCBy
ZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGZ1bmMpCi0gICAgewot
ICAgICAgICB0cnkgewotICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7Ci0K
LSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhy
b3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUo
ZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRS
ZXN1bHRJbmRleCkKLSAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRl
eCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7Ci0KLSAgICAgICAgICAgIHJldHVybiByZXR1cm5P
YmplY3Q7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9j
cmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBfZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25D
YWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkKLSAgICB7Ci0gICAgICAgIGxldCBjb21t
YW5kTGluZUFQSSA9IG51bGw7Ci0gICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCi0g
ICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmpl
Y3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBudWxsKTsKLSAgICAgICAgcmV0dXJuIGV2
YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwotICAg
IH0KLQotICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQotICAg
IHsKLSAgICAgICAgbGV0IHBhcnNlZENhbGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2
YWx1YXRlKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKLSAgICAgICAgbGV0IG9yZGluYWwgPSBw
YXJzZWRDYWxsRnJhbWVJZFsib3JkaW5hbCJdOwotICAgICAgICBsZXQgY2FsbEZyYW1lID0gdG9w
Q2FsbEZyYW1lOwotICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQot
ICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKLSAgICAgICAgcmV0dXJu
IGNhbGxGcmFtZTsKLSAgICB9Ci0KLSAgICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVj
dGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2
ZUdldHRlcnNBc1ZhbHVlc30pCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0
aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMu
X29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdEdyb3VwTmFt
ZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwotCi0gICAg
ICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKGlzU3ltYm9sKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgbGV0IHN0YXJ0ID0gZmV0Y2hTdGFydCB8fCAwOwotICAgICAgICBpZiAoc3Rh
cnQgPCAwKQotICAgICAgICAgICAgc3RhcnQgPSAwOwotCi0gICAgICAgIGxldCBjb3VudCA9IGZl
dGNoQ291bnQgfHwgMDsKLSAgICAgICAgaWYgKGNvdW50IDwgMCkKLSAgICAgICAgICAgIGNvdW50
ID0gMDsKLQotICAgICAgICAvLyBBbHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwg
YnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRjaC4KLSAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9
ICFzdGFydDsKLQotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKLSAgICAgICAgdGhpcy5f
Zm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3Jp
cHRvcikgPT4gewotICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgewotICAgICAgICAgICAgICAg
IC0tc3RhcnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgi
Z2V0IiBpbiBkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gUmVt
b3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLmdldCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAg
ICAgICAgIGlmICgic2V0IiBpbiBkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc2V0ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnNldCwgb2JqZWN0R3JvdXBO
YW1lKTsKLSAgICAgICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpCi0gICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci52
YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICAgICAg
ICAgIGlmICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2JqZWN0
R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7Ci0K
LSAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVu
Z3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsK
LQotICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291
bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdl
dHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7Ci0gICAgICAgIHJldHVybiBkZXNjcmlwdG9y
czsKLSAgICB9Ci0KLSAgICBfaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgY29t
cGxldGVEZXNjcmlwdG9yKQotICAgIHsKLSAgICAgICAgbGV0IGludGVybmFsUHJvcGVydGllcyA9
IEluamVjdGVkU2NyaXB0SG9zdC5nZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0KTsKLSAgICAg
ICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQot
ICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBpbnRlcm5hbFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGxldCBwcm9w
ZXJ0eSA9IGludGVybmFsUHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9y
ID0ge25hbWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07Ci0gICAgICAg
ICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iu
aXNPd24gPSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9yKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7Ci0gICAgfQotCi0gICAgX2Zv
ckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJhY2ss
IHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pCi0gICAgewotICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBTZXQ7Ci0K
LSAgICAgICAgLy8gSGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBu
YW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90b19fIik7Ci0KLSAgICAgICAgZnVuY3Rpb24gY3JlYXRl
RmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVy
dHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgewotICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6
IG9iamVjdFtuYW1lXX07Ci0gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBmYWtlRGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZha2VEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWtl
RGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3IubmF0aXZlR2V0dGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNPd25Qcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iu
aXNPd24gPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAg
ICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJvbDsKLSAgICAgICAgICAgICAgICAv
LyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBjcmVh
dGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9uZyB0aGlzIG9i
amVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2Vv
ZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRp
dmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQotICAgICAgICAgICAgICAg
ICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3
YXNUaHJvd246IHRydWV9OwotICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5KQotICAg
ICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5z
eW1ib2wgPSBzeW1ib2w7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yRGVzY3JpcHRvcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEZXNj
cmlwdG9yKGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dl
dHRlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQWxsIHByb3BlcnRpZXMuCi0gICAgICAg
ICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5B
bGxQcm9wZXJ0aWVzKQotICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhkZXNjcmlwdG9y
KTsKLQotICAgICAgICAgICAgLy8gT3duIHByb3BlcnRpZXMuCi0gICAgICAgICAgICBpZiAoY29s
bGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVz
ICYmIGlzT3duUHJvcGVydHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGRlc2Ny
aXB0b3IpOwotCi0gICAgICAgICAgICAvLyBOYXRpdmUgR2V0dGVyIHByb3BlcnRpZXMuCi0gICAg
ICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9k
ZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxl
TmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KGRlc2NyaXB0b3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFtZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
Q29udGludWU7Ci0KLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7
Ci0KLSAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1l
IDogbnVsbDsKLQotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWRlc2Ny
aXB0b3IpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3
ZSBnZXQgaGVyZT8KLSAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmlj
dGl2ZSBzZXR0aW5ncy4KLSAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVh
dGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9w
ZXJ0eSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNj
cmlwdG9yLCBpc093blByb3BlcnR5KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVz
Y3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9y
LmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5z
ZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ug
c2hvdWxkIGJlIHJlc2lsaWVudDoKLSAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCi0gICAgICAgICAgICAgICAgICAgIGxldCBm
YWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBk
ZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVl
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlc2Ny
aXB0b3IubmFtZSA9IG5hbWU7Ci0gICAgICAgICAgICBpZiAoaXNPd25Qcm9wZXJ0eSkKLSAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzeW1i
b2wpCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7Ci0gICAgICAg
ICAgICByZXR1cm4gcHJvY2Vzc0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVu
Z3RoID4gMDsKLSAgICAgICAgfSBjYXRjaCB7IH0KLQotICAgICAgICBmb3IgKGxldCBvID0gb2Jq
ZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKLSAgICAg
ICAgICAgIGxldCBpc093blByb3BlcnR5ID0gbyA9PT0gb2JqZWN0OwotICAgICAgICAgICAgbGV0
IHNob3VsZEJyZWFrID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMjAxODYxPiBXZWIgSW5zcGVjdG9yOiBzaG93IGF1dG9jb21wbGV0ZSBlbnRy
aWVzIGZvciBub24taW5kZXggcHJvcGVydGllcyBvbiBhcnJheXMKLSAgICAgICAgICAgIGlmIChp
c0FycmF5TGlrZSAmJiBpc093blByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBvLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKGkg
aW4gbykpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHRvU3RyaW5nKGkpLCBpc093
blByb3BlcnR5KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBs
ZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwotICAgICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHBy
b3BlcnR5TmFtZXNbaV0sIGlzT3duUHJvcGVydHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5T
dG9wOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChzaG91bGRCcmVhaykKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKLSAgICAgICAgICAg
ICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhv
KTsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9scy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1By
b3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0
eUZldGNoQWN0aW9uLlN0b3A7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRCcmVhaykK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgPT09IEluamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7Ci0gICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgIGlmIChvYmplY3QuX19wcm90b19fKQotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVlOiBvYmplY3QuX19wcm90
b19fLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBpc093bjogdHJ1ZX0pOwot
ICAgICAgICAgICAgfSBjYXRjaCB7IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIF9nZXRTZXRF
bnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIGxl
dCBlbnRyaWVzID0gW107Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBp
ZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAg
ICAgICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKLSAgICAgICAgICAgIGlmIChmZXRjaFN0
YXJ0ID4gMCkgewotICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZW50cmllcy5wdXNoKHt2
YWx1ZX0pOwotCi0gICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9
PT0gZmV0Y2hDb3VudCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBlbnRyaWVzOwotICAgIH0KLQotICAgIF9nZXRNYXBFbnRyaWVzKG9iamVjdCwg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107
Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVy
cmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBb
a2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDAp
IHsKLSAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07Ci0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7a2V5LCB2YWx1
ZX0pOwotCi0gICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0g
ZmV0Y2hDb3VudCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBlbnRyaWVzOwotICAgIH0KLQotICAgIF9nZXRXZWFrTWFwRW50cmllcyhvYmplY3Qs
IGZldGNoQ291bnQpCi0gICAgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Lndl
YWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7Ci0gICAgfQotCi0gICAgX2dldFdlYWtT
ZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdEhvc3Qud2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKLSAgICB9
Ci0KLSAgICBfZ2V0SXRlcmF0b3JFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QuaXRlcmF0b3JFbnRyaWVzKG9iamVjdCwg
ZmV0Y2hDb3VudCk7Ci0gICAgfQotCi0gICAgX2VudHJpZXMob2JqZWN0LCBzdWJ0eXBlLCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50KQotICAgIHsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJzZXQi
KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0
YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJtYXAiKQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRj
aENvdW50KTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJ3ZWFrbWFwIikKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLl9nZXRXZWFrTWFwRW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpOwotICAg
ICAgICBpZiAoc3VidHlwZSA9PT0gIndlYWtzZXQiKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2dldFdlYWtTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7Ci0gICAgICAgIGlmIChzdWJ0
eXBlID09PSAiaXRlcmF0b3IiKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEl0ZXJhdG9y
RW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpOwotCi0gICAgICAgIHRocm93ICJ1bmV4cGVjdGVk
IHR5cGUiOwotICAgIH0KLQotICAgIF9zYXZlUmVzdWx0KHJlc3VsdCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5k
ZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7
Ci0gICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgdGhpcy5f
c2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5fbmV4dFNh
dmVkUmVzdWx0SW5kZXg7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0c1t0aGlzLl9uZXh0U2F2
ZWRSZXN1bHRJbmRleCsrXSA9IHJlc3VsdDsKLQotICAgICAgICAvLyAkbiBpcyBsaW1pdGVkIGZy
b20gJDEtJDk5LiAkMCBpcyBzcGVjaWFsLgotICAgICAgICBpZiAodGhpcy5fbmV4dFNhdmVkUmVz
dWx0SW5kZXggPj0gMTAwKQotICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXgg
PSAxOwotICAgIH0KLX07Ci0KLUluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAg
IE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAg
TmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRp
ZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAg
ICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OwotCi1J
bmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uID0gewotICAgIENvbnRpbnVlOiBTeW1i
b2woImNvbnRpbnVlIiksCi0gICAgU3RvcDogU3ltYm9sKCJzdG9wIiksCi19Ci0KLXZhciBpbmpl
Y3RlZFNjcmlwdCA9IG5ldyBJbmplY3RlZFNjcmlwdDsKLQotLy8gLS0tLS0tLQotCi1sZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3Iob2JqZWN0
LCBvYmplY3RHcm91cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVt
bk5hbWVzKQotICAgIHsKLSAgICAgICAgdGhpcy50eXBlID0gdHlwZW9mIG9iamVjdDsKLQotICAg
ICAgICBpZiAodGhpcy50eXBlID09PSAidW5kZWZpbmVkIiAmJiBJbmplY3RlZFNjcmlwdEhvc3Qu
aXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpKQotICAgICAgICAgICAgdGhpcy50eXBlID0gIm9i
amVjdCI7Ci0KLSAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBpc0JpZ0lu
dChvYmplY3QpIHx8IG9iamVjdCA9PT0gbnVsbCB8fCBmb3JjZVZhbHVlVHlwZSkgewotICAgICAg
ICAgICAgLy8gV2UgZG9uJ3Qgc2VuZCB1bmRlZmluZWQgdmFsdWVzIG92ZXIgSlNPTi4KLSAgICAg
ICAgICAgIC8vIEJpZ0ludCB2YWx1ZXMgYXJlIG5vdCBKU09OIHNlcmlhbGl6YWJsZS4KLSAgICAg
ICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICJ1bmRlZmluZWQiICYmIHRoaXMudHlwZSAhPT0gImJp
Z2ludCIpCi0gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG9iamVjdDsKLQotICAgICAgICAg
ICAgLy8gTnVsbCBvYmplY3QgaXMgb2JqZWN0IHdpdGggJ251bGwnIHN1YnR5cGUuCi0gICAgICAg
ICAgICBpZiAob2JqZWN0ID09PSBudWxsKQotICAgICAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9
ICJudWxsIjsKLQotICAgICAgICAgICAgLy8gUHJvdmlkZSB1c2VyLWZyaWVuZGx5IG51bWJlciB2
YWx1ZXMuCi0gICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAibnVtYmVyIiB8fCB0aGlzLnR5
cGUgPT09ICJiaWdpbnQiKQotICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0b1N0
cmluZ0Rlc2NyaXB0aW9uKG9iamVjdCk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMub2JqZWN0SWQgPSBpbmplY3RlZFNjcmlwdC5fYmluZChvYmplY3Qs
IG9iamVjdEdyb3VwTmFtZSk7Ci0KLSAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZShvYmplY3QpOwotICAgICAgICBpZiAoc3VidHlwZSkKLSAgICAgICAgICAgIHRoaXMu
c3VidHlwZSA9IHN1YnR5cGU7Ci0KLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBJbmplY3RlZFNj
cmlwdEhvc3QuaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUob2JqZWN0KTsKLSAgICAgICAgdGhpcy5k
ZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZShvYmplY3QpOwotCi0gICAgICAgIGlm
IChzdWJ0eXBlID09PSAiYXJyYXkiKQotICAgICAgICAgICAgdGhpcy5zaXplID0gdHlwZW9mIG9i
amVjdC5sZW5ndGggPT09ICJudW1iZXIiID8gb2JqZWN0Lmxlbmd0aCA6IDA7Ci0gICAgICAgIGVs
c2UgaWYgKHN1YnR5cGUgPT09ICJzZXQiIHx8IHN1YnR5cGUgPT09ICJtYXAiKQotICAgICAgICAg
ICAgdGhpcy5zaXplID0gb2JqZWN0LnNpemU7Ci0gICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09
ICJ3ZWFrbWFwIikKLSAgICAgICAgICAgIHRoaXMuc2l6ZSA9IEluamVjdGVkU2NyaXB0SG9zdC53
ZWFrTWFwU2l6ZShvYmplY3QpOwotICAgICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAid2Vha3Nl
dCIpCi0gICAgICAgICAgICB0aGlzLnNpemUgPSBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha1NldFNp
emUob2JqZWN0KTsKLSAgICAgICAgZWxzZSBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikgewotICAg
ICAgICAgICAgdGhpcy5jbGFzc1Byb3RvdHlwZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0
LnByb3RvdHlwZSwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1l
ID0gb2JqZWN0Lm5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2VuZXJhdGVQcmV2aWV3
ICYmIHRoaXMudHlwZSA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgICAgIGlmIChzdWJ0eXBlID09
PSAicHJveHkiKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJh
dGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkpOwot
ICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQ
cmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyBjcmVhdGUob2JqZWN0LCBvYmplY3RHcm91
cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQotICAg
IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KG9i
amVjdCwgb2JqZWN0R3JvdXBOYW1lLCBmb3JjZVZhbHVlVHlwZSwgZ2VuZXJhdGVQcmV2aWV3LCBj
b2x1bW5OYW1lcyk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGxldCBkZXNj
cmlwdGlvbjsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24g
PSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChleCkgewot
ICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlv
bik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgY3JlYXRlT2JqZWN0UHJldmlld0Zv
clZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQotICAgIHsKLSAgICAg
ICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3QodmFsdWUsIHVuZGVmaW5lZCwg
ZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwotICAgICAgICBpZiAocmVtb3Rl
T2JqZWN0Lm9iamVjdElkKQotICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVj
dChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwotICAgICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNz
UHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkKLSAgICAg
ICAgICAgIGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3QocmVtb3RlT2JqZWN0LmNsYXNzUHJv
dG90eXBlLm9iamVjdElkKTsKLSAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdC5wcmV2aWV3IHx8
IHJlbW90ZU9iamVjdC5fZW1wdHlQcmV2aWV3KCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHN1YnR5
cGUodmFsdWUpCi0gICAgewotICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAg
ICByZXR1cm4gIm51bGwiOwotCi0gICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSB8
fCBpc0JpZ0ludCh2YWx1ZSkgfHwgaXNTeW1ib2wodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0KLSAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0
aW9uKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwotCi0gICAgICAgIGxldCBw
cmVjaXNlVHlwZSA9IEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKHZhbHVlKTsKLSAgICAgICAg
aWYgKHByZWNpc2VUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHByZWNpc2VUeXBlOwotCi0gICAg
ICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCi0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2
YWx1ZS5sZW5ndGgpKQotICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwotICAgICAgICB9
IGNhdGNoIHsgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHN0YXRpYyBk
ZXNjcmliZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIGlmIChpc0JpZ0ludCh2YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICBpZiAoaXNTeW1ib2wodmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKLQotICAgICAgICBsZXQg
c3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKLQotICAgICAgICBpZiAoc3Vi
dHlwZSA9PT0gInJlZ2V4cCIpCi0gICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOwot
Ci0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiZGF0ZSIpCi0gICAgICAgICAgICByZXR1cm4gdG9T
dHJpbmcodmFsdWUpOwotCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiZXJyb3IiKQotICAgICAg
ICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKLQotICAgICAgICBpZiAoc3VidHlwZSA9PT0g
InByb3h5IikKLSAgICAgICAgICAgIHJldHVybiAiUHJveHkiOwotCi0gICAgICAgIGlmIChzdWJ0
eXBlID09PSAibm9kZSIpCi0gICAgICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2
aWV3KHZhbHVlKTsKLQotICAgICAgICBsZXQgY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmludGVybmFsQ29uc3RydWN0b3JOYW1lKHZhbHVlKTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09
ICJhcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwotCi0gICAgICAgIGlmIChz
dWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOwotCi0gICAgICAgIC8v
IE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8g
dGhpcy4KLSAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAg
ICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOwotCi0gICAgICAgIC8vIElmIE9iamVjdCwgdHJ5
IGZvciBhIGJldHRlciBuYW1lIGZyb20gdGhlIGNvbnN0cnVjdG9yLgotICAgICAgICBpZiAoY2xh
c3NOYW1lID09PSAiT2JqZWN0IikgewotICAgICAgICAgICAgbGV0IGNvbnN0cnVjdG9yTmFtZSA9
IHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7Ci0gICAgICAgICAg
ICBpZiAoY29uc3RydWN0b3JOYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
ck5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwotICAgIH0KLQot
ICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQotICAgIHsKLSAgICAgICAgbGV0IGlzWE1MRG9j
dW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVy
c2lvbjsKLSAgICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5h
bWUgOiBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAgICAgc3dpdGNoIChub2Rl
Lm5vZGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgMTogLy8gTm9kZS5FTEVNRU5UX05PREUKLSAgICAg
ICAgICAgIGlmIChub2RlLmlkKQotICAgICAgICAgICAgICAgIHJldHVybiAiPCIgKyBub2RlTmFt
ZSArICIgaWQ9XCIiICsgbm9kZS5pZCArICJcIj4iOwotICAgICAgICAgICAgaWYgKG5vZGUuY2xh
c3NMaXN0Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAi
IGNsYXNzPVwiIiArIG5vZGUuY2xhc3NMaXN0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrLywgIiAi
KSArICJcIj4iOwotICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUu
dHlwZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIHR5cGU9XCIi
ICsgbm9kZS50eXBlICsgIlwiPiI7Ci0gICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUg
KyAiPiI7Ci0KLSAgICAgICAgY2FzZSAzOiAvLyBOb2RlLlRFWFRfTk9ERQotICAgICAgICAgICAg
cmV0dXJuIG5vZGVOYW1lICsgIiBcIiIgKyBub2RlLm5vZGVWYWx1ZSArICJcIiI7Ci0KLSAgICAg
ICAgY2FzZSA4OiAvLyBOb2RlLkNPTU1FTlRfTk9ERQotICAgICAgICAgICAgcmV0dXJuICI8IS0t
IiArIG5vZGUubm9kZVZhbHVlICsgIi0tPiI7Ci0KLSAgICAgICAgY2FzZSAxMDogLy8gTm9kZS5E
T0NVTUVOVF9UWVBFX05PREUKLSAgICAgICAgICAgIHJldHVybiAiPCFET0NUWVBFICIgKyBub2Rl
TmFtZSArICI+IjsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG5vZGVO
YW1lOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2luaXRpYWxQ
cmV2aWV3KCkKLSAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlw
ZTogdGhpcy50eXBlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24g
fHwgdG9TdHJpbmcodGhpcy52YWx1ZSksCi0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAg
ICAgICAgfTsKLQotICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7Ci0gICAgICAgICAgICBwcmV2
aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5cGU7Ci0gICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBl
ICE9PSAibnVsbCIpIHsKLSAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoInNpemUiIGluIHRoaXMpCi0gICAgICAgICAgICBw
cmV2aWV3LnNpemUgPSB0aGlzLnNpemU7Ci0KLSAgICAgICAgcmV0dXJuIHByZXZpZXc7Ci0gICAg
fQotCi0gICAgX2VtcHR5UHJldmlldygpCi0gICAgewotICAgICAgICBsZXQgcHJldmlldyA9IHRo
aXMuX2luaXRpYWxQcmV2aWV3KCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1h
cCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFw
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVy
YXRvciIpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKLSAgICAgICAgICAgICAgICBw
cmV2aWV3LmVudHJpZXMgPSBbXTsKLSAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcHJldmlldzsKLSAgICB9Ci0KLSAg
ICBfZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5
cykKLSAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gdGhpcy5faW5pdGlhbFByZXZpZXcoKTsK
LSAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVs
bCB8fCBzZWNvbmRMZXZlbEtleXM7Ci0gICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0g
Zmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwotCi0gICAgICAgIGxl
dCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAot
ICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4
KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9OwotCi0gICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAvLyBNYXBzLCBTZXRzLCBhbmQgSXRlcmF0b3JzIGhhdmUgZW50cmllcy4KLSAg
ICAgICAgICAgIGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0g
InNldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAi
d2Vha3NldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0b3IiKQotICAgICAgICAgICAgICAg
IHRoaXMuX2FwcGVuZEVudHJ5UHJldmlld3Mob2JqZWN0LCBwcmV2aWV3KTsKLQotICAgICAgICAg
ICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107Ci0KLSAgICAgICAgICAgIC8vIEludGVybmFsIFBy
b3BlcnRpZXMuCi0gICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0g
aW5qZWN0ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUp
OwotICAgICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycykgewotICAgICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3Jz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9h
cHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRM
ZXZlbEtleXMsIHtpbnRlcm5hbDogdHJ1ZX0pOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwcmV2aWV3LmVudHJpZXMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHByZXZpZXc7Ci0KLSAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCi0gICAg
ICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3Qs
IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9y
KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmll
dyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0
TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwotICAgICAgICAgICAgfSwge25hdGl2ZUdldHRl
cnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVlfSkKLSAgICAgICAgfSBjYXRjaCB7
Ci0gICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gcHJldmlldzsKLSAgICB9Ci0KLSAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3
KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RM
ZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IHt9KQotICAgIHsKLSAgICAg
ICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRvci4KLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhy
b3duKSB7Ci0gICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIERvIG5vdCBzaG93ICJfX3Byb3RvX18iIGluIHByZXZpZXcu
Ci0gICAgICAgIGxldCBuYW1lID0gZGVzY3JpcHRvci5uYW1lOwotICAgICAgICBpZiAobmFtZSA9
PT0gIl9fcHJvdG9fXyIpIHsKLSAgICAgICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2Jq
ZWN0cyBtYXkgaGF2ZSBpbnRlcmVzdGluZywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hv
dy4KLSAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUu
Y29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVj
dG9yICE9PSBPYmplY3QKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0
cnVjdG9yICE9PSBBcnJheQotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29u
c3RydWN0b3IgIT09IFJlZ0V4cCkKLSAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFj
dGlvbi5Db250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBhcnJheXMsIG9ubHkg
YWxsb3cgaW5kZXhlcy4KLSAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiAh
aXNVSW50MzIobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVy
dHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLQotICAgICAgICAvLyBEbyBub3Qgc2hvdyBub24tZW51
bWVyYWJsZSBub24tb3duIHByb3BlcnRpZXMuCi0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBh
bGxvdyBhcnJheSBpbmRleGVzIHRoYXQgbWF5IGJlIG9uIHRoZSBwcm90b3R5cGUuCi0gICAgICAg
IC8vIFNwZWNpYWwgY2FzZSB0byBhbGxvdyBuYXRpdmUgZ2V0dGVycyBvbiBub24tUmVnRXhwIG9i
amVjdHMuCi0gICAgICAgIGlmICghZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmICFkZXNjcmlwdG9y
LmlzT3duICYmICEodGhpcy5zdWJ0eXBlID09PSAiYXJyYXkiIHx8ICh0aGlzLnN1YnR5cGUgIT09
ICJyZWdleHAiICYmIGRlc2NyaXB0b3IubmF0aXZlR2V0dGVyKSkpCi0gICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLQotICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmls
dGVyLgotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGlu
ZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExl
dmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVu
ZFByZXZpZXcocHJvcGVydHkpIHsKLSAgICAgICAgICAgIGlmICh0b1N0cmluZyhwcm9wZXJ0eS5u
YW1lID4+PiAwKSA9PT0gcHJvcGVydHkubmFtZSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0aWVz
VGhyZXNob2xkLmluZGV4ZXMtLTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBw
cm9wZXJ0aWVzVGhyZXNob2xkLnByb3BlcnRpZXMtLTsKLQotICAgICAgICAgICAgaWYgKHByb3Bl
cnRpZXNUaHJlc2hvbGQuaW5kZXhlcyA8IDAgfHwgcHJvcGVydGllc1RocmVzaG9sZC5wcm9wZXJ0
aWVzIDwgMCkgewotICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoaW50ZXJuYWwpCi0gICAgICAgICAgICAgICAgcHJvcGVy
dHkuaW50ZXJuYWwgPSB0cnVlOwotCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVz
aChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldHRlci9zZXR0
ZXIuCi0gICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKLSAgICAgICAgICAg
IHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2
aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBO
dWxsIHZhbHVlLgotICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOwotICAgICAg
ICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7
bmFtZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOwot
Ci0gICAgICAgIC8vIElnbm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCi0gICAgICAgIGxl
dCB0eXBlID0gdHlwZW9mIHZhbHVlOwotICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZW51bWVyYWJs
ZSAmJiB0eXBlID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0KLSAgICAgICAgLy8gRml4IHR5cGUg
b2YgZG9jdW1lbnQuYWxsLgotICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFs
bENvbGxlY3Rpb24odmFsdWUpKQotICAgICAgICAgICAgdHlwZSA9ICJvYmplY3QiOwotCi0gICAg
ICAgIC8vIFByaW1pdGl2ZS4KLSAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gMTAwOwotICAgICAg
ICBpZiAoaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkgfHwgaXNCaWdJbnQodmFsdWUpKSB7Ci0gICAg
ICAgICAgICBpZiAodHlwZSA9PT0gInN0cmluZyIgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVl
LCBtYXhMZW5ndGgsIHRydWUpOwotICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtu
YW1lLCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFN5bWJvbC4KLSAgICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkgewot
ICAgICAgICAgICAgbGV0IHN5bWJvbFN0cmluZyA9IHRvU3RyaW5nKHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChzeW1ib2xTdHJpbmcubGVuZ3RoID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1h
eExlbmd0aCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUs
IHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9i
amVjdC4KLSAgICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OwotICAgICAgICBsZXQg
c3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKLSAgICAgICAgaWYgKHN1YnR5
cGUpCi0gICAgICAgICAgICBwcm9wZXJ0eS5zdWJ0eXBlID0gc3VidHlwZTsKLQotICAgICAgICAv
LyBTZWNvbmQgbGV2ZWwuCi0gICAgICAgIGlmICgoc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8
IHNlY29uZExldmVsS2V5cykgfHwgdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2Jq
ZWN0KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2Vjb25kTGV2ZWxLZXlz
IGZpbHRlciB0byBjb250aW51ZSB3ZSB3b3VsZCBuZWVkIHNvbWUgcmVmYWN0b3JpbmcuCi0gICAg
ICAgICAgICBsZXQgc3ViUHJldmlldyA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3
Rm9yVmFsdWUodmFsdWUsIHZhbHVlICE9PSBvYmplY3QsIHNlY29uZExldmVsS2V5cyk7Ci0gICAg
ICAgICAgICBwcm9wZXJ0eS52YWx1ZVByZXZpZXcgPSBzdWJQcmV2aWV3OwotICAgICAgICAgICAg
aWYgKCFzdWJQcmV2aWV3Lmxvc3NsZXNzKQotICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xl
c3MgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChzdWJQcmV2aWV3Lm92ZXJmbG93KQotICAgICAg
ICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gIiI7Ci0gICAgICAgICAgICBpZiAodHlwZSAhPT0g
ImZ1bmN0aW9uIiB8fCBzdWJ0eXBlID09PSAiY2xhc3MiKSB7Ci0gICAgICAgICAgICAgICAgbGV0
IGZ1bGxEZXNjcmlwdGlvbjsKLSAgICAgICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gImNsYXNz
IikKLSAgICAgICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gImNsYXNzICIgKyB2YWx1
ZS5uYW1lOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJub2RlIikKLSAg
ICAgICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2
aWV3KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1
bGxEZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZSh2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKGZ1bGxEZXNjcmlwdGlv
biwgbWF4TGVuZ3RoLCBzdWJ0eXBlID09PSAicmVnZXhwIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IGRlc2NyaXB0aW9uOwotICAgICAgICAgICAgcHJldmll
dy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZFBy
ZXZpZXcocHJvcGVydHkpOwotICAgIH0KLQotICAgIF9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVj
dCwgcHJldmlldykKLSAgICB7Ci0gICAgICAgIC8vIEZldGNoIDYsIGJ1dCBvbmx5IHJldHVybiA1
LCBzbyB3ZSBjYW4gdGVsbCBpZiB3ZSBvdmVyZmxvd2VkLgotICAgICAgICBsZXQgZW50cmllcyA9
IGluamVjdGVkU2NyaXB0Ll9lbnRyaWVzKG9iamVjdCwgdGhpcy5zdWJ0eXBlLCAwLCA2KTsKLSAg
ICAgICAgaWYgKCFlbnRyaWVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChl
bnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7Ci0gICAgICAg
ICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKLSAgICAgICAgICAgIHByZXZpZXcubG9zc2xl
c3MgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1haW5QcmV2
aWV3KHN1YlByZXZpZXcpIHsKLSAgICAgICAgICAgIGlmICghc3ViUHJldmlldy5sb3NzbGVzcykK
LSAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgewot
ICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmll
d0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKLSAgICAgICAg
ICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKLSAgICAgICAgICAgIGlmICgia2V5
IiBpbiBlbnRyeSkgewotICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVjdC5j
cmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkua2V5LCBlbnRyeS5rZXkgIT09IG9iamVj
dCk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkua2V5KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKLSAgICB7Ci0gICAgICAg
IGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9iamVjdCk7Ci0KLSAgICAgICAg
cmV0dXJuIHRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsK
LSAgICB9Ci0KLSAgICBfaXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKG9iamVjdCwga25vd25P
YmplY3RzLCBkZXB0aCkKLSAgICB7Ci0gICAgICAgIC8vIERlZXAgb2JqZWN0LgotICAgICAgICBp
ZiAoZGVwdGggPiAzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIFBy
aW1pdGl2ZS4KLSAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBpc0JpZ0lu
dChvYmplY3QpIHx8IGlzU3ltYm9sKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICAvLyBOdWxsLgotICAgICAgICBpZiAob2JqZWN0ID09PSBudWxsKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAg
IGlmIChrbm93bk9iamVjdHMuaGFzKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOwot
Ci0gICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2lt
cGxlIG9iamVjdHMuCi0gICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAg
IGxldCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOwotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNQcmV2
aWV3YWJsZU9iamVjdEludGVybmFsKG9iamVjdFtpXSwga25vd25PYmplY3RzLCBkZXB0aCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTm90IGEgYmFzaWMgb2Jq
ZWN0LgotICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXyAmJiBvYmplY3QuX19wcm90b19fLl9f
cHJvdG9fXykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAvLyBPYmplY3Rz
IGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGll
cy4KLSAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QpOwotICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93
blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5h
bWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJl
dmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3Rz
LCBkZXB0aCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgX2FiYnJldmlhdGVTdHJpbmcoc3RyaW5n
LCBtYXhMZW5ndGgsIG1pZGRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoIDw9
IG1heExlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAgICAgaWYgKG1p
ZGRsZSkgewotICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7Ci0gICAg
ICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAg
ICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJp
bmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1MjAy
NiI7Ci0gICAgfQotfTsKLQotLy8gLS0tLS0tLQotCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eSA9IGZ1bmN0aW9uKG9yZGluYWwsIGNhbGxGcmFtZSkKLXsKLSAgICB0aGlzLmNhbGxGcmFt
ZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3Rl
ZFNjcmlwdElkfX1gOwotICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9u
TmFtZTsKLSAgICB0aGlzLmxvY2F0aW9uID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1lLnNv
dXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2FsbEZy
YW1lLmNvbHVtbn07Ci0gICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4o
Y2FsbEZyYW1lKTsKLSAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFt
ZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7Ci0gICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2Fs
bEZyYW1lLmlzVGFpbERlbGV0ZWQ7Ci19OwotCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94
eS5wcm90b3R5cGUgPSB7Ci0gICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKLSAgICB7Ci0g
ICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47Ci0gICAgICAgIGxl
dCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwotCi0g
ICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5
W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29w
ZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwotICAgICAgICBy
ZXR1cm4gc2NvcGVDaGFpblByb3h5OwotICAgIH0KLX07Ci0KLUluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFM
X1NDT1BFCi0gICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUiLCAv
LyBDTE9TVVJFX1NDT1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0OiAi
ZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQotICAg
IDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07Ci0KLUluamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmpl
Y3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0g
ewotICAgICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwK
LSAgICAgICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5h
bWVzW3R5cGVdLAotICAgIH07Ci0KLSAgICBpZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9
IG5hbWU7Ci0KLSAgICBpZiAobG9jYXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9j
YXRpb247Ci0KLSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5l
bXB0eSA9IHRydWU7Ci0KLSAgICByZXR1cm4gc2NvcGU7Ci19Ci0KLS8vIC0tLS0tLS0KLQotZnVu
Y3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQotewotICAgIGxldCBzYXZlZFJlc3VsdEFs
aWFzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LnNhdmVkUmVzdWx0QWxpYXM7Ci0KLSAgICBsZXQgZGVm
aW5lR2V0dGVyID0gKGtleSwgdmFsdWUsIHdyYXApID0+IHsKLSAgICAgICAgaWYgKHdyYXApIHsK
LSAgICAgICAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7Ci0gICAgICAgICAgICB2YWx1
ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2luYWxWYWx1ZTsgfTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKLSAgICAgICAg
aWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQotICAgICAg
ICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZhbHVl
KTsKLSAgICB9OwotCi0gICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCi0g
ICAgICAgIGRlZmluZUdldHRlcigiXyIsIGluamVjdGVkU2NyaXB0Ll9sYXN0UmVzdWx0LCB0cnVl
KTsKLQotICAgIGlmICgiX2V4Y2VwdGlvblZhbHVlIiBpbiBpbmplY3RlZFNjcmlwdCkKLSAgICAg
ICAgZGVmaW5lR2V0dGVyKCJleGNlcHRpb24iLCBpbmplY3RlZFNjcmlwdC5fZXhjZXB0aW9uVmFs
dWUsIHRydWUpOwotCi0gICAgaWYgKCJfZXZlbnRWYWx1ZSIgaW4gaW5qZWN0ZWRTY3JpcHQpCi0g
ICAgICAgIGRlZmluZUdldHRlcigiZXZlbnQiLCBpbmplY3RlZFNjcmlwdC5fZXZlbnRWYWx1ZSwg
dHJ1ZSk7Ci0KLSAgICAvLyAkMS0kOTkKLSAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluamVjdGVk
U2NyaXB0Ll9zYXZlZFJlc3VsdHMubGVuZ3RoOyArK2kpCi0gICAgICAgIGRlZmluZUdldHRlcihp
LCBpbmplY3RlZFNjcmlwdC5fc2F2ZWRSZXN1bHRzW2ldLCB0cnVlKTsKLQotICAgIGZvciAobGV0
IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkuZ2V0dGVycykKLSAgICAgICAgZGVmaW5lR2V0dGVyKG5h
bWUsIENvbW1hbmRMaW5lQVBJLmdldHRlcnNbbmFtZV0pOwotCi0gICAgZm9yIChsZXQgbmFtZSBp
biBDb21tYW5kTGluZUFQSS5tZXRob2RzKQotICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFuZExp
bmVBUEkubWV0aG9kc1tuYW1lXTsKLX0KLQotQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9Owot
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzID0ge307Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7
IHJldHVybiBPYmplY3QudmFsdWVzKG9iamVjdCk7IH07Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInF1ZXJ5SW5zdGFuY2VzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5xdWVyeUluc3RhbmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sicXVlcnlPYmplY3RzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5xdWVyeUluc3RhbmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sicXVlcnlIb2xkZXJzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5xdWVyeUhvbGRlcnMoLi4uYXJndW1lbnRzKTsgfTsKLQotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1siaW5zcGVjdCJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBpbmplY3RlZFNjcmlw
dC5pbnNwZWN0T2JqZWN0KG9iamVjdCk7IH07Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFz
c2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5hc3NlcnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFy
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNs
ZWFyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudCgu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJl
c2V0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1Zygu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uYXJndW1lbnRzKTsgfTsK
LUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5k
TGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5hcmd1bWVudHMpOyB9OwotCi1m
b3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCi0gICAgQ29tbWFuZExpbmVB
UEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9u
ICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwotCi1yZXR1cm4gaW5q
ZWN0ZWRTY3JpcHQ7Ci19KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
YTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uNDkxMjAyYzYxODU5MjBk
ZWM1MGI2MjM4M2RjZGM4NDQ2MzQ0N2U3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCkBAIC0yMjIwLDggKzIyMjAsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6
QnVpbHRpbikgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgp
ICE9IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3Nh
Z2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJvcjo6
U3RhY2tPdmVyZmxvdykgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0
ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5l
ICIsIGVycm9yLmxpbmUoKSwgIi4gRHVtcGluZyBidWlsdGluIHNvdXJjZS4uLiIpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpKTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDRmNzdiMDk3YWIxZTIzNzdlNTNhMjI4ZjRkOGY4ZGM5Mjc1ZmFiOTguLjY4YjlmNjJhZTY2
YTE2NjcyNmU0YzUxZWZjNjRjYWJkNDZmYWQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsNyBAQCBGT1Jf
RUFDSF9MQVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04ocGFyc2VKU09OKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGVuYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihkaXNhYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGVucXVldWVKb2IpOwpAQCAtMzYxLDYgKzM2MiwxNSBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFBy
aXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKIH0KIAorSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHBhcnNlSlNPTiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBhdXRvKiBqc29uU3RyaW5nID0gYXNT
dHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFqc29uU3RyaW5nKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIAorICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvblN0cmluZy0+
dmFsdWUoZ2xvYmFsT2JqZWN0KSkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhc3NlcnRDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTA3OCw2ICsxMDg4LDggQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5z
ZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNl
KV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpT
dHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAKICAgICBtX2V2
YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CkBAIC0xNTU1LDYgKzE1NjcsMTEgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBUT0RPOiBJbnN0
ZWFkIG9mIHRoaXMsIGNhbiB3ZSBqdXN0IGxpbmstdGltZSBjb25zdGFudCBKU09OPworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnBhcnNlSlNPTildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcGFyc2VKU09O
KSk7CisgICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVt
b3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJl
bW90ZUZ1bmN0aW9uKSk7CkBAIC0yMTk4LDYgKzIyMTUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Cisv
LyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N0cmluZ0NvbnN0cnVjdG9yKTsKIAog
ICAgIHRoaXNPYmplY3QtPm1fZGVmYXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxNTYwNDY5MWUz
ODZhNmUzYjNiNDNjNDE2MDIyZGY4OTNiNTUzNTkyLi41ZWY1ZWI5Y2EzOWJkODYwZWQxMGY0NmIy
MTUxNjMwZTYwMTE1ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTMxNiw2ICszMTYsNyBAQCBwdWJsaWM6CiAgICAgTGF6eUNsYXNz
U3RydWN0dXJlIG1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8
T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CisvLyAgICBXcml0ZUJhcnJp
ZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1fc3RyaW5nQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJy
aWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJp
ZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4gbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAppbmRleCAyNmFmNjE5ZGNhM2QyNmQ4ZWRjNTdiOWM5NTI2YmFlMDVjOWVmMjZkLi5mNDNhYmI5
MDhmZTc5YTAwMmI3Njk1MWFhNzZlZjg5ODk1Yjk4YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5OSwx
NCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZXRQcm90b3R5cGVPZlByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBl
T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFt
ZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdldE93blByb3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5TmFtZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3lt
Ym9scywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvcktleXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlTmFtZSgpLCBvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCks
IG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKICAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkp
CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmhhc093biwgb2JqZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDkyMDFl
YThjMDQ2MDJiOWE5MGQ1ODYzZjNlMDA0YTg0YTJmYTc3ODIuLjE4MmQ3YTRkNmM4OGNmZTgyNTIx
NGYyZTAyMzMxMTRhMTZiZGE2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsOCBAQCB2b2lkIE9iamVjdFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPl9fZGVmaW5lU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPl9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9f
bG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworCisgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaGFzT3duUHJvcGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RQcm90b0Z1bmNIYXNP
d25Qcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOwogfQogCiBPYmplY3RQcm90b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDA0MGRhY2E1ZmJlNWU5OTUwN2FiZjk1YzQ0YjA3
MjU4MjEzNzU1MmUuLjAxYzJjNDNlYzM4YjBjNWZmMmVhZjgwYTcyZWMwN2RjNDE5OTRiMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI3LDE4ICsyMTI3LDYgQEAgV0VCS0lUX0ZSQU1FV09S
S19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2ViQ29yZVRlc3RT
dXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKLSMgR2Vu
ZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9jb21tYW5kKAot
ICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGluc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5
Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19J
bmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0g
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0g
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Q29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUwLDYgKzIzMzgsNyBAQCBzZXQo
V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHREZWNv
ZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpz
CiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpz
CisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmpzCiAp
CiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMzk3YzZiYjA4YjE2ZDMxZmVmMWEy
OGIyOTc1ZGEyNjE3ZDEzNGY2Zi4uNTNkYmU2MmIwMWMxMTY4YjVjYjk4NmNkZTE4MTk2ODk2MzY1
Zjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tDb25maWd1cmF0
aW9uLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKICQo
UFJPSkVDVF9ESVIpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCi0kKFBST0pFQ1Rf
RElSKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKyQoUFJPSkVDVF9E
SVIpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qcwogJChQUk9KRUNUX0RJUikvaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwKICQoUFJPSkVDVF9E
SVIpL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwKICQoUFJPSkVDVF9ESVIp
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZl
MTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uMGE0OTQzOTVhYTIwZmJlNTFiODkwZWMz
ZGY4MDMzMTE1MzgzZWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5p
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtl
eXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5z
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFu
ZExpbmVBUElNb2R1bGVCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lC
dWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9E
T01DbGllbnRJc29TdWJzcGFjZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
ZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYxZmM2ZmE0MjE2ZTQ2Yy4uOWVkOGU0MGFlZTE1NDJk
MmU0ZjgzNTc5MjU4YzhmYTAyZmU4MDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAgaWZuZXEgKCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwx
KQogLWluY2x1ZGUgJChKU19ET01fSEVBREVSUzouaD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0
b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcwotCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNj
cmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
anNtaW4ucHkgPCAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5qcyA+PiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZV9qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaAotCSQoREVMRVRFKSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMK
LQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwK
QEAgLTIyNTIsNiArMjI0Miw3IEBAIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAk
KFdlYkNvcmUpL2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20v
VGV4dEVuY29kZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5qcyBcCiAjCiAKIEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDVkNTExYjlkZjA0YmU2OWY5YzU1ZjY1MjM1MTNlMTk5MWY3ZDNmMWYuLjk5MDRhMjFhNDQ0MTQ5
NmI0MDcwOTNhN2QyOWJhZjMwMzMyMmQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMCw2ICs5MDAsNyBAQAogCQkyRTMw
MUJFODI3NDU5NDcyMDBDMDU2NEYgLyogQ29tcGlsZWRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0NTEwNzcyMDJDN0UwMTAwNjU3RDMz
IC8qIENvbXBpbGVkU2VsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyRTM3REZEQjEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3REZEODEyREJB
RkI4MDBBNkIyMzMgLyogRE9NVVJMLmggKi87IH07CiAJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi87IH07CisJCTJF
M0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNBRUZGOTI4
MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsK
IAkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkuaCAqLzsgfTsKQEAgLTM1MTUsNyArMzUxNiw2IEBACiAJCUE1NzhGNDNGMURFMEI2MzAw
MDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZCMjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2Vy
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJ
QTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NDBFMjMxODdCOEFD
MjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwotCQlBNTg0RkUyNjE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovOyB9OwogCQlBNTg0RkUyQzE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovOyB9OwogCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNC
MTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CiAJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhv
c3QuaCAqLzsgfTsKQEAgLTgyMDMsNiArODIwMyw4IEBACiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2
QjIzMyAvKiBET01VUkwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMzdFMDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBK
U0RPTVVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVVS
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2
QjIzMyAvKiBKU0RPTVVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRUZGOTI4MDlGMTE5MDAz
NzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIxMTAwMzcx
QTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDA5MCw3ICsxMDA5Miw3IEBACiAJCTUyNzNDQ0FEMjU2NDU3
NkMwMDg1MDAwNyAvKiBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSVmlld0lu
aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkEwQkU2NTI3QzIyN0UwMDA0
NjYxMUUgLyogSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcDsgcGF0aCA9IEpTRmFr
ZVhSSm9pbnRTdGF0ZUluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkEw
QkU2NTI3QzIyN0UwMDA0NjYxMUUgLyogSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUz
IC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3RkQ2
NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMzkzNCw4ICsxMzkzNiw3IEBACiAJCUE1ODFFRDEyMUZCMjg4QzkwMENFRDRF
QyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VydmljZVdvcmtlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlw
dEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUyMzE4N0I4QUMy
MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjcx
ODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExp
bmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA0MjEsNyArMjA0MjIsNiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVj
dG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNTg0
RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLywK
IAkJCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3Bw
ICovLAogCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9z
dC5oICovLAogCQkJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCkBAIC0yMDQ1OCw3ICsyMDQ1OCw3IEBACiAJCQkJ
QTU4NEZFMzMxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5pZGwgKi8sCiAJ
CQkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAq
LywKIAkJCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUu
aCAqLywKLQkJCQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuanMgKi8sCisJCQkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlLmpzICovLAogCQkJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01F
ZGl0b3IuY3BwICovLAogCQkJCTdBQUJBMjU4MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3Iu
aCAqLywKIAkJCQk3QTU0ODgxNjE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmNw
cCAqLywKQEAgLTIzNTc3LDYgKzIzNTc3LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBG
NjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4
QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5z
LmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8s
CisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlQnVp
bHRpbnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8q
IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY3MUJDQUQw
N0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQx
RUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovLApAQCAtMzQw
NTYsNyArMzQwNTgsNyBAQAogCQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5l
ZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0Ix
MCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTJDMTg2
Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlE
RjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RTY2NEZDMUU3
MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25DcnlwdG9VdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5jcHAKaW5kZXggZDc3YzczZDhhZTQ5NTAxNjc1MjgyMjY0ZDBkMzZkNjVj
Y2U3NDJmZi4uNDRjOWFkYWVhY2IyYTI2MjVkZjdjMDg5NjJlNjkxZDhlYmEyNDQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExp
bmVBUElNb2R1bGUuaCIKIAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgi
CiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpA
QCAtNDgsOSArNDcsMTMgQEAgQ29tbWFuZExpbmVBUElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9k
dWxlKCkKIHsKIH0KIAotU3RyaW5nIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25z
dAotewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
X2pzKSk7CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVu
Y3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3Qgewor
ICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihs
ZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRp
bkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1bGUoKS5tX2luamVjdE1vZHVs
ZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBp
bmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9u
LWBKU0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3Qo
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThjMmRlYmRl
ZGFjZjdmYzZiNDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5
N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBD
b21tYW5kTGluZUFQSU1vZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0KEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjQzYWJiNTZhMjU4MGQyYzE5MWQ4MjI0OTliNDMzYmM5MDk2MDA4NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5qcwpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIy
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24gaW5qZWN0TW9k
dWxlKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNj
cmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBD
b21tYW5kTGluZUFQSUhvc3QpCit7CisKK2luamVjdGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0g
ZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApCisgICAg
ICAgIHJldHVybjsKKworICAgIGxldCBvYmplY3RJZCA9IFJlbW90ZU9iamVjdC5jcmVhdGUob2Jq
ZWN0KTsKKyAgICBsZXQgaGludHMgPSB7fTsKKworICAgIHN3aXRjaCAoUmVtb3RlT2JqZWN0LmRl
c2NyaWJlKG9iamVjdCkpIHsKKyAgICBjYXNlICJEYXRhYmFzZSI6CisgICAgICAgIHZhciBkYXRh
YmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LmRhdGFiYXNlSWQob2JqZWN0KTsKKyAgICAgICAg
aWYgKGRhdGFiYXNlSWQpCisgICAgICAgICAgICBoaW50cy5kYXRhYmFzZUlkID0gZGF0YWJhc2VJ
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAiU3RvcmFnZSI6CisgICAgICAgIHZhciBzdG9y
YWdlSWQgPSBDb21tYW5kTGluZUFQSUhvc3Quc3RvcmFnZUlkKG9iamVjdCk7CisgICAgICAgIGlm
IChzdG9yYWdlSWQpCisgICAgICAgICAgICBoaW50cy5kb21TdG9yYWdlSWQgPSBJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc3RvcmFnZUlkICsgIikiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgQ29tbWFuZExpbmVBUElIb3N0Lmluc3BlY3Qob2JqZWN0SWQsIGhpbnRz
KTsKK307CisKK0NvbW1hbmRMaW5lQVBJLmdldHRlcnNbIjAiXSA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdGVkT2JqZWN0KCk7Cit9OworCitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihvYmplY3QpIHsKKyAgICBsZXQg
c3RyaW5nID0gbnVsbDsKKworICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KTsKKyAgICBpZiAoc3VidHlwZSA9PT0gIm5vZGUiKQorICAgICAgICBzdHJpbmcgPSBv
YmplY3Qub3V0ZXJIVE1MOworICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJyZWdleHAiKQorICAg
ICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKKyAgICBlbHNlIGlmIChpbmplY3RlZFNjcmlwdC5p
c1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCisgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0Owor
ICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJzeW1ib2wiKQorICAgICAgICBzdHJpbmcg
PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5nKG9iamVjdCk7CisgICAgZWxzZSBpZiAodHlw
ZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7
CisgICAgZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAg
ICAgfSBjYXRjaCB7CisgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIENvbW1hbmRMaW5lQVBJSG9zdC5jb3B5VGV4dChzdHJpbmcpOworfTsK
KworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9u
KHRhcmdldCkgeworICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuZ2V0RXZlbnRMaXN0ZW5l
cnModGFyZ2V0KTsKK307CisKK2Z1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpIHsK
KyAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMgPSBbIm1vdXNlIiwg
ImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRl
dmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2Fk
IiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJt
aXQiLCAidW5sb2FkIl07CisgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikK
KyAgICAgICAgdHlwZXMgPSBbdHlwZXNdOworCisgICAgbGV0IHJlc3VsdCA9IFtdOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHR5cGVz
W2ldID09PSAibW91c2UiKQorICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsICJjbGljayIs
ICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNl
b3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJrZXkiKQorICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsICJrZXlkb3duIiwg
ImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOworICAgICAgICBlbHNlIGlmICh0eXBl
c1tpXSA9PT0gInRvdWNoIikKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCAidG91Y2hj
YW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAg
ZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKKyAgICAgICAgICAgIEBhcnJheVB1c2go
cmVzdWx0LCAiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNj
cm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgQGFycmF5UHVzaChyZXN1bHQsIHR5cGVzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCit7CisgICAgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUubG9nKGV2ZW50LnR5cGUsIGV2ZW50KTsKK30KKworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykg
eworICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBlcyA9IG5vcm1h
bGl6ZUV2ZW50VHlwZXModHlwZXMpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0s
IGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVz
W2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIH0KK307CisKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInVubW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgeworICAgIGlm
ICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2
ZW50TGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50
VHlwZXModHlwZXMpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kp
CisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwg
ZmFsc2UpOworfTsKKworaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgeworICAgIGZ1bmN0aW9uIGNhblF1ZXJ5U2VsZWN0b3JP
bk5vZGUobm9kZSkgeworICAgICAgICByZXR1cm4gbm9kZSAmJiBJbmplY3RlZFNjcmlwdEhvc3Qu
c3VidHlwZShub2RlKSA9PT0gIm5vZGUiICYmIChub2RlLm5vZGVUeXBlID09PSBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuTm9kZS5FTEVNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0Lk5vZGUuRE9DVU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKTsKKyAgICB9
CisKKyAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwg
c3RhcnQpIHsKKyAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworCisgICAgICAg
IGxldCByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cihzZWxlY3Rvcik7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgICAgIGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0gIiMiKSB7Cisg
ICAgICAgICAgICByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoc2VsZWN0b3IpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAg
ICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oIlRoZSBjb25zb2xlIGZ1
bmN0aW9uICQoKSBoYXMgY2hhbmdlZCBmcm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVl
cnlTZWxlY3RvcihzZWxlY3RvcikuIFlvdSBtaWdodCB0cnkgJChcIiMlc1wiKSIsIHNlbGVjdG9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAgaWYg
KGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0
b3IpKTsKKyAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7
CisgICAgfTsKKworICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlvbih4
cGF0aCwgY29udGV4dCkgeworICAgICAgICBsZXQgZG9jID0gKGNvbnRleHQgJiYgY29udGV4dC5v
d25lckRvY3VtZW50KSB8fCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQ7CisgICAgICAg
IGxldCByZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBudWxsLCBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpOworICAgICAg
ICBzd2l0Y2ggKHJlc3VsdC5yZXN1bHRUeXBlKSB7CisgICAgICAgIGNhc2UgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LlhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFOgorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5udW1iZXJWYWx1ZTsKKyAgICAgICAgY2FzZSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBh
dGhSZXN1bHQuU1RSSU5HX1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnN0cmluZ1Zh
bHVlOworICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJlc3VsdC5CT09M
RUFOX1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGxldCBub2RlcyA9IFtdOworICAgICAgICBsZXQgbm9kZSA9IG51bGw7
CisgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCisgICAgICAgICAg
ICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICByZXR1cm4gbm9kZXM7CisgICAgfTsKK30KKwor
Zm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgIENvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlv
biAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTFlMzUxOWNjYjE3OTYwOTBjMzI3
NGQ1YjBjMzdiMjU5ZDBlM2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRT
Y3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5q
ZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVB
UElIb3N0KSB7Ci0KLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIg
SW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdl
dCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCi0KLWluamVjdGVkU2Ny
aXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPT09IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGxldCBvYmplY3RJZCA9IFJl
bW90ZU9iamVjdC5jcmVhdGUob2JqZWN0KTsKLSAgICBsZXQgaGludHMgPSB7fTsKLQotICAgIHN3
aXRjaCAoUmVtb3RlT2JqZWN0LmRlc2NyaWJlKG9iamVjdCkpIHsKLSAgICBjYXNlICJEYXRhYmFz
ZSI6Ci0gICAgICAgIHZhciBkYXRhYmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LmRhdGFiYXNl
SWQob2JqZWN0KTsKLSAgICAgICAgaWYgKGRhdGFiYXNlSWQpCi0gICAgICAgICAgICBoaW50cy5k
YXRhYmFzZUlkID0gZGF0YWJhc2VJZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAiU3RvcmFn
ZSI6Ci0gICAgICAgIHZhciBzdG9yYWdlSWQgPSBDb21tYW5kTGluZUFQSUhvc3Quc3RvcmFnZUlk
KG9iamVjdCk7Ci0gICAgICAgIGlmIChzdG9yYWdlSWQpCi0gICAgICAgICAgICBoaW50cy5kb21T
dG9yYWdlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc3RvcmFnZUlkICsg
IikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgQ29tbWFuZExpbmVBUElIb3N0Lmlu
c3BlY3Qob2JqZWN0SWQsIGhpbnRzKTsKLX07Ci0KLUNvbW1hbmRMaW5lQVBJLmdldHRlcnNbIjAi
XSA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdGVk
T2JqZWN0KCk7Ci19OwotCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlv
bihvYmplY3QpIHsKLSAgICBsZXQgc3RyaW5nID0gbnVsbDsKLQotICAgIGxldCBzdWJ0eXBlID0g
UmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKLSAgICBpZiAoc3VidHlwZSA9PT0gIm5vZGUi
KQotICAgICAgICBzdHJpbmcgPSBvYmplY3Qub3V0ZXJIVE1MOwotICAgIGVsc2UgaWYgKHN1YnR5
cGUgPT09ICJyZWdleHAiKQotICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKLSAgICBlbHNl
IGlmIChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCi0gICAgICAgIHN0
cmluZyA9ICIiICsgb2JqZWN0OwotICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJzeW1i
b2wiKQotICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5nKG9iamVj
dCk7Ci0gICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAg
c3RyaW5nID0gIiIgKyBvYmplY3Q7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0
LCBudWxsLCAiICAiKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICBzdHJpbmcgPSAi
IiArIG9iamVjdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIENvbW1hbmRMaW5lQVBJSG9zdC5j
b3B5VGV4dChzdHJpbmcpOwotfTsKLQotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRM
aXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdldCkgewotICAgIHJldHVybiBDb21tYW5kTGluZUFQ
SUhvc3QuZ2V0RXZlbnRMaXN0ZW5lcnModGFyZ2V0KTsKLX07Ci0KLWZ1bmN0aW9uIG5vcm1hbGl6
ZUV2ZW50VHlwZXModHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgdHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0Iiwg
ImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJl
cnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2Vh
cmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07Ci0gICAgZWxzZSBpZiAodHlwZW9m
IHR5cGVzID09PSAic3RyaW5nIikKLSAgICAgICAgdHlwZXMgPSBbdHlwZXNdOwotCi0gICAgbGV0
IHJlc3VsdCA9IFtdOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgcmVzdWx0
LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91
c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwotICAgICAgICBl
bHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgia2V5
ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKLSAgICAgICAgZWxzZSBp
ZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hj
YW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKLSAgICAgICAg
ZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNo
KCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwg
InNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXN1bHQucHVzaCh0eXBlc1tpXSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZ1
bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQotewotICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmxvZyhldmVudC50eXBlLCBldmVudCk7Ci19Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
Im1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKLSAgICBpZiAoIW9i
amVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExp
c3RlbmVyKQotICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVz
KHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFs
c2UpOwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQs
IGZhbHNlKTsKLSAgICB9Ci19OwotCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JF
dmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKLSAgICBpZiAoIW9iamVjdCB8fCAh
b2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQot
ICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAgICAgICBvYmpl
Y3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKLX07Ci0K
LWlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0Lk5vZGUpIHsKLSAgICBmdW5jdGlvbiBjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKG5vZGUpIHsK
LSAgICAgICAgcmV0dXJuIG5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUobm9kZSkg
PT09ICJub2RlIiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5v
ZGUuRUxFTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09IGluc3BlY3RlZEdsb2JhbE9iamVj
dC5Ob2RlLkRPQ1VNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0Lk5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7Ci0gICAgfQotCi0gICAgQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7Ci0gICAg
ICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVy
biBzdGFydC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKLQotICAgICAgICBsZXQgcmVzdWx0ID0g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwot
ICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAg
ICBpZiAoc2VsZWN0b3IgJiYgc2VsZWN0b3JbMF0gIT09ICIjIikgewotICAgICAgICAgICAgcmVz
dWx0ID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVj
dG9yKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKCJUaGUgY29uc29sZSBmdW5jdGlvbiAkKCkgaGFz
IGNoYW5nZWQgZnJvbSAkPWdldEVsZW1lbnRCeUlkKGlkKSB0byAkPXF1ZXJ5U2VsZWN0b3Ioc2Vs
ZWN0b3IpLiBZb3UgbWlnaHQgdHJ5ICQoXCIjJXNcIikiLCBzZWxlY3Rvcik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH07Ci0KLSAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkJCJd
ID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7Ci0gICAgICAgIGlmIChjYW5RdWVyeVNlbGVj
dG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7Ci0gICAgICAg
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAgIH07Ci0KLSAg
ICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQp
IHsKLSAgICAgICAgbGV0IGRvYyA9IChjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCkg
fHwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50OwotICAgICAgICBsZXQgcmVzdWx0ID0g
ZG9jLmV2YWx1YXRlKHhwYXRoLCBjb250ZXh0IHx8IGRvYywgbnVsbCwgaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LlhQYXRoUmVzdWx0LkFOWV9UWVBFLCBudWxsKTsKLSAgICAgICAgc3dpdGNoIChyZXN1
bHQucmVzdWx0VHlwZSkgewotICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0
aFJlc3VsdC5OVU1CRVJfVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVyVmFs
dWU7Ci0gICAgICAgIGNhc2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVzdWx0LlNUUklO
R19UWVBFOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1ZTsKLSAgICAgICAg
Y2FzZSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFOgotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5ib29sZWFuVmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBsZXQgbm9kZXMgPSBbXTsKLSAgICAgICAgbGV0IG5vZGUgPSBudWxsOwotICAgICAgICB3aGls
ZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVzaChu
b2RlKTsKLSAgICAgICAgcmV0dXJuIG5vZGVzOwotICAgIH07Ci19Ci0KLWZvciAobGV0IG5hbWUg
aW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKLSAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25h
bWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAi
KCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07Ci0KLX0pCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTNiZDRlNjU2MDVm
OGFmODQxMGI3MmM2ODczNDVhYjZlMjUyNWFhMS4uZmYzMjViMWY1ZTgwMWE0ZWI2ZmU0OWFiOTcz
YWQzN2ZhNzc0MWIyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTA0LTIwICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJz
ZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5v
bi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcGFnZS9zZXRTY3JlZW5TaXplT3ZlcnJpZGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1
bW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTA0LTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIHNjcm9sbEludG9WaWV3
IGZhaWxzIHdpdGggc2Nyb2xsLXNuYXAtdHlwZSBvbiA6cm9vdApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAppbmRl
eCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTViNzQ4NGI4
Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5
LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZp
bmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIEF0
dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBFdmFsIFNj
cmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBT
Y3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2Ug
U2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMu
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJz
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRt
bAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5kNjc3YmEy
ZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTksMTEgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykgc3RhcnRp
bmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBsaXN0ZW5l
ciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBzb3VyY2Ug
YWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3JpcHRzIElu
amVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAKICAg
ICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZVNj
cmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0gZmFsc2U7
Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsKLSAgICBs
ZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3Vu
ZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxTY3Jp
cHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQog
CiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0KHBhcmFt
cykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3Rh
cnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAgICByZXR1
cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5OyAvLyBF
c3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNFdmFsU2Ny
aXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0gImV2YWwu
anMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQo
cGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dpdGgoIl9f
SW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMp
IHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVzdENhc2Uo
ewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRpYWxTY3Jp
cHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2OCw2IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxpbmVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlzQ29tbWFu
ZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZv
dW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0luamVjdGVk
U2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJVTkVYUEVD
VEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05Myw4ICs3
OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBl
Y3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIFNj
cmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RU
aGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3VsZCBmaW5k
IElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAgICAgICAg
ICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3VsZCBmaW5k
IEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0
KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3Ig
SW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29s
VGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJTaG91bGQg
ZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAgICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3JpcHQsICJT
aG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2Rl
bC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAppbmRleCBkNDQyMTdkMzYy
ZWE0ZjlhMjUyNjRhMGQ4YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJkNTAzN2U1MmFlOTBjMjMzZjIy
YjUzOTM5NmVlMWY4YWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwv
cmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0zMSw3ICszMSw3
IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgW10ueC54OyB9IGNhdGNoIChlKSB7
IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwK
ICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNv
ZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENh
bGxAIgorICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZl
IGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtNzAsNyAr
NzAsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGV2YWwoImlmKCkiKTsgfSBj
YXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6
ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjog
ImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImV2
YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUXigKZ0aXZl
IGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9
CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC0xMDQsNyArMTA0LDcgQEAgRVhQUkVT
U0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikuc3Bs
aXRUZXh0KDEwMCk7IH0gY2EKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAg
ICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtu
YXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25h
dGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRA
W25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT4oCmdGl2ZSBjb2RlXVxu
QFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfSwKICAgICAg
IHsKICAgICAgICAgIl9uYW1lIjogImNvZGUiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3BhZ2Uvc2V0U2NyZWVuU2l6ZU92ZXJyaWRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wYWdlL3NldFNjcmVlblNpemVPdmVycmlkZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmI1ODFkNzVmM2M4MTg4NDRiM2NjMmZlZmI3MjI2YTMyZDdhMmU5YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL3NldFNjcmVlblNpemVPdmVy
cmlkZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCis9PSBSdW5uaW5nIHRlc3Qgc3Vp
dGU6IFBhZ2Uuc2V0U2NyZWVuU2l6ZU92ZXJyaWRlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU2Ny
ZWVuU2l6ZU92ZXJyaWRlT3ZlcnJpZGUKK1BBU1M6IEJvZHkgc2hvdWxkIGJlIHdoaXRlLgorT3Zl
cnJpZGluZyBzY3JlZW4gc2l6ZSB0byAxMDAweDUwMAorISEgRVhDRVBUSU9OOiBQYWdlQWdlbnQu
c2V0U2NyZWVuU2l6ZU92ZXJyaWRlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ1BhZ2VBZ2VudC5z
ZXRTY3JlZW5TaXplT3ZlcnJpZGUoMTAwMCwgNTAwKScsICdQYWdlQWdlbnQuc2V0U2NyZWVuU2l6
ZU92ZXJyaWRlJyBpcyB1bmRlZmluZWQpCitTdGFjayBUcmFjZTogIzA6IChhbm9ueW1vdXMpIChA
KQorIzE6IGFzeW5jRnVuY3Rpb25SZXN1bWUgW25hdGl2ZSBjb2RlXQorIzI6IChhbm9ueW1vdXMp
IFtuYXRpdmUgY29kZV0KKyMzOiBwcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0UHJvbWlzZSBbbmF0
aXZlIGNvZGVdCisjNDogcHJvbWlzZVJlYWN0aW9uSm9iIFtuYXRpdmUgY29kZV0KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3Rl
ZC50eHQKaW5kZXggYmZjYWM5ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3YTM4NS4uOTAw
N2UxNGQ0MTAzYmU3YTkxY2M5OGEzOWMxMjgyN2FlM2EwYzYwNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBA
IC02NCw4ICs2NCw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICAgICAi
ZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAg
ICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGluZU51bWJlciI6
IDE0MiwKLSAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgICAgICJs
aW5lTnVtYmVyIjogNDA2LAorICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogODAKICAgICAg
ICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4i
LApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAg
ICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNj
cmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAg
ICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogNDA2LAor
ICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBdLAogICAgICAg
ImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVy
aW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1
cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAg
ImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAg
ICAgImxpbmVOdW1iZXIiOiA0MDYsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6IDgwCiAgICAg
ICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458023</attachid>
            <date>2022-04-20 17:52:06 -0700</date>
            <delta_ts>2022-04-20 20:16:39 -0700</delta_ts>
            <desc>WIP v0.2</desc>
            <filename>bug-152294-20220420175205.patch</filename>
            <type>text/plain</type>
            <size>184908</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Yjk0M2U2M2UxYzM4MjRjMjdlNmU2ZjE2Mjk2MjI5ZDNmNzY1MTZhLi4zZTk3MWFiY2IzN2IxNGVl
ODA2YWI3YjM1N2E4MjM3MTk3MDg2MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wNC0yMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVu
Y3Rpb25zKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QnVpbHRpbi5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLmV4ZWN1dGUpOgorICAgICAgICAobGV0
LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5hd2FpdFByb21pc2UpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5jYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChsZXQuSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKGxldC5Jbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcEpTT05TdHJpbmcpOgorICAgICAgICAobGV0LkluamVj
dGVkU2NyaXB0LnByb3RvdHlwZS53cmFwVGFibGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2Ny
aXB0LnByb3RvdHlwZS5pbmplY3RNb2R1bGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0
LnByb3RvdHlwZS5fcmVzb2x2ZUNhbGxBcmd1bWVudCk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRT
Y3JpcHQucHJvdG90eXBlLl9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yLmNyZWF0ZUZha2VWYWx1
ZURlc2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9y
RWFjaFByb3BlcnR5RGVzY3JpcHRvci5wcm9jZXNzUHJvcGVydHkpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9zYXZlUmVzdWx0KToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChsZXQuUmVtb3RlT2JqZWN0KToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3Quc2V0IF9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwpOgor
ICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5wcm90b3R5cGUuX2lzUHJldmlld2FibGVPYmplY3Qu
c2V0IGFkZCk6CisgICAgICAgIChDb21tYW5kTGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJl
ZF9oZXJlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIyLTA0
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBB
dG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3Qg
Y2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTUxZmFkNzE1NTcyNjYzNDE2ZDc0NjZjN2FlODI5NTU5OTZl
NmU2ZS4uNWNjMDBiYTYwYzZkOTNiNmRmNzI3Y2QzMjYxODg5ZjkzNGM2NDhmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA0LTIwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNv
dXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBi
dWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcy4KKyAgICAgICAg
KGluamVjdE1vZHVsZSk6CisKIDIwMjItMDQtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gc2Nyb2xsSW50b1ZpZXcg
ZmFpbHMgd2l0aCBzY3JvbGwtc25hcC10eXBlIG9uIDpyb290CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMjNjNGE3NGY4ODY4NjNhMWVmY2UwYjNjYTM2YmYxNjYxM2VmNDk1
NC4uZGVkOWRjY2FjMThhOTUwZTU0MmY3NTI2MjFmMDQ3MTBiZjE1NDM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQwNSwxNyArMTQwNSw2IEBAIGxpc3QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9V
VFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0
U291cmNlLmggJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNj
cmlwdFNvdXJjZS5taW4uanMKLSAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBz
b3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0ph
dmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzID4+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2Ny
aXB0U291cmNlX2pzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9IRUFERVJTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlm
IChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAppbmRleCBiOTIxYjJmODI4NjQzMDFhMGM1YmY3MTU0NjRkODFiNWZhYWYwOGJl
Li40N2FmODFiY2VkMTMwMjBiYzhkNTM4YjI3NGNhOWZkZDcxMmJlZTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtODgsNyArODgsNyBAQCAkKFBST0pFQ1RfRElSKS9nZW5lcmF0b3IvVGVtcGxhdGUucmIKICQo
UFJPSkVDVF9ESVIpL2dlbmVyYXRvci9UeXBlLnJiCiAkKFBST0pFQ1RfRElSKS9nZW5lcmF0b3Iv
V2FzbS5yYgogJChQUk9KRUNUX0RJUikvZ2VuZXJhdG9yL21haW4ucmIKLSQoUFJPSkVDVF9ESVIp
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworJChQUk9KRUNUX0RJUikvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QnVpbHRpbi5qcwogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3By
b3RvY29sL0FuaW1hdGlvbi5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wv
QXBwbGljYXRpb25DYWNoZS5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wv
QXVkaXQuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi5hMTAzMjgyNzI4NTFl
NThlMTI1M2E5ZDNjMzBmM2FiOWIwZmQ0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtNjgsNyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBc
Ci0gICAgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtl
eXdvcmRMb29rdXAuaCBcCiAgICAgUmVnRXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3
IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9XZWJBc3NlbWJseS5qcyBcCisJJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QnVpbHRpbi5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91
dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0
b3Igc2NyaXB0cywgc28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVS
QVQKIAkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
cHJlcHJvY2Vzcy5wbCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMu
anMuaW4gLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1
dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQu
cGwKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMiID4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJ
bmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5q
cwotCiBBSVJfT1BDT0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNv
ZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzVlYTQxNmY3MGFj
YzZlMWFmNjc4MmE0OGQzZWYxNjg5NTQ0MjM5Yi4uNWViNGMwZTljMzJkZjMzMmU5NDhjMTEwOTAz
N2M0YjA5MjQwMjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3MjIsNyAr
NDcyMiw3IEBACiAJCUE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0
SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0
SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCQzE4NUJGQUNDMDA3
RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzMxODVGOTJDOTAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdEJ1aWx0aW4uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNF
NUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjUzLDEzICs5MjUzLDEzIEBACiAJCQkJQTUxM0U1
QjYxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmggKi8sCiAJCQkJQTUxNEIyQzAx
ODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8sCiAJCQkJQTUxNEIy
QzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovLAorCQkJCUE1MTNF
NUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMgKi8sCiAJCQkJ
QTU4RTM1OTAxODYwREVDNzAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJ
CQkJQTUxM0U1QjkxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovLAog
CQkJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
ICovLAogCQkJCUE1MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCAqLywKIAkJCQlBNTg0MEUxRTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwICovLAogCQkJCUE1ODQwRTFGMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNj
cmlwdE1vZHVsZS5oICovLAotCQkJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyAqLywKIAkJCQlBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5z
cGVjdG9yQWdlbnRCYXNlLmggKi8sCiAJCQkJQTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIElu
c3BlY3RvckFnZW50UmVnaXN0cnkuY3BwICovLAogCQkJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQppbmRl
eCA2NWRjMTVjY2FkZjVmMDBhNmYyZjQ5MDEwNzMwMTk3OWE4NmQxNjg3Li4xMzVmMzM5ZTdhNDQx
MDVhYWM4MmRjMzA0NjgzYmI5MWZmMGM1YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTMw
MywyMSArMzAzLDU1IEBAIGNsYXNzIEJ1aWx0aW5zQ29sbGVjdGlvbjoKICAgICAgICAgZnVuY3Rp
b25Cb3VuZHMgPSBbXQogICAgICAgICBzdGFydCA9IDAKICAgICAgICAgZW5kID0gMAorCiAgICAg
ICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgogICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFy
dCgpCiAgICAgICAgICAgICBpZiBzdGFydCA8IGVuZDoKICAgICAgICAgICAgICAgICBjb250aW51
ZQogICAgICAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKICAgICAgICAgICAgIHdoaWxlIHRleHRb
ZW5kXSAhPSAneyc6Ci0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAg
ICAgIGVuZCArPSAxCiAgICAgICAgICAgICBkZXB0aCA9IDEKLSAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAg
ICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyID0gTm9uZQogICAgICAgICAgICAgd2hpbGUg
ZGVwdGggPiAwOgotICAgICAgICAgICAgICAgIGlmIHRleHRbZW5kXSA9PSAneyc6Ci0gICAgICAg
ICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB0ZXh0
W2VuZF0gPT0gJ30nOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQorICAg
ICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPSB0ZXh0W2VuZF0KKworICAgICAgICAgICAg
ICAgIGlmIGlzRXNjYXBpbmdDaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBp
bmdDaGFyYWN0ZXIgPSBGYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFy
YWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJl
bnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVu
dFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBp
c0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgICAgICAgICAgIyBGSVhNRTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJlZ3VsYXIg
ZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0
aGUgb25lCisgICAgICAgICAgICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdz
IGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWlu
ZworICAgICAgICAgICAgICAgICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJv
dW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2gg
bGluZQorICAgICAgICAgICAgICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUg
c3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRh
aW5zCisgICAgICAgICAgICAgICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xv
c2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0
aGUgZWFybGllcgorICAgICAgICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4g
dW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09
ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgJ2AnOgorICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5n
U3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAg
ICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJh
Y3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAg
ICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVu
ZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgp
IGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNl
MzBkZGZjMmEwMGM1MmFlYmM1ZC4uYmU4OTVhOWYyNzU3M2U3MzUzZjE4MWY0MzQ2YTQ2NGQ0ZTZm
MTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aApAQCAtMTkyLDYgKzE5MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVS
ZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNy
byhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhwYXJzZUpTT04p
IFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRP
d25Qcm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisg
ICAgbWFjcm8oaGFzT3duUHJvcGVydHkpIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRl
eCAxYzQ3ZWVlYmE4NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi4xNTdjOTQzOTBjNTQx
MjE0M2NkMjMxOTBjMmNkNWY5OGJhZTI0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOCBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBc
CiAgICAgdihpc1JlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51
bGxwdHIpIFwKKyAgICB2KHBhcnNlSlNPTiwgbnVsbHB0cikgXAorICAgIHYoU3RyaW5nLCBudWxs
cHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2Rl
KSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJ1aWx0aW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QnVpbHRpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDQ5MzNjNTE1OGE2YWYxNWMyYTgx
MWI3NzU1NjUzMzZiM2MwNDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMKQEAgLTAsMCArMSwxNTQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAZ2xv
YmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0
ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7
CisKK2Z1bmN0aW9uIHRvU3RyaW5nKG9iaikKK3sKKyAgICByZXR1cm4gQFN0cmluZyhvYmopOwor
fQorCitmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKK3sKKyAgICBpZiAob2JqID09
PSAwICYmIDEgLyBvYmogPCAwKQorICAgICAgICByZXR1cm4gIi0wIjsKKworICAgIGlmIChpc0Jp
Z0ludChvYmopKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcob2JqKSArICJuIjsKKworICAgIHJl
dHVybiB0b1N0cmluZyhvYmopOworfQorCitmdW5jdGlvbiBpc1VJbnQzMihvYmopCit7CisgICAg
aWYgKHR5cGVvZiBvYmogPT09ICJudW1iZXIiKQorICAgICAgICByZXR1cm4gb2JqID4+PiAwID09
PSBvYmogJiYgKG9iaiA+IDAgfHwgMSAvIG9iaiA+IDApOworICAgIHJldHVybiAiIiArIChvYmog
Pj4+IDApID09PSBvYmo7Cit9CisKK2Z1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKQoreworICAgIHJl
dHVybiB0eXBlb2YgdmFsdWUgPT09ICJzeW1ib2wiOworfQorCitmdW5jdGlvbiBpc0JpZ0ludCh2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAiYmlnaW50IjsKK30KKworZnVu
Y3Rpb24gaXNFbXB0eU9iamVjdChvYmplY3QpCit7CisgICAgZm9yIChsZXQga2V5IGluIG9iamVj
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlv
biBpc0RlZmluZWQodmFsdWUpCit7CisgICAgcmV0dXJuICEhdmFsdWUgfHwgSW5qZWN0ZWRTY3Jp
cHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24odmFsdWUpOworfQorCitmdW5jdGlvbiBpc1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKQoreworICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgY2Fz
ZSAiYm9vbGVhbiI6CisgICAgY2FzZSAibnVtYmVyIjoKKyAgICBjYXNlICJzdHJpbmciOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4g
IUluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0aW9uKHZhbHVlKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyAtLS0tLS0tCisKK2xl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0Cit7CisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOworICAgICAg
ICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IHt9OworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0
R3JvdXBOYW1lID0ge307CisgICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OworICAgICAg
ICB0aGlzLl9tb2R1bGVzID0ge307CisgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4
ID0gMTsKKyAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgfQorCisgICAgLy8g
SW5qZWN0ZWRTY3JpcHQgQysrIEFQSQorCisgICAgZXhlY3V0ZShmdW5jdGlvblN0cmluZywgb2Jq
ZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQ
cmV2aWV3LCBzYXZlUmVzdWx0LCBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dy
YXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3
LCBzYXZlUmVzdWx0LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFt
ZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRT
Y3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3Qs
IGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
KS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGV2
YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKKyAgICB7CisgICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLl9l
dmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxP
bkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQpOworICAgIH0KKworICAgIGF3YWl0UHJvbWlzZShwcm9taXNl
T2JqZWN0SWQsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBsZXQgcGFyc2VkUHJvbWlzZU9iamVjdElkID0gdGhpcy5f
cGFyc2VPYmplY3RJZChwcm9taXNlT2JqZWN0SWQpOworICAgICAgICBsZXQgcHJvbWlzZU9iamVj
dCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZFByb21pc2VPYmplY3RJZCk7CisgICAgICAgIGxl
dCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJz
ZWRQcm9taXNlT2JqZWN0SWQuaWRdOworCisgICAgICAgIGlmICghaXNEZWZpbmVkKHByb21pc2VP
YmplY3QpKSB7CisgICAgICAgICAgICBjYWxsYmFjaygiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdp
dGggZ2l2ZW4gaWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBAUHJvbWlzZSkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBnaXZlbiBpZCBpcyBub3QgYSBQcm9taXNlIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgcmVzb2x2ZSA9ICh2YWx1
ZSkgPT4geworICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IHsKKyAgICAgICAgICAgICAg
ICB3YXNUaHJvd246IGZhbHNlLAorICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0
LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2Vu
ZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChzYXZlUmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CisgICAg
ICAgICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdChyZXR1cm5PYmplY3QucmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFjayhyZXR1cm5PYmplY3QpOwor
ICAgICAgICB9OworICAgICAgICBsZXQgcmVqZWN0ID0gKHJlYXNvbikgPT4geworICAgICAgICAg
ICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUocmVhc29uLCBwcm9taXNlT2JqZWN0
R3JvdXBOYW1lKSk7CisgICAgICAgIH07CisgICAgICAgIHByb21pc2VPYmplY3QudGhlbihyZXNv
bHZlLCByZWplY3QpOworICAgIH0KKworICAgIGV2YWx1YXRlT25DYWxsRnJhbWUodG9wQ2FsbEZy
YW1lLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQorICAg
IHsKKyAgICAgICAgbGV0IGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxG
cmFtZSwgY2FsbEZyYW1lSWQpOworICAgICAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAg
IHJldHVybiAiQ291bGQgbm90IGZpbmQgY2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAg
ICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy5f
ZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgY2Fs
bEZyYW1lLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVz
dWx0KTsKKyAgICB9CisKKyAgICBjYWxsRnVuY3Rpb25PbihvYmplY3RJZCwgZXhwcmVzc2lvbiwg
YXJncywgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0
IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAg
IGxldCBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAg
IGxldCBvYmplY3RHcm91cE5hbWUgPSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW3BhcnNlZE9i
amVjdElkLmlkXTsKKworICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQorICAgICAgICAg
ICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CisKKyAgICAg
ICAgbGV0IHJlc29sdmVkQXJncyA9IFtdOworICAgICAgICBpZiAoYXJncykgeworICAgICAgICAg
ICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOworICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9
IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOworICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgbGV0IGZ1bmMgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigi
ICsgZXhwcmVzc2lvbiArICIpIik7CisgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJm
dW5jdGlvbiIpCisgICAgICAgICAgICAgICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9uIGRvZXMg
bm90IGV2YWx1YXRlIHRvIGEgZnVuY3Rpb24iOworCisgICAgICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCisgICAgICAgICAgICAgICAgcmVzdWx0OiBS
ZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2Jq
ZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCisgICAgICAgICAg
ICB9OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3Jl
YXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGdldEZ1bmN0aW9uRGV0YWlscyhvYmplY3RJZCkKKyAgICB7CisgICAgICAgIGxldCBwYXJz
ZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICBsZXQg
b2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOworICAgICAgICBpZiAo
dHlwZW9mIG9iamVjdCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90
IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQuIjsKKyAgICAgICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25E
ZXRhaWxzKG9iamVjdCk7CisgICAgfQorCisgICAgZnVuY3Rpb25EZXRhaWxzKGZ1bmMpCisgICAg
eworICAgICAgICBsZXQgZGV0YWlscyA9IEluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkRldGFp
bHMoZnVuYyk7CisgICAgICAgIGlmICghZGV0YWlscykKKyAgICAgICAgICAgIHJldHVybiAiQ2Fu
bm90IHJlc29sdmUgZnVuY3Rpb24gZGV0YWlscy4iOworICAgICAgICByZXR1cm4gZGV0YWlsczsK
KyAgICB9CisKKyAgICBnZXRQcmV2aWV3KG9iamVjdElkKQorICAgIHsKKyAgICAgICAgbGV0IHBh
cnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxl
dCBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIHJl
dHVybiBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKG9iamVjdCwgdHJ1
ZSk7CisgICAgfQorCisgICAgZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAg
bGV0IGNvbGxlY3Rpb25Nb2RlID0gb3duUHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxl
Y3Rpb25Nb2RlLk93blByb3BlcnRpZXMgOiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5B
bGxQcm9wZXJ0aWVzOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJ
ZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZp
ZXd9KTsKKyAgICB9CisKKyAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZl
dGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKKyAgICB7CisgICAgICAgIGxl
dCBjb2xsZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3Bl
cnRpZXMgfCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0
aWVzOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVj
dGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2
ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZX0pOworICAgIH0KKworICAgIGdldEludGVybmFsUHJvcGVy
dGllcyhvYmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNl
ZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxldCBv
YmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIGxldCBv
YmplY3RHcm91cE5hbWUgPSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW3BhcnNlZE9iamVjdElk
LmlkXTsKKworICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmIChpc1N5bWJvbChvYmplY3QpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHRoaXMuX2ludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOworICAgICAgICBpZiAoIWRlc2NyaXB0b3JzKQor
ICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVz
Y3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gZGVz
Y3JpcHRvcnNbaV07CisgICAgICAgICAgICBpZiAoInZhbHVlIiBpbiBkZXNjcmlwdG9yKQorICAg
ICAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2Ny
aXB0b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CisgICAgfQorCisgICAgZ2V0
Q29sbGVjdGlvbkVudHJpZXMob2JqZWN0SWQsIG9iamVjdEdyb3VwTmFtZSwgZmV0Y2hTdGFydCwg
ZmV0Y2hDb3VudCkKKyAgICB7CisgICAgICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3Bh
cnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICBsZXQgb2JqZWN0ID0gdGhpcy5fb2JqZWN0
Rm9ySWQocGFyc2VkT2JqZWN0SWQpOworICAgICAgICBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RH
cm91cE5hbWUgfHwgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5pZF07
CisKKyAgICAgICAgaWYgKCFpc0RlZmluZWQob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gIm9iamVjdCIpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbGV0IGVudHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5q
ZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7
CisgICAgICAgIHJldHVybiBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAg
ICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5LnZhbHVlLCBvYmplY3RH
cm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkK
KyAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5Lmtl
eSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZW50
cnk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNP
TikKKyAgICB7CisgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOworCisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBsZXQgY2FsbEFyZ3VtZW50ID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmV2YWx1YXRlKCIoIiArIGNhbGxBcmd1bWVudEpTT04gKyAiKSIpOworICAgICAgICAgICAgbGV0
IHZhbHVlID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJndW1lbnQpOworICAgICAg
ICAgICAgdGhpcy5fc2F2ZVJlc3VsdCh2YWx1ZSk7CisgICAgICAgIH0gY2F0Y2ggeyB9CisKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7CisgICAgfQorCisgICAgd3JhcENh
bGxGcmFtZXMoY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gTUFSSzogW1BDQV0gQXJyYXkKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgZGVwdGggPSAwOworICAgICAgICBk
byB7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOworICAgICAgICAgICAgY2FsbEZyYW1l
ID0gY2FsbEZyYW1lLmNhbGxlcjsKKyAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB3cmFwT2JqZWN0KG9iamVjdCwgZ3JvdXBO
YW1lLCBjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKKyAg
ICB7CisgICAgICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrV3JhcHBlcihvYmplY3QpOworCisgICAgICAgIHJl
dHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJh
dGVQcmV2aWV3KTsKKyAgICB9CisKKyAgICB3cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBncm91
cE5hbWUsIGdlbmVyYXRlUHJldmlldykKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBwYXJzZUpTT04oanNvblN0cmluZyksIGdyb3VwTmFt
ZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdyYXBUYWJsZShjYW5BY2Nl
c3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1bW5zKQorICAgIHsKKyAgICAgICAg
aWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fZmFsbGJhY2tXcmFwcGVyKHRhYmxlKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IGNvbHVtbnMgYXJlIGlnbm9yZWQuIEluc3RlYWQsIHRoZSBmcm9udGVuZCBmaWx0ZXJzIGFs
bAorICAgICAgICAvLyBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFt
ZXMgYW5kIGluIHRoZSBwcm92aWRlZCBvcmRlci4KKyAgICAgICAgLy8gV2UgY291bGQgZmlsdGVy
IGhlcmUgdG8gYXZvaWQgc2VuZGluZyB2ZXJ5IGxhcmdlIHByZXZpZXcgb2JqZWN0cy4KKworICAg
ICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOworICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMg
PT09ICJzdHJpbmciKQorICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKworICAgICAg
ICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsK
KyAgICAgICAgICAgIC8vIE1BUks6IFtQQ0FdIEFycmF5CisgICAgICAgICAgICBjb2x1bW5OYW1l
cyA9IFtdOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tp
XSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUodGFi
bGUsICJjb25zb2xlIiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKKyAgICB9CisKKyAgICBw
cmV2aWV3VmFsdWUodmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNy
ZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZSh2YWx1ZSwgdHJ1ZSk7CisgICAgfQorCisgICAgc2V0
RXZlbnRWYWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2V2ZW50VmFsdWUgPSB2YWx1
ZTsKKyAgICB9CisKKyAgICBjbGVhckV2ZW50VmFsdWUoKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX2V2ZW50VmFsdWU7CisgICAgfQorCisgICAgc2V0RXhjZXB0aW9uVmFsdWUodmFsdWUp
CisgICAgeworICAgICAgICB0aGlzLl9leGNlcHRpb25WYWx1ZSA9IHZhbHVlOworICAgIH0KKwor
ICAgIGNsZWFyRXhjZXB0aW9uVmFsdWUoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V4
Y2VwdGlvblZhbHVlOworICAgIH0KKworICAgIGZpbmRPYmplY3RCeUlkKG9iamVjdElkKQorICAg
IHsKKyAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmpl
Y3RJZCk7CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7
CisgICAgfQorCisgICAgcmVsZWFzZU9iamVjdChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIGxl
dCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAg
ICB0aGlzLl9yZWxlYXNlT2JqZWN0KHBhcnNlZE9iamVjdElkLmlkKTsKKyAgICB9CisKKyAgICBy
ZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXBOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG9i
amVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUiKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5f
bGFzdFJlc3VsdDsKKyAgICAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsK
KyAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOworICAgICAgICB9CisKKyAgICAg
ICAgbGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CisgICAg
ICAgIGlmICghZ3JvdXApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRoaXMuX3JlbGVhc2VP
YmplY3QoZ3JvdXBbaV0pOworCisgICAgICAgIGRlbGV0ZSB0aGlzLl9vYmplY3RHcm91cHNbb2Jq
ZWN0R3JvdXBOYW1lXTsKKyAgICB9CisKKyAgICBjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChj
YWxsRnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRMaW5lQVBJKGNhbGxG
cmFtZSB8fCBudWxsKTsKKyAgICB9CisKKyAgICAvLyBDb21tYW5kTGluZUFQSQorCisgICAgaW5z
cGVjdE9iamVjdChvYmplY3QpCisgICAgeworICAgICAgICBpZiAodGhpcy5faW5zcGVjdE9iamVj
dCkKKyAgICAgICAgICAgIHRoaXMuX2luc3BlY3RPYmplY3Qob2JqZWN0KTsKKyAgICB9CisKKyAg
ICAvLyBJbmplY3RlZFNjcmlwdE1vZHVsZSBDKysgQVBJCisKKyAgICBoYXNJbmplY3RlZE1vZHVs
ZShuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CisgICAg
fQorCisgICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0aW9uLCBob3N0KQorICAgIHsK
KyAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOworCisgICAgICAgIGlmICh0eXBl
b2YgbW9kdWxlRnVuY3Rpb24gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyAiRXJy
b3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVuY3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1
bGUiOworICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29t
bWFuZExpbmVBUEl9LCBob3N0KTsKKworICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gdHJ1
ZTsKKyAgICB9CisKKyAgICAvLyBJbmplY3RlZFNjcmlwdE1vZHVsZSBKYXZhU2NyaXB0IEFQSQor
CisgICAgaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpc1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfcGFy
c2VPYmplY3RJZChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dEhvc3QuZXZhbHVhdGUoIigiICsgb2JqZWN0SWQgKyAiKSIpOworICAgIH0KKworICAgIF9vYmpl
Y3RGb3JJZChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pZFRvV3JhcHBl
ZE9iamVjdFtvYmplY3RJZC5pZF07CisgICAgfQorCisgICAgX2JpbmQob2JqZWN0LCBvYmplY3RH
cm91cE5hbWUpCisgICAgeworICAgICAgICBsZXQgaWQgPSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJ
ZCsrOworICAgICAgICBsZXQgb2JqZWN0SWQgPSBgeyJpbmplY3RlZFNjcmlwdElkIjoke2luamVj
dGVkU2NyaXB0SWR9LCJpZCI6JHtpZH19YDsKKworICAgICAgICB0aGlzLl9pZFRvV3JhcHBlZE9i
amVjdFtpZF0gPSBvYmplY3Q7CisKKyAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgeworICAg
ICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07
CisgICAgICAgICAgICBpZiAoIWdyb3VwKSB7CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdy
b3VwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAg
ICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9iamVjdEdyb3VwTmFtZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBvYmplY3RJZDsKKyAgICB9CisKKyAgICBfcmVsZWFz
ZU9iamVjdChpZCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvV3JhcHBlZE9iamVj
dFtpZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXTsKKyAg
ICB9CisKKyAgICBfZmFsbGJhY2tXcmFwcGVyKG9iamVjdCkKKyAgICB7CisgICAgICAgIGxldCBy
ZXN1bHQgPSB7fTsKKyAgICAgICAgcmVzdWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAg
ICBpZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQorICAgICAgICAgICAgcmVzdWx0LnZhbHVl
ID0gb2JqZWN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQuZGVzY3JpcHRpb24g
PSB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iamVjdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTikKKyAgICB7
CisgICAgICAgIGlmICgidmFsdWUiIGluIGNhbGxBcmd1bWVudEpTT04pCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbEFyZ3VtZW50SlNPTi52YWx1ZTsKKworICAgICAgICBsZXQgb2JqZWN0SWQgPSBj
YWxsQXJndW1lbnRKU09OLm9iamVjdElkOworICAgICAgICBpZiAob2JqZWN0SWQpIHsKKyAgICAg
ICAgICAgIGxldCBwYXJzZWRBcmdJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwor
ICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdJZCB8fCBwYXJzZWRBcmdJZFsiaW5qZWN0ZWRTY3Jp
cHRJZCJdICE9PSBpbmplY3RlZFNjcmlwdElkKQorICAgICAgICAgICAgICAgIHRocm93ICJBcmd1
bWVudHMgc2hvdWxkIGJlbG9uZyB0byB0aGUgc2FtZSBKYXZhU2NyaXB0IHdvcmxkIGFzIHRoZSB0
YXJnZXQgb2JqZWN0LiI7CisKKyAgICAgICAgICAgIGxldCByZXNvbHZlZEFyZyA9IHRoaXMuX29i
amVjdEZvcklkKHBhcnNlZEFyZ0lkKTsKKyAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKHJlc29s
dmVkQXJnKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdp
dGggZ2l2ZW4gaWQiOworCisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBfY3JlYXRlVGhy
b3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQorICAgIHsKKyAgICAgICAgbGV0IHJlbW90ZU9i
amVjdCA9IFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIG9iamVjdEdyb3VwKTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVz
Y3JpcHRpb24odmFsdWUpOworICAgICAgICB9IGNhdGNoIHsgfQorICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAorICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVP
YmplY3QKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5j
dGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUs
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBz
YXZlUmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChv
YmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24s
IG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIF93cmFwQW5kU2F2ZUNhbGwob2JqZWN0
R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgZnVuYykK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl93cmFwQ2FsbChvYmplY3RHcm91cCwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CisgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gZnVuYygpOworICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpCisgICAg
ICAgICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX3dyYXBDYWxsKG9iamVjdEdyb3Vw
LCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGZ1bmMpCisgICAg
eworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7
CisKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7CisgICAgICAgICAgICAgICAgd2Fz
VGhyb3duOiBmYWxzZSwKKyAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVh
dGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQor
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2
ZWRSZXN1bHRJbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJ
bmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7CisKKyAgICAgICAgICAgIHJldHVybiByZXR1
cm5PYmplY3Q7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBfZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFs
T25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkKKyAgICB7CisgICAgICAgIGxldCBj
b21tYW5kTGluZUFQSSA9IG51bGw7CisgICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkp
CisgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElP
YmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBudWxsKTsKKyAgICAgICAgcmV0dXJu
IGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwor
ICAgIH0KKworICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQor
ICAgIHsKKyAgICAgICAgbGV0IHBhcnNlZENhbGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmV2YWx1YXRlKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKKyAgICAgICAgbGV0IG9yZGluYWwg
PSBwYXJzZWRDYWxsRnJhbWVJZFsib3JkaW5hbCJdOworICAgICAgICBsZXQgY2FsbEZyYW1lID0g
dG9wQ2FsbEZyYW1lOworICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1l
KQorICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKKyAgICAgICAgcmV0
dXJuIGNhbGxGcmFtZTsKKyAgICB9CisKKyAgICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29s
bGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5h
dGl2ZUdldHRlcnNBc1ZhbHVlc30pCisgICAgeworICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQg
PSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKKyAgICAgICAgbGV0IG9iamVjdCA9IHRo
aXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKKyAgICAgICAgbGV0IG9iamVjdEdyb3Vw
TmFtZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOworCisg
ICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKGlzU3ltYm9sKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgbGV0IHN0YXJ0ID0gZmV0Y2hTdGFydCB8fCAwOworICAgICAgICBpZiAo
c3RhcnQgPCAwKQorICAgICAgICAgICAgc3RhcnQgPSAwOworCisgICAgICAgIGxldCBjb3VudCA9
IGZldGNoQ291bnQgfHwgMDsKKyAgICAgICAgaWYgKGNvdW50IDwgMCkKKyAgICAgICAgICAgIGNv
dW50ID0gMDsKKworICAgICAgICAvLyBBbHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVu
ZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRjaC4KKyAgICAgICAgbGV0IGluY2x1ZGVQcm90
byA9ICFzdGFydDsKKworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgdGhp
cy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVz
Y3JpcHRvcikgPT4geworICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgeworICAgICAgICAgICAg
ICAgIC0tc3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICgiZ2V0IiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLmdldCwgb2JqZWN0R3JvdXBOYW1lKTsKKyAg
ICAgICAgICAgIGlmICgic2V0IiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnNldCwgb2JqZWN0R3Jv
dXBOYW1lKTsKKyAgICAgICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpCisgICAgICAg
ICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRv
ci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAg
ICAgICAgIGlmICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2Jq
ZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7
CisKKyAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMu
bGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cDsKKworICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0g
Y291bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAgfSwge25hdGl2
ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7CisgICAgICAgIHJldHVybiBkZXNjcmlw
dG9yczsKKyAgICB9CisKKyAgICBfaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwg
Y29tcGxldGVEZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgbGV0IGludGVybmFsUHJvcGVydGll
cyA9IEluamVjdGVkU2NyaXB0SG9zdC5nZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0KTsKKyAg
ICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBpbnRlcm5hbFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGxldCBw
cm9wZXJ0eSA9IGludGVybmFsUHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlw
dG9yID0ge25hbWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07CisgICAg
ICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3IuaXNPd24gPSB0cnVlOworICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9y
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CisgICAgfQorCisgICAg
X2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJh
Y2ssIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pCisgICAgeworICAgICAg
ICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0
OworCisgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KKyAgICAg
ICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsKKworICAgICAgICBmdW5jdGlvbiBj
cmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Q
cm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IHtuYW1lLCB2
YWx1ZTogb2JqZWN0W25hbWVdfTsKKyAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcikgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZha2VEZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAocG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQorICAgICAgICAg
ICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5uYXRpdmVHZXR0ZXIgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGlmIChpc093blByb3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3Jp
cHRvci5pc093biA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAgICAgICAg
ICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOworICAgICAgICAgICAg
ICAgIC8vIFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25z
IGNyZWF0ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRo
aXMgb2JqZWN0LgorICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0
YW5jZW9mIEBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdp
dGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAgICAg
ICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKKyAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVl
OiBlLCB3YXNUaHJvd246IHRydWV9OworICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5
KQorICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOworICAg
ICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3Jp
cHRvci5zeW1ib2wgPSBzeW1ib2w7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yRGVzY3Jp
cHRvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2Nl
c3NEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmlu
ZGluZ0dldHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQWxsIHByb3BlcnRpZXMuCisg
ICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9u
TW9kZS5BbGxQcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhkZXNj
cmlwdG9yKTsKKworICAgICAgICAgICAgLy8gT3duIHByb3BlcnRpZXMuCisgICAgICAgICAgICBp
ZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9w
ZXJ0aWVzICYmIGlzT3duUHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KGRlc2NyaXB0b3IpOworCisgICAgICAgICAgICAvLyBOYXRpdmUgR2V0dGVyIHByb3BlcnRpZXMu
CisgICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0
aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHBv
c3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5h
bWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLkNvbnRpbnVlOworCisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVy
dHlOYW1lKTsKKworICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9w
ZXJ0eU5hbWUgOiBudWxsOworCisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3Qu
QGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
aWYgKCFkZXNjcmlwdG9yKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlw
dG9yLiBDYW4gd2UgZ2V0IGhlcmU/CisgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZl
cnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlw
dG9yID0gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3Is
IGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzRGVzY3JpcHRv
cihmYWtlRGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
U3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICgh
ZGVzY3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5AaGFzT3duUHJvcGVydHkoImdldCIpICYmICFk
ZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLkBoYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3Jp
cHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgLy8g
bGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmluZWR9
KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCisgICAgICAgICAgICAg
ICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFt
ZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCBpc093blBy
b3BlcnR5LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGRlc2NyaXB0b3IubmFtZSA9IG5hbWU7CisgICAgICAgICAgICBpZiAoaXNPd25Qcm9w
ZXJ0eSkKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBzeW1i
b2w7CisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgaXNP
d25Qcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxz
ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0
LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAm
JiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAgfSBjYXRjaCB7IH0KKworICAgICAgICBmb3Ig
KGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVP
ZihvKSkgeworICAgICAgICAgICAgbGV0IGlzT3duUHJvcGVydHkgPSBvID09PSBvYmplY3Q7Cisg
ICAgICAgICAgICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE4NjE+IFdlYiBJbnNwZWN0b3I6IHNob3cgYXV0
b2NvbXBsZXRlIGVudHJpZXMgZm9yIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGFycmF5cworICAg
ICAgICAgICAgaWYgKGlzQXJyYXlMaWtlICYmIGlzT3duUHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG8ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCEoaSBpbiBvKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgdG9T
dHJpbmcoaSksIGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVh
ayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlO
YW1lcyhvKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFt
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nl
c3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5KTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFr
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0
T3duUHJvcGVydHlTeW1ib2xzKG8pOworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blBy
b3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IElu
amVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQnJl
YWspCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChjb2xsZWN0aW9u
TW9kZSA9PT0gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcykKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmNsdWRlUHJv
dG8pIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5fX3By
b3RvX18pCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHtuYW1lOiAiX19wcm90b19fIiwg
dmFsdWU6IG9iamVjdC5fX3Byb3RvX18sIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRy
dWUsIGlzT3duOiB0cnVlfSk7CisgICAgICAgICAgICB9IGNhdGNoIHsgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50
KQorICAgIHsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKworICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBTZXQucHJvdG90eXBlW1N5
bWJvbC5pdGVyYXRvcl0uCisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIG9iamVjdCkgeworICAg
ICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CisgICAgICAgICAgICAgICAgZmV0Y2hTdGFy
dC0tOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisKKyAgICAgICAgICAgIGlmIChmZXRjaENvdW50
ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisgICAgfQorCisgICAgX2dl
dE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQorICAgIHsKKyAgICAg
ICAgbGV0IGVudHJpZXMgPSBbXTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZh
YmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0u
CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBvYmplY3QpIHsKKyAgICAgICAgICAg
IGlmIChmZXRjaFN0YXJ0ID4gMCkgeworICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZW50
cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisKKyAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYm
IGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisgICAgfQorCisgICAgX2dldFdl
YWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3Qud2Vha01hcEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKKyAg
ICB9CisKKyAgICBfZ2V0V2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC53ZWFrU2V0RW50cmllcyhvYmplY3Qs
IGZldGNoQ291bnQpOworICAgIH0KKworICAgIF9nZXRJdGVyYXRvckVudHJpZXMob2JqZWN0LCBm
ZXRjaENvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pdGVy
YXRvckVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKKyAgICB9CisKKyAgICBfZW50cmllcyhv
YmplY3QsIHN1YnR5cGUsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpCisgICAgeworICAgICAgICBp
ZiAoc3VidHlwZSA9PT0gInNldCIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U2V0RW50
cmllcyhvYmplY3QsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOworICAgICAgICBpZiAoc3VidHlw
ZSA9PT0gIm1hcCIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TWFwRW50cmllcyhvYmpl
Y3QsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIndl
YWttYXAiKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFdlYWtNYXBFbnRyaWVzKG9iamVj
dCwgZmV0Y2hDb3VudCk7CisgICAgICAgIGlmIChzdWJ0eXBlID09PSAid2Vha3NldCIpCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0V2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50
KTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIpCisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fZ2V0SXRlcmF0b3JFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7CisKKyAgICAg
ICAgdGhyb3cgInVuZXhwZWN0ZWQgdHlwZSI7CisgICAgfQorCisgICAgX3NhdmVSZXN1bHQocmVz
dWx0KQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKKworICAgICAg
ICBpZiAocmVzdWx0ID09PSBAdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVz
dWx0cy5pbmRleE9mKHJlc3VsdCk7CisgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkg
eworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zYXZlZFJlc3Vs
dEluZGV4ID0gdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXg7CisgICAgICAgIHRoaXMuX3NhdmVk
UmVzdWx0c1t0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCsrXSA9IHJlc3VsdDsKKworICAgICAg
ICAvLyAkbiBpcyBsaW1pdGVkIGZyb20gJDEtJDk5LiAkMCBpcyBzcGVjaWFsLgorICAgICAgICBp
ZiAodGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPj0gMTAwKQorICAgICAgICAgICAgdGhpcy5f
bmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOworICAgIH0KK307CisKK0luamVjdGVkU2NyaXB0LkNv
bGxlY3Rpb25Nb2RlID0geworICAgIE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8g
b3duIHByb3BlcnRpZXMuCisgICAgTmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBu
YXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICBBbGxQ
cm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90
b3R5cGUgY2hhaW4uCit9OworCitJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uID0g
eworICAgIENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBT
dG9wOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIpLAorfQorCit2YXIgaW5qZWN0ZWRTY3Jp
cHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CisKKy8vIC0tLS0tLS0KKworbGV0IFJlbW90ZU9iamVj
dCA9IGNsYXNzIFJlbW90ZU9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKG9iamVjdCwgb2JqZWN0
R3JvdXBOYW1lLCBmb3JjZVZhbHVlVHlwZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcykK
KyAgICB7CisgICAgICAgIHRoaXMudHlwZSA9IHR5cGVvZiBvYmplY3Q7CisKKyAgICAgICAgaWYg
KHRoaXMudHlwZSA9PT0gInVuZGVmaW5lZCIgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFs
bENvbGxlY3Rpb24ob2JqZWN0KSkKKyAgICAgICAgICAgIHRoaXMudHlwZSA9ICJvYmplY3QiOwor
CisgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkgfHwgaXNCaWdJbnQob2JqZWN0
KSB8fCBvYmplY3QgPT09IG51bGwgfHwgZm9yY2VWYWx1ZVR5cGUpIHsKKyAgICAgICAgICAgIC8v
IFdlIGRvbid0IHNlbmQgdW5kZWZpbmVkIHZhbHVlcyBvdmVyIEpTT04uCisgICAgICAgICAgICAv
LyBCaWdJbnQgdmFsdWVzIGFyZSBub3QgSlNPTiBzZXJpYWxpemFibGUuCisgICAgICAgICAgICBp
ZiAodGhpcy50eXBlICE9PSAidW5kZWZpbmVkIiAmJiB0aGlzLnR5cGUgIT09ICJiaWdpbnQiKQor
ICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBvYmplY3Q7CisKKyAgICAgICAgICAgIC8vIE51
bGwgb2JqZWN0IGlzIG9iamVjdCB3aXRoICdudWxsJyBzdWJ0eXBlLgorICAgICAgICAgICAgaWYg
KG9iamVjdCA9PT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnR5cGUgPSAibnVsbCI7
CisKKyAgICAgICAgICAgIC8vIFByb3ZpZGUgdXNlci1mcmllbmRseSBudW1iZXIgdmFsdWVzLgor
ICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gIm51bWJlciIgfHwgdGhpcy50eXBlID09PSAi
YmlnaW50IikKKyAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNj
cmlwdGlvbihvYmplY3QpOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLm9iamVjdElkID0gaW5qZWN0ZWRTY3JpcHQuX2JpbmQob2JqZWN0LCBvYmplY3RH
cm91cE5hbWUpOworCisgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KTsKKyAgICAgICAgaWYgKHN1YnR5cGUpCisgICAgICAgICAgICB0aGlzLnN1YnR5cGUg
PSBzdWJ0eXBlOworCisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmludGVybmFsQ29uc3RydWN0b3JOYW1lKG9iamVjdCk7CisgICAgICAgIHRoaXMuZGVzY3JpcHRp
b24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUob2JqZWN0KTsKKworICAgICAgICBpZiAoc3VidHlw
ZSA9PT0gImFycmF5IikKKyAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHR5cGVvZiBvYmplY3QubGVu
Z3RoID09PSAibnVtYmVyIiA/IG9iamVjdC5sZW5ndGggOiAwOworICAgICAgICBlbHNlIGlmIChz
dWJ0eXBlID09PSAic2V0IiB8fCBzdWJ0eXBlID09PSAibWFwIikKKyAgICAgICAgICAgIHRoaXMu
c2l6ZSA9IG9iamVjdC5zaXplOworICAgICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAid2Vha21h
cCIpCisgICAgICAgICAgICB0aGlzLnNpemUgPSBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha01hcFNp
emUob2JqZWN0KTsKKyAgICAgICAgZWxzZSBpZiAoc3VidHlwZSA9PT0gIndlYWtzZXQiKQorICAg
ICAgICAgICAgdGhpcy5zaXplID0gSW5qZWN0ZWRTY3JpcHRIb3N0LndlYWtTZXRTaXplKG9iamVj
dCk7CisgICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJjbGFzcyIpIHsKKyAgICAgICAgICAg
IHRoaXMuY2xhc3NQcm90b3R5cGUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdC5wcm90b3R5
cGUsIG9iamVjdEdyb3VwTmFtZSk7CisgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IG9iamVj
dC5uYW1lOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdlbmVyYXRlUHJldmlldyAmJiB0aGlz
LnR5cGUgPT09ICJvYmplY3QiKSB7CisgICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5
IikgeworICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmll
dyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhv
YmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFN0YXRpYworCisgICAgc3RhdGljIGNyZWF0ZShvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwg
Zm9yY2VWYWx1ZVR5cGUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCisgICAgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVPYmplY3Qob2JqZWN0LCBv
YmplY3RHcm91cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5h
bWVzKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9u
OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFJlbW90
ZU9iamVjdC5kZXNjcmliZShlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAg
ICAgICAgICAgYWxlcnQoZXgubWVzc2FnZSk7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24g
PSAiPGZhaWxlZCB0byBjb252ZXJ0IGV4Y2VwdGlvbiB0byBzdHJpbmc+IjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KGRlc2NyaXB0aW9uKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUo
dmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCisgICAgeworICAgICAgICBsZXQg
cmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVuZGVmaW5lZCwgZmFsc2Us
IGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOworICAgICAgICBpZiAocmVtb3RlT2JqZWN0
Lm9iamVjdElkKQorICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1v
dGVPYmplY3Qub2JqZWN0SWQpOworICAgICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90
eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkKKyAgICAgICAgICAg
IGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3QocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBl
Lm9iamVjdElkKTsKKyAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdC5wcmV2aWV3IHx8IHJlbW90
ZU9iamVjdC5fZW1wdHlQcmV2aWV3KCk7CisgICAgfQorCisgICAgc3RhdGljIHN1YnR5cGUodmFs
dWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICByZXR1
cm4gIm51bGwiOworCisgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSB8fCBpc0Jp
Z0ludCh2YWx1ZSkgfHwgaXNTeW1ib2wodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0aW9uKHZh
bHVlKSkKKyAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOworCisgICAgICAgIGxldCBwcmVjaXNl
VHlwZSA9IEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKHZhbHVlKTsKKyAgICAgICAgaWYgKHBy
ZWNpc2VUeXBlKQorICAgICAgICAgICAgcmV0dXJuIHByZWNpc2VUeXBlOworCisgICAgICAgIC8v
IEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBp
ZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5s
ZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOworICAgICAgICB9IGNhdGNo
IHsgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHN0YXRpYyBkZXNjcmli
ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmIChpc0JpZ0ludCh2YWx1ZSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKQor
ICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKKworICAgICAgICBsZXQgc3VidHlw
ZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKKworICAgICAgICBpZiAoc3VidHlwZSA9
PT0gInJlZ2V4cCIpCisgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOworCisgICAg
ICAgIGlmIChzdWJ0eXBlID09PSAiZGF0ZSIpCisgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmco
dmFsdWUpOworCisgICAgICAgIGlmIChzdWJ0eXBlID09PSAiZXJyb3IiKQorICAgICAgICAgICAg
cmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKKworICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5
IikKKyAgICAgICAgICAgIHJldHVybiAiUHJveHkiOworCisgICAgICAgIGlmIChzdWJ0eXBlID09
PSAibm9kZSIpCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3KHZh
bHVlKTsKKworICAgICAgICBsZXQgY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVy
bmFsQ29uc3RydWN0b3JOYW1lKHZhbHVlKTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJh
eSIpCisgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOworCisgICAgICAgIGlmIChzdWJ0eXBl
ID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworCisgICAgICAgIC8vIE5vZGVM
aXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4K
KyAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZS50b1N0cmluZygpOworCisgICAgICAgIC8vIElmIE9iamVjdCwgdHJ5IGZvciBh
IGJldHRlciBuYW1lIGZyb20gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBpZiAoY2xhc3NOYW1l
ID09PSAiT2JqZWN0IikgeworICAgICAgICAgICAgbGV0IGNvbnN0cnVjdG9yTmFtZSA9IHZhbHVl
LmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7CisgICAgICAgICAgICBpZiAo
Y29uc3RydWN0b3JOYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWU7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xhc3NOYW1lOworICAgIH0KKworICAgIHN0
YXRpYyBub2RlUHJldmlldyhub2RlKQorICAgIHsKKyAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQg
PSBub2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsK
KyAgICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBu
b2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgc3dpdGNoIChub2RlLm5vZGVU
eXBlKSB7CisgICAgICAgIGNhc2UgMTogLy8gTm9kZS5FTEVNRU5UX05PREUKKyAgICAgICAgICAg
IGlmIChub2RlLmlkKQorICAgICAgICAgICAgICAgIHJldHVybiAiPCIgKyBub2RlTmFtZSArICIg
aWQ9XCIiICsgbm9kZS5pZCArICJcIj4iOworICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIGNsYXNz
PVwiIiArIG5vZGUuY2xhc3NMaXN0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrLywgIiAiKSArICJc
Ij4iOworICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUudHlwZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIHR5cGU9XCIiICsgbm9k
ZS50eXBlICsgIlwiPiI7CisgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiPiI7
CisKKyAgICAgICAgY2FzZSAzOiAvLyBOb2RlLlRFWFRfTk9ERQorICAgICAgICAgICAgcmV0dXJu
IG5vZGVOYW1lICsgIiBcIiIgKyBub2RlLm5vZGVWYWx1ZSArICJcIiI7CisKKyAgICAgICAgY2Fz
ZSA4OiAvLyBOb2RlLkNPTU1FTlRfTk9ERQorICAgICAgICAgICAgcmV0dXJuICI8IS0tIiArIG5v
ZGUubm9kZVZhbHVlICsgIi0tPiI7CisKKyAgICAgICAgY2FzZSAxMDogLy8gTm9kZS5ET0NVTUVO
VF9UWVBFX05PREUKKyAgICAgICAgICAgIHJldHVybiAiPCFET0NUWVBFICIgKyBub2RlTmFtZSAr
ICI+IjsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2luaXRpYWxQcmV2aWV3
KCkKKyAgICB7CisgICAgICAgIGxldCBwcmV2aWV3ID0geworICAgICAgICAgICAgdHlwZTogdGhp
cy50eXBlLAorICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9T
dHJpbmcodGhpcy52YWx1ZSksCisgICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKKyAgICAgICAg
fTsKKworICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7CisgICAgICAgICAgICBwcmV2aWV3LnN1
YnR5cGUgPSB0aGlzLnN1YnR5cGU7CisgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAi
bnVsbCIpIHsKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoInNpemUiIGluIHRoaXMpCisgICAgICAgICAgICBwcmV2aWV3
LnNpemUgPSB0aGlzLnNpemU7CisKKyAgICAgICAgcmV0dXJuIHByZXZpZXc7CisgICAgfQorCisg
ICAgX2VtcHR5UHJldmlldygpCisgICAgeworICAgICAgICBsZXQgcHJldmlldyA9IHRoaXMuX2lu
aXRpYWxQcmV2aWV3KCk7CisKKyAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwg
dGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0
aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIp
IHsKKyAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKKyAgICAgICAgICAgICAgICBwcmV2aWV3
LmVudHJpZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcHJldmlldzsKKyAgICB9CisKKyAgICBfZ2Vu
ZXJhdGVQcmV2aWV3KG9iamVjdCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cykKKyAg
ICB7CisgICAgICAgIGxldCBwcmV2aWV3ID0gdGhpcy5faW5pdGlhbFByZXZpZXcoKTsKKyAgICAg
ICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBz
ZWNvbmRMZXZlbEtleXM7CisgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RM
ZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOworCisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzVGhyZXNob2xkID0geworICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NS
ZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAg
ICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBm
aXJzdExldmVsS2V5c0NvdW50KQorICAgICAgICB9OworCisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAvLyBNYXBzLCBTZXRzLCBhbmQgSXRlcmF0b3JzIGhhdmUgZW50cmllcy4KKyAgICAgICAg
ICAgIGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIg
fHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3Nl
dCIgfHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0b3IiKQorICAgICAgICAgICAgICAgIHRoaXMu
X2FwcGVuZEVudHJ5UHJldmlld3Mob2JqZWN0LCBwcmV2aWV3KTsKKworICAgICAgICAgICAgcHJl
dmlldy5wcm9wZXJ0aWVzID0gW107CisKKyAgICAgICAgICAgIC8vIEludGVybmFsIFByb3BlcnRp
ZXMuCisgICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0gaW5qZWN0
ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUpOworICAg
ICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycykgeworICAgICAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQ
cm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtl
eXMsIHtpbnRlcm5hbDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcHJldmlldzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChwcmV2aWV3LmVudHJpZXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHByZXZpZXc7CisKKyAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCisgICAgICAgICAg
ICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVj
dGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmpl
Y3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxL
ZXlzLCBzZWNvbmRMZXZlbEtleXMpOworICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1Zh
bHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVlfSkKKyAgICAgICAgfSBjYXRjaCB7CisgICAg
ICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gcHJldmlldzsKKyAgICB9CisKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVj
dCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtl
eXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IHt9KQorICAgIHsKKyAgICAgICAgLy8g
RXJyb3IgaW4gZGVzY3JpcHRvci4KKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7
CisgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIERvIG5vdCBzaG93ICJfX3Byb3RvX18iIGluIHByZXZpZXcuCisgICAg
ICAgIGxldCBuYW1lID0gZGVzY3JpcHRvci5uYW1lOworICAgICAgICBpZiAobmFtZSA9PT0gIl9f
cHJvdG9fXyIpIHsKKyAgICAgICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2JqZWN0cyBt
YXkgaGF2ZSBpbnRlcmVzdGluZywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hvdy4KKyAg
ICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3Ry
dWN0b3IKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9
PSBAT2JqZWN0CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3Rv
ciAhPT0gQEFycmF5CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1
Y3RvciAhPT0gQFJlZ0V4cCkKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlv
bi5Db250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvciBhcnJheXMsIG9ubHkgYWxs
b3cgaW5kZXhlcy4KKyAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiAhaXNV
SW50MzIobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKKworICAgICAgICAvLyBEbyBub3Qgc2hvdyBub24tZW51bWVy
YWJsZSBub24tb3duIHByb3BlcnRpZXMuCisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBhbGxv
dyBhcnJheSBpbmRleGVzIHRoYXQgbWF5IGJlIG9uIHRoZSBwcm90b3R5cGUuCisgICAgICAgIC8v
IFNwZWNpYWwgY2FzZSB0byBhbGxvdyBuYXRpdmUgZ2V0dGVycyBvbiBub24tUmVnRXhwIG9iamVj
dHMuCisgICAgICAgIGlmICghZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmICFkZXNjcmlwdG9yLmlz
T3duICYmICEodGhpcy5zdWJ0eXBlID09PSAiYXJyYXkiIHx8ICh0aGlzLnN1YnR5cGUgIT09ICJy
ZWdleHAiICYmIGRlc2NyaXB0b3IubmF0aXZlR2V0dGVyKSkpCisgICAgICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKworICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVy
LgorICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBv
biB0aGUgYmFja2VuZC4KKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVs
S2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOworCisgICAgICAgIGZ1bmN0aW9uIGFwcGVuZFBy
ZXZpZXcocHJvcGVydHkpIHsKKyAgICAgICAgICAgIGlmICh0b1N0cmluZyhwcm9wZXJ0eS5uYW1l
ID4+PiAwKSA9PT0gcHJvcGVydHkubmFtZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzVGhy
ZXNob2xkLmluZGV4ZXMtLTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0aWVzVGhyZXNob2xkLnByb3BlcnRpZXMtLTsKKworICAgICAgICAgICAgaWYgKHByb3BlcnRp
ZXNUaHJlc2hvbGQuaW5kZXhlcyA8IDAgfHwgcHJvcGVydGllc1RocmVzaG9sZC5wcm9wZXJ0aWVz
IDwgMCkgeworICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCisgICAgICAgICAgICAgICAgcHJvcGVydHku
aW50ZXJuYWwgPSB0cnVlOworCisgICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChw
cm9wZXJ0eSk7CisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRj
aEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdldHRlci9zZXR0ZXIu
CisgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKKyAgICAgICAgICAgIHBy
ZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3
KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOdWxs
IHZhbHVlLgorICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOworICAgICAgICBp
ZiAodmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFt
ZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOworCisg
ICAgICAgIC8vIElnbm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCisgICAgICAgIGxldCB0
eXBlID0gdHlwZW9mIHZhbHVlOworICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZW51bWVyYWJsZSAm
JiB0eXBlID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CisKKyAgICAgICAgLy8gRml4IHR5cGUgb2Yg
ZG9jdW1lbnQuYWxsLgorICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENv
bGxlY3Rpb24odmFsdWUpKQorICAgICAgICAgICAgdHlwZSA9ICJvYmplY3QiOworCisgICAgICAg
IC8vIFByaW1pdGl2ZS4KKyAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gMTAwOworICAgICAgICBp
ZiAoaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkgfHwgaXNCaWdJbnQodmFsdWUpKSB7CisgICAgICAg
ICAgICBpZiAodHlwZSA9PT0gInN0cmluZyIgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVlLCBt
YXhMZW5ndGgsIHRydWUpOworICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1l
LCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFN5bWJvbC4KKyAgICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkgeworICAg
ICAgICAgICAgbGV0IHN5bWJvbFN0cmluZyA9IHRvU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChzeW1ib2xTdHJpbmcubGVuZ3RoID4gbWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAg
c3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1heExl
bmd0aCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5
cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9iamVj
dC4KKyAgICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OworICAgICAgICBsZXQgc3Vi
dHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKKyAgICAgICAgaWYgKHN1YnR5cGUp
CisgICAgICAgICAgICBwcm9wZXJ0eS5zdWJ0eXBlID0gc3VidHlwZTsKKworICAgICAgICAvLyBT
ZWNvbmQgbGV2ZWwuCisgICAgICAgIGlmICgoc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8IHNl
Y29uZExldmVsS2V5cykgfHwgdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0
KSkgeworICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2Vjb25kTGV2ZWxLZXlzIGZp
bHRlciB0byBjb250aW51ZSB3ZSB3b3VsZCBuZWVkIHNvbWUgcmVmYWN0b3JpbmcuCisgICAgICAg
ICAgICBsZXQgc3ViUHJldmlldyA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9y
VmFsdWUodmFsdWUsIHZhbHVlICE9PSBvYmplY3QsIHNlY29uZExldmVsS2V5cyk7CisgICAgICAg
ICAgICBwcm9wZXJ0eS52YWx1ZVByZXZpZXcgPSBzdWJQcmV2aWV3OworICAgICAgICAgICAgaWYg
KCFzdWJQcmV2aWV3Lmxvc3NsZXNzKQorICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3Mg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzdWJQcmV2aWV3Lm92ZXJmbG93KQorICAgICAgICAg
ICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0aW9uID0gIiI7CisgICAgICAgICAgICBpZiAodHlwZSAhPT0gImZ1
bmN0aW9uIiB8fCBzdWJ0eXBlID09PSAiY2xhc3MiKSB7CisgICAgICAgICAgICAgICAgbGV0IGZ1
bGxEZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikK
KyAgICAgICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gImNsYXNzICIgKyB2YWx1ZS5u
YW1lOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJub2RlIikKKyAgICAg
ICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZ1bGxE
ZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZSh2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb24gPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKGZ1bGxEZXNjcmlwdGlvbiwg
bWF4TGVuZ3RoLCBzdWJ0eXBlID09PSAicmVnZXhwIik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBwcm9wZXJ0eS52YWx1ZSA9IGRlc2NyaXB0aW9uOworICAgICAgICAgICAgcHJldmlldy5s
b3NzbGVzcyA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZp
ZXcocHJvcGVydHkpOworICAgIH0KKworICAgIF9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwg
cHJldmlldykKKyAgICB7CisgICAgICAgIC8vIEZldGNoIDYsIGJ1dCBvbmx5IHJldHVybiA1LCBz
byB3ZSBjYW4gdGVsbCBpZiB3ZSBvdmVyZmxvd2VkLgorICAgICAgICBsZXQgZW50cmllcyA9IGlu
amVjdGVkU2NyaXB0Ll9lbnRyaWVzKG9iamVjdCwgdGhpcy5zdWJ0eXBlLCAwLCA2KTsKKyAgICAg
ICAgaWYgKCFlbnRyaWVzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlbnRy
aWVzLmxlbmd0aCA+IDUpIHsKKyAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAg
ICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKKyAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3Mg
PSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1haW5QcmV2aWV3
KHN1YlByZXZpZXcpIHsKKyAgICAgICAgICAgIGlmICghc3ViUHJldmlldy5sb3NzbGVzcykKKyAg
ICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAg
ICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0Zv
clZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKKyAgICAgICAgICAg
IHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIGlmICgia2V5IiBp
biBlbnRyeSkgeworICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVjdC5jcmVh
dGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkua2V5LCBlbnRyeS5rZXkgIT09IG9iamVjdCk7
CisgICAgICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkua2V5KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKKyAgICB7CisgICAgICAgIGxl
dCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2JqZWN0KTsKKworICAgICAgICBy
ZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEpOwor
ICAgIH0KKworICAgIF9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0LCBrbm93bk9i
amVjdHMsIGRlcHRoKQorICAgIHsKKyAgICAgICAgLy8gRGVlcCBvYmplY3QuCisgICAgICAgIGlm
IChkZXB0aCA+IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gUHJp
bWl0aXZlLgorICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpIHx8IGlzQmlnSW50
KG9iamVjdCkgfHwgaXNTeW1ib2wob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIC8vIE51bGwuCisgICAgICAgIGlmIChvYmplY3QgPT09IG51bGwpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KKyAgICAgICAg
aWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICArK2RlcHRoOworICAgICAgICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisK
KyAgICAgICAgLy8gQXJyYXlzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDUgb3IgbGVzcyBzaW1w
bGUgb2JqZWN0cy4KKyAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShv
YmplY3QpOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gImFycmF5IikgeworICAgICAgICAgICAg
bGV0IGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7CisgICAgICAgICAgICBpZiAobGVuZ3RoID4gNSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZp
ZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0W2ldLCBrbm93bk9iamVjdHMsIGRlcHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3QgYSBiYXNpYyBvYmpl
Y3QuCisgICAgICAgIGlmIChvYmplY3QuX19wcm90b19fICYmIG9iamVjdC5fX3Byb3RvX18uX19w
cm90b19fKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIE9iamVjdHMg
YXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVz
LgorICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0KTsKKyAgICAgICAgaWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
QE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2lz
UHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmpl
Y3RzLCBkZXB0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgX2FiYnJldmlhdGVTdHJpbmcoc3Ry
aW5nLCBtYXhMZW5ndGgsIG1pZGRsZSkKKyAgICB7CisgICAgICAgIGlmIChzdHJpbmcubGVuZ3Ro
IDw9IG1heExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICAgICAgaWYg
KG1pZGRsZSkgeworICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7Cisg
ICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOworICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBz
dHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1
MjAyNiI7CisgICAgfQorfTsKKworLy8gLS0tLS0tLQorCitJbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eSA9IGZ1bmN0aW9uKG9yZGluYWwsIGNhbGxGcmFtZSkKK3sKKyAgICB0aGlzLmNhbGxG
cmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmpl
Y3RlZFNjcmlwdElkfX1gOworICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0
aW9uTmFtZTsKKyAgICB0aGlzLmxvY2F0aW9uID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1l
LnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2Fs
bEZyYW1lLmNvbHVtbn07CisgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hh
aW4oY2FsbEZyYW1lKTsKKyAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxG
cmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7CisgICAgdGhpcy5pc1RhaWxEZWxldGVkID0g
Y2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7Cit9OworCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eS5wcm90b3R5cGUgPSB7CisgICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKKyAgICB7
CisgICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CisgICAgICAg
IGxldCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwor
CisgICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgc2NvcGVDaGFpblBy
b3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihz
Y29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOworICAgICAg
ICByZXR1cm4gc2NvcGVDaGFpblByb3h5OworICAgIH0KK307CisKK0luamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKKyAgICAwOiAiZ2xvYmFsIiwgLy8gR0xP
QkFMX1NDT1BFCisgICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAgMjogImNsb3N1cmUi
LCAvLyBDTE9TVVJFX1NDT1BFCisgICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAgICA0
OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAgIDU6ICJnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQor
ICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKK307CisKK0lu
amVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihv
YmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCit7CisgICAgbGV0IHNjb3Bl
ID0geworICAgICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElk
KSwKKyAgICAgICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlw
ZU5hbWVzW3R5cGVdLAorICAgIH07CisKKyAgICBpZiAobmFtZSkKKyAgICAgICAgc2NvcGUubmFt
ZSA9IG5hbWU7CisKKyAgICBpZiAobG9jYXRpb24pCisgICAgICAgIHNjb3BlLmxvY2F0aW9uID0g
bG9jYXRpb247CisKKyAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQorICAgICAgICBzY29w
ZS5lbXB0eSA9IHRydWU7CisKKyAgICByZXR1cm4gc2NvcGU7Cit9CisKKy8vIC0tLS0tLS0KKwor
ZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQoreworICAgIGxldCBzYXZlZFJlc3Vs
dEFsaWFzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LnNhdmVkUmVzdWx0QWxpYXM7CisKKyAgICBsZXQg
ZGVmaW5lR2V0dGVyID0gKGtleSwgdmFsdWUsIHdyYXApID0+IHsKKyAgICAgICAgaWYgKHdyYXAp
IHsKKyAgICAgICAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICB2
YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2luYWxWYWx1ZTsgfTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKKyAgICAg
ICAgaWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQorICAg
ICAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZh
bHVlKTsKKyAgICB9OworCisgICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQp
CisgICAgICAgIGRlZmluZUdldHRlcigiXyIsIGluamVjdGVkU2NyaXB0Ll9sYXN0UmVzdWx0LCB0
cnVlKTsKKworICAgIGlmICgiX2V4Y2VwdGlvblZhbHVlIiBpbiBpbmplY3RlZFNjcmlwdCkKKyAg
ICAgICAgZGVmaW5lR2V0dGVyKCJleGNlcHRpb24iLCBpbmplY3RlZFNjcmlwdC5fZXhjZXB0aW9u
VmFsdWUsIHRydWUpOworCisgICAgaWYgKCJfZXZlbnRWYWx1ZSIgaW4gaW5qZWN0ZWRTY3JpcHQp
CisgICAgICAgIGRlZmluZUdldHRlcigiZXZlbnQiLCBpbmplY3RlZFNjcmlwdC5fZXZlbnRWYWx1
ZSwgdHJ1ZSk7CisKKyAgICAvLyAkMS0kOTkKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluamVj
dGVkU2NyaXB0Ll9zYXZlZFJlc3VsdHMubGVuZ3RoOyArK2kpCisgICAgICAgIGRlZmluZUdldHRl
cihpLCBpbmplY3RlZFNjcmlwdC5fc2F2ZWRSZXN1bHRzW2ldLCB0cnVlKTsKKworICAgIGZvciAo
bGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkuZ2V0dGVycykKKyAgICAgICAgZGVmaW5lR2V0dGVy
KG5hbWUsIENvbW1hbmRMaW5lQVBJLmdldHRlcnNbbmFtZV0pOworCisgICAgZm9yIChsZXQgbmFt
ZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1tuYW1lXTsKK30KKworQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9
OworCitDb21tYW5kTGluZUFQSS5tZXRob2RzID0ge307CisKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmpl
Y3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9OworCitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7IH07CisKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0
ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9OworCitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291
bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y291bnQoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVz
ZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y291bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVi
dWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
ZGVidWcoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJn
dW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50
cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4u
LmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1l
bnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1l
bnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNo
b3QoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5h
cmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFy
Z3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJn
dW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3Vt
ZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsg
fTsKKworZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgIENvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJm
dW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKworcmV0
dXJuIGluamVjdGVkU2NyaXB0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGUxM2NjNzI5ZThi
ZWQ0ODRiNTc1NzM5YTIyMWQwYzU1N2E0MWE3YzYuLjA5NjQ3Y2E2MDZiZWQ1MTZjMTU2Y2M5NzRm
MzQ0YTk0YTc5ZGE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAor
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgog
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5qZWN0ZWRT
Y3JpcHQuY2xlYXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5q
ZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0
cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQg
aWQpCitFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2Us
IHsgfSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bFRoaXMoKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
LSAgICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9u
bWVudC5ldmFsdWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFs
dWF0ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2
YWx1YXRpb25FeGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byog
ZnVuY3Rpb25WYWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5saW5rVGlt
ZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUu
ZXhjZXB0aW9uKCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvblZh
bHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAg
LTE2Niw3ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdz
KTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdC5nZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVkU2NyaXB0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlk
ID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3JlYXRlUmVz
dWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFs
T2JqZWN0LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlw
dChnbG9iYWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAgICAgICBh
dXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NFUlQoZXJyb3Ip
OwpAQCAtMTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAg
aWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4g
Y3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50
b1dURlN0cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJN
aXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIl
c1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDFm
NzQwYzQwNjg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIy
ZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCArNzUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50PiBtX3Nj
cmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVu
dDsKICAgICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWEx
MS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1
cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAg
ICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5l
QW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hl
biBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5h
bWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNj
cmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAg
ICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghaGFzSW5qZWN0
ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVS
ZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJj
ZSgpKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKGluamVj
dE1vZHVsZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwogICAgICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RNb2R1bGVS
ZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rp
b24pOwogICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyArOTEsNiBA
QCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+
IDApCiAgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdp
bmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRhdGEo
KSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0
KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXgg
Mjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZh
MDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGlj
OgogICAgIH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3Ry
aW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5q
ZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4
YzQ5MjVmNmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0
ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3RlZFNj
cmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkgewotCi0v
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFy
c2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBu
b24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwotCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0
b3I7Ci0KLWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKLXsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7
Ci19Ci0KLWZ1bmN0aW9uIHRvU3RyaW5nRGVzY3JpcHRpb24ob2JqKQotewotICAgIGlmIChvYmog
PT09IDAgJiYgMSAvIG9iaiA8IDApCi0gICAgICAgIHJldHVybiAiLTAiOwotCi0gICAgaWYgKGlz
QmlnSW50KG9iaikpCi0gICAgICAgIHJldHVybiB0b1N0cmluZyhvYmopICsgIm4iOwotCi0gICAg
cmV0dXJuIHRvU3RyaW5nKG9iaik7Ci19Ci0KLWZ1bmN0aW9uIGlzVUludDMyKG9iaikKLXsKLSAg
ICBpZiAodHlwZW9mIG9iaiA9PT0gIm51bWJlciIpCi0gICAgICAgIHJldHVybiBvYmogPj4+IDAg
PT09IG9iaiAmJiAob2JqID4gMCB8fCAxIC8gb2JqID4gMCk7Ci0gICAgcmV0dXJuICIiICsgKG9i
aiA+Pj4gMCkgPT09IG9iajsKLX0KLQotZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpCi17Ci0gICAg
cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gInN5bWJvbCI7Ci19Ci0KLWZ1bmN0aW9uIGlzQmlnSW50
KHZhbHVlKQotewotICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICJiaWdpbnQiOwotfQotCi1m
dW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9iamVjdCkKLXsKLSAgICBmb3IgKGxldCBrZXkgaW4gb2Jq
ZWN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0
aW9uIGlzRGVmaW5lZCh2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1ZSB8fCBJbmplY3RlZFNj
cmlwdEhvc3QuaXNIVE1MQWxsQ29sbGVjdGlvbih2YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGlzUHJp
bWl0aXZlVmFsdWUodmFsdWUpCi17Ci0gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKLSAgICBj
YXNlICJib29sZWFuIjoKLSAgICBjYXNlICJudW1iZXIiOgotICAgIGNhc2UgInN0cmluZyI6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgInVuZGVmaW5lZCI6Ci0gICAgICAgIHJldHVy
biAhSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24odmFsdWUpOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLS8vIC0tLS0tLS0KLQot
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKLXsKLSAgICBjb25zdHJ1
Y3RvcigpCi0gICAgewotICAgICAgICB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAg
ICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmpl
Y3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAg
ICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKLSAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5k
ZXggPSAxOwotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBbXTsKLSAgICB9Ci0KLSAgICAv
LyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCi0KLSAgICBleGVjdXRlKGZ1bmN0aW9uU3RyaW5nLCBv
YmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGFyZ3MpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
d3JhcEFuZFNhdmVDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZp
ZXcsIHNhdmVSZXN1bHQsICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZy
YW1lID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9z
dCwgZnVuY3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVB
UEkpLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGV2
YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
dmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxP
bkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQpOwotICAgIH0KLQotICAgIGF3YWl0UHJvbWlzZShwcm9taXNl
T2JqZWN0SWQsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgY2Fs
bGJhY2spCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkUHJvbWlzZU9iamVjdElkID0gdGhpcy5f
cGFyc2VPYmplY3RJZChwcm9taXNlT2JqZWN0SWQpOwotICAgICAgICBsZXQgcHJvbWlzZU9iamVj
dCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZFByb21pc2VPYmplY3RJZCk7Ci0gICAgICAgIGxl
dCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJz
ZWRQcm9taXNlT2JqZWN0SWQuaWRdOwotCi0gICAgICAgIGlmICghaXNEZWZpbmVkKHByb21pc2VP
YmplY3QpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdp
dGggZ2l2ZW4gaWQiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlKSkgewotICAgICAgICAgICAg
Y2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVl
KSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAg
IHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3Qu
Y3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5l
cmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKHNhdmVSZXN1
bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9zYXZlUmVzdWx0KHJldHVybk9iamVjdC5yZXN1bHQpOwotICAgICAg
ICAgICAgICAgIGlmICh0aGlzLl9zYXZlZFJlc3VsdEluZGV4KQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrKHJldHVybk9iamVjdCk7Ci0g
ICAgICAgIH07Ci0gICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RH
cm91cE5hbWUpKTsKLSAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29s
dmUsIHJlamVjdCk7Ci0gICAgfQotCi0gICAgZXZhbHVhdGVPbkNhbGxGcmFtZSh0b3BDYWxsRnJh
bWUsIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCi0gICAg
ewotICAgICAgICBsZXQgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZy
YW1lLCBjYWxsRnJhbWVJZCk7Ci0gICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAg
cmV0dXJuICJDb3VsZCBub3QgZmluZCBjYWxsIGZyYW1lIHdpdGggZ2l2ZW4gaWQiOwotICAgICAg
ICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0aGlzLl9l
dmFsdWF0ZUFuZFdyYXAoY2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBjYWxs
RnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1
bHQpOwotICAgIH0KLQotICAgIGNhbGxGdW5jdGlvbk9uKG9iamVjdElkLCBleHByZXNzaW9uLCBh
cmdzLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgewotICAgICAgICBsZXQg
cGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAg
bGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAg
bGV0IG9iamVjdEdyb3VwTmFtZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2Jq
ZWN0SWQuaWRdOwotCi0gICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAg
ICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKLQotICAgICAg
ICBsZXQgcmVzb2x2ZWRBcmdzID0gW107Ci0gICAgICAgIGlmIChhcmdzKSB7Ci0gICAgICAgICAg
ICBsZXQgY2FsbEFyZ3MgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7Ci0gICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0g
dGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJnc1tpXSk7Ci0gICAgICAgICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBsZXQgZnVuYyA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIg
KyBleHByZXNzaW9uICsgIikiKTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1
bmN0aW9uIikKLSAgICAgICAgICAgICAgICByZXR1cm4gIkdpdmVuIGV4cHJlc3Npb24gZG9lcyBu
b3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlvbiI7Ci0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJl
bW90ZU9iamVjdC5jcmVhdGUoZnVuYy5hcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVj
dEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAg
fTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0
ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBnZXRGdW5jdGlvbkRldGFpbHMob2JqZWN0SWQpCi0gICAgewotICAgICAgICBsZXQgcGFyc2Vk
T2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9i
amVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgaWYgKHR5
cGVvZiBvYmplY3QgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICByZXR1cm4gIkNhbm5vdCBy
ZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7Ci0gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uRGV0
YWlscyhvYmplY3QpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uRGV0YWlscyhmdW5jKQotICAgIHsK
LSAgICAgICAgbGV0IGRldGFpbHMgPSBJbmplY3RlZFNjcmlwdEhvc3QuZnVuY3Rpb25EZXRhaWxz
KGZ1bmMpOwotICAgICAgICBpZiAoIWRldGFpbHMpCi0gICAgICAgICAgICByZXR1cm4gIkNhbm5v
dCByZXNvbHZlIGZ1bmN0aW9uIGRldGFpbHMuIjsKLSAgICAgICAgcmV0dXJuIGRldGFpbHM7Ci0g
ICAgfQotCi0gICAgZ2V0UHJldmlldyhvYmplY3RJZCkKLSAgICB7Ci0gICAgICAgIGxldCBwYXJz
ZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwotICAgICAgICBsZXQg
b2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOwotICAgICAgICByZXR1
cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZShvYmplY3QsIHRydWUp
OwotICAgIH0KLQotICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZl
dGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGxl
dCBjb2xsZWN0aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0
aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxs
UHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQs
IGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3
fSk7Ci0gICAgfQotCi0gICAgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKG9iamVjdElkLCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgewotICAgICAgICBsZXQg
Y29sbGVjdGlvbk1vZGUgPSBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0
aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuTmF0aXZlR2V0dGVyUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3LCBuYXRpdmVH
ZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsKLSAgICB9Ci0KLSAgICBnZXRJbnRlcm5hbFByb3BlcnRp
ZXMob2JqZWN0SWQsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGxldCBwYXJzZWRP
YmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwotICAgICAgICBsZXQgb2Jq
ZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOwotICAgICAgICBsZXQgb2Jq
ZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5p
ZF07Ci0KLSAgICAgICAgaWYgKCFpc0RlZmluZWQob2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAoaXNTeW1ib2wob2JqZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSB0aGlzLl9pbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsKLSAgICAgICAgaWYgKCFkZXNjcmlwdG9ycykKLSAg
ICAgICAgICAgIHJldHVybiBbXTsKLQotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc2Ny
aXB0b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IGRlc2Ny
aXB0b3JzW2ldOwotICAgICAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikKLSAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlw
dG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwotICAgIH0KLQotICAgIGdldENv
bGxlY3Rpb25FbnRyaWVzKG9iamVjdElkLCBvYmplY3RHcm91cE5hbWUsIGZldGNoU3RhcnQsIGZl
dGNoQ291bnQpCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJz
ZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZv
cklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgb2JqZWN0R3JvdXBOYW1lID0gb2JqZWN0R3Jv
dXBOYW1lIHx8IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwot
Ci0gICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgIT09ICJvYmplY3QiKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGxldCBlbnRyaWVzID0gdGhpcy5fZW50cmllcyhvYmplY3QsIEluamVj
dGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCksIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwot
ICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAg
IGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS52YWx1ZSwgb2JqZWN0R3Jv
dXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpCi0g
ICAgICAgICAgICAgICAgZW50cnkua2V5ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS5rZXks
IG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5
OwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04p
Ci0gICAgewotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKLQotICAgICAgICB0
cnkgewotICAgICAgICAgICAgbGV0IGNhbGxBcmd1bWVudCA9IEluamVjdGVkU2NyaXB0SG9zdC5l
dmFsdWF0ZSgiKCIgKyBjYWxsQXJndW1lbnRKU09OICsgIikiKTsKLSAgICAgICAgICAgIGxldCB2
YWx1ZSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3VtZW50KTsKLSAgICAgICAg
ICAgIHRoaXMuX3NhdmVSZXN1bHQodmFsdWUpOwotICAgICAgICB9IGNhdGNoIHsgfQotCi0gICAg
ICAgIHJldHVybiB0aGlzLl9zYXZlZFJlc3VsdEluZGV4OwotICAgIH0KLQotICAgIHdyYXBDYWxs
RnJhbWVzKGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICAgICAg
bGV0IGRlcHRoID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3
IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOwotICAg
ICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKLSAgICAgICAgfSB3aGlsZSAo
Y2FsbEZyYW1lKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB3cmFwT2Jq
ZWN0KG9iamVjdCwgZ3JvdXBOYW1lLCBjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdl
bmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkR2xv
YmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrV3JhcHBlcihvYmpl
Y3QpOwotCi0gICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBO
YW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICB9Ci0KLSAgICB3cmFwSlNPTlN0cmlu
Zyhqc29uU3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNv
blN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICAgICAgfSBj
YXRjaCB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHdyYXBUYWJsZShjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1bW5z
KQotICAgIHsKLSAgICAgICAgaWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tXcmFwcGVyKHRhYmxlKTsKLQotICAgICAg
ICAvLyBGSVhNRTogQ3VycmVudGx5IGNvbHVtbnMgYXJlIGlnbm9yZWQuIEluc3RlYWQsIHRoZSBm
cm9udGVuZCBmaWx0ZXJzIGFsbAotICAgICAgICAvLyBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBw
cm92aWRlZCBjb2x1bW4gbmFtZXMgYW5kIGluIHRoZSBwcm92aWRlZCBvcmRlci4KLSAgICAgICAg
Ly8gV2UgY291bGQgZmlsdGVyIGhlcmUgdG8gYXZvaWQgc2VuZGluZyB2ZXJ5IGxhcmdlIHByZXZp
ZXcgb2JqZWN0cy4KLQotICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOwotICAgICAgICBp
ZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtj
b2x1bW5zXTsKLQotICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1u
cykgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gW107Ci0gICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICAgICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBm
YWxzZSwgdHJ1ZSwgY29sdW1uTmFtZXMpOwotICAgIH0KLQotICAgIHByZXZpZXdWYWx1ZSh2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmll
d0ZvclZhbHVlKHZhbHVlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBzZXRFdmVudFZhbHVlKHZhbHVl
KQotICAgIHsKLSAgICAgICAgdGhpcy5fZXZlbnRWYWx1ZSA9IHZhbHVlOwotICAgIH0KLQotICAg
IGNsZWFyRXZlbnRWYWx1ZSgpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZXZlbnRWYWx1
ZTsKLSAgICB9Ci0KLSAgICBzZXRFeGNlcHRpb25WYWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX2V4Y2VwdGlvblZhbHVlID0gdmFsdWU7Ci0gICAgfQotCi0gICAgY2xlYXJFeGNlcHRp
b25WYWx1ZSgpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZXhjZXB0aW9uVmFsdWU7Ci0g
ICAgfQotCi0gICAgZmluZE9iamVjdEJ5SWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICBsZXQg
cGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICB9Ci0KLSAgICBy
ZWxlYXNlT2JqZWN0KG9iamVjdElkKQotICAgIHsKLSAgICAgICAgbGV0IHBhcnNlZE9iamVjdElk
ID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7Ci0gICAgICAgIHRoaXMuX3JlbGVhc2VP
YmplY3QocGFyc2VkT2JqZWN0SWQuaWQpOwotICAgIH0KLQotICAgIHJlbGVhc2VPYmplY3RHcm91
cChvYmplY3RHcm91cE5hbWUpCi0gICAgewotICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lID09
PSAiY29uc29sZSIpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0OwotICAg
ICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAgICAgICAgdGhp
cy5fc2F2ZWRSZXN1bHRzID0gW107Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgZ3JvdXAgPSB0
aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKLSAgICAgICAgaWYgKCFncm91cCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3Vw
Lmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgdGhpcy5fcmVsZWFzZU9iamVjdChncm91cFtpXSk7
Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwot
ICAgIH0KLQotICAgIGNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KGNhbGxGcmFtZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lIHx8IG51bGwpOwot
ICAgIH0KLQotICAgIC8vIENvbW1hbmRMaW5lQVBJCi0KLSAgICBpbnNwZWN0T2JqZWN0KG9iamVj
dCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9pbnNwZWN0T2JqZWN0KQotICAgICAgICAgICAg
dGhpcy5faW5zcGVjdE9iamVjdChvYmplY3QpOwotICAgIH0KLQotICAgIC8vIEluamVjdGVkU2Ny
aXB0TW9kdWxlIEMrKyBBUEkKLQotICAgIGhhc0luamVjdGVkTW9kdWxlKG5hbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKLSAgICB9Ci0KLSAgICBpbmplY3RN
b2R1bGUobmFtZSwgc291cmNlLCBob3N0KQotICAgIHsKLSAgICAgICAgdGhpcy5fbW9kdWxlc1tu
YW1lXSA9IGZhbHNlOwotCi0gICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2Ny
aXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwotICAgICAgICBpZiAodHlwZW9m
IG1vZHVsZUZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9y
OiBXZWIgSW5zcGVjdG9yOiBhIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxl
IjsKLSAgICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1h
bmRMaW5lQVBJfSwgaG9zdCk7Ci0KLSAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7
Ci0gICAgfQotCi0gICAgLy8gSW5qZWN0ZWRTY3JpcHRNb2R1bGUgSmF2YVNjcmlwdCBBUEkKLQot
ICAgIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gaXNQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3BhcnNl
T2JqZWN0SWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0LmV2YWx1YXRlKCIoIiArIG9iamVjdElkICsgIikiKTsKLSAgICB9Ci0KLSAgICBfb2JqZWN0
Rm9ySWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWRUb1dyYXBwZWRP
YmplY3Rbb2JqZWN0SWQuaWRdOwotICAgIH0KLQotICAgIF9iaW5kKG9iamVjdCwgb2JqZWN0R3Jv
dXBOYW1lKQotICAgIHsKLSAgICAgICAgbGV0IGlkID0gdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQr
KzsKLSAgICAgICAgbGV0IG9iamVjdElkID0gYHsiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3Rl
ZFNjcmlwdElkfSwiaWQiOiR7aWR9fWA7Ci0KLSAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmpl
Y3RbaWRdID0gb2JqZWN0OwotCi0gICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUpIHsKLSAgICAg
ICAgICAgIGxldCBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwot
ICAgICAgICAgICAgaWYgKCFncm91cCkgewotICAgICAgICAgICAgICAgIGdyb3VwID0gW107Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91
cDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2goaWQpOwotICAgICAgICAg
ICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5hbWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gb2JqZWN0SWQ7Ci0gICAgfQotCi0gICAgX3JlbGVhc2VP
YmplY3QoaWQpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5faWRUb1dyYXBwZWRPYmplY3Rb
aWRdOwotICAgICAgICBkZWxldGUgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF07Ci0gICAg
fQotCi0gICAgX2ZhbGxiYWNrV3JhcHBlcihvYmplY3QpCi0gICAgewotICAgICAgICBsZXQgcmVz
dWx0ID0ge307Ci0gICAgICAgIHJlc3VsdC50eXBlID0gdHlwZW9mIG9iamVjdDsKLSAgICAgICAg
aWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKLSAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9
IG9iamVjdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmRlc2NyaXB0aW9uID0g
dG9TdHJpbmdEZXNjcmlwdGlvbihvYmplY3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLQotICAgIF9yZXNvbHZlQ2FsbEFyZ3VtZW50KGNhbGxBcmd1bWVudEpTT04pCi0gICAgewot
ICAgICAgICBpZiAoInZhbHVlIiBpbiBjYWxsQXJndW1lbnRKU09OKQotICAgICAgICAgICAgcmV0
dXJuIGNhbGxBcmd1bWVudEpTT04udmFsdWU7Ci0KLSAgICAgICAgbGV0IG9iamVjdElkID0gY2Fs
bEFyZ3VtZW50SlNPTi5vYmplY3RJZDsKLSAgICAgICAgaWYgKG9iamVjdElkKSB7Ci0gICAgICAg
ICAgICBsZXQgcGFyc2VkQXJnSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAg
ICAgICAgICAgIGlmICghcGFyc2VkQXJnSWQgfHwgcGFyc2VkQXJnSWRbImluamVjdGVkU2NyaXB0
SWQiXSAhPT0gaW5qZWN0ZWRTY3JpcHRJZCkKLSAgICAgICAgICAgICAgICB0aHJvdyAiQXJndW1l
bnRzIHNob3VsZCBiZWxvbmcgdG8gdGhlIHNhbWUgSmF2YVNjcmlwdCB3b3JsZCBhcyB0aGUgdGFy
Z2V0IG9iamVjdC4iOwotCi0gICAgICAgICAgICBsZXQgcmVzb2x2ZWRBcmcgPSB0aGlzLl9vYmpl
Y3RGb3JJZChwYXJzZWRBcmdJZCk7Ci0gICAgICAgICAgICBpZiAoIWlzRGVmaW5lZChyZXNvbHZl
ZEFyZykpCi0gICAgICAgICAgICAgICAgdGhyb3cgIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRo
IGdpdmVuIGlkIjsKLQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQXJnOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICB9Ci0KLSAgICBfY3JlYXRlVGhyb3du
VmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQotICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVj
dCA9IFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIG9iamVjdEdyb3VwKTsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3Jp
cHRpb24odmFsdWUpOwotICAgICAgICB9IGNhdGNoIHsgfQotICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmpl
Y3QKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlv
biwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZl
UmVzdWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmpl
Y3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9
PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9i
amVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIF93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3Jv
dXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgZnVuYykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl93cmFwQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlW
YWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7Ci0gICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gZnVuYygpOwotICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpCi0gICAgICAg
ICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdChyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgX3dyYXBDYWxsKG9iamVjdEdyb3VwLCBy
ZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGZ1bmMpCi0gICAgewot
ICAgICAgICB0cnkgewotICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7Ci0K
LSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhy
b3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUo
ZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRS
ZXN1bHRJbmRleCkKLSAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRl
eCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7Ci0KLSAgICAgICAgICAgIHJldHVybiByZXR1cm5P
YmplY3Q7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9j
cmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBfZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25D
YWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkKLSAgICB7Ci0gICAgICAgIGxldCBjb21t
YW5kTGluZUFQSSA9IG51bGw7Ci0gICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCi0g
ICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmpl
Y3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBudWxsKTsKLSAgICAgICAgcmV0dXJuIGV2
YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwotICAg
IH0KLQotICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQotICAg
IHsKLSAgICAgICAgbGV0IHBhcnNlZENhbGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2
YWx1YXRlKCIoIiArIGNhbGxGcmFtZUlkICsgIikiKTsKLSAgICAgICAgbGV0IG9yZGluYWwgPSBw
YXJzZWRDYWxsRnJhbWVJZFsib3JkaW5hbCJdOwotICAgICAgICBsZXQgY2FsbEZyYW1lID0gdG9w
Q2FsbEZyYW1lOwotICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQot
ICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKLSAgICAgICAgcmV0dXJu
IGNhbGxGcmFtZTsKLSAgICB9Ci0KLSAgICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVj
dGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2
ZUdldHRlcnNBc1ZhbHVlc30pCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0
aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMu
X29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdEdyb3VwTmFt
ZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwotCi0gICAg
ICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKGlzU3ltYm9sKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgbGV0IHN0YXJ0ID0gZmV0Y2hTdGFydCB8fCAwOwotICAgICAgICBpZiAoc3Rh
cnQgPCAwKQotICAgICAgICAgICAgc3RhcnQgPSAwOwotCi0gICAgICAgIGxldCBjb3VudCA9IGZl
dGNoQ291bnQgfHwgMDsKLSAgICAgICAgaWYgKGNvdW50IDwgMCkKLSAgICAgICAgICAgIGNvdW50
ID0gMDsKLQotICAgICAgICAvLyBBbHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwg
YnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRjaC4KLSAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9
ICFzdGFydDsKLQotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKLSAgICAgICAgdGhpcy5f
Zm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3Jp
cHRvcikgPT4gewotICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgewotICAgICAgICAgICAgICAg
IC0tc3RhcnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgi
Z2V0IiBpbiBkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gUmVt
b3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLmdldCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAg
ICAgICAgIGlmICgic2V0IiBpbiBkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc2V0ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnNldCwgb2JqZWN0R3JvdXBO
YW1lKTsKLSAgICAgICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpCi0gICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci52
YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICAgICAg
ICAgIGlmICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2JqZWN0
R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7Ci0K
LSAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVu
Z3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsK
LQotICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291
bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdl
dHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7Ci0gICAgICAgIHJldHVybiBkZXNjcmlwdG9y
czsKLSAgICB9Ci0KLSAgICBfaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgY29t
cGxldGVEZXNjcmlwdG9yKQotICAgIHsKLSAgICAgICAgbGV0IGludGVybmFsUHJvcGVydGllcyA9
IEluamVjdGVkU2NyaXB0SG9zdC5nZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0KTsKLSAgICAg
ICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQot
ICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBpbnRlcm5hbFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGxldCBwcm9w
ZXJ0eSA9IGludGVybmFsUHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9y
ID0ge25hbWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07Ci0gICAgICAg
ICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iu
aXNPd24gPSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9yKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7Ci0gICAgfQotCi0gICAgX2Zv
ckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJhY2ss
IHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pCi0gICAgewotICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBTZXQ7Ci0K
LSAgICAgICAgLy8gSGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBu
YW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90b19fIik7Ci0KLSAgICAgICAgZnVuY3Rpb24gY3JlYXRl
RmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVy
dHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgewotICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6
IG9iamVjdFtuYW1lXX07Ci0gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBmYWtlRGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZha2VEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWtl
RGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3IubmF0aXZlR2V0dGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNPd25Qcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iu
aXNPd24gPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAg
ICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJvbDsKLSAgICAgICAgICAgICAgICAv
LyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBjcmVh
dGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9uZyB0aGlzIG9i
amVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2Vv
ZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRp
dmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQotICAgICAgICAgICAgICAg
ICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3
YXNUaHJvd246IHRydWV9OwotICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5KQotICAg
ICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5z
eW1ib2wgPSBzeW1ib2w7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yRGVzY3JpcHRvcjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEZXNj
cmlwdG9yKGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dl
dHRlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQWxsIHByb3BlcnRpZXMuCi0gICAgICAg
ICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5B
bGxQcm9wZXJ0aWVzKQotICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhkZXNjcmlwdG9y
KTsKLQotICAgICAgICAgICAgLy8gT3duIHByb3BlcnRpZXMuCi0gICAgICAgICAgICBpZiAoY29s
bGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVz
ICYmIGlzT3duUHJvcGVydHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGRlc2Ny
aXB0b3IpOwotCi0gICAgICAgICAgICAvLyBOYXRpdmUgR2V0dGVyIHByb3BlcnRpZXMuCi0gICAg
ICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9k
ZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxl
TmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KGRlc2NyaXB0b3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFtZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
Q29udGludWU7Ci0KLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7
Ci0KLSAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1l
IDogbnVsbDsKLQotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWRlc2Ny
aXB0b3IpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3
ZSBnZXQgaGVyZT8KLSAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmlj
dGl2ZSBzZXR0aW5ncy4KLSAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVh
dGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9w
ZXJ0eSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNj
cmlwdG9yLCBpc093blByb3BlcnR5KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVz
Y3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9y
LmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5z
ZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ug
c2hvdWxkIGJlIHJlc2lsaWVudDoKLSAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCi0gICAgICAgICAgICAgICAgICAgIGxldCBm
YWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBk
ZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVl
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlc2Ny
aXB0b3IubmFtZSA9IG5hbWU7Ci0gICAgICAgICAgICBpZiAoaXNPd25Qcm9wZXJ0eSkKLSAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzeW1i
b2wpCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7Ci0gICAgICAg
ICAgICByZXR1cm4gcHJvY2Vzc0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVu
Z3RoID4gMDsKLSAgICAgICAgfSBjYXRjaCB7IH0KLQotICAgICAgICBmb3IgKGxldCBvID0gb2Jq
ZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKLSAgICAg
ICAgICAgIGxldCBpc093blByb3BlcnR5ID0gbyA9PT0gb2JqZWN0OwotICAgICAgICAgICAgbGV0
IHNob3VsZEJyZWFrID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMjAxODYxPiBXZWIgSW5zcGVjdG9yOiBzaG93IGF1dG9jb21wbGV0ZSBlbnRy
aWVzIGZvciBub24taW5kZXggcHJvcGVydGllcyBvbiBhcnJheXMKLSAgICAgICAgICAgIGlmIChp
c0FycmF5TGlrZSAmJiBpc093blByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBvLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKGkg
aW4gbykpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHRvU3RyaW5nKGkpLCBpc093
blByb3BlcnR5KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBs
ZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwotICAgICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHBy
b3BlcnR5TmFtZXNbaV0sIGlzT3duUHJvcGVydHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5T
dG9wOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChzaG91bGRCcmVhaykKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKLSAgICAgICAgICAg
ICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhv
KTsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9scy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1By
b3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0
eUZldGNoQWN0aW9uLlN0b3A7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRCcmVhaykK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgPT09IEluamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7Ci0gICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgIGlmIChvYmplY3QuX19wcm90b19fKQotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVlOiBvYmplY3QuX19wcm90
b19fLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBpc093bjogdHJ1ZX0pOwot
ICAgICAgICAgICAgfSBjYXRjaCB7IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIF9nZXRTZXRF
bnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIGxl
dCBlbnRyaWVzID0gW107Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBp
ZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAg
ICAgICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKLSAgICAgICAgICAgIGlmIChmZXRjaFN0
YXJ0ID4gMCkgewotICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZW50cmllcy5wdXNoKHt2
YWx1ZX0pOwotCi0gICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9
PT0gZmV0Y2hDb3VudCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBlbnRyaWVzOwotICAgIH0KLQotICAgIF9nZXRNYXBFbnRyaWVzKG9iamVjdCwg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107
Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVy
cmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBb
a2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDAp
IHsKLSAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07Ci0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7a2V5LCB2YWx1
ZX0pOwotCi0gICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0g
ZmV0Y2hDb3VudCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBlbnRyaWVzOwotICAgIH0KLQotICAgIF9nZXRXZWFrTWFwRW50cmllcyhvYmplY3Qs
IGZldGNoQ291bnQpCi0gICAgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Lndl
YWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7Ci0gICAgfQotCi0gICAgX2dldFdlYWtT
ZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdEhvc3Qud2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKLSAgICB9
Ci0KLSAgICBfZ2V0SXRlcmF0b3JFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QuaXRlcmF0b3JFbnRyaWVzKG9iamVjdCwg
ZmV0Y2hDb3VudCk7Ci0gICAgfQotCi0gICAgX2VudHJpZXMob2JqZWN0LCBzdWJ0eXBlLCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50KQotICAgIHsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJzZXQi
KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0
YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJtYXAiKQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRj
aENvdW50KTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJ3ZWFrbWFwIikKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLl9nZXRXZWFrTWFwRW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpOwotICAg
ICAgICBpZiAoc3VidHlwZSA9PT0gIndlYWtzZXQiKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2dldFdlYWtTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7Ci0gICAgICAgIGlmIChzdWJ0
eXBlID09PSAiaXRlcmF0b3IiKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEl0ZXJhdG9y
RW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpOwotCi0gICAgICAgIHRocm93ICJ1bmV4cGVjdGVk
IHR5cGUiOwotICAgIH0KLQotICAgIF9zYXZlUmVzdWx0KHJlc3VsdCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5k
ZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7
Ci0gICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgdGhpcy5f
c2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5fbmV4dFNh
dmVkUmVzdWx0SW5kZXg7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0c1t0aGlzLl9uZXh0U2F2
ZWRSZXN1bHRJbmRleCsrXSA9IHJlc3VsdDsKLQotICAgICAgICAvLyAkbiBpcyBsaW1pdGVkIGZy
b20gJDEtJDk5LiAkMCBpcyBzcGVjaWFsLgotICAgICAgICBpZiAodGhpcy5fbmV4dFNhdmVkUmVz
dWx0SW5kZXggPj0gMTAwKQotICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXgg
PSAxOwotICAgIH0KLX07Ci0KLUluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAg
IE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAg
TmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRp
ZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAg
ICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OwotCi1J
bmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uID0gewotICAgIENvbnRpbnVlOiBTeW1i
b2woImNvbnRpbnVlIiksCi0gICAgU3RvcDogU3ltYm9sKCJzdG9wIiksCi19Ci0KLXZhciBpbmpl
Y3RlZFNjcmlwdCA9IG5ldyBJbmplY3RlZFNjcmlwdDsKLQotLy8gLS0tLS0tLQotCi1sZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3Iob2JqZWN0
LCBvYmplY3RHcm91cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVt
bk5hbWVzKQotICAgIHsKLSAgICAgICAgdGhpcy50eXBlID0gdHlwZW9mIG9iamVjdDsKLQotICAg
ICAgICBpZiAodGhpcy50eXBlID09PSAidW5kZWZpbmVkIiAmJiBJbmplY3RlZFNjcmlwdEhvc3Qu
aXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpKQotICAgICAgICAgICAgdGhpcy50eXBlID0gIm9i
amVjdCI7Ci0KLSAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBpc0JpZ0lu
dChvYmplY3QpIHx8IG9iamVjdCA9PT0gbnVsbCB8fCBmb3JjZVZhbHVlVHlwZSkgewotICAgICAg
ICAgICAgLy8gV2UgZG9uJ3Qgc2VuZCB1bmRlZmluZWQgdmFsdWVzIG92ZXIgSlNPTi4KLSAgICAg
ICAgICAgIC8vIEJpZ0ludCB2YWx1ZXMgYXJlIG5vdCBKU09OIHNlcmlhbGl6YWJsZS4KLSAgICAg
ICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICJ1bmRlZmluZWQiICYmIHRoaXMudHlwZSAhPT0gImJp
Z2ludCIpCi0gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG9iamVjdDsKLQotICAgICAgICAg
ICAgLy8gTnVsbCBvYmplY3QgaXMgb2JqZWN0IHdpdGggJ251bGwnIHN1YnR5cGUuCi0gICAgICAg
ICAgICBpZiAob2JqZWN0ID09PSBudWxsKQotICAgICAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9
ICJudWxsIjsKLQotICAgICAgICAgICAgLy8gUHJvdmlkZSB1c2VyLWZyaWVuZGx5IG51bWJlciB2
YWx1ZXMuCi0gICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAibnVtYmVyIiB8fCB0aGlzLnR5
cGUgPT09ICJiaWdpbnQiKQotICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0b1N0
cmluZ0Rlc2NyaXB0aW9uKG9iamVjdCk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMub2JqZWN0SWQgPSBpbmplY3RlZFNjcmlwdC5fYmluZChvYmplY3Qs
IG9iamVjdEdyb3VwTmFtZSk7Ci0KLSAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZShvYmplY3QpOwotICAgICAgICBpZiAoc3VidHlwZSkKLSAgICAgICAgICAgIHRoaXMu
c3VidHlwZSA9IHN1YnR5cGU7Ci0KLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBJbmplY3RlZFNj
cmlwdEhvc3QuaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUob2JqZWN0KTsKLSAgICAgICAgdGhpcy5k
ZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZShvYmplY3QpOwotCi0gICAgICAgIGlm
IChzdWJ0eXBlID09PSAiYXJyYXkiKQotICAgICAgICAgICAgdGhpcy5zaXplID0gdHlwZW9mIG9i
amVjdC5sZW5ndGggPT09ICJudW1iZXIiID8gb2JqZWN0Lmxlbmd0aCA6IDA7Ci0gICAgICAgIGVs
c2UgaWYgKHN1YnR5cGUgPT09ICJzZXQiIHx8IHN1YnR5cGUgPT09ICJtYXAiKQotICAgICAgICAg
ICAgdGhpcy5zaXplID0gb2JqZWN0LnNpemU7Ci0gICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09
ICJ3ZWFrbWFwIikKLSAgICAgICAgICAgIHRoaXMuc2l6ZSA9IEluamVjdGVkU2NyaXB0SG9zdC53
ZWFrTWFwU2l6ZShvYmplY3QpOwotICAgICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAid2Vha3Nl
dCIpCi0gICAgICAgICAgICB0aGlzLnNpemUgPSBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha1NldFNp
emUob2JqZWN0KTsKLSAgICAgICAgZWxzZSBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikgewotICAg
ICAgICAgICAgdGhpcy5jbGFzc1Byb3RvdHlwZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0
LnByb3RvdHlwZSwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1l
ID0gb2JqZWN0Lm5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2VuZXJhdGVQcmV2aWV3
ICYmIHRoaXMudHlwZSA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgICAgIGlmIChzdWJ0eXBlID09
PSAicHJveHkiKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJh
dGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkpOwot
ICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQ
cmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyBjcmVhdGUob2JqZWN0LCBvYmplY3RHcm91
cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQotICAg
IHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KG9i
amVjdCwgb2JqZWN0R3JvdXBOYW1lLCBmb3JjZVZhbHVlVHlwZSwgZ2VuZXJhdGVQcmV2aWV3LCBj
b2x1bW5OYW1lcyk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGxldCBkZXNj
cmlwdGlvbjsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24g
PSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChleCkgewot
ICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlv
bik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgY3JlYXRlT2JqZWN0UHJldmlld0Zv
clZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQotICAgIHsKLSAgICAg
ICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3QodmFsdWUsIHVuZGVmaW5lZCwg
ZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwotICAgICAgICBpZiAocmVtb3Rl
T2JqZWN0Lm9iamVjdElkKQotICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVj
dChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwotICAgICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNz
UHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkKLSAgICAg
ICAgICAgIGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3QocmVtb3RlT2JqZWN0LmNsYXNzUHJv
dG90eXBlLm9iamVjdElkKTsKLSAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdC5wcmV2aWV3IHx8
IHJlbW90ZU9iamVjdC5fZW1wdHlQcmV2aWV3KCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHN1YnR5
cGUodmFsdWUpCi0gICAgewotICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAg
ICByZXR1cm4gIm51bGwiOwotCi0gICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSB8
fCBpc0JpZ0ludCh2YWx1ZSkgfHwgaXNTeW1ib2wodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0KLSAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0
aW9uKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwotCi0gICAgICAgIGxldCBw
cmVjaXNlVHlwZSA9IEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKHZhbHVlKTsKLSAgICAgICAg
aWYgKHByZWNpc2VUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHByZWNpc2VUeXBlOwotCi0gICAg
ICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCi0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2
YWx1ZS5sZW5ndGgpKQotICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwotICAgICAgICB9
IGNhdGNoIHsgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHN0YXRpYyBk
ZXNjcmliZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIGlmIChpc0JpZ0ludCh2YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICBpZiAoaXNTeW1ib2wodmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKLQotICAgICAgICBsZXQg
c3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKLQotICAgICAgICBpZiAoc3Vi
dHlwZSA9PT0gInJlZ2V4cCIpCi0gICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOwot
Ci0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiZGF0ZSIpCi0gICAgICAgICAgICByZXR1cm4gdG9T
dHJpbmcodmFsdWUpOwotCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiZXJyb3IiKQotICAgICAg
ICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsKLQotICAgICAgICBpZiAoc3VidHlwZSA9PT0g
InByb3h5IikKLSAgICAgICAgICAgIHJldHVybiAiUHJveHkiOwotCi0gICAgICAgIGlmIChzdWJ0
eXBlID09PSAibm9kZSIpCi0gICAgICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2
aWV3KHZhbHVlKTsKLQotICAgICAgICBsZXQgY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmludGVybmFsQ29uc3RydWN0b3JOYW1lKHZhbHVlKTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09
ICJhcnJheSIpCi0gICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwotCi0gICAgICAgIGlmIChz
dWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOwotCi0gICAgICAgIC8v
IE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8g
dGhpcy4KLSAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAg
ICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOwotCi0gICAgICAgIC8vIElmIE9iamVjdCwgdHJ5
IGZvciBhIGJldHRlciBuYW1lIGZyb20gdGhlIGNvbnN0cnVjdG9yLgotICAgICAgICBpZiAoY2xh
c3NOYW1lID09PSAiT2JqZWN0IikgewotICAgICAgICAgICAgbGV0IGNvbnN0cnVjdG9yTmFtZSA9
IHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7Ci0gICAgICAgICAg
ICBpZiAoY29uc3RydWN0b3JOYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
ck5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwotICAgIH0KLQot
ICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQotICAgIHsKLSAgICAgICAgbGV0IGlzWE1MRG9j
dW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVy
c2lvbjsKLSAgICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5h
bWUgOiBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLSAgICAgICAgc3dpdGNoIChub2Rl
Lm5vZGVUeXBlKSB7Ci0gICAgICAgIGNhc2UgMTogLy8gTm9kZS5FTEVNRU5UX05PREUKLSAgICAg
ICAgICAgIGlmIChub2RlLmlkKQotICAgICAgICAgICAgICAgIHJldHVybiAiPCIgKyBub2RlTmFt
ZSArICIgaWQ9XCIiICsgbm9kZS5pZCArICJcIj4iOwotICAgICAgICAgICAgaWYgKG5vZGUuY2xh
c3NMaXN0Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAi
IGNsYXNzPVwiIiArIG5vZGUuY2xhc3NMaXN0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrLywgIiAi
KSArICJcIj4iOwotICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUu
dHlwZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIHR5cGU9XCIi
ICsgbm9kZS50eXBlICsgIlwiPiI7Ci0gICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUg
KyAiPiI7Ci0KLSAgICAgICAgY2FzZSAzOiAvLyBOb2RlLlRFWFRfTk9ERQotICAgICAgICAgICAg
cmV0dXJuIG5vZGVOYW1lICsgIiBcIiIgKyBub2RlLm5vZGVWYWx1ZSArICJcIiI7Ci0KLSAgICAg
ICAgY2FzZSA4OiAvLyBOb2RlLkNPTU1FTlRfTk9ERQotICAgICAgICAgICAgcmV0dXJuICI8IS0t
IiArIG5vZGUubm9kZVZhbHVlICsgIi0tPiI7Ci0KLSAgICAgICAgY2FzZSAxMDogLy8gTm9kZS5E
T0NVTUVOVF9UWVBFX05PREUKLSAgICAgICAgICAgIHJldHVybiAiPCFET0NUWVBFICIgKyBub2Rl
TmFtZSArICI+IjsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG5vZGVO
YW1lOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2luaXRpYWxQ
cmV2aWV3KCkKLSAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlw
ZTogdGhpcy50eXBlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24g
fHwgdG9TdHJpbmcodGhpcy52YWx1ZSksCi0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAg
ICAgICAgfTsKLQotICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7Ci0gICAgICAgICAgICBwcmV2
aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5cGU7Ci0gICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBl
ICE9PSAibnVsbCIpIHsKLSAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoInNpemUiIGluIHRoaXMpCi0gICAgICAgICAgICBw
cmV2aWV3LnNpemUgPSB0aGlzLnNpemU7Ci0KLSAgICAgICAgcmV0dXJuIHByZXZpZXc7Ci0gICAg
fQotCi0gICAgX2VtcHR5UHJldmlldygpCi0gICAgewotICAgICAgICBsZXQgcHJldmlldyA9IHRo
aXMuX2luaXRpYWxQcmV2aWV3KCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1h
cCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFw
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVy
YXRvciIpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKLSAgICAgICAgICAgICAgICBw
cmV2aWV3LmVudHJpZXMgPSBbXTsKLSAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcHJldmlldzsKLSAgICB9Ci0KLSAg
ICBfZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5
cykKLSAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gdGhpcy5faW5pdGlhbFByZXZpZXcoKTsK
LSAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVs
bCB8fCBzZWNvbmRMZXZlbEtleXM7Ci0gICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0g
Zmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwotCi0gICAgICAgIGxl
dCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAot
ICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4
KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9OwotCi0gICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAvLyBNYXBzLCBTZXRzLCBhbmQgSXRlcmF0b3JzIGhhdmUgZW50cmllcy4KLSAg
ICAgICAgICAgIGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0g
InNldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAi
d2Vha3NldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0b3IiKQotICAgICAgICAgICAgICAg
IHRoaXMuX2FwcGVuZEVudHJ5UHJldmlld3Mob2JqZWN0LCBwcmV2aWV3KTsKLQotICAgICAgICAg
ICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107Ci0KLSAgICAgICAgICAgIC8vIEludGVybmFsIFBy
b3BlcnRpZXMuCi0gICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0g
aW5qZWN0ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUp
OwotICAgICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycykgewotICAgICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3Jz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9h
cHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRM
ZXZlbEtleXMsIHtpbnRlcm5hbDogdHJ1ZX0pOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwcmV2aWV3LmVudHJpZXMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHByZXZpZXc7Ci0KLSAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCi0gICAg
ICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3Qs
IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9y
KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmll
dyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0
TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwotICAgICAgICAgICAgfSwge25hdGl2ZUdldHRl
cnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVlfSkKLSAgICAgICAgfSBjYXRjaCB7
Ci0gICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gcHJldmlldzsKLSAgICB9Ci0KLSAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3
KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RM
ZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IHt9KQotICAgIHsKLSAgICAg
ICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRvci4KLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhy
b3duKSB7Ci0gICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIERvIG5vdCBzaG93ICJfX3Byb3RvX18iIGluIHByZXZpZXcu
Ci0gICAgICAgIGxldCBuYW1lID0gZGVzY3JpcHRvci5uYW1lOwotICAgICAgICBpZiAobmFtZSA9
PT0gIl9fcHJvdG9fXyIpIHsKLSAgICAgICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2Jq
ZWN0cyBtYXkgaGF2ZSBpbnRlcmVzdGluZywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hv
dy4KLSAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUu
Y29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVj
dG9yICE9PSBPYmplY3QKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0
cnVjdG9yICE9PSBBcnJheQotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29u
c3RydWN0b3IgIT09IFJlZ0V4cCkKLSAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFj
dGlvbi5Db250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBhcnJheXMsIG9ubHkg
YWxsb3cgaW5kZXhlcy4KLSAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiAh
aXNVSW50MzIobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVy
dHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLQotICAgICAgICAvLyBEbyBub3Qgc2hvdyBub24tZW51
bWVyYWJsZSBub24tb3duIHByb3BlcnRpZXMuCi0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBh
bGxvdyBhcnJheSBpbmRleGVzIHRoYXQgbWF5IGJlIG9uIHRoZSBwcm90b3R5cGUuCi0gICAgICAg
IC8vIFNwZWNpYWwgY2FzZSB0byBhbGxvdyBuYXRpdmUgZ2V0dGVycyBvbiBub24tUmVnRXhwIG9i
amVjdHMuCi0gICAgICAgIGlmICghZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmICFkZXNjcmlwdG9y
LmlzT3duICYmICEodGhpcy5zdWJ0eXBlID09PSAiYXJyYXkiIHx8ICh0aGlzLnN1YnR5cGUgIT09
ICJyZWdleHAiICYmIGRlc2NyaXB0b3IubmF0aXZlR2V0dGVyKSkpCi0gICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLQotICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmls
dGVyLgotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGlu
ZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExl
dmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVu
ZFByZXZpZXcocHJvcGVydHkpIHsKLSAgICAgICAgICAgIGlmICh0b1N0cmluZyhwcm9wZXJ0eS5u
YW1lID4+PiAwKSA9PT0gcHJvcGVydHkubmFtZSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0aWVz
VGhyZXNob2xkLmluZGV4ZXMtLTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBw
cm9wZXJ0aWVzVGhyZXNob2xkLnByb3BlcnRpZXMtLTsKLQotICAgICAgICAgICAgaWYgKHByb3Bl
cnRpZXNUaHJlc2hvbGQuaW5kZXhlcyA8IDAgfHwgcHJvcGVydGllc1RocmVzaG9sZC5wcm9wZXJ0
aWVzIDwgMCkgewotICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoaW50ZXJuYWwpCi0gICAgICAgICAgICAgICAgcHJvcGVy
dHkuaW50ZXJuYWwgPSB0cnVlOwotCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVz
aChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldHRlci9zZXR0
ZXIuCi0gICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKLSAgICAgICAgICAg
IHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2
aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBO
dWxsIHZhbHVlLgotICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOwotICAgICAg
ICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7
bmFtZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOwot
Ci0gICAgICAgIC8vIElnbm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCi0gICAgICAgIGxl
dCB0eXBlID0gdHlwZW9mIHZhbHVlOwotICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZW51bWVyYWJs
ZSAmJiB0eXBlID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0KLSAgICAgICAgLy8gRml4IHR5cGUg
b2YgZG9jdW1lbnQuYWxsLgotICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFs
bENvbGxlY3Rpb24odmFsdWUpKQotICAgICAgICAgICAgdHlwZSA9ICJvYmplY3QiOwotCi0gICAg
ICAgIC8vIFByaW1pdGl2ZS4KLSAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gMTAwOwotICAgICAg
ICBpZiAoaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkgfHwgaXNCaWdJbnQodmFsdWUpKSB7Ci0gICAg
ICAgICAgICBpZiAodHlwZSA9PT0gInN0cmluZyIgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVl
LCBtYXhMZW5ndGgsIHRydWUpOwotICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtu
YW1lLCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFN5bWJvbC4KLSAgICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkgewot
ICAgICAgICAgICAgbGV0IHN5bWJvbFN0cmluZyA9IHRvU3RyaW5nKHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmIChzeW1ib2xTdHJpbmcubGVuZ3RoID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1h
eExlbmd0aCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUs
IHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9i
amVjdC4KLSAgICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OwotICAgICAgICBsZXQg
c3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKLSAgICAgICAgaWYgKHN1YnR5
cGUpCi0gICAgICAgICAgICBwcm9wZXJ0eS5zdWJ0eXBlID0gc3VidHlwZTsKLQotICAgICAgICAv
LyBTZWNvbmQgbGV2ZWwuCi0gICAgICAgIGlmICgoc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8
IHNlY29uZExldmVsS2V5cykgfHwgdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2Jq
ZWN0KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2Vjb25kTGV2ZWxLZXlz
IGZpbHRlciB0byBjb250aW51ZSB3ZSB3b3VsZCBuZWVkIHNvbWUgcmVmYWN0b3JpbmcuCi0gICAg
ICAgICAgICBsZXQgc3ViUHJldmlldyA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3
Rm9yVmFsdWUodmFsdWUsIHZhbHVlICE9PSBvYmplY3QsIHNlY29uZExldmVsS2V5cyk7Ci0gICAg
ICAgICAgICBwcm9wZXJ0eS52YWx1ZVByZXZpZXcgPSBzdWJQcmV2aWV3OwotICAgICAgICAgICAg
aWYgKCFzdWJQcmV2aWV3Lmxvc3NsZXNzKQotICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xl
c3MgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChzdWJQcmV2aWV3Lm92ZXJmbG93KQotICAgICAg
ICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gIiI7Ci0gICAgICAgICAgICBpZiAodHlwZSAhPT0g
ImZ1bmN0aW9uIiB8fCBzdWJ0eXBlID09PSAiY2xhc3MiKSB7Ci0gICAgICAgICAgICAgICAgbGV0
IGZ1bGxEZXNjcmlwdGlvbjsKLSAgICAgICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gImNsYXNz
IikKLSAgICAgICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gImNsYXNzICIgKyB2YWx1
ZS5uYW1lOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJub2RlIikKLSAg
ICAgICAgICAgICAgICAgICAgZnVsbERlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2
aWV3KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1
bGxEZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZSh2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKGZ1bGxEZXNjcmlwdGlv
biwgbWF4TGVuZ3RoLCBzdWJ0eXBlID09PSAicmVnZXhwIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IGRlc2NyaXB0aW9uOwotICAgICAgICAgICAgcHJldmll
dy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZFBy
ZXZpZXcocHJvcGVydHkpOwotICAgIH0KLQotICAgIF9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVj
dCwgcHJldmlldykKLSAgICB7Ci0gICAgICAgIC8vIEZldGNoIDYsIGJ1dCBvbmx5IHJldHVybiA1
LCBzbyB3ZSBjYW4gdGVsbCBpZiB3ZSBvdmVyZmxvd2VkLgotICAgICAgICBsZXQgZW50cmllcyA9
IGluamVjdGVkU2NyaXB0Ll9lbnRyaWVzKG9iamVjdCwgdGhpcy5zdWJ0eXBlLCAwLCA2KTsKLSAg
ICAgICAgaWYgKCFlbnRyaWVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChl
bnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7Ci0gICAgICAg
ICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKLSAgICAgICAgICAgIHByZXZpZXcubG9zc2xl
c3MgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1haW5QcmV2
aWV3KHN1YlByZXZpZXcpIHsKLSAgICAgICAgICAgIGlmICghc3ViUHJldmlldy5sb3NzbGVzcykK
LSAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgewot
ICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmll
d0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKLSAgICAgICAg
ICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKLSAgICAgICAgICAgIGlmICgia2V5
IiBpbiBlbnRyeSkgewotICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVjdC5j
cmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkua2V5LCBlbnRyeS5rZXkgIT09IG9iamVj
dCk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkua2V5KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKLSAgICB7Ci0gICAgICAg
IGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9iamVjdCk7Ci0KLSAgICAgICAg
cmV0dXJuIHRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsK
LSAgICB9Ci0KLSAgICBfaXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKG9iamVjdCwga25vd25P
YmplY3RzLCBkZXB0aCkKLSAgICB7Ci0gICAgICAgIC8vIERlZXAgb2JqZWN0LgotICAgICAgICBp
ZiAoZGVwdGggPiAzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIFBy
aW1pdGl2ZS4KLSAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBpc0JpZ0lu
dChvYmplY3QpIHx8IGlzU3ltYm9sKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICAvLyBOdWxsLgotICAgICAgICBpZiAob2JqZWN0ID09PSBudWxsKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAg
IGlmIChrbm93bk9iamVjdHMuaGFzKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOwot
Ci0gICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2lt
cGxlIG9iamVjdHMuCi0gICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAg
IGxldCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOwotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNQcmV2
aWV3YWJsZU9iamVjdEludGVybmFsKG9iamVjdFtpXSwga25vd25PYmplY3RzLCBkZXB0aCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTm90IGEgYmFzaWMgb2Jq
ZWN0LgotICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXyAmJiBvYmplY3QuX19wcm90b19fLl9f
cHJvdG9fXykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAvLyBPYmplY3Rz
IGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGll
cy4KLSAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QpOwotICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93
blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5h
bWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJl
dmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3Rz
LCBkZXB0aCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgX2FiYnJldmlhdGVTdHJpbmcoc3RyaW5n
LCBtYXhMZW5ndGgsIG1pZGRsZSkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoIDw9
IG1heExlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAgICAgaWYgKG1p
ZGRsZSkgewotICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7Ci0gICAg
ICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAg
ICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJp
bmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1MjAy
NiI7Ci0gICAgfQotfTsKLQotLy8gLS0tLS0tLQotCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eSA9IGZ1bmN0aW9uKG9yZGluYWwsIGNhbGxGcmFtZSkKLXsKLSAgICB0aGlzLmNhbGxGcmFt
ZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3Rl
ZFNjcmlwdElkfX1gOwotICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9u
TmFtZTsKLSAgICB0aGlzLmxvY2F0aW9uID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1lLnNv
dXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2FsbEZy
YW1lLmNvbHVtbn07Ci0gICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4o
Y2FsbEZyYW1lKTsKLSAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFt
ZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7Ci0gICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2Fs
bEZyYW1lLmlzVGFpbERlbGV0ZWQ7Ci19OwotCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94
eS5wcm90b3R5cGUgPSB7Ci0gICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKLSAgICB7Ci0g
ICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47Ci0gICAgICAgIGxl
dCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwotCi0g
ICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5
W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29w
ZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwotICAgICAgICBy
ZXR1cm4gc2NvcGVDaGFpblByb3h5OwotICAgIH0KLX07Ci0KLUluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFM
X1NDT1BFCi0gICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUiLCAv
LyBDTE9TVVJFX1NDT1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0OiAi
ZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQotICAg
IDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07Ci0KLUluamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmpl
Y3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0g
ewotICAgICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwK
LSAgICAgICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5h
bWVzW3R5cGVdLAotICAgIH07Ci0KLSAgICBpZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9
IG5hbWU7Ci0KLSAgICBpZiAobG9jYXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9j
YXRpb247Ci0KLSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5l
bXB0eSA9IHRydWU7Ci0KLSAgICByZXR1cm4gc2NvcGU7Ci19Ci0KLS8vIC0tLS0tLS0KLQotZnVu
Y3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQotewotICAgIGxldCBzYXZlZFJlc3VsdEFs
aWFzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LnNhdmVkUmVzdWx0QWxpYXM7Ci0KLSAgICBsZXQgZGVm
aW5lR2V0dGVyID0gKGtleSwgdmFsdWUsIHdyYXApID0+IHsKLSAgICAgICAgaWYgKHdyYXApIHsK
LSAgICAgICAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7Ci0gICAgICAgICAgICB2YWx1
ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2luYWxWYWx1ZTsgfTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKLSAgICAgICAg
aWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQotICAgICAg
ICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZhbHVl
KTsKLSAgICB9OwotCi0gICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCi0g
ICAgICAgIGRlZmluZUdldHRlcigiXyIsIGluamVjdGVkU2NyaXB0Ll9sYXN0UmVzdWx0LCB0cnVl
KTsKLQotICAgIGlmICgiX2V4Y2VwdGlvblZhbHVlIiBpbiBpbmplY3RlZFNjcmlwdCkKLSAgICAg
ICAgZGVmaW5lR2V0dGVyKCJleGNlcHRpb24iLCBpbmplY3RlZFNjcmlwdC5fZXhjZXB0aW9uVmFs
dWUsIHRydWUpOwotCi0gICAgaWYgKCJfZXZlbnRWYWx1ZSIgaW4gaW5qZWN0ZWRTY3JpcHQpCi0g
ICAgICAgIGRlZmluZUdldHRlcigiZXZlbnQiLCBpbmplY3RlZFNjcmlwdC5fZXZlbnRWYWx1ZSwg
dHJ1ZSk7Ci0KLSAgICAvLyAkMS0kOTkKLSAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluamVjdGVk
U2NyaXB0Ll9zYXZlZFJlc3VsdHMubGVuZ3RoOyArK2kpCi0gICAgICAgIGRlZmluZUdldHRlcihp
LCBpbmplY3RlZFNjcmlwdC5fc2F2ZWRSZXN1bHRzW2ldLCB0cnVlKTsKLQotICAgIGZvciAobGV0
IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkuZ2V0dGVycykKLSAgICAgICAgZGVmaW5lR2V0dGVyKG5h
bWUsIENvbW1hbmRMaW5lQVBJLmdldHRlcnNbbmFtZV0pOwotCi0gICAgZm9yIChsZXQgbmFtZSBp
biBDb21tYW5kTGluZUFQSS5tZXRob2RzKQotICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFuZExp
bmVBUEkubWV0aG9kc1tuYW1lXTsKLX0KLQotQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9Owot
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzID0ge307Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7
IHJldHVybiBPYmplY3QudmFsdWVzKG9iamVjdCk7IH07Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInF1ZXJ5SW5zdGFuY2VzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5xdWVyeUluc3RhbmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sicXVlcnlPYmplY3RzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5xdWVyeUluc3RhbmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sicXVlcnlIb2xkZXJzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0
SG9zdC5xdWVyeUhvbGRlcnMoLi4uYXJndW1lbnRzKTsgfTsKLQotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1siaW5zcGVjdCJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBpbmplY3RlZFNjcmlw
dC5pbnNwZWN0T2JqZWN0KG9iamVjdCk7IH07Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFz
c2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5hc3NlcnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFy
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNs
ZWFyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudCgu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJl
c2V0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1Zygu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uYXJndW1lbnRzKTsgfTsK
LUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5k
TGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5hcmd1bWVudHMpOyB9OwotCi1m
b3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCi0gICAgQ29tbWFuZExpbmVB
UEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9u
ICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwotCi1yZXR1cm4gaW5q
ZWN0ZWRTY3JpcHQ7Ci19KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
YTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uNDkxMjAyYzYxODU5MjBk
ZWM1MGI2MjM4M2RjZGM4NDQ2MzQ0N2U3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCkBAIC0yMjIwLDggKzIyMjAsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6
QnVpbHRpbikgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgp
ICE9IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3Nh
Z2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJvcjo6
U3RhY2tPdmVyZmxvdykgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0
ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5l
ICIsIGVycm9yLmxpbmUoKSwgIi4gRHVtcGluZyBidWlsdGluIHNvdXJjZS4uLiIpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpKTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDRmNzdiMDk3YWIxZTIzNzdlNTNhMjI4ZjRkOGY4ZGM5Mjc1ZmFiOTguLjY4YjlmNjJhZTY2
YTE2NjcyNmU0YzUxZWZjNjRjYWJkNDZmYWQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsNyBAQCBGT1Jf
RUFDSF9MQVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04ocGFyc2VKU09OKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGVuYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihkaXNhYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGVucXVldWVKb2IpOwpAQCAtMzYxLDYgKzM2MiwxNSBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFBy
aXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKIH0KIAorSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHBhcnNlSlNPTiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBhdXRvKiBqc29uU3RyaW5nID0gYXNT
dHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFqc29uU3RyaW5nKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIAorICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvblN0cmluZy0+
dmFsdWUoZ2xvYmFsT2JqZWN0KSkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhc3NlcnRDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTA3OCw2ICsxMDg4LDggQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5z
ZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNl
KV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpT
dHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAKICAgICBtX2V2
YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CkBAIC0xNTU1LDYgKzE1NjcsMTEgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBUT0RPOiBJbnN0
ZWFkIG9mIHRoaXMsIGNhbiB3ZSBqdXN0IGxpbmstdGltZSBjb25zdGFudCBKU09OPworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnBhcnNlSlNPTildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcGFyc2VKU09O
KSk7CisgICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVt
b3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJl
bW90ZUZ1bmN0aW9uKSk7CkBAIC0yMTk4LDYgKzIyMTUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Cisv
LyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N0cmluZ0NvbnN0cnVjdG9yKTsKIAog
ICAgIHRoaXNPYmplY3QtPm1fZGVmYXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxNTYwNDY5MWUz
ODZhNmUzYjNiNDNjNDE2MDIyZGY4OTNiNTUzNTkyLi41ZWY1ZWI5Y2EzOWJkODYwZWQxMGY0NmIy
MTUxNjMwZTYwMTE1ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTMxNiw2ICszMTYsNyBAQCBwdWJsaWM6CiAgICAgTGF6eUNsYXNz
U3RydWN0dXJlIG1fYWdncmVnYXRlRXJyb3JTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8
T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CisvLyAgICBXcml0ZUJhcnJp
ZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1fc3RyaW5nQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJy
aWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJp
ZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rvcj4gbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxSZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAppbmRleCAyNmFmNjE5ZGNhM2QyNmQ4ZWRjNTdiOWM5NTI2YmFlMDVjOWVmMjZkLi5mNDNhYmI5
MDhmZTc5YTAwMmI3Njk1MWFhNzZlZjg5ODk1Yjk4YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5OSwx
NCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZXRQcm90b3R5cGVPZlByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBl
T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFt
ZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdldE93blByb3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5TmFtZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3lt
Ym9scywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvcktleXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlTmFtZSgpLCBvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCks
IG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKICAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkp
CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmhhc093biwgb2JqZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDkyMDFl
YThjMDQ2MDJiOWE5MGQ1ODYzZjNlMDA0YTg0YTJmYTc3ODIuLjE4MmQ3YTRkNmM4OGNmZTgyNTIx
NGYyZTAyMzMxMTRhMTZiZGE2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsOCBAQCB2b2lkIE9iamVjdFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPl9fZGVmaW5lU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPl9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9f
bG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworCisgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaGFzT3duUHJvcGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RQcm90b0Z1bmNIYXNP
d25Qcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOwogfQogCiBPYmplY3RQcm90b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDA0MGRhY2E1ZmJlNWU5OTUwN2FiZjk1YzQ0YjA3
MjU4MjEzNzU1MmUuLjAxYzJjNDNlYzM4YjBjNWZmMmVhZjgwYTcyZWMwN2RjNDE5OTRiMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI3LDE4ICsyMTI3LDYgQEAgV0VCS0lUX0ZSQU1FV09S
S19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2ViQ29yZVRlc3RT
dXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKLSMgR2Vu
ZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9jb21tYW5kKAot
ICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGluc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5
Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19J
bmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0g
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0g
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Q29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUwLDYgKzIzMzgsNyBAQCBzZXQo
V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHREZWNv
ZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpz
CiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpz
CisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmpzCiAp
CiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMzk3YzZiYjA4YjE2ZDMxZmVmMWEy
OGIyOTc1ZGEyNjE3ZDEzNGY2Zi4uNTNkYmU2MmIwMWMxMTY4YjVjYjk4NmNkZTE4MTk2ODk2MzY1
Zjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tDb25maWd1cmF0
aW9uLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKICQo
UFJPSkVDVF9ESVIpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaWRsCi0kKFBST0pFQ1Rf
RElSKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKyQoUFJPSkVDVF9E
SVIpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qcwogJChQUk9KRUNUX0RJUikvaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5pZGwKICQoUFJPSkVDVF9E
SVIpL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5pZGwKICQoUFJPSkVDVF9ESVIp
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZl
MTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uMGE0OTQzOTVhYTIwZmJlNTFiODkwZWMz
ZGY4MDMzMTE1MzgzZWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5p
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtl
eXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5z
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFu
ZExpbmVBUElNb2R1bGVCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lC
dWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9E
T01DbGllbnRJc29TdWJzcGFjZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
ZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYxZmM2ZmE0MjE2ZTQ2Yy4uOWVkOGU0MGFlZTE1NDJk
MmU0ZjgzNTc5MjU4YzhmYTAyZmU4MDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAgaWZuZXEgKCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwx
KQogLWluY2x1ZGUgJChKU19ET01fSEVBREVSUzouaD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0
b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcwotCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNj
cmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
anNtaW4ucHkgPCAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5qcyA+PiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZV9qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaAotCSQoREVMRVRFKSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMK
LQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwK
QEAgLTIyNTIsNiArMjI0Miw3IEBAIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAk
KFdlYkNvcmUpL2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20v
VGV4dEVuY29kZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5qcyBcCiAjCiAKIEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDVkNTExYjlkZjA0YmU2OWY5YzU1ZjY1MjM1MTNlMTk5MWY3ZDNmMWYuLmY1NDI0OGVkMzliOWY3
ODYxM2I3ZjIyMGVjODkzYWM4NWY0YWQ5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMCw2ICs5MDAsNyBAQAogCQkyRTMw
MUJFODI3NDU5NDcyMDBDMDU2NEYgLyogQ29tcGlsZWRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0NTEwNzcyMDJDN0UwMTAwNjU3RDMz
IC8qIENvbXBpbGVkU2VsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyRTM3REZEQjEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3REZEODEyREJB
RkI4MDBBNkIyMzMgLyogRE9NVVJMLmggKi87IH07CiAJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi87IH07CisJCTJF
M0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNBRUZGOTI4
MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsK
IAkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkuaCAqLzsgfTsKQEAgLTM1MTUsNyArMzUxNiw2IEBACiAJCUE1NzhGNDNGMURFMEI2MzAw
MDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZCMjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2Vy
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJ
QTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NDBFMjMxODdCOEFD
MjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwotCQlBNTg0RkUyNjE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovOyB9OwogCQlBNTg0RkUyQzE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovOyB9OwogCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNC
MTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CiAJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhv
c3QuaCAqLzsgfTsKQEAgLTgyMDMsNiArODIwMyw4IEBACiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2
QjIzMyAvKiBET01VUkwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMzdFMDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBK
U0RPTVVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVVS
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2
QjIzMyAvKiBKU0RPTVVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRUZGOTI4MDlGMTE5MDAz
NzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIxMTAwMzcx
QTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMzkzNCw4ICsxMzkzNiw3IEBACiAJCUE1ODFFRDEyMUZCMjg4
QzkwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2Ny
aXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUy
MzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTI3MTg2
MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFdlYklu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA0MjEsNyArMjA0MjIsNiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzgg
LyogSW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuaCAqLywKIAkJCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQ
SUhvc3QuY3BwICovLAogCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRM
aW5lQVBJSG9zdC5oICovLAogCQkJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCkBAIC0yMDQ1OCw3ICsyMDQ1OCw3
IEBACiAJCQkJQTU4NEZFMzMxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5p
ZGwgKi8sCiAJCQkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlLmNwcCAqLywKIAkJCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGUuaCAqLywKLQkJCQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMgKi8sCisJCQkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlLmpzICovLAogCQkJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuY3BwICovLAogCQkJCTdBQUJBMjU4MTRCQzYxMzMwMEFBOUExMSAvKiBE
T01FZGl0b3IuaCAqLywKIAkJCQk3QTU0ODgxNjE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hT
dXBwb3J0LmNwcCAqLywKQEAgLTIzNTc3LDYgKzIzNTc3LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FD
RkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywK
IAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0
YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlQnVpbHRpbnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3RDAw
RUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhC
MEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8s
CiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICov
LApAQCAtMzQwNTYsNyArMzQwNTgsNyBAQAogCQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAv
KiBDb21iaW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2NEQ1
QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1
MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRkUxMzc1MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25DcnlwdG9V
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKaW5kZXggZDc3YzczZDhhZTQ5NTAxNjc1MjgyMjY0
ZDBkMzZkNjVjY2U3NDJmZi4uNDRjOWFkYWVhY2IyYTI2MjVkZjdjMDg5NjJlNjkxZDhlYmEyNDQ2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29tbWFuZExpbmVBUElNb2R1bGUuaCIKIAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5s
aW5lcy5oPgpAQCAtNDgsOSArNDcsMTMgQEAgQ29tbWFuZExpbmVBUElNb2R1bGU6OkNvbW1hbmRM
aW5lQVBJTW9kdWxlKCkKIHsKIH0KIAotU3RyaW5nIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3Vy
Y2UoKSBjb25zdAotewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlX2pzKSk7CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0
TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkg
Y29uc3QgeworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1bGUoKS5tX2lu
amVjdE1vZHVsZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQg
dG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxl
YCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1
bGU6Omhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTli
YThjMmRlYmRlZGFjZjdmYzZiNDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5
NTBiZGFkN2I5N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVs
ZSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1Ymxp
YzoKICAgICBDb21tYW5kTGluZUFQSU1vZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24o
SlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBo
b3N0KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQzYWJiNTZhMjU4MGQyYzE5MWQ4MjI0OTliNDMzYmM5MDk2
MDA4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5qcwpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24g
aW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBp
bmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExp
bmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7CisKK2luamVjdGVkU2NyaXB0Ll9pbnNwZWN0
T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09
IDApCisgICAgICAgIHJldHVybjsKKworICAgIGxldCBvYmplY3RJZCA9IFJlbW90ZU9iamVjdC5j
cmVhdGUob2JqZWN0KTsKKyAgICBsZXQgaGludHMgPSB7fTsKKworICAgIHN3aXRjaCAoUmVtb3Rl
T2JqZWN0LmRlc2NyaWJlKG9iamVjdCkpIHsKKyAgICBjYXNlICJEYXRhYmFzZSI6CisgICAgICAg
IHZhciBkYXRhYmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LmRhdGFiYXNlSWQob2JqZWN0KTsK
KyAgICAgICAgaWYgKGRhdGFiYXNlSWQpCisgICAgICAgICAgICBoaW50cy5kYXRhYmFzZUlkID0g
ZGF0YWJhc2VJZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAiU3RvcmFnZSI6CisgICAgICAg
IHZhciBzdG9yYWdlSWQgPSBDb21tYW5kTGluZUFQSUhvc3Quc3RvcmFnZUlkKG9iamVjdCk7Cisg
ICAgICAgIGlmIChzdG9yYWdlSWQpCisgICAgICAgICAgICBoaW50cy5kb21TdG9yYWdlSWQgPSBJ
bmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc3RvcmFnZUlkICsgIikiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgQ29tbWFuZExpbmVBUElIb3N0Lmluc3BlY3Qob2JqZWN0
SWQsIGhpbnRzKTsKK307CisKK0NvbW1hbmRMaW5lQVBJLmdldHRlcnNbIjAiXSA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdGVkT2JqZWN0KCk7Cit9
OworCitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihvYmplY3QpIHsK
KyAgICBsZXQgc3RyaW5nID0gbnVsbDsKKworICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0
LnN1YnR5cGUob2JqZWN0KTsKKyAgICBpZiAoc3VidHlwZSA9PT0gIm5vZGUiKQorICAgICAgICBz
dHJpbmcgPSBvYmplY3Qub3V0ZXJIVE1MOworICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJyZWdl
eHAiKQorICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKKyAgICBlbHNlIGlmIChpbmplY3Rl
ZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCisgICAgICAgIHN0cmluZyA9ICIiICsg
b2JqZWN0OworICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJzeW1ib2wiKQorICAgICAg
ICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5nKG9iamVjdCk7CisgICAgZWxz
ZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgc3RyaW5nID0gIiIg
KyBvYmplY3Q7CisgICAgZWxzZSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJpbmcg
PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAi
KTsKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIENvbW1hbmRMaW5lQVBJSG9zdC5jb3B5VGV4dChzdHJp
bmcpOworfTsKKworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9
IGZ1bmN0aW9uKHRhcmdldCkgeworICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuZ2V0RXZl
bnRMaXN0ZW5lcnModGFyZ2V0KTsKK307CisKK2Z1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXMo
dHlwZXMpIHsKKyAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMgPSBb
Im1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hh
bmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1
cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVj
dCIsICJzdWJtaXQiLCAidW5sb2FkIl07CisgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAi
c3RyaW5nIikKKyAgICAgICAgdHlwZXMgPSBbdHlwZXNdOworCisgICAgbGV0IHJlc3VsdCA9IFtd
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
aWYgKHR5cGVzW2ldID09PSAibW91c2UiKQorICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQs
ICJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0
IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgZWxzZSBp
ZiAodHlwZXNbaV0gPT09ICJrZXkiKQorICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsICJr
ZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOworICAgICAgICBlbHNl
IGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0
LCAidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsK
KyAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKKyAgICAgICAgICAgIEBh
cnJheVB1c2gocmVzdWx0LCAiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVz
aXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsIHR5cGVzW2ldKTsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCit7CisgICAgaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKGV2ZW50LnR5cGUsIGV2ZW50KTsKK30KKwor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0
LCB0eXBlcykgeworICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8
fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBl
cyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
dHlwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIo
dHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3Rl
bmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIH0KK307CisKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInVubW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykg
eworICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBlcyA9IG5vcm1h
bGl6ZUV2ZW50VHlwZXModHlwZXMpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVu
Z3RoOyArK2kpCisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBs
b2dFdmVudCwgZmFsc2UpOworfTsKKworaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgeworICAgIGZ1bmN0aW9uIGNhblF1ZXJ5
U2VsZWN0b3JPbk5vZGUobm9kZSkgeworICAgICAgICByZXR1cm4gbm9kZSAmJiBJbmplY3RlZFNj
cmlwdEhvc3Quc3VidHlwZShub2RlKSA9PT0gIm5vZGUiICYmIChub2RlLm5vZGVUeXBlID09PSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZS5FTEVNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9
PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuRE9DVU1FTlRfTk9ERSB8fCBub2RlLm5vZGVU
eXBlID09PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RF
KTsKKyAgICB9CisKKyAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkIl0gPSBmdW5jdGlvbihz
ZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3Rh
cnQpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwor
CisgICAgICAgIGxldCByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVl
cnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworCisgICAgICAgIGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0g
IiMiKSB7CisgICAgICAgICAgICByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0b3IpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkgewor
ICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oIlRoZSBj
b25zb2xlIGZ1bmN0aW9uICQoKSBoYXMgY2hhbmdlZCBmcm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQp
IHRvICQ9cXVlcnlTZWxlY3RvcihzZWxlY3RvcikuIFlvdSBtaWdodCB0cnkgJChcIiMlc1wiKSIs
IHNlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIENvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAg
ICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3IpKTsKKyAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJh
eS5mcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNl
bGVjdG9yKSk7CisgICAgfTsKKworICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBm
dW5jdGlvbih4cGF0aCwgY29udGV4dCkgeworICAgICAgICBsZXQgZG9jID0gKGNvbnRleHQgJiYg
Y29udGV4dC5vd25lckRvY3VtZW50KSB8fCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQ7
CisgICAgICAgIGxldCByZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9j
LCBudWxsLCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwp
OworICAgICAgICBzd2l0Y2ggKHJlc3VsdC5yZXN1bHRUeXBlKSB7CisgICAgICAgIGNhc2UgaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFOgorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC5udW1iZXJWYWx1ZTsKKyAgICAgICAgY2FzZSBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnN0cmluZ1ZhbHVlOworICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJl
c3VsdC5CT09MRUFOX1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBub2RlcyA9IFtdOworICAgICAgICBsZXQgbm9k
ZSA9IG51bGw7CisgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCisg
ICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICByZXR1cm4gbm9kZXM7CisgICAg
fTsKK30KKworZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgIENv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJu
ICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTFlMzUxOWNjYjE3
OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLQotKGZ1bmN0aW9u
IChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3Jp
cHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29t
bWFuZExpbmVBUElIb3N0KSB7Ci0KLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUy
Mjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0
LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCi0KLWlu
amVjdGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgaWYg
KGFyZ3VtZW50cy5sZW5ndGggPT09IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGxldCBvYmpl
Y3RJZCA9IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0KTsKLSAgICBsZXQgaGludHMgPSB7fTsK
LQotICAgIHN3aXRjaCAoUmVtb3RlT2JqZWN0LmRlc2NyaWJlKG9iamVjdCkpIHsKLSAgICBjYXNl
ICJEYXRhYmFzZSI6Ci0gICAgICAgIHZhciBkYXRhYmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0
LmRhdGFiYXNlSWQob2JqZWN0KTsKLSAgICAgICAgaWYgKGRhdGFiYXNlSWQpCi0gICAgICAgICAg
ICBoaW50cy5kYXRhYmFzZUlkID0gZGF0YWJhc2VJZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSAiU3RvcmFnZSI6Ci0gICAgICAgIHZhciBzdG9yYWdlSWQgPSBDb21tYW5kTGluZUFQSUhvc3Qu
c3RvcmFnZUlkKG9iamVjdCk7Ci0gICAgICAgIGlmIChzdG9yYWdlSWQpCi0gICAgICAgICAgICBo
aW50cy5kb21TdG9yYWdlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc3Rv
cmFnZUlkICsgIikiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgQ29tbWFuZExpbmVB
UElIb3N0Lmluc3BlY3Qob2JqZWN0SWQsIGhpbnRzKTsKLX07Ci0KLUNvbW1hbmRMaW5lQVBJLmdl
dHRlcnNbIjAiXSA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3Qu
aW5zcGVjdGVkT2JqZWN0KCk7Ci19OwotCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0g
PSBmdW5jdGlvbihvYmplY3QpIHsKLSAgICBsZXQgc3RyaW5nID0gbnVsbDsKLQotICAgIGxldCBz
dWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKLSAgICBpZiAoc3VidHlwZSA9
PT0gIm5vZGUiKQotICAgICAgICBzdHJpbmcgPSBvYmplY3Qub3V0ZXJIVE1MOwotICAgIGVsc2Ug
aWYgKHN1YnR5cGUgPT09ICJyZWdleHAiKQotICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsK
LSAgICBlbHNlIGlmIChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCi0g
ICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwotICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3Qg
PT09ICJzeW1ib2wiKQotICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3Ry
aW5nKG9iamVjdCk7Ci0gICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikK
LSAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdp
Znkob2JqZWN0LCBudWxsLCAiICAiKTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICBz
dHJpbmcgPSAiIiArIG9iamVjdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIENvbW1hbmRMaW5l
QVBJSG9zdC5jb3B5VGV4dChzdHJpbmcpOwotfTsKLQotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
Z2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdldCkgewotICAgIHJldHVybiBDb21t
YW5kTGluZUFQSUhvc3QuZ2V0RXZlbnRMaXN0ZW5lcnModGFyZ2V0KTsKLX07Ci0KLWZ1bmN0aW9u
IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5l
ZCkKLSAgICAgICAgdHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwg
ImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRh
dGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3Jv
bGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07Ci0gICAgZWxzZSBp
ZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKLSAgICAgICAgdHlwZXMgPSBbdHlwZXNdOwot
Ci0gICAgbGV0IHJlc3VsdCA9IFtdOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAg
ICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1v
dmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwot
ICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQu
cHVzaCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKLSAgICAg
ICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVz
aCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsK
LSAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgIHJl
c3VsdC5wdXNoKCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAi
c2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQotewotICAgIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLmxvZyhldmVudC50eXBlLCBldmVudCk7Ci19Ci0KLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbIm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKLSAg
ICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1v
dmVFdmVudExpc3RlbmVyKQotICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVF
dmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dF
dmVudCwgZmFsc2UpOwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwg
bG9nRXZlbnQsIGZhbHNlKTsKLSAgICB9Ci19OwotCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ1
bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKLSAgICBpZiAoIW9i
amVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExp
c3RlbmVyKQotICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVz
KHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAg
ICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNl
KTsKLX07Ci0KLWlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVk
R2xvYmFsT2JqZWN0Lk5vZGUpIHsKLSAgICBmdW5jdGlvbiBjYW5RdWVyeVNlbGVjdG9yT25Ob2Rl
KG5vZGUpIHsKLSAgICAgICAgcmV0dXJuIG5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5
cGUobm9kZSkgPT09ICJub2RlIiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0Lk5vZGUuRUxFTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09IGluc3BlY3RlZEds
b2JhbE9iamVjdC5Ob2RlLkRPQ1VNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0Lk5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7Ci0gICAgfQotCi0g
ICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0
KSB7Ci0gICAgICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAg
ICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKLQotICAgICAgICBsZXQg
cmVzdWx0ID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2Vs
ZWN0b3IpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LQotICAgICAgICBpZiAoc2VsZWN0b3IgJiYgc2VsZWN0b3JbMF0gIT09ICIjIikgewotICAgICAg
ICAgICAgcmVzdWx0ID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHNlbGVjdG9yKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAg
ICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKCJUaGUgY29uc29sZSBmdW5jdGlv
biAkKCkgaGFzIGNoYW5nZWQgZnJvbSAkPWdldEVsZW1lbnRCeUlkKGlkKSB0byAkPXF1ZXJ5U2Vs
ZWN0b3Ioc2VsZWN0b3IpLiBZb3UgbWlnaHQgdHJ5ICQoXCIjJXNcIikiLCBzZWxlY3Rvcik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH07Ci0KLSAgICBDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyIkJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7Ci0gICAgICAgIGlmIChjYW5R
dWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7
Ci0gICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAg
IH07Ci0KLSAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgs
IGNvbnRleHQpIHsKLSAgICAgICAgbGV0IGRvYyA9IChjb250ZXh0ICYmIGNvbnRleHQub3duZXJE
b2N1bWVudCkgfHwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50OwotICAgICAgICBsZXQg
cmVzdWx0ID0gZG9jLmV2YWx1YXRlKHhwYXRoLCBjb250ZXh0IHx8IGRvYywgbnVsbCwgaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVzdWx0LkFOWV9UWVBFLCBudWxsKTsKLSAgICAgICAgc3dp
dGNoIChyZXN1bHQucmVzdWx0VHlwZSkgewotICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5YUGF0aFJlc3VsdC5OVU1CRVJfVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQu
bnVtYmVyVmFsdWU7Ci0gICAgICAgIGNhc2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVz
dWx0LlNUUklOR19UWVBFOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1ZTsK
LSAgICAgICAgY2FzZSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQk9PTEVBTl9U
WVBFOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5ib29sZWFuVmFsdWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBsZXQgbm9kZXMgPSBbXTsKLSAgICAgICAgbGV0IG5vZGUgPSBudWxsOwotICAg
ICAgICB3aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAgICAgbm9k
ZXMucHVzaChub2RlKTsKLSAgICAgICAgcmV0dXJuIG5vZGVzOwotICAgIH07Ci19Ci0KLWZvciAo
bGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKLSAgICBDb21tYW5kTGluZUFQSS5t
ZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiAr
IG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07Ci0KLX0pCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTNi
ZDRlNjU2MDVmOGFmODQxMGI3MmM2ODczNDVhYjZlMjUyNWFhMS4uZmYzMjViMWY1ZTgwMWE0ZWI2
ZmU0OWFiOTczYWQzN2ZhNzc0MWIyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTA0LTIw
ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFy
YW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBh
cnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBh
cnNlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9y
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcGFnZS9zZXRTY3JlZW5TaXplT3Zl
cnJpZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTA0LTEzICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIHNjcm9s
bEludG9WaWV3IGZhaWxzIHdpdGggc2Nyb2xsLXNuYXAtdHlwZSBvbiA6cm9vdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVk
LnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2
ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApA
QCAtOSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzog
U2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQg
SW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmlu
ZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlw
dFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVB
UElTb3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVk
IHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQ
YXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVm
Li5kNjc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCAr
MTksMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhp
cykgc3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVu
dCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZh
bCBzb3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBz
Y3JpcHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3Vu
ZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0
ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxz
ZTsKLSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAg
IGxldCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0
ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2Ny
aXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBw
YXJhbXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAg
ICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49
IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24g
aXNFdmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9
PT0gImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0
c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgi
LmpzIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlw
dChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRk
VGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0lu
aXRpYWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEw
ICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJ
bmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYm
IGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBp
c0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJVTkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBA
IC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29s
VGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQg
SW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5leHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNo
b3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAg
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNo
b3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJ
bnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQs
ICJTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwog
ICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRT
Y3JpcHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAog
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAppbmRleCBk
NDQyMTdkMzYyZWE0ZjlhMjUyNjRhMGQ4YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJkNTAzN2U1MmFl
OTBjMjMzZjIyYjUzOTM5NmVlMWY4YWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0z
MSw3ICszMSw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgW10ueC54OyB9IGNh
dGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjog
InN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAi
Z2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5A
XG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2Fs
bEBbbmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApA
QCAtNzAsNyArNzAsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGV2YWwoImlm
KCkiKTsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAg
ICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAi
X3ZhbHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3Zh
bHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29w
ZUXigKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0i
CiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC0xMDQsNyArMTA0LDcg
QEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgiIikuc3BsaXRUZXh0KDEwMCk7IH0gY2EKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0
YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAic3Bs
aXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJz
cGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT4oCmdGl2
ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAg
fSwKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogImNvZGUiLApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3BhZ2Uvc2V0U2NyZWVuU2l6ZU92ZXJyaWRlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL3NldFNjcmVlblNpemVPdmVycmlkZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmI1ODFkNzVmM2M4MTg4NDRiM2NjMmZlZmI3MjI2YTMyZDdhMmU5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL3NldFNjcmVl
blNpemVPdmVycmlkZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCis9PSBSdW5uaW5n
IHRlc3Qgc3VpdGU6IFBhZ2Uuc2V0U2NyZWVuU2l6ZU92ZXJyaWRlCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogU2NyZWVuU2l6ZU92ZXJyaWRlT3ZlcnJpZGUKK1BBU1M6IEJvZHkgc2hvdWxkIGJlIHdo
aXRlLgorT3ZlcnJpZGluZyBzY3JlZW4gc2l6ZSB0byAxMDAweDUwMAorISEgRVhDRVBUSU9OOiBQ
YWdlQWdlbnQuc2V0U2NyZWVuU2l6ZU92ZXJyaWRlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ1Bh
Z2VBZ2VudC5zZXRTY3JlZW5TaXplT3ZlcnJpZGUoMTAwMCwgNTAwKScsICdQYWdlQWdlbnQuc2V0
U2NyZWVuU2l6ZU92ZXJyaWRlJyBpcyB1bmRlZmluZWQpCitTdGFjayBUcmFjZTogIzA6IChhbm9u
eW1vdXMpIChAKQorIzE6IGFzeW5jRnVuY3Rpb25SZXN1bWUgW25hdGl2ZSBjb2RlXQorIzI6IChh
bm9ueW1vdXMpIFtuYXRpdmUgY29kZV0KKyMzOiBwcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0UHJv
bWlzZSBbbmF0aXZlIGNvZGVdCisjNDogcHJvbWlzZVJlYWN0aW9uSm9iIFtuYXRpdmUgY29kZV0K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVt
bi1leHBlY3RlZC50eHQKaW5kZXggYmZjYWM5ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3
YTM4NS4uOTAwN2UxNGQ0MTAzYmU3YTkxY2M5OGEzOWMxMjgyN2FlM2EwYzYwNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0
ZWQudHh0CkBAIC02NCw4ICs2NCw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAg
ICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGlu
ZU51bWJlciI6IDE0MiwKLSAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAg
ICAgICAgICJsaW5lTnVtYmVyIjogNDA2LAorICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjog
ODAKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxm
aWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgog
ICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAg
ICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjog
MTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVy
IjogNDA2LAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBd
LAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFT
UzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAg
ICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0g
ICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3
CisgICAgICAgICAgImxpbmVOdW1iZXIiOiA0MDYsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6
IDgwCiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>
<flag name="commit-queue"
          id="486794"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458033</attachid>
            <date>2022-04-20 20:15:53 -0700</date>
            <delta_ts>2022-04-21 17:36:46 -0700</delta_ts>
            <desc>WIP v0.3</desc>
            <filename>bug-152294-20220420201552.patch</filename>
            <type>text/plain</type>
            <size>185226</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Yjk0M2U2M2UxYzM4MjRjMjdlNmU2ZjE2Mjk2MjI5ZDNmNzY1MTZhLi4zZTk3MWFiY2IzN2IxNGVl
ODA2YWI3YjM1N2E4MjM3MTk3MDg2MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wNC0yMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVu
Y3Rpb25zKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QnVpbHRpbi5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLmV4ZWN1dGUpOgorICAgICAgICAobGV0
LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5hd2FpdFByb21pc2UpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5jYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChsZXQuSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKGxldC5Jbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcEpTT05TdHJpbmcpOgorICAgICAgICAobGV0LkluamVj
dGVkU2NyaXB0LnByb3RvdHlwZS53cmFwVGFibGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2Ny
aXB0LnByb3RvdHlwZS5pbmplY3RNb2R1bGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0
LnByb3RvdHlwZS5fcmVzb2x2ZUNhbGxBcmd1bWVudCk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRT
Y3JpcHQucHJvdG90eXBlLl9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yLmNyZWF0ZUZha2VWYWx1
ZURlc2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9y
RWFjaFByb3BlcnR5RGVzY3JpcHRvci5wcm9jZXNzUHJvcGVydHkpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9zYXZlUmVzdWx0KToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChsZXQuUmVtb3RlT2JqZWN0KToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3Quc2V0IF9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwpOgor
ICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5wcm90b3R5cGUuX2lzUHJldmlld2FibGVPYmplY3Qu
c2V0IGFkZCk6CisgICAgICAgIChDb21tYW5kTGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJl
ZF9oZXJlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIyLTA0
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBB
dG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3Qg
Y2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTUxZmFkNzE1NTcyNjYzNDE2ZDc0NjZjN2FlODI5NTU5OTZl
NmU2ZS4uNWNjMDBiYTYwYzZkOTNiNmRmNzI3Y2QzMjYxODg5ZjkzNGM2NDhmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA0LTIwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNv
dXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBi
dWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcy4KKyAgICAgICAg
KGluamVjdE1vZHVsZSk6CisKIDIwMjItMDQtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gc2Nyb2xsSW50b1ZpZXcg
ZmFpbHMgd2l0aCBzY3JvbGwtc25hcC10eXBlIG9uIDpyb290CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMjNjNGE3NGY4ODY4NjNhMWVmY2UwYjNjYTM2YmYxNjYxM2VmNDk1
NC4uM2VmYTg5YWE5MGYzMDkyNmVjYjk0YTcxYzQ0NGI1ZDNlODgxMTU3YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2NCw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApAQCAt
MTQwNSwxNyArMTQwNiw2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAg
ICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgKICkK
IAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmggJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBNQUlO
X0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhk
LnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAk
e0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9J
bmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05f
RVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+ICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
bWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzICR7SmF2YVNjcmlwdENv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAot
ICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCkK
LQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9P
UCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiOTIxYjJmODI4
NjQzMDFhMGM1YmY3MTU0NjRkODFiNWZhYWYwOGJlLi40N2FmODFiY2VkMTMwMjBiYzhkNTM4YjI3
NGNhOWZkZDcxMmJlZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtODgsNyArODgsNyBAQCAkKFBST0pFQ1Rf
RElSKS9nZW5lcmF0b3IvVGVtcGxhdGUucmIKICQoUFJPSkVDVF9ESVIpL2dlbmVyYXRvci9UeXBl
LnJiCiAkKFBST0pFQ1RfRElSKS9nZW5lcmF0b3IvV2FzbS5yYgogJChQUk9KRUNUX0RJUikvZ2Vu
ZXJhdG9yL21haW4ucmIKLSQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcworJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QnVpbHRpbi5q
cwogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uCiAkKFBS
T0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCiAkKFBS
T0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXVkaXQuanNvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1Zjdl
MTU0ZjY4ZTk3Y2JmMzkxLi42MzVlM2M1MzU5YTAwZTE0NDgyMjg0NjJmNzA3Yzk0ZjI3YTEzZmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNjgsNyAr
NjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1Nj
cmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBcCi0gICAgSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAgICAgUmVnRXhw
Sml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5T
X1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheUNv
bnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9XZWJBc3NlbWJs
eS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QnVp
bHRpbi5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhl
IGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywgc28KQEAgLTM2OCwx
MiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyA6IENvbWJp
bmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwpICQoSmF2YVNjcmlw
dENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5wbCAtLWlucHV0IGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZpbmVzICIkKEZFQVRV
UkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIvLyMgc291cmNlVVJM
PV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gLi9JbmplY3RlZFNj
cmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAu
L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0JJChE
RUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BDT0RFX0ZJTEVTID0g
XAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzVlYTQxNmY3MGFjYzZlMWFmNjc4MmE0OGQzZWYxNjg5NTQ0
MjM5Yi4uNWViNGMwZTljMzJkZjMzMmU5NDhjMTEwOTAzN2M0YjA5MjQwMjMwZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3MjIsNyArNDcyMiw3IEBACiAJCUE1MTNFNUJCMTg1
QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTEzRTVCQzE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1
QzMxODVGOTJDOTAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEJ1aWx0
aW4uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFNjcmlwdEJ1aWx0aW4uanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEz
RTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MjUzLDEzICs5MjUzLDEzIEBACiAJCQkJQTUxM0U1QjYxODVCOEJEMzAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0LmggKi8sCiAJCQkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NCIC8qIEluamVj
dGVkU2NyaXB0QmFzZS5jcHAgKi8sCiAJCQkJQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIElu
amVjdGVkU2NyaXB0QmFzZS5oICovLAorCQkJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdEJ1aWx0aW4uanMgKi8sCiAJCQkJQTU4RTM1OTAxODYwREVDNzAwMUYyNEZF
IC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJQTUxM0U1QjkxODVCRkFDQzAwN0U5
NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCUE1MTNFNUM4MTg1Rjk2MjQwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovLAogCQkJCUE1MTNFNUM5MTg1Rjk2
MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLywKIAkJCQlBNTg0MEUxRTE4
N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwICovLAogCQkJCUE1ODQw
RTFGMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovLAotCQkJCUE1
MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLywKIAkJ
CQlBNTkzQ0Y3RTE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8sCiAJ
CQkJQTU5M0NGODQxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3Bw
ICovLAogCQkJCUE1OTNDRjg1MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
d2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQppbmRleCA2NWRjMTVjY2FkZjVmMDBhNmYyZjQ5
MDEwNzMwMTk3OWE4NmQxNjg3Li4xMzVmMzM5ZTdhNDQxMDVhYWM4MmRjMzA0NjgzYmI5MWZmMGM1
YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5z
L2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3dr
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTMwMywyMSArMzAzLDU1IEBAIGNsYXNzIEJ1
aWx0aW5zQ29sbGVjdGlvbjoKICAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQogICAgICAgICBz
dGFydCA9IDAKICAgICAgICAgZW5kID0gMAorCiAgICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVz
OgogICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCiAgICAgICAgICAgICBpZiBzdGFy
dCA8IGVuZDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZW5kID0gbWF0
Y2guZW5kKCkKICAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6Ci0gICAgICAgICAg
ICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAgICAg
ICBkZXB0aCA9IDEKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGlzRXNj
YXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hh
cmFjdGVyID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgotICAgICAgICAgICAg
ICAgIGlmIHRleHRbZW5kXSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVw
dGggKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgotICAgICAgICAg
ICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZCAr
IDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQorICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFy
YWN0ZXIgPSB0ZXh0W2VuZF0KKworICAgICAgICAgICAgICAgIGlmIGlzRXNjYXBpbmdDaGFyYWN0
ZXI6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRD
aGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5n
U3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5v
bmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1
ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhN
RTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1
bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAg
IyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1
c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5z
aWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3Vy
IHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMg
KHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsg
dW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1
bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNh
cmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAg
ICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciBpcyBub3QgJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3Ry
aW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBj
dXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQor
ICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAg
ICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAg
IGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25T
dHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVu
Y3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uYmU4
OTVhOWYyNzU3M2U3MzUzZjE4MWY0MzQ2YTQ2NGQ0ZTZmMTVjZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1h
Y3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNy
byhTdHJpbmcpIFwKKyAgICBtYWNybyhwYXJzZUpTT04pIFwKKyAgICBtYWNybyhnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCisgICAg
bWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAgbWFjcm8oaGFzT3duUHJvcGVydHkp
IFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4NjkwOGI5MGY5OWNi
MGNlNzQ2ZjAxOWJkM2VkNzIzLi4xNTdjOTQzOTBjNTQxMjE0M2NkMjMxOTBjMmNkNWY5OGJhZTI0
OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2
KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1JlbW90ZUZ1bmN0aW9u
LCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KHBhcnNlSlNP
TiwgbnVsbHB0cikgXAorICAgIHYoU3RyaW5nLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNM
QVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJ1aWx0aW4uanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QnVpbHRpbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NDQ5MzNjNTE1OGE2YWYxNWMyYTgxMWI3NzU1NjUzMzZiM2MwNDk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJ1aWx0aW4uanMKQEAgLTAsMCArMSwxNTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3Jl
YXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CisKK2Z1bmN0aW9uIHRvU3RyaW5nKG9i
aikKK3sKKyAgICByZXR1cm4gQFN0cmluZyhvYmopOworfQorCitmdW5jdGlvbiB0b1N0cmluZ0Rl
c2NyaXB0aW9uKG9iaikKK3sKKyAgICBpZiAob2JqID09PSAwICYmIDEgLyBvYmogPCAwKQorICAg
ICAgICByZXR1cm4gIi0wIjsKKworICAgIGlmIChpc0JpZ0ludChvYmopKQorICAgICAgICByZXR1
cm4gdG9TdHJpbmcob2JqKSArICJuIjsKKworICAgIHJldHVybiB0b1N0cmluZyhvYmopOworfQor
CitmdW5jdGlvbiBpc1VJbnQzMihvYmopCit7CisgICAgaWYgKHR5cGVvZiBvYmogPT09ICJudW1i
ZXIiKQorICAgICAgICByZXR1cm4gb2JqID4+PiAwID09PSBvYmogJiYgKG9iaiA+IDAgfHwgMSAv
IG9iaiA+IDApOworICAgIHJldHVybiAiIiArIChvYmogPj4+IDApID09PSBvYmo7Cit9CisKK2Z1
bmN0aW9uIGlzU3ltYm9sKHZhbHVlKQoreworICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICJz
eW1ib2wiOworfQorCitmdW5jdGlvbiBpc0JpZ0ludCh2YWx1ZSkKK3sKKyAgICByZXR1cm4gdHlw
ZW9mIHZhbHVlID09PSAiYmlnaW50IjsKK30KKworZnVuY3Rpb24gaXNFbXB0eU9iamVjdChvYmpl
Y3QpCit7CisgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBpc0RlZmluZWQodmFsdWUpCit7Cisg
ICAgcmV0dXJuICEhdmFsdWUgfHwgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rp
b24odmFsdWUpOworfQorCitmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQoreworICAg
IHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7CisgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgY2FzZSAi
bnVtYmVyIjoKKyAgICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBj
YXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4gIUluamVjdGVkU2NyaXB0SG9zdC5pc0hU
TUxBbGxDb2xsZWN0aW9uKHZhbHVlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCisvLyAtLS0tLS0tCisKK2xldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNz
IEluamVjdGVkU2NyaXB0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhp
cy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOworICAgICAgICB0aGlzLl9pZFRvV3JhcHBlZE9iamVj
dCA9IHt9OworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0ge307CisgICAgICAg
IHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OworICAgICAgICB0aGlzLl9tb2R1bGVzID0ge307Cisg
ICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKKyAgICAgICAgdGhpcy5fc2F2
ZWRSZXN1bHRzID0gW107CisgICAgfQorCisgICAgLy8gSW5qZWN0ZWRTY3JpcHQgQysrIEFQSQor
CisgICAgZXhlY3V0ZShmdW5jdGlvblN0cmluZywgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCBhcmdz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91
cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxP
bkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJn
cyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVj
dEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJl
dmlldywgc2F2ZVJlc3VsdCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1l
ID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRT
Y3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3Qs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpOwor
ICAgIH0KKworICAgIGF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBs
ZXQgcGFyc2VkUHJvbWlzZU9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChwcm9taXNlT2Jq
ZWN0SWQpOworICAgICAgICBsZXQgcHJvbWlzZU9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBh
cnNlZFByb21pc2VPYmplY3RJZCk7CisgICAgICAgIGxldCBwcm9taXNlT2JqZWN0R3JvdXBOYW1l
ID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRQcm9taXNlT2JqZWN0SWQuaWRdOwor
CisgICAgICAgIGlmICghaXNEZWZpbmVkKHByb21pc2VPYmplY3QpKSB7CisgICAgICAgICAgICBj
YWxsYmFjaygiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdpdGggZ2l2ZW4gaWQiKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5z
dGFuY2VvZiBAUHJvbWlzZSkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBn
aXZlbiBpZCBpcyBub3QgYSBQcm9taXNlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBsZXQgcmVzb2x2ZSA9ICh2YWx1ZSkgPT4geworICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IHsKKyAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAorICAg
ICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9i
amVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
dGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZVJl
c3VsdChyZXR1cm5PYmplY3QucmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2F2
ZWRSZXN1bHRJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVz
dWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjYWxsYmFjayhyZXR1cm5PYmplY3QpOworICAgICAgICB9OworICAgICAgICBsZXQg
cmVqZWN0ID0gKHJlYXNvbikgPT4geworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fY3JlYXRl
VGhyb3duVmFsdWUocmVhc29uLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lKSk7CisgICAgICAgIH07
CisgICAgICAgIHByb21pc2VPYmplY3QudGhlbihyZXNvbHZlLCByZWplY3QpOworICAgIH0KKwor
ICAgIGV2YWx1YXRlT25DYWxsRnJhbWUodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCwgZXhwcmVz
c2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQorICAgIHsKKyAgICAgICAgbGV0IGNhbGxGcmFt
ZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpOworICAg
ICAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZpbmQg
Y2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJh
bWUgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFt
ZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgY2FsbEZyYW1lLCBleHByZXNzaW9uLCBvYmpl
Y3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KTsKKyAgICB9CisKKyAgICBjYWxs
RnVuY3Rpb25PbihvYmplY3RJZCwgZXhwcmVzc2lvbiwgYXJncywgcmV0dXJuQnlWYWx1ZSwgZ2Vu
ZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5f
cGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxldCBvYmplY3QgPSB0aGlzLl9vYmpl
Y3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIGxldCBvYmplY3RHcm91cE5hbWUgPSB0
aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW3BhcnNlZE9iamVjdElkLmlkXTsKKworICAgICAgICBp
ZiAoIWlzRGVmaW5lZChvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmlu
ZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CisKKyAgICAgICAgbGV0IHJlc29sdmVkQXJncyA9IFtd
OworICAgICAgICBpZiAoYXJncykgeworICAgICAgICAgICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0
ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1l
bnQoY2FsbEFyZ3NbaV0pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgbGV0IGZ1bmMg
PSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgZXhwcmVzc2lvbiArICIpIik7Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAg
ICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9uIGRvZXMgbm90IGV2YWx1YXRlIHRvIGEgZnVuY3Rp
b24iOworCisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHdhc1Rocm93bjog
ZmFsc2UsCisgICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMu
QGFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZh
bHVlLCBnZW5lcmF0ZVByZXZpZXcpCisgICAgICAgICAgICB9OworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0
R3JvdXBOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdldEZ1bmN0aW9uRGV0YWlscyhv
YmplY3RJZCkKKyAgICB7CisgICAgICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNl
T2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICBsZXQgb2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9y
SWQocGFyc2VkT2JqZWN0SWQpOworICAgICAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQu
IjsKKyAgICAgICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25EZXRhaWxzKG9iamVjdCk7CisgICAgfQor
CisgICAgZnVuY3Rpb25EZXRhaWxzKGZ1bmMpCisgICAgeworICAgICAgICBsZXQgZGV0YWlscyA9
IEluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkRldGFpbHMoZnVuYyk7CisgICAgICAgIGlmICgh
ZGV0YWlscykKKyAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gZGV0
YWlscy4iOworICAgICAgICByZXR1cm4gZGV0YWlsczsKKyAgICB9CisKKyAgICBnZXRQcmV2aWV3
KG9iamVjdElkKQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFy
c2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxldCBvYmplY3QgPSB0aGlzLl9vYmplY3RG
b3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRl
T2JqZWN0UHJldmlld0ZvclZhbHVlKG9iamVjdCwgdHJ1ZSk7CisgICAgfQorCisgICAgZ2V0UHJv
cGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwg
Z2VuZXJhdGVQcmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0gb3du
UHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMg
OiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzOworICAgICAgICBy
ZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXd9KTsKKyAgICB9CisKKyAgICBnZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdl
bmVyYXRlUHJldmlldykKKyAgICB7CisgICAgICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IEluamVj
dGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMgfCBJbmplY3RlZFNjcmlwdC5D
b2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzOworICAgICAgICByZXR1cm4gdGhp
cy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBm
ZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZX0p
OworICAgIH0KKworICAgIGdldEludGVybmFsUHJvcGVydGllcyhvYmplY3RJZCwgZ2VuZXJhdGVQ
cmV2aWV3KQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VP
YmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIGxldCBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJ
ZChwYXJzZWRPYmplY3RJZCk7CisgICAgICAgIGxldCBvYmplY3RHcm91cE5hbWUgPSB0aGlzLl9p
ZFRvT2JqZWN0R3JvdXBOYW1lW3BhcnNlZE9iamVjdElkLmlkXTsKKworICAgICAgICBpZiAoIWlz
RGVmaW5lZChvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
IChpc1N5bWJvbChvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGxldCBkZXNjcmlwdG9ycyA9IHRoaXMuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmpl
Y3QpOworICAgICAgICBpZiAoIWRlc2NyaXB0b3JzKQorICAgICAgICAgICAgcmV0dXJuIFtdOwor
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnNbaV07CisgICAgICAgICAg
ICBpZiAoInZhbHVlIiBpbiBkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iu
dmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9iamVjdEdyb3Vw
TmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gZGVzY3JpcHRvcnM7CisgICAgfQorCisgICAgZ2V0Q29sbGVjdGlvbkVudHJpZXMob2JqZWN0
SWQsIG9iamVjdEdyb3VwTmFtZSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKKyAgICB7CisgICAg
ICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwor
ICAgICAgICBsZXQgb2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOwor
ICAgICAgICBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RHcm91cE5hbWUgfHwgdGhpcy5faWRUb09i
amVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5pZF07CisKKyAgICAgICAgaWYgKCFpc0RlZmlu
ZWQob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHlwZW9mIG9i
amVjdCAhPT0gIm9iamVjdCIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGVu
dHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUo
b2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7CisgICAgICAgIHJldHVybiBlbnRyaWVz
Lm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVP
YmplY3QuY3JlYXRlKGVudHJ5LnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsK
KyAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkKKyAgICAgICAgICAgICAgICBlbnRyeS5r
ZXkgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5LmtleSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNPTikKKyAgICB7CisgICAgICAgIHRoaXMu
X3NhdmVkUmVzdWx0SW5kZXggPSAwOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQg
Y2FsbEFyZ3VtZW50ID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIGNhbGxBcmd1
bWVudEpTT04gKyAiKSIpOworICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5fcmVzb2x2ZUNh
bGxBcmd1bWVudChjYWxsQXJndW1lbnQpOworICAgICAgICAgICAgdGhpcy5fc2F2ZVJlc3VsdCh2
YWx1ZSk7CisgICAgICAgIH0gY2F0Y2ggeyB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NhdmVk
UmVzdWx0SW5kZXg7CisgICAgfQorCisgICAgd3JhcENhbGxGcmFtZXMoY2FsbEZyYW1lKQorICAg
IHsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgLy8gTUFSSzogW1BDQV0gQXJyYXkKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwor
ICAgICAgICBsZXQgZGVwdGggPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKHJlc3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNh
bGxGcmFtZSkpOworICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKKyAg
ICAgICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICB3cmFwT2JqZWN0KG9iamVjdCwgZ3JvdXBOYW1lLCBjYW5BY2Nlc3NJbnNwZWN0ZWRH
bG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKKyAgICB7CisgICAgICAgIGlmICghY2FuQWNj
ZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxi
YWNrV3JhcHBlcihvYmplY3QpOworCisgICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRl
KG9iamVjdCwgZ3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICB9CisKKyAg
ICB3cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykK
KyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0
KEBwYXJzZUpTT04oanNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3
KTsKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHdyYXBUYWJsZShjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3Qs
IHRhYmxlLCBjb2x1bW5zKQorICAgIHsKKyAgICAgICAgaWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRH
bG9iYWxPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tXcmFwcGVyKHRh
YmxlKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IGNvbHVtbnMgYXJlIGlnbm9yZWQu
IEluc3RlYWQsIHRoZSBmcm9udGVuZCBmaWx0ZXJzIGFsbAorICAgICAgICAvLyBwcm9wZXJ0aWVz
IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFtZXMgYW5kIGluIHRoZSBwcm92aWRlZCBv
cmRlci4KKyAgICAgICAgLy8gV2UgY291bGQgZmlsdGVyIGhlcmUgdG8gYXZvaWQgc2VuZGluZyB2
ZXJ5IGxhcmdlIHByZXZpZXcgb2JqZWN0cy4KKworICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBu
dWxsOworICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmciKQorICAgICAgICAg
ICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKworICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0
LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKKyAgICAgICAgICAgIC8vIE1BUks6IFtQ
Q0FdIEFycmF5CisgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IFtdOworICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGNv
bHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUodGFibGUsICJjb25zb2xlIiwgZmFsc2UsIHRy
dWUsIGNvbHVtbk5hbWVzKTsKKyAgICB9CisKKyAgICBwcmV2aWV3VmFsdWUodmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1
ZSh2YWx1ZSwgdHJ1ZSk7CisgICAgfQorCisgICAgc2V0RXZlbnRWYWx1ZSh2YWx1ZSkKKyAgICB7
CisgICAgICAgIHRoaXMuX2V2ZW50VmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBjbGVhckV2
ZW50VmFsdWUoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50VmFsdWU7CisgICAg
fQorCisgICAgc2V0RXhjZXB0aW9uVmFsdWUodmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9l
eGNlcHRpb25WYWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIGNsZWFyRXhjZXB0aW9uVmFsdWUo
KQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V4Y2VwdGlvblZhbHVlOworICAgIH0KKwor
ICAgIGZpbmRPYmplY3RCeUlkKG9iamVjdElkKQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNlZE9i
amVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7CisgICAgICAgIHJldHVybiB0
aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7CisgICAgfQorCisgICAgcmVsZWFzZU9i
amVjdChvYmplY3RJZCkKKyAgICB7CisgICAgICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMu
X3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICB0aGlzLl9yZWxlYXNlT2JqZWN0KHBh
cnNlZE9iamVjdElkLmlkKTsKKyAgICB9CisKKyAgICByZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0
R3JvdXBOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSA9PT0gImNvbnNv
bGUiKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsKKyAgICAgICAgICAg
IHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKKyAgICAgICAgICAgIHRoaXMuX3NhdmVk
UmVzdWx0cyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fb2Jq
ZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CisgICAgICAgIGlmICghZ3JvdXApCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIHRoaXMuX3JlbGVhc2VPYmplY3QoZ3JvdXBbaV0pOworCisgICAg
ICAgIGRlbGV0ZSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKKyAgICB9CisK
KyAgICBjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChjYWxsRnJhbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSB8fCBudWxsKTsKKyAgICB9CisK
KyAgICAvLyBDb21tYW5kTGluZUFQSQorCisgICAgaW5zcGVjdE9iamVjdChvYmplY3QpCisgICAg
eworICAgICAgICBpZiAodGhpcy5faW5zcGVjdE9iamVjdCkKKyAgICAgICAgICAgIHRoaXMuX2lu
c3BlY3RPYmplY3Qob2JqZWN0KTsKKyAgICB9CisKKyAgICAvLyBJbmplY3RlZFNjcmlwdE1vZHVs
ZSBDKysgQVBJCisKKyAgICBoYXNJbmplY3RlZE1vZHVsZShuYW1lKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CisgICAgfQorCisgICAgaW5qZWN0TW9kdWxlKG5h
bWUsIG1vZHVsZUZ1bmN0aW9uLCBob3N0KQorICAgIHsKKyAgICAgICAgdGhpcy5fbW9kdWxlc1tu
YW1lXSA9IGZhbHNlOworCisgICAgICAgIGlmICh0eXBlb2YgbW9kdWxlRnVuY3Rpb24gIT09ICJm
dW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVu
Y3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1bGUiOworICAgICAgICBtb2R1bGVGdW5j
dGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRT
Y3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBob3N0KTsKKwor
ICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJbmpl
Y3RlZFNjcmlwdE1vZHVsZSBKYXZhU2NyaXB0IEFQSQorCisgICAgaXNQcmltaXRpdmVWYWx1ZSh2
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfcGFyc2VPYmplY3RJZChvYmplY3RJZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgb2Jq
ZWN0SWQgKyAiKSIpOworICAgIH0KKworICAgIF9vYmplY3RGb3JJZChvYmplY3RJZCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdFtvYmplY3RJZC5pZF07Cisg
ICAgfQorCisgICAgX2JpbmQob2JqZWN0LCBvYmplY3RHcm91cE5hbWUpCisgICAgeworICAgICAg
ICBsZXQgaWQgPSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCsrOworICAgICAgICBsZXQgb2JqZWN0
SWQgPSBgeyJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9LCJpZCI6JHtpZH19
YDsKKworICAgICAgICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdFtpZF0gPSBvYmplY3Q7CisKKyAg
ICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgeworICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhp
cy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CisgICAgICAgICAgICBpZiAoIWdyb3Vw
KSB7CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAgICAgICB0aGlzLl9v
YmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdyb3VwOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3Jv
dXBOYW1lW2lkXSA9IG9iamVjdEdyb3VwTmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBvYmplY3RJZDsKKyAgICB9CisKKyAgICBfcmVsZWFzZU9iamVjdChpZCkKKyAgICB7CisgICAg
ICAgIGRlbGV0ZSB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdFtpZF07CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXTsKKyAgICB9CisKKyAgICBfZmFsbGJhY2tXcmFw
cGVyKG9iamVjdCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAgcmVz
dWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZShv
YmplY3QpKQorICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0gb2JqZWN0OworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXN1bHQuZGVzY3JpcHRpb24gPSB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9i
amVjdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgX3Jlc29sdmVDYWxs
QXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTikKKyAgICB7CisgICAgICAgIGlmICgidmFsdWUiIGlu
IGNhbGxBcmd1bWVudEpTT04pCisgICAgICAgICAgICByZXR1cm4gY2FsbEFyZ3VtZW50SlNPTi52
YWx1ZTsKKworICAgICAgICBsZXQgb2JqZWN0SWQgPSBjYWxsQXJndW1lbnRKU09OLm9iamVjdElk
OworICAgICAgICBpZiAob2JqZWN0SWQpIHsKKyAgICAgICAgICAgIGxldCBwYXJzZWRBcmdJZCA9
IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRB
cmdJZCB8fCBwYXJzZWRBcmdJZFsiaW5qZWN0ZWRTY3JpcHRJZCJdICE9PSBpbmplY3RlZFNjcmlw
dElkKQorICAgICAgICAgICAgICAgIHRocm93ICJBcmd1bWVudHMgc2hvdWxkIGJlbG9uZyB0byB0
aGUgc2FtZSBKYXZhU2NyaXB0IHdvcmxkIGFzIHRoZSB0YXJnZXQgb2JqZWN0LiI7CisKKyAgICAg
ICAgICAgIGxldCByZXNvbHZlZEFyZyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEFyZ0lkKTsK
KyAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKHJlc29sdmVkQXJnKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyAiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdpdGggZ2l2ZW4gaWQiOworCisgICAgICAg
ICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gQHVu
ZGVmaW5lZDsKKyAgICB9CisKKyAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdy
b3VwKQorICAgIHsKKyAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IFJlbW90ZU9iamVjdC5jcmVh
dGUodmFsdWUsIG9iamVjdEdyb3VwKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlbW90
ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOworICAgICAg
ICB9IGNhdGNoIHsgfQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgd2FzVGhyb3duOiB0
cnVlLAorICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmplY3QKKyAgICAgICAgfTsKKyAgICB9
CisKKyAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBleHByZXNzaW9u
LCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
cmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1
ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNF
dmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIF93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdl
bmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgZnVuYykKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl93cmFwQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3
LCBzYXZlUmVzdWx0LCAoKSA9PiB7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gZnVuYygpOwor
ICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpCisgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZVJl
c3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgX3dyYXBDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGZ1bmMpCisgICAgeworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CisKKyAgICAgICAgICAgIGxldCByZXR1
cm5PYmplY3QgPSB7CisgICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RHcm91cCwg
cmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQorICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKKyAgICAgICAg
ICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0
SW5kZXg7CisKKyAgICAgICAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7CisgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBv
YmplY3RHcm91cCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfZXZhbHVhdGVPbihldmFsRnVu
Y3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21t
YW5kTGluZUFQSSkKKyAgICB7CisgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7Cisg
ICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCisgICAgICAgICAgICBjb21tYW5kTGlu
ZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUg
PyBvYmplY3QgOiBudWxsKTsKKyAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVj
dCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOworICAgIH0KKworICAgIF9jYWxsRnJhbWVG
b3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQorICAgIHsKKyAgICAgICAgbGV0IHBhcnNl
ZENhbGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIGNhbGxGcmFt
ZUlkICsgIikiKTsKKyAgICAgICAgbGV0IG9yZGluYWwgPSBwYXJzZWRDYWxsRnJhbWVJZFsib3Jk
aW5hbCJdOworICAgICAgICBsZXQgY2FsbEZyYW1lID0gdG9wQ2FsbEZyYW1lOworICAgICAgICB3
aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQorICAgICAgICAgICAgY2FsbEZyYW1l
ID0gY2FsbEZyYW1lLmNhbGxlcjsKKyAgICAgICAgcmV0dXJuIGNhbGxGcmFtZTsKKyAgICB9CisK
KyAgICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0
LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlc30pCisg
ICAgeworICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9i
amVjdElkKTsKKyAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9i
amVjdElkKTsKKyAgICAgICAgbGV0IG9iamVjdEdyb3VwTmFtZSA9IHRoaXMuX2lkVG9PYmplY3RH
cm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOworCisgICAgICAgIGlmICghaXNEZWZpbmVkKG9i
amVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGlzU3ltYm9s
KG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbGV0IHN0YXJ0
ID0gZmV0Y2hTdGFydCB8fCAwOworICAgICAgICBpZiAoc3RhcnQgPCAwKQorICAgICAgICAgICAg
c3RhcnQgPSAwOworCisgICAgICAgIGxldCBjb3VudCA9IGZldGNoQ291bnQgfHwgMDsKKyAgICAg
ICAgaWYgKGNvdW50IDwgMCkKKyAgICAgICAgICAgIGNvdW50ID0gMDsKKworICAgICAgICAvLyBB
bHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJz
dCBmZXRjaC4KKyAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9ICFzdGFydDsKKworICAgICAgICBs
ZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4geworICAgICAgICAg
ICAgaWYgKHN0YXJ0ID4gMCkgeworICAgICAgICAgICAgICAgIC0tc3RhcnQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgiZ2V0IiBpbiBkZXNjcmlwdG9yKQor
ICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNj
cmlwdG9yLmdldCwgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgICAgIGlmICgic2V0IiBpbiBk
ZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShkZXNjcmlwdG9yLnNldCwgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgICAgIGlm
ICgidmFsdWUiIGluIGRlc2NyaXB0b3IpCisgICAgICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1
ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1l
LCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgIGlmICgic3ltYm9sIiBpbiBk
ZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc3ltYm9sID0gUmVtb3RlT2Jq
ZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAg
ICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7CisKKyAgICAgICAgICAgIGlmIChpbmNs
dWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2Ny
aXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKworICAgICAgICAgICAgcmV0dXJu
IChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQpID8gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFj
dGlvbi5Db250aW51ZTsKKyAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVk
ZVByb3RvfSk7CisgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKKyAgICB9CisKKyAgICBfaW50
ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgY29tcGxldGVEZXNjcmlwdG9yKQorICAg
IHsKKyAgICAgICAgbGV0IGludGVybmFsUHJvcGVydGllcyA9IEluamVjdGVkU2NyaXB0SG9zdC5n
ZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0KTsKKyAgICAgICAgaWYgKCFpbnRlcm5hbFByb3Bl
cnRpZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBsZXQgZGVzY3JpcHRv
cnMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnRpZXMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGludGVybmFsUHJvcGVy
dGllc1tpXTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0ge25hbWU6IHByb3BlcnR5Lm5h
bWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07CisgICAgICAgICAgICBpZiAoY29tcGxldGVEZXNj
cmlwdG9yKQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOworICAgICAg
ICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZGVzY3JpcHRvcnM7CisgICAgfQorCisgICAgX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJhY2ssIHtuYXRpdmVHZXR0ZXJzQXNWYWx1
ZXMsIGluY2x1ZGVQcm90b30pCisgICAgeworICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0
LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0OworCisgICAgICAgIC8vIEhhbmRsZWQg
YmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJf
X3Byb3RvX18iKTsKKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9y
KG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVC
aW5kaW5nR2V0dGVyKQorICAgICAgICB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsKKyAg
ICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci53cml0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLndyaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IuY29u
ZmlndXJhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZW51
bWVyYWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLmVudW1lcmFi
bGUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocG9zc2li
bGVOYXRpdmVCaW5kaW5nR2V0dGVyKQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRv
ci5uYXRpdmVHZXR0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5
KQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5pc093biA9IHRydWU7CisgICAg
ICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0
b3Iuc3ltYm9sID0gc3ltYm9sOworICAgICAgICAgICAgICAgIC8vIFNpbGVuY2UgYW55IHBvc3Np
YmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25zIGNyZWF0ZWQgZnJvbSBhY2Nlc3Npbmcg
YSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRoaXMgb2JqZWN0LgorICAgICAgICAgICAg
ICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYmIEluamVj
dGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3Io
ZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRv
ci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOworICAgICAgICAgICAgICAgIHJldHVybiBmYWtl
RGVzY3JpcHRvcjsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3YXNUaHJvd246IHRydWV9Owor
ICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5KQorICAgICAgICAgICAgICAgICAgICBl
cnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChzeW1ib2wp
CisgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yRGVzY3JpcHRvcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEZXNjcmlwdG9yKGRlc2NyaXB0b3Is
IGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gQWxsIHByb3BlcnRpZXMuCisgICAgICAgICAgICBpZiAoY29sbGVjdGlv
bk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhkZXNjcmlwdG9yKTsKKworICAgICAgICAgICAg
Ly8gT3duIHByb3BlcnRpZXMuCisgICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmpl
Y3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzICYmIGlzT3duUHJvcGVydHkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGRlc2NyaXB0b3IpOworCisgICAgICAg
ICAgICAvLyBOYXRpdmUgR2V0dGVyIHByb3BlcnRpZXMuCisgICAgICAgICAgICBpZiAoY29sbGVj
dGlvbk1vZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9w
ZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRl
cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGRlc2NyaXB0b3IpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5
KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOworCisgICAg
ICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKKworICAgICAgICAgICAg
bGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbGV0IHN5bWJv
bCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBudWxsOworCisgICAg
ICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/Cisg
ICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3Mu
CisgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVlRGVz
Y3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBwcm9jZXNzRGVzY3JpcHRvcihmYWtlRGVzY3JpcHRvciwgaXNPd25Q
cm9wZXJ0eSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChuYXRpdmVHZXR0ZXJz
QXNWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoU3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5l
bmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgZGVzY3Jp
cHRvci5AaGFzT3duUHJvcGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlw
dG9yLkBoYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERl
dmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ugc2hvdWxkIGJlIHJl
c2lsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih4LCAicCIpCisgICAgICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRv
ciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBp
c093blByb3BlcnR5LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NE
ZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlc2NyaXB0b3IubmFtZSA9
IG5hbWU7CisgICAgICAgICAgICBpZiAoaXNPd25Qcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBk
ZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAg
ICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CisgICAgICAgICAgICByZXR1cm4g
cHJvY2Vzc0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7CisgICAgICAgIH0K
KworICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFy
cmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKKyAg
ICAgICAgfSBjYXRjaCB7IH0KKworICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmlu
ZWQobyk7IG8gPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVPZihvKSkgeworICAgICAgICAgICAgbGV0
IGlzT3duUHJvcGVydHkgPSBvID09PSBvYmplY3Q7CisgICAgICAgICAgICBsZXQgc2hvdWxkQnJl
YWsgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8yMDE4NjE+IFdlYiBJbnNwZWN0b3I6IHNob3cgYXV0b2NvbXBsZXRlIGVudHJpZXMgZm9yIG5v
bi1pbmRleCBwcm9wZXJ0aWVzIG9uIGFycmF5cworICAgICAgICAgICAgaWYgKGlzQXJyYXlMaWtl
ICYmIGlzT3duUHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IG8ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSBpbiBvKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgdG9TdHJpbmcoaSksIGlzT3duUHJvcGVydHkp
OworICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOworICAgICAgICAgICAgICAgICAgICBpZiAo
c2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0
eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5h
bWVzW2ldLCBpc093blByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsg
PSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGlmIChAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgcHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8pOwor
ICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVy
dHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0
Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uTW9kZSA9PT0gSW5qZWN0ZWRTY3JpcHQu
Q29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChpbmNsdWRlUHJvdG8pIHsKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5fX3Byb3RvX18pCisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHtuYW1lOiAiX19wcm90b19fIiwgdmFsdWU6IG9iamVjdC5fX3Byb3RvX18s
IHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGlzT3duOiB0cnVlfSk7CisgICAg
ICAgICAgICB9IGNhdGNoIHsgfQorICAgICAgICB9CisgICAgfQorCisgICAgX2dldFNldEVudHJp
ZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQorICAgIHsKKyAgICAgICAgbGV0IGVu
dHJpZXMgPSBbXTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRo
ZSBwYWdlIG92ZXJyaWRlcyBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCisgICAgICAg
IGZvciAobGV0IHZhbHVlIG9mIG9iamVjdCkgeworICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQg
PiAwKSB7CisgICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVl
fSk7CisKKyAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBm
ZXRjaENvdW50KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGVudHJpZXM7CisgICAgfQorCisgICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50KQorICAgIHsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKwor
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRl
cyBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCisgICAgICAgIGZvciAobGV0IFtrZXks
IHZhbHVlXSBvZiBvYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewor
ICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7
CisKKyAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRj
aENvdW50KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGVudHJpZXM7CisgICAgfQorCisgICAgX2dldFdlYWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0
Y2hDb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha01h
cEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKKyAgICB9CisKKyAgICBfZ2V0V2Vha1NldEVu
dHJpZXMob2JqZWN0LCBmZXRjaENvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0SG9zdC53ZWFrU2V0RW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpOworICAgIH0KKwor
ICAgIF9nZXRJdGVyYXRvckVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pdGVyYXRvckVudHJpZXMob2JqZWN0LCBmZXRj
aENvdW50KTsKKyAgICB9CisKKyAgICBfZW50cmllcyhvYmplY3QsIHN1YnR5cGUsIGZldGNoU3Rh
cnQsIGZldGNoQ291bnQpCisgICAgeworICAgICAgICBpZiAoc3VidHlwZSA9PT0gInNldCIpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U2V0RW50cmllcyhvYmplY3QsIGZldGNoU3RhcnQs
IGZldGNoQ291bnQpOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIm1hcCIpCisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fZ2V0TWFwRW50cmllcyhvYmplY3QsIGZldGNoU3RhcnQsIGZldGNoQ291
bnQpOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIndlYWttYXAiKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2dldFdlYWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7CisgICAgICAg
IGlmIChzdWJ0eXBlID09PSAid2Vha3NldCIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0
V2Vha1NldEVudHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKKyAgICAgICAgaWYgKHN1YnR5cGUg
PT09ICJpdGVyYXRvciIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0SXRlcmF0b3JFbnRy
aWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7CisKKyAgICAgICAgdGhyb3cgInVuZXhwZWN0ZWQgdHlw
ZSI7CisgICAgfQorCisgICAgX3NhdmVSZXN1bHQocmVzdWx0KQorICAgIHsKKyAgICAgICAgdGhp
cy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKKworICAgICAgICBpZiAocmVzdWx0ID09PSBAdW5kZWZp
bmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBs
ZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7Cisg
ICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgeworICAgICAgICAgICAgdGhpcy5fc2F2
ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5fbmV4dFNhdmVk
UmVzdWx0SW5kZXg7CisgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0c1t0aGlzLl9uZXh0U2F2ZWRS
ZXN1bHRJbmRleCsrXSA9IHJlc3VsdDsKKworICAgICAgICAvLyAkbiBpcyBsaW1pdGVkIGZyb20g
JDEtJDk5LiAkMCBpcyBzcGVjaWFsLgorICAgICAgICBpZiAodGhpcy5fbmV4dFNhdmVkUmVzdWx0
SW5kZXggPj0gMTAwKQorICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAx
OworICAgIH0KK307CisKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0geworICAgIE93
blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCisgICAgTmF0
aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMg
aW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAgICAg
ICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCit9OworCitJbmpl
Y3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uID0geworICAgIENvbnRpbnVlOiBAY3JlYXRl
UHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBTdG9wOiBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgic3RvcCIpLAorfQorCit2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7
CisKKy8vIC0tLS0tLS0KKworbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAor
eworICAgIGNvbnN0cnVjdG9yKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lLCBmb3JjZVZhbHVlVHlw
ZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcykKKyAgICB7CisgICAgICAgIHRoaXMudHlw
ZSA9IHR5cGVvZiBvYmplY3Q7CisKKyAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gInVuZGVmaW5l
ZCIgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24ob2JqZWN0KSkKKyAg
ICAgICAgICAgIHRoaXMudHlwZSA9ICJvYmplY3QiOworCisgICAgICAgIGlmIChpc1ByaW1pdGl2
ZVZhbHVlKG9iamVjdCkgfHwgaXNCaWdJbnQob2JqZWN0KSB8fCBvYmplY3QgPT09IG51bGwgfHwg
Zm9yY2VWYWx1ZVR5cGUpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHNlbmQgdW5kZWZpbmVk
IHZhbHVlcyBvdmVyIEpTT04uCisgICAgICAgICAgICAvLyBCaWdJbnQgdmFsdWVzIGFyZSBub3Qg
SlNPTiBzZXJpYWxpemFibGUuCisgICAgICAgICAgICBpZiAodGhpcy50eXBlICE9PSAidW5kZWZp
bmVkIiAmJiB0aGlzLnR5cGUgIT09ICJiaWdpbnQiKQorICAgICAgICAgICAgICAgIHRoaXMudmFs
dWUgPSBvYmplY3Q7CisKKyAgICAgICAgICAgIC8vIE51bGwgb2JqZWN0IGlzIG9iamVjdCB3aXRo
ICdudWxsJyBzdWJ0eXBlLgorICAgICAgICAgICAgaWYgKG9iamVjdCA9PT0gbnVsbCkKKyAgICAg
ICAgICAgICAgICB0aGlzLnN1YnR5cGUgPSAibnVsbCI7CisKKyAgICAgICAgICAgIC8vIFByb3Zp
ZGUgdXNlci1mcmllbmRseSBudW1iZXIgdmFsdWVzLgorICAgICAgICAgICAgaWYgKHRoaXMudHlw
ZSA9PT0gIm51bWJlciIgfHwgdGhpcy50eXBlID09PSAiYmlnaW50IikKKyAgICAgICAgICAgICAg
ICB0aGlzLmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmplY3QpOworCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm9iamVjdElkID0gaW5q
ZWN0ZWRTY3JpcHQuX2JpbmQob2JqZWN0LCBvYmplY3RHcm91cE5hbWUpOworCisgICAgICAgIGxl
dCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKKyAgICAgICAgaWYgKHN1
YnR5cGUpCisgICAgICAgICAgICB0aGlzLnN1YnR5cGUgPSBzdWJ0eXBlOworCisgICAgICAgIHRo
aXMuY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVybmFsQ29uc3RydWN0b3JOYW1l
KG9iamVjdCk7CisgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3Jp
YmUob2JqZWN0KTsKKworICAgICAgICBpZiAoc3VidHlwZSA9PT0gImFycmF5IikKKyAgICAgICAg
ICAgIHRoaXMuc2l6ZSA9IHR5cGVvZiBvYmplY3QubGVuZ3RoID09PSAibnVtYmVyIiA/IG9iamVj
dC5sZW5ndGggOiAwOworICAgICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAic2V0IiB8fCBzdWJ0
eXBlID09PSAibWFwIikKKyAgICAgICAgICAgIHRoaXMuc2l6ZSA9IG9iamVjdC5zaXplOworICAg
ICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAid2Vha21hcCIpCisgICAgICAgICAgICB0aGlzLnNp
emUgPSBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha01hcFNpemUob2JqZWN0KTsKKyAgICAgICAgZWxz
ZSBpZiAoc3VidHlwZSA9PT0gIndlYWtzZXQiKQorICAgICAgICAgICAgdGhpcy5zaXplID0gSW5q
ZWN0ZWRTY3JpcHRIb3N0LndlYWtTZXRTaXplKG9iamVjdCk7CisgICAgICAgIGVsc2UgaWYgKHN1
YnR5cGUgPT09ICJjbGFzcyIpIHsKKyAgICAgICAgICAgIHRoaXMuY2xhc3NQcm90b3R5cGUgPSBS
ZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdC5wcm90b3R5cGUsIG9iamVjdEdyb3VwTmFtZSk7Cisg
ICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IG9iamVjdC5uYW1lOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGdlbmVyYXRlUHJldmlldyAmJiB0aGlzLnR5cGUgPT09ICJvYmplY3QiKSB7Cisg
ICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5IikgeworICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJv
eHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKKyAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9z
c2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMu
cHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNvbHVt
bk5hbWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGlj
IGNyZWF0ZShvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwgZm9yY2VWYWx1ZVR5cGUsIGdlbmVyYXRl
UHJldmlldywgY29sdW1uTmFtZXMpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAg
cmV0dXJuIG5ldyBSZW1vdGVPYmplY3Qob2JqZWN0LCBvYmplY3RHcm91cE5hbWUsIGZvcmNlVmFs
dWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKTsKKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uOworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZShlKTsKKyAg
ICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICAgICAgYWxlcnQoZXgubWVzc2Fn
ZSk7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiPGZhaWxlZCB0byBjb252ZXJ0IGV4
Y2VwdGlvbiB0byBzdHJpbmc+IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBu
ZXcgUmVtb3RlT2JqZWN0KGRlc2NyaXB0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0
YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpCisgICAgeworICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90
ZU9iamVjdCh2YWx1ZSwgQHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1u
TmFtZXMpOworICAgICAgICBpZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQorICAgICAgICAgICAg
aW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOworICAg
ICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFz
c1Byb3RvdHlwZS5vYmplY3RJZCkKKyAgICAgICAgICAgIGluamVjdGVkU2NyaXB0LnJlbGVhc2VP
YmplY3QocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKTsKKyAgICAgICAgcmV0
dXJuIHJlbW90ZU9iamVjdC5wcmV2aWV3IHx8IHJlbW90ZU9iamVjdC5fZW1wdHlQcmV2aWV3KCk7
CisgICAgfQorCisgICAgc3RhdGljIHN1YnR5cGUodmFsdWUpCisgICAgeworICAgICAgICBpZiAo
dmFsdWUgPT09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gIm51bGwiOworCisgICAgICAgIGlm
IChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSB8fCBpc0JpZ0ludCh2YWx1ZSkgfHwgaXNTeW1ib2wo
dmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKEluamVjdGVk
U2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0aW9uKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biAiYXJyYXkiOworCisgICAgICAgIGxldCBwcmVjaXNlVHlwZSA9IEluamVjdGVkU2NyaXB0SG9z
dC5zdWJ0eXBlKHZhbHVlKTsKKyAgICAgICAgaWYgKHByZWNpc2VUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIHByZWNpc2VUeXBlOworCisgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rp
b24uCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9
PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgICAg
IHJldHVybiAiYXJyYXkiOworICAgICAgICB9IGNhdGNoIHsgfQorCisgICAgICAgIHJldHVybiBu
dWxsOworICAgIH0KKworICAgIHN0YXRpYyBkZXNjcmliZSh2YWx1ZSkKKyAgICB7CisgICAgICAg
IGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
CisgICAgICAgIGlmIChpc0JpZ0ludCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHRvU3Ry
aW5nKHZhbHVlKTsKKworICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBl
KHZhbHVlKTsKKworICAgICAgICBpZiAoc3VidHlwZSA9PT0gInJlZ2V4cCIpCisgICAgICAgICAg
ICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOworCisgICAgICAgIGlmIChzdWJ0eXBlID09PSAiZGF0
ZSIpCisgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOworCisgICAgICAgIGlmIChz
dWJ0eXBlID09PSAiZXJyb3IiKQorICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKTsK
KworICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5IikKKyAgICAgICAgICAgIHJldHVybiAi
UHJveHkiOworCisgICAgICAgIGlmIChzdWJ0eXBlID09PSAibm9kZSIpCisgICAgICAgICAgICBy
ZXR1cm4gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3KHZhbHVlKTsKKworICAgICAgICBsZXQgY2xh
c3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVybmFsQ29uc3RydWN0b3JOYW1lKHZhbHVl
KTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpCisgICAgICAgICAgICByZXR1cm4g
Y2xhc3NOYW1lOworCisgICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJv
bC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wu
dG9TdHJpbmdUYWddOworCisgICAgICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9u
LCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4KKyAgICAgICAgaWYgKHR5cGVvZiB2YWx1
ZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOwor
CisgICAgICAgIC8vIElmIE9iamVjdCwgdHJ5IGZvciBhIGJldHRlciBuYW1lIGZyb20gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICBpZiAoY2xhc3NOYW1lID09PSAiT2JqZWN0IikgeworICAgICAg
ICAgICAgbGV0IGNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNv
bnN0cnVjdG9yLm5hbWU7CisgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JOYW1lKQorICAgICAg
ICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWU7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gY2xhc3NOYW1lOworICAgIH0KKworICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQor
ICAgIHsKKyAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQgJiYg
ISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKKyAgICAgICAgbGV0IG5vZGVOYW1lID0g
aXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk7CisKKyAgICAgICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7CisgICAgICAgIGNhc2UgMTog
Ly8gTm9kZS5FTEVNRU5UX05PREUKKyAgICAgICAgICAgIGlmIChub2RlLmlkKQorICAgICAgICAg
ICAgICAgIHJldHVybiAiPCIgKyBub2RlTmFtZSArICIgaWQ9XCIiICsgbm9kZS5pZCArICJcIj4i
OworICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0Lmxlbmd0aCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIGNsYXNzPVwiIiArIG5vZGUuY2xhc3NMaXN0LnRv
U3RyaW5nKCkucmVwbGFjZSgvXHMrLywgIiAiKSArICJcIj4iOworICAgICAgICAgICAgaWYgKG5v
ZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUudHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
IjwiICsgbm9kZU5hbWUgKyAiIHR5cGU9XCIiICsgbm9kZS50eXBlICsgIlwiPiI7CisgICAgICAg
ICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiPiI7CisKKyAgICAgICAgY2FzZSAzOiAvLyBO
b2RlLlRFWFRfTk9ERQorICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lICsgIiBcIiIgKyBub2Rl
Lm5vZGVWYWx1ZSArICJcIiI7CisKKyAgICAgICAgY2FzZSA4OiAvLyBOb2RlLkNPTU1FTlRfTk9E
RQorICAgICAgICAgICAgcmV0dXJuICI8IS0tIiArIG5vZGUubm9kZVZhbHVlICsgIi0tPiI7CisK
KyAgICAgICAgY2FzZSAxMDogLy8gTm9kZS5ET0NVTUVOVF9UWVBFX05PREUKKyAgICAgICAgICAg
IHJldHVybiAiPCFET0NUWVBFICIgKyBub2RlTmFtZSArICI+IjsKKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gUHJpdmF0ZQorCisgICAgX2luaXRpYWxQcmV2aWV3KCkKKyAgICB7CisgICAgICAgIGxldCBw
cmV2aWV3ID0geworICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLAorICAgICAgICAgICAgZGVz
Y3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSksCisgICAg
ICAgICAgICBsb3NzbGVzczogdHJ1ZSwKKyAgICAgICAgfTsKKworICAgICAgICBpZiAodGhpcy5z
dWJ0eXBlKSB7CisgICAgICAgICAgICBwcmV2aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5cGU7Cisg
ICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVsbCIpIHsKKyAgICAgICAgICAgICAg
ICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcHJldmlldy5wcm9w
ZXJ0aWVzID0gW107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoInNp
emUiIGluIHRoaXMpCisgICAgICAgICAgICBwcmV2aWV3LnNpemUgPSB0aGlzLnNpemU7CisKKyAg
ICAgICAgcmV0dXJuIHByZXZpZXc7CisgICAgfQorCisgICAgX2VtcHR5UHJldmlldygpCisgICAg
eworICAgICAgICBsZXQgcHJldmlldyA9IHRoaXMuX2luaXRpYWxQcmV2aWV3KCk7CisKKyAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpIHsKKyAgICAgICAgICAgIGlmICh0aGlz
LnNpemUpIHsKKyAgICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAg
ICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcHJldmll
dy5vdmVyZmxvdyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gcHJldmlldzsKKyAgICB9CisKKyAgICBfZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgZmly
c3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cykKKyAgICB7CisgICAgICAgIGxldCBwcmV2aWV3
ID0gdGhpcy5faW5pdGlhbFByZXZpZXcoKTsKKyAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVz
dCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZlbEtleXM7CisgICAgICAg
IGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5
cy5sZW5ndGggOiAwOworCisgICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0geworICAg
ICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4
KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJv
d3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQorICAg
ICAgICB9OworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBNYXBzLCBTZXRzLCBhbmQg
SXRlcmF0b3JzIGhhdmUgZW50cmllcy4KKyAgICAgICAgICAgIGlmICh0aGlzLnN1YnR5cGUgPT09
ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vh
a21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3NldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAi
aXRlcmF0b3IiKQorICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZEVudHJ5UHJldmlld3Mob2Jq
ZWN0LCBwcmV2aWV3KTsKKworICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107CisK
KyAgICAgICAgICAgIC8vIEludGVybmFsIFByb3BlcnRpZXMuCisgICAgICAgICAgICBsZXQgaW50
ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0gaW5qZWN0ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUpOworICAgICAgICAgICAgaWYgKGludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9ycykgeworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
aW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBw
cmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hv
bGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbDogdHJ1ZX0pOwor
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0
eUZldGNoQWN0aW9uLlN0b3ApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmll
dzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChw
cmV2aWV3LmVudHJpZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXc7CisKKyAgICAg
ICAgICAgIC8vIFByb3BlcnRpZXMuCisgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFj
aFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2Rl
LkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3Is
IHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwor
ICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3Rv
OiB0cnVlfSkKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNz
ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcHJldmlldzsKKyAgICB9CisK
KyAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwg
cHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2lu
dGVybmFsfSA9IHt9KQorICAgIHsKKyAgICAgICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRvci4KKyAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7CisgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVy
dHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvIG5vdCBz
aG93ICJfX3Byb3RvX18iIGluIHByZXZpZXcuCisgICAgICAgIGxldCBuYW1lID0gZGVzY3JpcHRv
ci5uYW1lOworICAgICAgICBpZiAobmFtZSA9PT0gIl9fcHJvdG9fXyIpIHsKKyAgICAgICAgICAg
IC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2JqZWN0cyBtYXkgaGF2ZSBpbnRlcmVzdGluZywgbm9u
LWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hvdy4KKyAgICAgICAgICAgIGlmIChkZXNjcmlwdG9y
LnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IKKyAgICAgICAgICAgICAgICAm
JiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAT2JqZWN0CisgICAgICAgICAgICAg
ICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQEFycmF5CisgICAgICAgICAg
ICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQFJlZ0V4cCkKKyAgICAg
ICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZvciBhcnJheXMsIG9ubHkgYWxsb3cgaW5kZXhlcy4KKyAgICAgICAgaWYg
KHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiAhaXNVSW50MzIobmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKwor
ICAgICAgICAvLyBEbyBub3Qgc2hvdyBub24tZW51bWVyYWJsZSBub24tb3duIHByb3BlcnRpZXMu
CisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBhbGxvdyBhcnJheSBpbmRleGVzIHRoYXQgbWF5
IGJlIG9uIHRoZSBwcm90b3R5cGUuCisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBhbGxvdyBu
YXRpdmUgZ2V0dGVycyBvbiBub24tUmVnRXhwIG9iamVjdHMuCisgICAgICAgIGlmICghZGVzY3Jp
cHRvci5lbnVtZXJhYmxlICYmICFkZXNjcmlwdG9yLmlzT3duICYmICEodGhpcy5zdWJ0eXBlID09
PSAiYXJyYXkiIHx8ICh0aGlzLnN1YnR5cGUgIT09ICJyZWdleHAiICYmIGRlc2NyaXB0b3IubmF0
aXZlR2V0dGVyKSkpCisgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBv
bmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgorICAgICAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KKyAgICAgICAg
aWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAg
ICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRp
bnVlOworCisgICAgICAgIGZ1bmN0aW9uIGFwcGVuZFByZXZpZXcocHJvcGVydHkpIHsKKyAgICAg
ICAgICAgIGlmICh0b1N0cmluZyhwcm9wZXJ0eS5uYW1lID4+PiAwKSA9PT0gcHJvcGVydHkubmFt
ZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzVGhyZXNob2xkLmluZGV4ZXMtLTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzVGhyZXNob2xkLnByb3BlcnRp
ZXMtLTsKKworICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNUaHJlc2hvbGQuaW5kZXhlcyA8IDAg
fHwgcHJvcGVydGllc1RocmVzaG9sZC5wcm9wZXJ0aWVzIDwgMCkgeworICAgICAgICAgICAgICAg
IHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOworICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xl
c3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVy
dHlGZXRjaEFjdGlvbi5TdG9wOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW50
ZXJuYWwpCisgICAgICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOworCisgICAg
ICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEdldHRlci9zZXR0ZXIuCisgICAgICAgIGlmICghKCJ2YWx1ZSIg
aW4gZGVzY3JpcHRvcikpIHsKKyAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3Ii
fSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOdWxsIHZhbHVlLgorICAgICAgICBsZXQgdmFs
dWUgPSBkZXNjcmlwdG9yLnZhbHVlOworICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCisgICAg
ICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5
cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOworCisgICAgICAgIC8vIElnbm9yZSBub24tZW51
bWVyYWJsZSBmdW5jdGlvbnMuCisgICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlOworICAg
ICAgICBpZiAoIWRlc2NyaXB0b3IuZW51bWVyYWJsZSAmJiB0eXBlID09PSAiZnVuY3Rpb24iKQor
ICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29u
dGludWU7CisKKyAgICAgICAgLy8gRml4IHR5cGUgb2YgZG9jdW1lbnQuYWxsLgorICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24odmFsdWUpKQorICAgICAg
ICAgICAgdHlwZSA9ICJvYmplY3QiOworCisgICAgICAgIC8vIFByaW1pdGl2ZS4KKyAgICAgICAg
Y29uc3QgbWF4TGVuZ3RoID0gMTAwOworICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZSh2YWx1
ZSkgfHwgaXNCaWdJbnQodmFsdWUpKSB7CisgICAgICAgICAgICBpZiAodHlwZSA9PT0gInN0cmlu
ZyIgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVlLCBtYXhMZW5ndGgsIHRydWUpOworICAgICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdE
ZXNjcmlwdGlvbih2YWx1ZSl9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN5bWJvbC4KKyAg
ICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkgeworICAgICAgICAgICAgbGV0IHN5bWJvbFN0cmlu
ZyA9IHRvU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChzeW1ib2xTdHJpbmcubGVuZ3Ro
ID4gbWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJi
cmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1heExlbmd0aCwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9iamVjdC4KKyAgICAgICAgbGV0IHByb3BlcnR5
ID0ge25hbWUsIHR5cGV9OworICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0
eXBlKHZhbHVlKTsKKyAgICAgICAgaWYgKHN1YnR5cGUpCisgICAgICAgICAgICBwcm9wZXJ0eS5z
dWJ0eXBlID0gc3VidHlwZTsKKworICAgICAgICAvLyBTZWNvbmQgbGV2ZWwuCisgICAgICAgIGlm
ICgoc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8IHNlY29uZExldmVsS2V5cykgfHwgdGhpcy5f
aXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IElmIHdlIHdhbnQgc2Vjb25kTGV2ZWxLZXlzIGZpbHRlciB0byBjb250aW51ZSB3ZSB3b3Vs
ZCBuZWVkIHNvbWUgcmVmYWN0b3JpbmcuCisgICAgICAgICAgICBsZXQgc3ViUHJldmlldyA9IFJl
bW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIHZhbHVlICE9PSBv
YmplY3QsIHNlY29uZExldmVsS2V5cyk7CisgICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZVByZXZp
ZXcgPSBzdWJQcmV2aWV3OworICAgICAgICAgICAgaWYgKCFzdWJQcmV2aWV3Lmxvc3NsZXNzKQor
ICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChzdWJQcmV2aWV3Lm92ZXJmbG93KQorICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cg
PSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0g
IiI7CisgICAgICAgICAgICBpZiAodHlwZSAhPT0gImZ1bmN0aW9uIiB8fCBzdWJ0eXBlID09PSAi
Y2xhc3MiKSB7CisgICAgICAgICAgICAgICAgbGV0IGZ1bGxEZXNjcmlwdGlvbjsKKyAgICAgICAg
ICAgICAgICBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikKKyAgICAgICAgICAgICAgICAgICAgZnVs
bERlc2NyaXB0aW9uID0gImNsYXNzICIgKyB2YWx1ZS5uYW1lOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHN1YnR5cGUgPT09ICJub2RlIikKKyAgICAgICAgICAgICAgICAgICAgZnVsbERlc2Ny
aXB0aW9uID0gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3KHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZ1bGxEZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVj
dC5kZXNjcmliZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLl9h
YmJyZXZpYXRlU3RyaW5nKGZ1bGxEZXNjcmlwdGlvbiwgbWF4TGVuZ3RoLCBzdWJ0eXBlID09PSAi
cmVnZXhwIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IGRl
c2NyaXB0aW9uOworICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcocHJvcGVydHkpOworICAgIH0KKwor
ICAgIF9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwgcHJldmlldykKKyAgICB7CisgICAgICAg
IC8vIEZldGNoIDYsIGJ1dCBvbmx5IHJldHVybiA1LCBzbyB3ZSBjYW4gdGVsbCBpZiB3ZSBvdmVy
Zmxvd2VkLgorICAgICAgICBsZXQgZW50cmllcyA9IGluamVjdGVkU2NyaXB0Ll9lbnRyaWVzKG9i
amVjdCwgdGhpcy5zdWJ0eXBlLCAwLCA2KTsKKyAgICAgICAgaWYgKCFlbnRyaWVzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKKyAgICAg
ICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1
ZTsKKyAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1haW5QcmV2aWV3KHN1YlByZXZpZXcpIHsKKyAgICAgICAg
ICAgIGlmICghc3ViUHJldmlldy5sb3NzbGVzcykKKyAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBl
bnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgZW50cnkudmFsdWUgPSBS
ZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRy
eS52YWx1ZSAhPT0gb2JqZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkgeworICAgICAgICAgICAg
ICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUo
ZW50cnkua2V5LCBlbnRyeS5rZXkgIT09IG9iamVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRl
TWFpblByZXZpZXcoZW50cnkua2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBlbnRyeTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX2lzUHJldmlld2FibGVPYmplY3Qo
dmFsdWUsIG9iamVjdCkKKyAgICB7CisgICAgICAgIGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAg
ICAgc2V0LkBhZGQob2JqZWN0KTsKKworICAgICAgICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJs
ZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEpOworICAgIH0KKworICAgIF9pc1ByZXZpZXdh
YmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0LCBrbm93bk9iamVjdHMsIGRlcHRoKQorICAgIHsKKyAg
ICAgICAgLy8gRGVlcCBvYmplY3QuCisgICAgICAgIGlmIChkZXB0aCA+IDMpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gUHJpbWl0aXZlLgorICAgICAgICBpZiAoaXNQ
cmltaXRpdmVWYWx1ZShvYmplY3QpIHx8IGlzQmlnSW50KG9iamVjdCkgfHwgaXNTeW1ib2wob2Jq
ZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIE51bGwuCisgICAg
ICAgIGlmIChvYmplY3QgPT09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KKyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2Jq
ZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICArK2RlcHRoOworICAg
ICAgICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisKKyAgICAgICAgLy8gQXJyYXlzIGFyZSBz
aW1wbGUgaWYgdGhleSBoYXZlIDUgb3IgbGVzcyBzaW1wbGUgb2JqZWN0cy4KKyAgICAgICAgbGV0
IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOworICAgICAgICBpZiAoc3Vi
dHlwZSA9PT0gImFycmF5IikgeworICAgICAgICAgICAgbGV0IGxlbmd0aCA9IG9iamVjdC5sZW5n
dGg7CisgICAgICAgICAgICBpZiAobGVuZ3RoID4gNSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2Jq
ZWN0W2ldLCBrbm93bk9iamVjdHMsIGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKworICAgICAgICAvLyBOb3QgYSBiYXNpYyBvYmplY3QuCisgICAgICAgIGlmIChvYmplY3Qu
X19wcm90b19fICYmIG9iamVjdC5fX3Byb3RvX18uX19wcm90b19fKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUg
MyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgorICAgICAgICBsZXQgb3duUHJvcGVy
dHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKKyAgICAgICAg
aWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gb3duUHJvcGVydHlOYW1lc1tp
XTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGlmIChkZXNjcmlw
dG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5h
bChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgX2FiYnJldmlhdGVTdHJpbmcoc3RyaW5nLCBtYXhMZW5ndGgsIG1pZGRsZSkK
KyAgICB7CisgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoIDw9IG1heExlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybiBzdHJpbmc7CisKKyAgICAgICAgaWYgKG1pZGRsZSkgeworICAgICAgICAgICAg
bGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7CisgICAgICAgICAgICBsZXQgcmlnaHRIYWxm
ID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5z
dWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5sZW5n
dGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
c3RyaW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1MjAyNiI7CisgICAgfQorfTsKKworLy8g
LS0tLS0tLQorCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGZ1bmN0aW9uKG9yZGlu
YWwsIGNhbGxGcmFtZSkKK3sKKyAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6JHtv
cmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOworICAgIHRo
aXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKKyAgICB0aGlzLmxvY2F0
aW9uID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1lLnNvdXJjZUlEKSwgbGluZU51bWJlcjog
Y2FsbEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2FsbEZyYW1lLmNvbHVtbn07CisgICAgdGhp
cy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKKyAgICB0aGlz
LnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3Ry
YWNlIik7CisgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7
Cit9OworCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CisgICAg
X3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIGxldCBzY29wZUNoYWlu
ID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CisgICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9ucyA9
IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOworCisgICAgICAgIGxldCBzY29wZUNoYWlu
UHJveHkgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQu
Q2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29wZUNoYWluW2ldLCBzY29wZURlc2Ny
aXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOworICAgICAgICByZXR1cm4gc2NvcGVDaGFpblByb3h5
OworICAgIH0KK307CisKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVO
YW1lcyA9IHsKKyAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCisgICAgMTogIndpdGgi
LCAvLyBXSVRIX1NDT1BFCisgICAgMjogImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BFCisgICAg
MzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAgICA0OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVO
Q1RJT05fTkFNRV9TQ09QRQorICAgIDU6ICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBH
TE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQorICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwg
Ly8gTkVTVEVEX0xFWElDQUxfU0NPUEUKK307CisKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVBy
b3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2Nh
dGlvbn0sIGdyb3VwSWQpCit7CisgICAgbGV0IHNjb3BlID0geworICAgICAgICBvYmplY3Q6IFJl
bW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKKyAgICAgICAgdHlwZTogSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAorICAgIH07CisK
KyAgICBpZiAobmFtZSkKKyAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisKKyAgICBpZiAobG9j
YXRpb24pCisgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CisKKyAgICBpZiAoaXNF
bXB0eU9iamVjdChvYmplY3QpKQorICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7CisKKyAgICBy
ZXR1cm4gc2NvcGU7Cit9CisKKy8vIC0tLS0tLS0KKworZnVuY3Rpb24gQ29tbWFuZExpbmVBUEko
Y2FsbEZyYW1lKQoreworICAgIGxldCBzYXZlZFJlc3VsdEFsaWFzID0gSW5qZWN0ZWRTY3JpcHRI
b3N0LnNhdmVkUmVzdWx0QWxpYXM7CisKKyAgICBsZXQgZGVmaW5lR2V0dGVyID0gKGtleSwgdmFs
dWUsIHdyYXApID0+IHsKKyAgICAgICAgaWYgKHdyYXApIHsKKyAgICAgICAgICAgIGxldCBvcmln
aW5hbFZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gb3JpZ2luYWxWYWx1ZTsgfTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX19kZWZpbmVH
ZXR0ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKKyAgICAgICAgaWYgKHNhdmVkUmVzdWx0QWxpYXMg
JiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQorICAgICAgICAgICAgdGhpcy5fX2RlZmluZUdl
dHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZhbHVlKTsKKyAgICB9OworCisgICAgaWYg
KCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCisgICAgICAgIGRlZmluZUdldHRlcigi
XyIsIGluamVjdGVkU2NyaXB0Ll9sYXN0UmVzdWx0LCB0cnVlKTsKKworICAgIGlmICgiX2V4Y2Vw
dGlvblZhbHVlIiBpbiBpbmplY3RlZFNjcmlwdCkKKyAgICAgICAgZGVmaW5lR2V0dGVyKCJleGNl
cHRpb24iLCBpbmplY3RlZFNjcmlwdC5fZXhjZXB0aW9uVmFsdWUsIHRydWUpOworCisgICAgaWYg
KCJfZXZlbnRWYWx1ZSIgaW4gaW5qZWN0ZWRTY3JpcHQpCisgICAgICAgIGRlZmluZUdldHRlcigi
ZXZlbnQiLCBpbmplY3RlZFNjcmlwdC5fZXZlbnRWYWx1ZSwgdHJ1ZSk7CisKKyAgICAvLyAkMS0k
OTkKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluamVjdGVkU2NyaXB0Ll9zYXZlZFJlc3VsdHMu
bGVuZ3RoOyArK2kpCisgICAgICAgIGRlZmluZUdldHRlcihpLCBpbmplY3RlZFNjcmlwdC5fc2F2
ZWRSZXN1bHRzW2ldLCB0cnVlKTsKKworICAgIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVB
UEkuZ2V0dGVycykKKyAgICAgICAgZGVmaW5lR2V0dGVyKG5hbWUsIENvbW1hbmRMaW5lQVBJLmdl
dHRlcnNbbmFtZV0pOworCisgICAgZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRo
b2RzKQorICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXTsK
K30KKworQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OworCitDb21tYW5kTGluZUFQSS5tZXRo
b2RzID0ge307CisKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9i
amVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZh
bHVlcyhvYmplY3QpOyB9OworCitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNl
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVy
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJz
KC4uLmFyZ3VtZW50cyk7IH07CisKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluc3BlY3QiXSA9
IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChv
YmplY3QpOyB9OworCitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3Vt
ZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5hcmd1bWVudHMp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQoLi4uYXJndW1lbnRzKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5hcmd1bWVudHMp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uYXJndW1lbnRzKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uYXJndW1lbnRzKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsgfTsKKworZm9yIChsZXQgbmFtZSBpbiBD
b21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0u
dG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7
IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKworcmV0dXJuIGluamVjdGVkU2NyaXB0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCmluZGV4IGUxM2NjNzI5ZThiZWQ0ODRiNTc1NzM5YTIyMWQwYzU1N2E0
MWE3YzYuLjA5NjQ3Y2E2MDZiZWQ1MTZjMTU2Y2M5NzRmMzQ0YTk0YTc5ZGE3ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3Qu
aCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIkpTTG9jay5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
QEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjbGVhckV4
Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuY2xlYXJFeGNlcHRpb25WYWx1
ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNv
dXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKElu
amVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsK
LX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgaWQpCitFeHBlY3RlZDxKU09iamVjdCos
IE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0
ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAgU291cmNlQ29k
ZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UsIHsgfSk7CiAgICAgSlNWYWx1ZSBnbG9i
YWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIAotICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBJbnNwZWN0b3JFdmFsdWF0ZUhh
bmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9ubWVudC5ldmFsdWF0ZUhhbmRsZXIoKTsK
LSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0
LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwotICAg
IGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
ZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byogZnVuY3Rpb25WYWx1ZSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBpZiAo
IWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBjYWxs
RGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvblZhbHVlKTsKICAgICBpZiAoY2FsbERhdGEu
dHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAgLTE2Niw3ICsxNTksNyBAQCBFeHBlY3Rl
ZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVl
LCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAgICBzY29wZS5jbGVhckV4Y2Vw
dGlvbigpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNj
b3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXRPYmplY3QoKTsKIH0KIApA
QCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihn
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3Jp
cHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFsT2JqZWN0LCBpZCk7CisgICAgYXV0byBj
cmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChnbG9iYWxPYmplY3QsIGlkKTsKICAg
ICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3Vs
dC5lcnJvcigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwpAQCAtMTk3LDEyICsxOTAsMTAgQEAg
SW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAg
ICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwog
ICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0
OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3Qp
LnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNc
biIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghY3JlYXRlUmVzdWx0LnZh
bHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBv
YmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDFmNzQwYzQwNjg0NTM2NmE3NTliYTBhZjRj
OGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIyZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1h
cDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50PiBtX3NjcmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0
ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6
OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7Cisg
ICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7CiAKICAgICBJ
bnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAgICBSZWY8SW5qZWN0ZWRTY3Jp
cHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0
NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWExMS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3
ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBA
QCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkK
ICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7
CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdoYXNJbmplY3RlZE1v
ZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJv
ci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRm
OCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwg
c291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5p
c0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4o
KSkgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAg
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsKKyAgICAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKGluamVjdE1vZHVsZUZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0
KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RNb2R1bGVSZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5j
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwogICAgICAgICBpZiAoIWluamVj
dE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyArOTEsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9k
dWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgc3Rh
Y2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdpbmplY3RNb2R1bGUnIGZvciAnJXMnOiAl
cyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZT
dHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUs
IGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggMjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdl
OWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZhMDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1h
bmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1
YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAgIH5JbmplY3RlZFNjcmlwdE1v
ZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0
KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQ5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2Jh
bE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkgewotCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2Ug
YXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0
LWlucwotCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7Ci0KLWZ1bmN0aW9uIHRvU3RyaW5n
KG9iaikKLXsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7Ci19Ci0KLWZ1bmN0aW9uIHRvU3RyaW5n
RGVzY3JpcHRpb24ob2JqKQotewotICAgIGlmIChvYmogPT09IDAgJiYgMSAvIG9iaiA8IDApCi0g
ICAgICAgIHJldHVybiAiLTAiOwotCi0gICAgaWYgKGlzQmlnSW50KG9iaikpCi0gICAgICAgIHJl
dHVybiB0b1N0cmluZyhvYmopICsgIm4iOwotCi0gICAgcmV0dXJuIHRvU3RyaW5nKG9iaik7Ci19
Ci0KLWZ1bmN0aW9uIGlzVUludDMyKG9iaikKLXsKLSAgICBpZiAodHlwZW9mIG9iaiA9PT0gIm51
bWJlciIpCi0gICAgICAgIHJldHVybiBvYmogPj4+IDAgPT09IG9iaiAmJiAob2JqID4gMCB8fCAx
IC8gb2JqID4gMCk7Ci0gICAgcmV0dXJuICIiICsgKG9iaiA+Pj4gMCkgPT09IG9iajsKLX0KLQot
ZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpCi17Ci0gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0g
InN5bWJvbCI7Ci19Ci0KLWZ1bmN0aW9uIGlzQmlnSW50KHZhbHVlKQotewotICAgIHJldHVybiB0
eXBlb2YgdmFsdWUgPT09ICJiaWdpbnQiOwotfQotCi1mdW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9i
amVjdCkKLXsKLSAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGlzRGVmaW5lZCh2YWx1ZSkKLXsK
LSAgICByZXR1cm4gISF2YWx1ZSB8fCBJbmplY3RlZFNjcmlwdEhvc3QuaXNIVE1MQWxsQ29sbGVj
dGlvbih2YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCi17Ci0g
ICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKLSAgICBjYXNlICJib29sZWFuIjoKLSAgICBjYXNl
ICJudW1iZXIiOgotICAgIGNhc2UgInN0cmluZyI6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGNhc2UgInVuZGVmaW5lZCI6Ci0gICAgICAgIHJldHVybiAhSW5qZWN0ZWRTY3JpcHRIb3N0Lmlz
SFRNTEFsbENvbGxlY3Rpb24odmFsdWUpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci19Ci0KLS8vIC0tLS0tLS0KLQotbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKLXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICB0
aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2Jq
ZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAg
ICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsK
LSAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAgICB0aGlzLl9z
YXZlZFJlc3VsdHMgPSBbXTsKLSAgICB9Ci0KLSAgICAvLyBJbmplY3RlZFNjcmlwdCBDKysgQVBJ
Ci0KLSAgICBleGVjdXRlKGZ1bmN0aW9uU3RyaW5nLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsIGFy
Z3MpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fd3JhcEFuZFNhdmVDYWxsKG9iamVjdEdy
b3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsICgpID0+IHsK
LSAgICAgICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAg
ICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlzRXZh
bE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLmFwcGx5KHVuZGVmaW5lZCwgYXJn
cyk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVj
dEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJl
dmlldywgc2F2ZVJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1l
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRT
Y3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3Qs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpOwot
ICAgIH0KLQotICAgIGF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBs
ZXQgcGFyc2VkUHJvbWlzZU9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChwcm9taXNlT2Jq
ZWN0SWQpOwotICAgICAgICBsZXQgcHJvbWlzZU9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBh
cnNlZFByb21pc2VPYmplY3RJZCk7Ci0gICAgICAgIGxldCBwcm9taXNlT2JqZWN0R3JvdXBOYW1l
ID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRQcm9taXNlT2JqZWN0SWQuaWRdOwot
Ci0gICAgICAgIGlmICghaXNEZWZpbmVkKHByb21pc2VPYmplY3QpKSB7Ci0gICAgICAgICAgICBj
YWxsYmFjaygiQ291bGQgbm90IGZpbmQgb2JqZWN0IHdpdGggZ2l2ZW4gaWQiKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5z
dGFuY2VvZiBQcm9taXNlKSkgewotICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdp
dmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBsZXQg
cmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAg
ICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2Jq
ZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAotICAgICAgICAg
ICAgfTsKLQotICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpIHsKLSAgICAgICAgICAgICAgICB0
aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICB0aGlzLl9zYXZlUmVz
dWx0KHJldHVybk9iamVjdC5yZXN1bHQpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zYXZl
ZFJlc3VsdEluZGV4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1
bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGNhbGxiYWNrKHJldHVybk9iamVjdCk7Ci0gICAgICAgIH07Ci0gICAgICAgIGxldCBy
ZWplY3QgPSAocmVhc29uKSA9PiB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jcmVhdGVU
aHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKLSAgICAgICAgfTsK
LSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7Ci0gICAgfQotCi0g
ICAgZXZhbHVhdGVPbkNhbGxGcmFtZSh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkLCBleHByZXNz
aW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBn
ZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCi0gICAgewotICAgICAgICBsZXQgY2FsbEZyYW1l
ID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7Ci0gICAg
ICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBj
YWxsIGZyYW1lIHdpdGggZ2l2ZW4gaWQiOwotICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFt
ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdyYXAoY2FsbEZyYW1l
LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBjYWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVj
dEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpOwotICAgIH0KLQotICAgIGNhbGxG
dW5jdGlvbk9uKG9iamVjdElkLCBleHByZXNzaW9uLCBhcmdzLCByZXR1cm5CeVZhbHVlLCBnZW5l
cmF0ZVByZXZpZXcpCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9w
YXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVj
dEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdEdyb3VwTmFtZSA9IHRo
aXMuX2lkVG9PYmplY3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwotCi0gICAgICAgIGlm
ICghaXNEZWZpbmVkKG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5k
IG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKLQotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107
Ci0gICAgICAgIGlmIChhcmdzKSB7Ci0gICAgICAgICAgICBsZXQgY2FsbEFyZ3MgPSBJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVu
dChjYWxsQXJnc1tpXSk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBsZXQgZnVuYyA9
IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBleHByZXNzaW9uICsgIikiKTsKLSAg
ICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gIkdpdmVuIGV4cHJlc3Npb24gZG9lcyBub3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlv
biI7Ci0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBm
YWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5h
cHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1
ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRocm93blZhbHVlKGUsIG9iamVjdEdy
b3VwTmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBnZXRGdW5jdGlvbkRldGFpbHMob2Jq
ZWN0SWQpCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9i
amVjdElkKG9iamVjdElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZvcklk
KHBhcnNlZE9iamVjdElkKTsKLSAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgIT09ICJmdW5jdGlv
biIpCi0gICAgICAgICAgICByZXR1cm4gIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7
Ci0gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uRGV0YWlscyhvYmplY3QpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uRGV0YWlscyhmdW5jKQotICAgIHsKLSAgICAgICAgbGV0IGRldGFpbHMgPSBJ
bmplY3RlZFNjcmlwdEhvc3QuZnVuY3Rpb25EZXRhaWxzKGZ1bmMpOwotICAgICAgICBpZiAoIWRl
dGFpbHMpCi0gICAgICAgICAgICByZXR1cm4gIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGRldGFp
bHMuIjsKLSAgICAgICAgcmV0dXJuIGRldGFpbHM7Ci0gICAgfQotCi0gICAgZ2V0UHJldmlldyhv
YmplY3RJZCkKLSAgICB7Ci0gICAgICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNl
T2JqZWN0SWQob2JqZWN0SWQpOwotICAgICAgICBsZXQgb2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9y
SWQocGFyc2VkT2JqZWN0SWQpOwotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZU9i
amVjdFByZXZpZXdGb3JWYWx1ZShvYmplY3QsIHRydWUpOwotICAgIH0KLQotICAgIGdldFByb3Bl
cnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdl
bmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IG93blBy
b3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIDog
SW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJvcGVydGllczsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hT
dGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3fSk7Ci0gICAgfQotCi0gICAgZ2V0RGlz
cGxheWFibGVQcm9wZXJ0aWVzKG9iamVjdElkLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5l
cmF0ZVByZXZpZXcpCi0gICAgewotICAgICAgICBsZXQgY29sbGVjdGlvbk1vZGUgPSBJbmplY3Rl
ZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29s
bGVjdGlvbk1vZGUuTmF0aXZlR2V0dGVyUHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0
Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3LCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsK
LSAgICB9Ci0KLSAgICBnZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0SWQsIGdlbmVyYXRlUHJl
dmlldykKLSAgICB7Ci0gICAgICAgIGxldCBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2Jq
ZWN0SWQob2JqZWN0SWQpOwotICAgICAgICBsZXQgb2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQo
cGFyc2VkT2JqZWN0SWQpOwotICAgICAgICBsZXQgb2JqZWN0R3JvdXBOYW1lID0gdGhpcy5faWRU
b09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5pZF07Ci0KLSAgICAgICAgaWYgKCFpc0Rl
ZmluZWQob2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAo
aXNTeW1ib2wob2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBs
ZXQgZGVzY3JpcHRvcnMgPSB0aGlzLl9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0
KTsKLSAgICAgICAgaWYgKCFkZXNjcmlwdG9ycykKLSAgICAgICAgICAgIHJldHVybiBbXTsKLQot
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2ldOwotICAgICAgICAgICAg
aWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZh
bHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5h
bWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IGRlc2NyaXB0b3JzOwotICAgIH0KLQotICAgIGdldENvbGxlY3Rpb25FbnRyaWVzKG9iamVjdElk
LCBvYmplY3RHcm91cE5hbWUsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpCi0gICAgewotICAgICAg
ICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAg
ICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKLSAg
ICAgICAgb2JqZWN0R3JvdXBOYW1lID0gb2JqZWN0R3JvdXBOYW1lIHx8IHRoaXMuX2lkVG9PYmpl
Y3RHcm91cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwotCi0gICAgICAgIGlmICghaXNEZWZpbmVk
KG9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHR5cGVvZiBvYmpl
Y3QgIT09ICJvYmplY3QiKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCBlbnRy
aWVzID0gdGhpcy5fZW50cmllcyhvYmplY3QsIEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9i
amVjdCksIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwotICAgICAgICByZXR1cm4gZW50cmllcy5t
YXAoZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2Jq
ZWN0LmNyZWF0ZShlbnRyeS52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpCi0gICAgICAgICAgICAgICAgZW50cnkua2V5
ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2Us
IHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04pCi0gICAgewotICAgICAgICB0aGlzLl9z
YXZlZFJlc3VsdEluZGV4ID0gMDsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgbGV0IGNh
bGxBcmd1bWVudCA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBjYWxsQXJndW1l
bnRKU09OICsgIikiKTsKLSAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuX3Jlc29sdmVDYWxs
QXJndW1lbnQoY2FsbEFyZ3VtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX3NhdmVSZXN1bHQodmFs
dWUpOwotICAgICAgICB9IGNhdGNoIHsgfQotCi0gICAgICAgIHJldHVybiB0aGlzLl9zYXZlZFJl
c3VsdEluZGV4OwotICAgIH0KLQotICAgIHdyYXBDYWxsRnJhbWVzKGNhbGxGcmFtZSkKLSAgICB7
Ci0gICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICAgICAgbGV0IGRlcHRoID0gMDsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFt
ZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOwotICAgICAgICAgICAgY2FsbEZyYW1lID0gY2Fs
bEZyYW1lLmNhbGxlcjsKLSAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB3cmFwT2JqZWN0KG9iamVjdCwgZ3JvdXBOYW1lLCBj
YW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0g
ICAgICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2ZhbGxiYWNrV3JhcHBlcihvYmplY3QpOwotCi0gICAgICAgIHJldHVybiBS
ZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2
aWV3KTsKLSAgICB9Ci0KLSAgICB3cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBncm91cE5hbWUs
IGdlbmVyYXRlUHJldmlldykKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1
ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHdyYXBUYWJsZShjYW5BY2Nlc3NJbnNw
ZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1bW5zKQotICAgIHsKLSAgICAgICAgaWYgKCFj
YW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
ZmFsbGJhY2tXcmFwcGVyKHRhYmxlKTsKLQotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IGNv
bHVtbnMgYXJlIGlnbm9yZWQuIEluc3RlYWQsIHRoZSBmcm9udGVuZCBmaWx0ZXJzIGFsbAotICAg
ICAgICAvLyBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb2x1bW4gbmFtZXMgYW5k
IGluIHRoZSBwcm92aWRlZCBvcmRlci4KLSAgICAgICAgLy8gV2UgY291bGQgZmlsdGVyIGhlcmUg
dG8gYXZvaWQgc2VuZGluZyB2ZXJ5IGxhcmdlIHByZXZpZXcgb2JqZWN0cy4KLQotICAgICAgICBs
ZXQgY29sdW1uTmFtZXMgPSBudWxsOwotICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMgPT09ICJz
dHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKLQotICAgICAgICBpZiAo
SW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKLSAgICAg
ICAgICAgIGNvbHVtbk5hbWVzID0gW107Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGNvbHVtbnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCh0
b1N0cmluZyhjb2x1bW5zW2ldKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gUmVtb3Rl
T2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBmYWxzZSwgdHJ1ZSwgY29sdW1uTmFtZXMp
OwotICAgIH0KLQotICAgIHByZXZpZXdWYWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCB0cnVlKTsK
LSAgICB9Ci0KLSAgICBzZXRFdmVudFZhbHVlKHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5f
ZXZlbnRWYWx1ZSA9IHZhbHVlOwotICAgIH0KLQotICAgIGNsZWFyRXZlbnRWYWx1ZSgpCi0gICAg
ewotICAgICAgICBkZWxldGUgdGhpcy5fZXZlbnRWYWx1ZTsKLSAgICB9Ci0KLSAgICBzZXRFeGNl
cHRpb25WYWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2V4Y2VwdGlvblZhbHVlID0g
dmFsdWU7Ci0gICAgfQotCi0gICAgY2xlYXJFeGNlcHRpb25WYWx1ZSgpCi0gICAgewotICAgICAg
ICBkZWxldGUgdGhpcy5fZXhjZXB0aW9uVmFsdWU7Ci0gICAgfQotCi0gICAgZmluZE9iamVjdEJ5
SWQob2JqZWN0SWQpCi0gICAgewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9w
YXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdEZvcklk
KHBhcnNlZE9iamVjdElkKTsKLSAgICB9Ci0KLSAgICByZWxlYXNlT2JqZWN0KG9iamVjdElkKQot
ICAgIHsKLSAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChv
YmplY3RJZCk7Ci0gICAgICAgIHRoaXMuX3JlbGVhc2VPYmplY3QocGFyc2VkT2JqZWN0SWQuaWQp
OwotICAgIH0KLQotICAgIHJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cE5hbWUpCi0gICAg
ewotICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lID09PSAiY29uc29sZSIpIHsKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0OwotICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVk
UmVzdWx0SW5kZXggPSAxOwotICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107Ci0g
ICAgICAgIH0KLQotICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0
R3JvdXBOYW1lXTsKLSAgICAgICAgaWYgKCFncm91cCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKQotICAgICAgICAg
ICAgdGhpcy5fcmVsZWFzZU9iamVjdChncm91cFtpXSk7Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMu
X29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwotICAgIH0KLQotICAgIGNyZWF0ZUNvbW1h
bmRMaW5lQVBJT2JqZWN0KGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ29t
bWFuZExpbmVBUEkoY2FsbEZyYW1lIHx8IG51bGwpOwotICAgIH0KLQotICAgIC8vIENvbW1hbmRM
aW5lQVBJCi0KLSAgICBpbnNwZWN0T2JqZWN0KG9iamVjdCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl9pbnNwZWN0T2JqZWN0KQotICAgICAgICAgICAgdGhpcy5faW5zcGVjdE9iamVjdChvYmpl
Y3QpOwotICAgIH0KLQotICAgIC8vIEluamVjdGVkU2NyaXB0TW9kdWxlIEMrKyBBUEkKLQotICAg
IGhhc0luamVjdGVkTW9kdWxlKG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbW9k
dWxlc1tuYW1lXTsKLSAgICB9Ci0KLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291cmNlLCBob3N0
KQotICAgIHsKLSAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOwotCi0gICAgICAg
IGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBz
b3VyY2UgKyAiKSIpOwotICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1bmN0aW9uICE9PSAiZnVu
Y3Rpb24iKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5zcGVjdG9yOiBhIGZ1bmN0
aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxlIjsKLSAgICAgICAgbW9kdWxlRnVuY3Rp
b24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2Ny
aXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgaG9zdCk7Ci0KLSAg
ICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gSW5qZWN0
ZWRTY3JpcHRNb2R1bGUgSmF2YVNjcmlwdCBBUEkKLQotICAgIGlzUHJpbWl0aXZlVmFsdWUodmFs
dWUpCi0gICAgewotICAgICAgICByZXR1cm4gaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7Ci0gICAg
fQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpCi0gICAg
ewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIG9iamVj
dElkICsgIikiKTsKLSAgICB9Ci0KLSAgICBfb2JqZWN0Rm9ySWQob2JqZWN0SWQpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5faWRUb1dyYXBwZWRPYmplY3Rbb2JqZWN0SWQuaWRdOwotICAg
IH0KLQotICAgIF9iaW5kKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lKQotICAgIHsKLSAgICAgICAg
bGV0IGlkID0gdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQrKzsKLSAgICAgICAgbGV0IG9iamVjdElk
ID0gYHsiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfSwiaWQiOiR7aWR9fWA7
Ci0KLSAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3RbaWRdID0gb2JqZWN0OwotCi0gICAg
ICAgIGlmIChvYmplY3RHcm91cE5hbWUpIHsKLSAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMu
X29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwotICAgICAgICAgICAgaWYgKCFncm91cCkg
ewotICAgICAgICAgICAgICAgIGdyb3VwID0gW107Ci0gICAgICAgICAgICAgICAgdGhpcy5fb2Jq
ZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGdyb3VwLnB1c2goaWQpOwotICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3Vw
TmFtZVtpZF0gPSBvYmplY3RHcm91cE5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
b2JqZWN0SWQ7Ci0gICAgfQotCi0gICAgX3JlbGVhc2VPYmplY3QoaWQpCi0gICAgewotICAgICAg
ICBkZWxldGUgdGhpcy5faWRUb1dyYXBwZWRPYmplY3RbaWRdOwotICAgICAgICBkZWxldGUgdGhp
cy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF07Ci0gICAgfQotCi0gICAgX2ZhbGxiYWNrV3JhcHBl
cihvYmplY3QpCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0ID0ge307Ci0gICAgICAgIHJlc3Vs
dC50eXBlID0gdHlwZW9mIG9iamVjdDsKLSAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2Jq
ZWN0KSkKLSAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9iamVjdDsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVzdWx0LmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmpl
Y3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIF9yZXNvbHZlQ2FsbEFy
Z3VtZW50KGNhbGxBcmd1bWVudEpTT04pCi0gICAgewotICAgICAgICBpZiAoInZhbHVlIiBpbiBj
YWxsQXJndW1lbnRKU09OKQotICAgICAgICAgICAgcmV0dXJuIGNhbGxBcmd1bWVudEpTT04udmFs
dWU7Ci0KLSAgICAgICAgbGV0IG9iamVjdElkID0gY2FsbEFyZ3VtZW50SlNPTi5vYmplY3RJZDsK
LSAgICAgICAgaWYgKG9iamVjdElkKSB7Ci0gICAgICAgICAgICBsZXQgcGFyc2VkQXJnSWQgPSB0
aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VkQXJn
SWQgfHwgcGFyc2VkQXJnSWRbImluamVjdGVkU2NyaXB0SWQiXSAhPT0gaW5qZWN0ZWRTY3JpcHRJ
ZCkKLSAgICAgICAgICAgICAgICB0aHJvdyAiQXJndW1lbnRzIHNob3VsZCBiZWxvbmcgdG8gdGhl
IHNhbWUgSmF2YVNjcmlwdCB3b3JsZCBhcyB0aGUgdGFyZ2V0IG9iamVjdC4iOwotCi0gICAgICAg
ICAgICBsZXQgcmVzb2x2ZWRBcmcgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRBcmdJZCk7Ci0g
ICAgICAgICAgICBpZiAoIWlzRGVmaW5lZChyZXNvbHZlZEFyZykpCi0gICAgICAgICAgICAgICAg
dGhyb3cgIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKLQotICAgICAgICAg
ICAgcmV0dXJuIHJlc29sdmVkQXJnOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKLSAgICB9Ci0KLSAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3Vw
KQotICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IFJlbW90ZU9iamVjdC5jcmVhdGUo
dmFsdWUsIG9iamVjdEdyb3VwKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJlbW90ZU9i
amVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwotICAgICAgICB9
IGNhdGNoIHsgfQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVl
LAotICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKLSAgICB9Ci0K
LSAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBv
YmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0
dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4g
dGhpcy5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFs
T25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSk7Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIF93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldywgc2F2ZVJlc3VsdCwgZnVuYykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll93cmFwQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBz
YXZlUmVzdWx0LCAoKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmVzdWx0ID0gZnVuYygpOwotICAg
ICAgICAgICAgaWYgKHNhdmVSZXN1bHQpCi0gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZVJlc3Vs
dChyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgX3dyYXBDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVBy
ZXZpZXcsIHNhdmVSZXN1bHQsIGZ1bmMpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAg
ICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7Ci0KLSAgICAgICAgICAgIGxldCByZXR1cm5P
YmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAg
ICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0
dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKLSAgICAgICAgICAg
ICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5k
ZXg7Ci0KLSAgICAgICAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7Ci0gICAgICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmpl
Y3RHcm91cCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfZXZhbHVhdGVPbihldmFsRnVuY3Rp
b24sIG9iamVjdCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSkKLSAgICB7Ci0gICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7Ci0gICAg
ICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCi0gICAgICAgICAgICBjb21tYW5kTGluZUFQ
SSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBv
YmplY3QgOiBudWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwg
ZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwotICAgIH0KLQotICAgIF9jYWxsRnJhbWVGb3JJ
ZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQotICAgIHsKLSAgICAgICAgbGV0IHBhcnNlZENh
bGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIGNhbGxGcmFtZUlk
ICsgIikiKTsKLSAgICAgICAgbGV0IG9yZGluYWwgPSBwYXJzZWRDYWxsRnJhbWVJZFsib3JkaW5h
bCJdOwotICAgICAgICBsZXQgY2FsbEZyYW1lID0gdG9wQ2FsbEZyYW1lOwotICAgICAgICB3aGls
ZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQotICAgICAgICAgICAgY2FsbEZyYW1lID0g
Y2FsbEZyYW1lLmNhbGxlcjsKLSAgICAgICAgcmV0dXJuIGNhbGxGcmFtZTsKLSAgICB9Ci0KLSAg
ICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBm
ZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlc30pCi0gICAg
ewotICAgICAgICBsZXQgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVj
dElkKTsKLSAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVj
dElkKTsKLSAgICAgICAgbGV0IG9iamVjdEdyb3VwTmFtZSA9IHRoaXMuX2lkVG9PYmplY3RHcm91
cE5hbWVbcGFyc2VkT2JqZWN0SWQuaWRdOwotCi0gICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVj
dCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGlzU3ltYm9sKG9i
amVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbGV0IHN0YXJ0ID0g
ZmV0Y2hTdGFydCB8fCAwOwotICAgICAgICBpZiAoc3RhcnQgPCAwKQotICAgICAgICAgICAgc3Rh
cnQgPSAwOwotCi0gICAgICAgIGxldCBjb3VudCA9IGZldGNoQ291bnQgfHwgMDsKLSAgICAgICAg
aWYgKGNvdW50IDwgMCkKLSAgICAgICAgICAgIGNvdW50ID0gMDsKLQotICAgICAgICAvLyBBbHdh
eXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBm
ZXRjaC4KLSAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9ICFzdGFydDsKLQotICAgICAgICBsZXQg
ZGVzY3JpcHRvcnMgPSBbXTsKLSAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4gewotICAgICAgICAgICAg
aWYgKHN0YXJ0ID4gMCkgewotICAgICAgICAgICAgICAgIC0tc3RhcnQ7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgiZ2V0IiBpbiBkZXNjcmlwdG9yKQotICAg
ICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlw
dG9yLmdldCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIGlmICgic2V0IiBpbiBkZXNj
cmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gUmVtb3RlT2JqZWN0LmNy
ZWF0ZShkZXNjcmlwdG9yLnNldCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIGlmICgi
dmFsdWUiIGluIGRlc2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9
IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBm
YWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICAgICAgICAgIGlmICgic3ltYm9sIiBpbiBkZXNj
cmlwdG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAg
IGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7Ci0KLSAgICAgICAgICAgIGlmIChpbmNsdWRl
UHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0
b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKLQotICAgICAgICAgICAgcmV0dXJuIChj
b3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJv
cGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlv
bi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVBy
b3RvfSk7Ci0gICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKLSAgICB9Ci0KLSAgICBfaW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgY29tcGxldGVEZXNjcmlwdG9yKQotICAgIHsK
LSAgICAgICAgbGV0IGludGVybmFsUHJvcGVydGllcyA9IEluamVjdGVkU2NyaXB0SG9zdC5nZXRJ
bnRlcm5hbFByb3BlcnRpZXMob2JqZWN0KTsKLSAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRp
ZXMpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICBsZXQgZGVzY3JpcHRvcnMg
PSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnRpZXMubGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGludGVybmFsUHJvcGVydGll
c1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0ge25hbWU6IHByb3BlcnR5Lm5hbWUs
IHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07Ci0gICAgICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlw
dG9yKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAg
ICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9yKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZGVzY3JpcHRvcnM7Ci0gICAgfQotCi0gICAgX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJhY2ssIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMs
IGluY2x1ZGVQcm90b30pCi0gICAgewotICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1
YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBTZXQ7Ci0KLSAgICAgICAgLy8gSGFuZGxlZCBiZWxv
dyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90
b19fIik7Ci0KLSAgICAgICAgZnVuY3Rpb24gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1l
LCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGlu
Z0dldHRlcikKLSAgICAgICAgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBs
ZXQgZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IG9iamVjdFtuYW1lXX07Ci0gICAgICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2Ny
aXB0b3Iud3JpdGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci53
cml0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFi
bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5lbnVtZXJhYmxlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlTmF0
aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IubmF0
aXZlR2V0dGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoaXNPd25Qcm9wZXJ0eSkKLSAg
ICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5
bWJvbCA9IHN5bWJvbDsKLSAgICAgICAgICAgICAgICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1
bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBjcmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0
aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9uZyB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgICAgICBp
ZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlICYmIEluamVjdGVkU2Ny
aXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURl
c2NyaXB0b3IudmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1
ZS5jYXRjaChmdW5jdGlvbigpe30pOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWtlRGVzY3Jp
cHRvcjsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBsZXQgZXJy
b3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3YXNUaHJvd246IHRydWV9OwotICAgICAg
ICAgICAgICAgIGlmIChpc093blByb3BlcnR5KQotICAgICAgICAgICAgICAgICAgICBlcnJvckRl
c2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCi0gICAg
ICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yRGVzY3JpcHRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGlzT3du
UHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gQWxsIHByb3BlcnRpZXMuCi0gICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUg
JiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhkZXNjcmlwdG9yKTsKLQotICAgICAgICAgICAgLy8gT3du
IHByb3BlcnRpZXMuCi0gICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUgJiBJbmplY3RlZFNj
cmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzICYmIGlzT3duUHJvcGVydHkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGRlc2NyaXB0b3IpOwotCi0gICAgICAgICAgICAv
LyBOYXRpdmUgR2V0dGVyIHByb3BlcnRpZXMuCi0gICAgICAgICAgICBpZiAoY29sbGVjdGlvbk1v
ZGUgJiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGRlc2NyaXB0b3IpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHBy
b3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5h
bWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0KLSAgICAgICAgICAg
IG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7Ci0KLSAgICAgICAgICAgIGxldCBuYW1l
ID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIGxldCBzeW1ib2wgPSBpc1N5
bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKLQotICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3Bl
cnR5TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpIHsKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQgaGVyZT8KLSAgICAgICAgICAg
ICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBzZXR0aW5ncy4KLSAgICAgICAg
ICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5h
bWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCBpc093blByb3BlcnR5KTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykg
ewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJb
bmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093
blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Q
cm9wZXJ0eSgic2V0IikpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMgbWF5
IGNyZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoKLSAg
ICAgICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgs
ICJwIiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih4
LCAicCIpCi0gICAgICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZh
a2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NEZXNjcmlwdG9yKGZh
a2VEZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlc2NyaXB0b3IubmFtZSA9IG5hbWU7Ci0gICAg
ICAgICAgICBpZiAoaXNPd25Qcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmlz
T3duID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAgICAgZGVz
Y3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7Ci0gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0Rlc2Ny
aXB0b3IoZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSk7Ci0gICAgICAgIH0KLQotICAgICAgICBs
ZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlzQXJy
YXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zp
bml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKLSAgICAgICAgfSBjYXRj
aCB7IH0KLQotICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKLSAgICAgICAgICAgIGxldCBpc093blByb3BlcnR5
ID0gbyA9PT0gb2JqZWN0OwotICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7Ci0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxODYxPiBXZWIg
SW5zcGVjdG9yOiBzaG93IGF1dG9jb21wbGV0ZSBlbnRyaWVzIGZvciBub24taW5kZXggcHJvcGVy
dGllcyBvbiBhcnJheXMKLSAgICAgICAgICAgIGlmIChpc0FycmF5TGlrZSAmJiBpc093blByb3Bl
cnR5KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKGkgaW4gbykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJv
Y2Vzc1Byb3BlcnR5KG8sIHRvU3RyaW5nKGkpLCBpc093blByb3BlcnR5KTsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZXNbaV0sIGlzT3duUHJv
cGVydHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5q
ZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkQnJlYWspCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChzaG91bGRCcmVh
aykKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xz
ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9scy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9s
c1tpXSwgaXNPd25Qcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0g
cmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRCcmVhaykKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBp
ZiAoY29sbGVjdGlvbk1vZGUgPT09IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blBy
b3BlcnRpZXMpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoaW5jbHVkZVByb3RvKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlm
IChvYmplY3QuX19wcm90b19fKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh7bmFtZTog
Il9fcHJvdG9fXyIsIHZhbHVlOiBvYmplY3QuX19wcm90b19fLCB3cml0YWJsZTogdHJ1ZSwgY29u
ZmlndXJhYmxlOiB0cnVlLCBpc093bjogdHJ1ZX0pOwotICAgICAgICAgICAgfSBjYXRjaCB7IH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFy
dCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107Ci0KLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0
LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBv
YmplY3QpIHsKLSAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewotICAgICAgICAgICAg
ICAgIGZldGNoU3RhcnQtLTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZW50cmllcy5wdXNoKHt2YWx1ZX0pOwotCi0gICAgICAgICAgICBp
ZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0Y2hDb3VudCkKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBlbnRyaWVzOwotICAg
IH0KLQotICAgIF9nZXRNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkK
LSAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107Ci0KLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1i
b2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7
Ci0gICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKLSAgICAgICAgICAgICAgICBmZXRj
aFN0YXJ0LS07Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGVudHJpZXMucHVzaCh7a2V5LCB2YWx1ZX0pOwotCi0gICAgICAgICAgICBpZiAo
ZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0Y2hDb3VudCkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBlbnRyaWVzOwotICAgIH0K
LQotICAgIF9nZXRXZWFrTWFwRW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LndlYWtNYXBFbnRyaWVzKG9iamVjdCwgZmV0
Y2hDb3VudCk7Ci0gICAgfQotCi0gICAgX2dldFdlYWtTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hD
b3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha1NldEVu
dHJpZXMob2JqZWN0LCBmZXRjaENvdW50KTsKLSAgICB9Ci0KLSAgICBfZ2V0SXRlcmF0b3JFbnRy
aWVzKG9iamVjdCwgZmV0Y2hDb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdEhvc3QuaXRlcmF0b3JFbnRyaWVzKG9iamVjdCwgZmV0Y2hDb3VudCk7Ci0gICAgfQotCi0g
ICAgX2VudHJpZXMob2JqZWN0LCBzdWJ0eXBlLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQotICAg
IHsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJzZXQiKQotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAg
ICAgaWYgKHN1YnR5cGUgPT09ICJtYXAiKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldE1h
cEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgaWYgKHN1
YnR5cGUgPT09ICJ3ZWFrbWFwIikKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRXZWFrTWFw
RW50cmllcyhvYmplY3QsIGZldGNoQ291bnQpOwotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIndl
YWtzZXQiKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFdlYWtTZXRFbnRyaWVzKG9iamVj
dCwgZmV0Y2hDb3VudCk7Ci0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEl0ZXJhdG9yRW50cmllcyhvYmplY3QsIGZldGNoQ291
bnQpOwotCi0gICAgICAgIHRocm93ICJ1bmV4cGVjdGVkIHR5cGUiOwotICAgIH0KLQotICAgIF9z
YXZlUmVzdWx0KHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1
bHQ7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVs
bCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRo
aXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7Ci0gICAgICAgIGlmIChleGlzdGluZ0lu
ZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0
aW5nSW5kZXg7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlz
Ll9zYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXg7Ci0gICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0c1t0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCsrXSA9IHJlc3Vs
dDsKLQotICAgICAgICAvLyAkbiBpcyBsaW1pdGVkIGZyb20gJDEtJDk5LiAkMCBpcyBzcGVjaWFs
LgotICAgICAgICBpZiAodGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPj0gMTAwKQotICAgICAg
ICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgIH0KLX07Ci0KLUluamVj
dGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAgIE93blByb3BlcnRpZXM6IDEgPDwgMCwg
ICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAgTmF0aXZlR2V0dGVyUHJvcGVydGllczog
MSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFp
bi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVz
IGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OwotCi1JbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZl
dGNoQWN0aW9uID0gewotICAgIENvbnRpbnVlOiBTeW1ib2woImNvbnRpbnVlIiksCi0gICAgU3Rv
cDogU3ltYm9sKCJzdG9wIiksCi19Ci0KLXZhciBpbmplY3RlZFNjcmlwdCA9IG5ldyBJbmplY3Rl
ZFNjcmlwdDsKLQotLy8gLS0tLS0tLQotCi1sZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3Iob2JqZWN0LCBvYmplY3RHcm91cE5hbWUsIGZvcmNl
VmFsdWVUeXBlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQotICAgIHsKLSAgICAgICAg
dGhpcy50eXBlID0gdHlwZW9mIG9iamVjdDsKLQotICAgICAgICBpZiAodGhpcy50eXBlID09PSAi
dW5kZWZpbmVkIiAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNIVE1MQWxsQ29sbGVjdGlvbihvYmpl
Y3QpKQotICAgICAgICAgICAgdGhpcy50eXBlID0gIm9iamVjdCI7Ci0KLSAgICAgICAgaWYgKGlz
UHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBpc0JpZ0ludChvYmplY3QpIHx8IG9iamVjdCA9PT0g
bnVsbCB8fCBmb3JjZVZhbHVlVHlwZSkgewotICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgc2VuZCB1
bmRlZmluZWQgdmFsdWVzIG92ZXIgSlNPTi4KLSAgICAgICAgICAgIC8vIEJpZ0ludCB2YWx1ZXMg
YXJlIG5vdCBKU09OIHNlcmlhbGl6YWJsZS4KLSAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgIT09
ICJ1bmRlZmluZWQiICYmIHRoaXMudHlwZSAhPT0gImJpZ2ludCIpCi0gICAgICAgICAgICAgICAg
dGhpcy52YWx1ZSA9IG9iamVjdDsKLQotICAgICAgICAgICAgLy8gTnVsbCBvYmplY3QgaXMgb2Jq
ZWN0IHdpdGggJ251bGwnIHN1YnR5cGUuCi0gICAgICAgICAgICBpZiAob2JqZWN0ID09PSBudWxs
KQotICAgICAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9ICJudWxsIjsKLQotICAgICAgICAgICAg
Ly8gUHJvdmlkZSB1c2VyLWZyaWVuZGx5IG51bWJlciB2YWx1ZXMuCi0gICAgICAgICAgICBpZiAo
dGhpcy50eXBlID09PSAibnVtYmVyIiB8fCB0aGlzLnR5cGUgPT09ICJiaWdpbnQiKQotICAgICAg
ICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iamVjdCk7
Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMub2JqZWN0
SWQgPSBpbmplY3RlZFNjcmlwdC5fYmluZChvYmplY3QsIG9iamVjdEdyb3VwTmFtZSk7Ci0KLSAg
ICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOwotICAgICAg
ICBpZiAoc3VidHlwZSkKLSAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IHN1YnR5cGU7Ci0KLSAg
ICAgICAgdGhpcy5jbGFzc05hbWUgPSBJbmplY3RlZFNjcmlwdEhvc3QuaW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUob2JqZWN0KTsKLSAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVj
dC5kZXNjcmliZShvYmplY3QpOwotCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQot
ICAgICAgICAgICAgdGhpcy5zaXplID0gdHlwZW9mIG9iamVjdC5sZW5ndGggPT09ICJudW1iZXIi
ID8gb2JqZWN0Lmxlbmd0aCA6IDA7Ci0gICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJzZXQi
IHx8IHN1YnR5cGUgPT09ICJtYXAiKQotICAgICAgICAgICAgdGhpcy5zaXplID0gb2JqZWN0LnNp
emU7Ci0gICAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJ3ZWFrbWFwIikKLSAgICAgICAgICAg
IHRoaXMuc2l6ZSA9IEluamVjdGVkU2NyaXB0SG9zdC53ZWFrTWFwU2l6ZShvYmplY3QpOwotICAg
ICAgICBlbHNlIGlmIChzdWJ0eXBlID09PSAid2Vha3NldCIpCi0gICAgICAgICAgICB0aGlzLnNp
emUgPSBJbmplY3RlZFNjcmlwdEhvc3Qud2Vha1NldFNpemUob2JqZWN0KTsKLSAgICAgICAgZWxz
ZSBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikgewotICAgICAgICAgICAgdGhpcy5jbGFzc1Byb3Rv
dHlwZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LnByb3RvdHlwZSwgb2JqZWN0R3JvdXBO
YW1lKTsKLSAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gb2JqZWN0Lm5hbWU7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoZ2VuZXJhdGVQcmV2aWV3ICYmIHRoaXMudHlwZSA9PT0gIm9iamVj
dCIpIHsKLSAgICAgICAgICAgIGlmIChzdWJ0eXBlID09PSAicHJveHkiKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVjdGVkU2NyaXB0
SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkpOwotICAgICAgICAgICAgICAgIHRoaXMucHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgdW5kZWZpbmVk
LCBjb2x1bW5OYW1lcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTdGF0aWMKLQotICAg
IHN0YXRpYyBjcmVhdGUob2JqZWN0LCBvYmplY3RHcm91cE5hbWUsIGZvcmNlVmFsdWVUeXBlLCBn
ZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lLCBm
b3JjZVZhbHVlVHlwZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7Ci0gICAgICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUo
ZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChleCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4
Lm1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29u
dmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBzdGF0aWMgY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVBy
ZXZpZXcsIGNvbHVtbk5hbWVzKQotICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5l
dyBSZW1vdGVPYmplY3QodmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpOwotICAgICAgICBpZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQotICAgICAg
ICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQp
OwotICAgICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVj
dC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkKLSAgICAgICAgICAgIGluamVjdGVkU2NyaXB0LnJl
bGVhc2VPYmplY3QocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKTsKLSAgICAg
ICAgcmV0dXJuIHJlbW90ZU9iamVjdC5wcmV2aWV3IHx8IHJlbW90ZU9iamVjdC5fZW1wdHlQcmV2
aWV3KCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHN1YnR5cGUodmFsdWUpCi0gICAgewotICAgICAg
ICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiOwotCi0gICAg
ICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSB8fCBpc0JpZ0ludCh2YWx1ZSkgfHwgaXNT
eW1ib2wodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgaWYgKElu
amVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxDb2xsZWN0aW9uKHZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybiAiYXJyYXkiOwotCi0gICAgICAgIGxldCBwcmVjaXNlVHlwZSA9IEluamVjdGVkU2Ny
aXB0SG9zdC5zdWJ0eXBlKHZhbHVlKTsKLSAgICAgICAgaWYgKHByZWNpc2VUeXBlKQotICAgICAg
ICAgICAgcmV0dXJuIHByZWNpc2VUeXBlOwotCi0gICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBk
ZXRlY3Rpb24uCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNw
bGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiAiYXJyYXkiOwotICAgICAgICB9IGNhdGNoIHsgfQotCi0gICAgICAgIHJl
dHVybiBudWxsOwotICAgIH0KLQotICAgIHN0YXRpYyBkZXNjcmliZSh2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxsOwotCi0gICAgICAgIGlmIChpc0JpZ0ludCh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbDsKLQotICAgICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IHRvU3RyaW5nKHZhbHVlKTsKLQotICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5z
dWJ0eXBlKHZhbHVlKTsKLQotICAgICAgICBpZiAoc3VidHlwZSA9PT0gInJlZ2V4cCIpCi0gICAg
ICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOwotCi0gICAgICAgIGlmIChzdWJ0eXBlID09
PSAiZGF0ZSIpCi0gICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOwotCi0gICAgICAg
IGlmIChzdWJ0eXBlID09PSAiZXJyb3IiKQotICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHZh
bHVlKTsKLQotICAgICAgICBpZiAoc3VidHlwZSA9PT0gInByb3h5IikKLSAgICAgICAgICAgIHJl
dHVybiAiUHJveHkiOwotCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAibm9kZSIpCi0gICAgICAg
ICAgICByZXR1cm4gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3KHZhbHVlKTsKLQotICAgICAgICBs
ZXQgY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVybmFsQ29uc3RydWN0b3JOYW1l
KHZhbHVlKTsKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpCi0gICAgICAgICAgICBy
ZXR1cm4gY2xhc3NOYW1lOwotCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYm
IFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtT
eW1ib2wudG9TdHJpbmdUYWddOwotCi0gICAgICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1
bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4KLSAgICAgICAgaWYgKHR5cGVv
ZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmlu
ZygpOwotCi0gICAgICAgIC8vIElmIE9iamVjdCwgdHJ5IGZvciBhIGJldHRlciBuYW1lIGZyb20g
dGhlIGNvbnN0cnVjdG9yLgotICAgICAgICBpZiAoY2xhc3NOYW1lID09PSAiT2JqZWN0Iikgewot
ICAgICAgICAgICAgbGV0IGNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yICYmIHZh
bHVlLmNvbnN0cnVjdG9yLm5hbWU7Ci0gICAgICAgICAgICBpZiAoY29uc3RydWN0b3JOYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gY2xhc3NOYW1lOwotICAgIH0KLQotICAgIHN0YXRpYyBub2RlUHJldmlldyhu
b2RlKQotICAgIHsKLSAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1l
bnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKLSAgICAgICAgbGV0IG5vZGVO
YW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7Ci0KLSAgICAgICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7Ci0gICAgICAgIGNh
c2UgMTogLy8gTm9kZS5FTEVNRU5UX05PREUKLSAgICAgICAgICAgIGlmIChub2RlLmlkKQotICAg
ICAgICAgICAgICAgIHJldHVybiAiPCIgKyBub2RlTmFtZSArICIgaWQ9XCIiICsgbm9kZS5pZCAr
ICJcIj4iOwotICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0Lmxlbmd0aCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIGNsYXNzPVwiIiArIG5vZGUuY2xhc3NM
aXN0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrLywgIiAiKSArICJcIj4iOwotICAgICAgICAgICAg
aWYgKG5vZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUudHlwZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiIHR5cGU9XCIiICsgbm9kZS50eXBlICsgIlwiPiI7Ci0g
ICAgICAgICAgICByZXR1cm4gIjwiICsgbm9kZU5hbWUgKyAiPiI7Ci0KLSAgICAgICAgY2FzZSAz
OiAvLyBOb2RlLlRFWFRfTk9ERQotICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lICsgIiBcIiIg
KyBub2RlLm5vZGVWYWx1ZSArICJcIiI7Ci0KLSAgICAgICAgY2FzZSA4OiAvLyBOb2RlLkNPTU1F
TlRfTk9ERQotICAgICAgICAgICAgcmV0dXJuICI8IS0tIiArIG5vZGUubm9kZVZhbHVlICsgIi0t
PiI7Ci0KLSAgICAgICAgY2FzZSAxMDogLy8gTm9kZS5ET0NVTUVOVF9UWVBFX05PREUKLSAgICAg
ICAgICAgIHJldHVybiAiPCFET0NUWVBFICIgKyBub2RlTmFtZSArICI+IjsKLQotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG5vZGVOYW1lOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2luaXRpYWxQcmV2aWV3KCkKLSAgICB7Ci0gICAgICAg
IGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLAotICAgICAgICAg
ICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSks
Ci0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAo
dGhpcy5zdWJ0eXBlKSB7Ci0gICAgICAgICAgICBwcmV2aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5
cGU7Ci0gICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVsbCIpIHsKLSAgICAgICAg
ICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldmll
dy5wcm9wZXJ0aWVzID0gW107Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoInNpemUiIGluIHRoaXMpCi0gICAgICAgICAgICBwcmV2aWV3LnNpemUgPSB0aGlzLnNpemU7
Ci0KLSAgICAgICAgcmV0dXJuIHByZXZpZXc7Ci0gICAgfQotCi0gICAgX2VtcHR5UHJldmlldygp
Ci0gICAgewotICAgICAgICBsZXQgcHJldmlldyA9IHRoaXMuX2luaXRpYWxQcmV2aWV3KCk7Ci0K
LSAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAi
c2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3
ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpIHsKLSAgICAgICAgICAgIGlm
ICh0aGlzLnNpemUpIHsKLSAgICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKLSAg
ICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
cHJldmlldy5vdmVyZmxvdyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gcHJldmlldzsKLSAgICB9Ci0KLSAgICBfZ2VuZXJhdGVQcmV2aWV3KG9iamVj
dCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cykKLSAgICB7Ci0gICAgICAgIGxldCBw
cmV2aWV3ID0gdGhpcy5faW5pdGlhbFByZXZpZXcoKTsKLSAgICAgICAgbGV0IGlzVGFibGVSb3dz
UmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZlbEtleXM7Ci0g
ICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBmaXJzdExl
dmVsS2V5cy5sZW5ndGggOiAwOwotCi0gICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0g
ewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1h
dGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAgICAgaW5kZXhlczogaXNU
YWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50
KQotICAgICAgICB9OwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyBNYXBzLCBTZXRz
LCBhbmQgSXRlcmF0b3JzIGhhdmUgZW50cmllcy4KLSAgICAgICAgICAgIGlmICh0aGlzLnN1YnR5
cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIgfHwgdGhpcy5zdWJ0eXBlID09
PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3NldCIgfHwgdGhpcy5zdWJ0eXBl
ID09PSAiaXRlcmF0b3IiKQotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZEVudHJ5UHJldmll
d3Mob2JqZWN0LCBwcmV2aWV3KTsKLQotICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0g
W107Ci0KLSAgICAgICAgICAgIC8vIEludGVybmFsIFByb3BlcnRpZXMuCi0gICAgICAgICAgICBs
ZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0gaW5qZWN0ZWRTY3JpcHQuX2ludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUpOwotICAgICAgICAgICAgaWYgKGludGVy
bmFsUHJvcGVydHlEZXNjcmlwdG9ycykgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2Jq
ZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNU
aHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbDogdHJ1
ZX0pOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cHJldmlldzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChwcmV2aWV3LmVudHJpZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXc7Ci0K
LSAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCi0gICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5f
Zm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rp
b25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2Ny
aXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtl
eXMpOwotICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVk
ZVByb3RvOiB0cnVlfSkKLSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcHJldmlldzsKLSAg
ICB9Ci0KLSAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3Jp
cHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5
cywge2ludGVybmFsfSA9IHt9KQotICAgIHsKLSAgICAgICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRv
ci4KLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7Ci0gICAgICAgICAgICBwcmV2
aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERv
IG5vdCBzaG93ICJfX3Byb3RvX18iIGluIHByZXZpZXcuCi0gICAgICAgIGxldCBuYW1lID0gZGVz
Y3JpcHRvci5uYW1lOwotICAgICAgICBpZiAobmFtZSA9PT0gIl9fcHJvdG9fXyIpIHsKLSAgICAg
ICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2JqZWN0cyBtYXkgaGF2ZSBpbnRlcmVzdGlu
Zywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hvdy4KLSAgICAgICAgICAgIGlmIChkZXNj
cmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IKLSAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBPYmplY3QKLSAgICAgICAg
ICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBBcnJheQotICAgICAg
ICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IFJlZ0V4cCkKLSAg
ICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIEZvciBhcnJheXMsIG9ubHkgYWxsb3cgaW5kZXhlcy4KLSAgICAgICAg
aWYgKHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiAhaXNVSW50MzIobmFtZSkpCi0gICAgICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsK
LQotICAgICAgICAvLyBEbyBub3Qgc2hvdyBub24tZW51bWVyYWJsZSBub24tb3duIHByb3BlcnRp
ZXMuCi0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBhbGxvdyBhcnJheSBpbmRleGVzIHRoYXQg
bWF5IGJlIG9uIHRoZSBwcm90b3R5cGUuCi0gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0byBhbGxv
dyBuYXRpdmUgZ2V0dGVycyBvbiBub24tUmVnRXhwIG9iamVjdHMuCi0gICAgICAgIGlmICghZGVz
Y3JpcHRvci5lbnVtZXJhYmxlICYmICFkZXNjcmlwdG9yLmlzT3duICYmICEodGhpcy5zdWJ0eXBl
ID09PSAiYXJyYXkiIHx8ICh0aGlzLnN1YnR5cGUgIT09ICJyZWdleHAiICYmIGRlc2NyaXB0b3Iu
bmF0aXZlR2V0dGVyKSkpCi0gICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVy
dHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLQotICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVy
LCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgotICAgICAgICAvLyBGSVhNRTog
Q3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAg
ICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkK
LSAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNv
bnRpbnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZFByZXZpZXcocHJvcGVydHkpIHsKLSAg
ICAgICAgICAgIGlmICh0b1N0cmluZyhwcm9wZXJ0eS5uYW1lID4+PiAwKSA9PT0gcHJvcGVydHku
bmFtZSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzVGhyZXNob2xkLmluZGV4ZXMtLTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzVGhyZXNob2xkLnByb3Bl
cnRpZXMtLTsKLQotICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNUaHJlc2hvbGQuaW5kZXhlcyA8
IDAgfHwgcHJvcGVydGllc1RocmVzaG9sZC5wcm9wZXJ0aWVzIDwgMCkgewotICAgICAgICAgICAg
ICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwotICAgICAgICAgICAgICAgIHByZXZpZXcubG9z
c2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJv
cGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
aW50ZXJuYWwpCi0gICAgICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwotCi0g
ICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEdldHRlci9zZXR0ZXIuCi0gICAgICAgIGlmICghKCJ2YWx1
ZSIgaW4gZGVzY3JpcHRvcikpIHsKLSAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNz
b3IifSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOdWxsIHZhbHVlLgotICAgICAgICBsZXQg
dmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOwotICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCi0g
ICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogIm9iamVjdCIsIHN1
YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOwotCi0gICAgICAgIC8vIElnbm9yZSBub24t
ZW51bWVyYWJsZSBmdW5jdGlvbnMuCi0gICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlOwot
ICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZW51bWVyYWJsZSAmJiB0eXBlID09PSAiZnVuY3Rpb24i
KQotICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
Q29udGludWU7Ci0KLSAgICAgICAgLy8gRml4IHR5cGUgb2YgZG9jdW1lbnQuYWxsLgotICAgICAg
ICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb24odmFsdWUpKQotICAg
ICAgICAgICAgdHlwZSA9ICJvYmplY3QiOwotCi0gICAgICAgIC8vIFByaW1pdGl2ZS4KLSAgICAg
ICAgY29uc3QgbWF4TGVuZ3RoID0gMTAwOwotICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZSh2
YWx1ZSkgfHwgaXNCaWdJbnQodmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PT0gInN0
cmluZyIgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVlLCBtYXhMZW5ndGgsIHRydWUpOwotICAg
ICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTogdG9TdHJp
bmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFN5bWJvbC4K
LSAgICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkgewotICAgICAgICAgICAgbGV0IHN5bWJvbFN0
cmluZyA9IHRvU3RyaW5nKHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChzeW1ib2xTdHJpbmcubGVu
Z3RoID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5f
YWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1heExlbmd0aCwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJp
bmd9KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9iamVjdC4KLSAgICAgICAgbGV0IHByb3Bl
cnR5ID0ge25hbWUsIHR5cGV9OwotICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5z
dWJ0eXBlKHZhbHVlKTsKLSAgICAgICAgaWYgKHN1YnR5cGUpCi0gICAgICAgICAgICBwcm9wZXJ0
eS5zdWJ0eXBlID0gc3VidHlwZTsKLQotICAgICAgICAvLyBTZWNvbmQgbGV2ZWwuCi0gICAgICAg
IGlmICgoc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8IHNlY29uZExldmVsS2V5cykgfHwgdGhp
cy5faXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KSkgewotICAgICAgICAgICAgLy8g
RklYTUU6IElmIHdlIHdhbnQgc2Vjb25kTGV2ZWxLZXlzIGZpbHRlciB0byBjb250aW51ZSB3ZSB3
b3VsZCBuZWVkIHNvbWUgcmVmYWN0b3JpbmcuCi0gICAgICAgICAgICBsZXQgc3ViUHJldmlldyA9
IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIHZhbHVlICE9
PSBvYmplY3QsIHNlY29uZExldmVsS2V5cyk7Ci0gICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZVBy
ZXZpZXcgPSBzdWJQcmV2aWV3OwotICAgICAgICAgICAgaWYgKCFzdWJQcmV2aWV3Lmxvc3NsZXNz
KQotICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAg
IGlmIChzdWJQcmV2aWV3Lm92ZXJmbG93KQotICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZs
b3cgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9u
ID0gIiI7Ci0gICAgICAgICAgICBpZiAodHlwZSAhPT0gImZ1bmN0aW9uIiB8fCBzdWJ0eXBlID09
PSAiY2xhc3MiKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGZ1bGxEZXNjcmlwdGlvbjsKLSAgICAg
ICAgICAgICAgICBpZiAoc3VidHlwZSA9PT0gImNsYXNzIikKLSAgICAgICAgICAgICAgICAgICAg
ZnVsbERlc2NyaXB0aW9uID0gImNsYXNzICIgKyB2YWx1ZS5uYW1lOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHN1YnR5cGUgPT09ICJub2RlIikKLSAgICAgICAgICAgICAgICAgICAgZnVsbERl
c2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3KHZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1bGxEZXNjcmlwdGlvbiA9IFJlbW90ZU9i
amVjdC5kZXNjcmliZSh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlz
Ll9hYmJyZXZpYXRlU3RyaW5nKGZ1bGxEZXNjcmlwdGlvbiwgbWF4TGVuZ3RoLCBzdWJ0eXBlID09
PSAicmVnZXhwIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9
IGRlc2NyaXB0aW9uOwotICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcocHJvcGVydHkpOwotICAgIH0K
LQotICAgIF9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwgcHJldmlldykKLSAgICB7Ci0gICAg
ICAgIC8vIEZldGNoIDYsIGJ1dCBvbmx5IHJldHVybiA1LCBzbyB3ZSBjYW4gdGVsbCBpZiB3ZSBv
dmVyZmxvd2VkLgotICAgICAgICBsZXQgZW50cmllcyA9IGluamVjdGVkU2NyaXB0Ll9lbnRyaWVz
KG9iamVjdCwgdGhpcy5zdWJ0eXBlLCAwLCA2KTsKLSAgICAgICAgaWYgKCFlbnRyaWVzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAg
ICAgICAgICAgIGVudHJpZXMucG9wKCk7Ci0gICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0g
dHJ1ZTsKLSAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1haW5QcmV2aWV3KHN1YlByZXZpZXcpIHsKLSAgICAg
ICAgICAgIGlmICghc3ViUHJldmlldy5sb3NzbGVzcykKLSAgICAgICAgICAgICAgICBwcmV2aWV3
Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBwcmV2aWV3LmVudHJpZXMg
PSBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgZW50cnkudmFsdWUg
PSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBl
bnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKLSAgICAgICAgICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVu
dHJ5LnZhbHVlKTsKLSAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkgewotICAgICAgICAg
ICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFs
dWUoZW50cnkua2V5LCBlbnRyeS5rZXkgIT09IG9iamVjdCk7Ci0gICAgICAgICAgICAgICAgdXBk
YXRlTWFpblByZXZpZXcoZW50cnkua2V5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBlbnRyeTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgX2lzUHJldmlld2FibGVPYmpl
Y3QodmFsdWUsIG9iamVjdCkKLSAgICB7Ci0gICAgICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAg
ICAgICBzZXQuYWRkKG9iamVjdCk7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJldmlld2Fi
bGVPYmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsKLSAgICB9Ci0KLSAgICBfaXNQcmV2aWV3
YWJsZU9iamVjdEludGVybmFsKG9iamVjdCwga25vd25PYmplY3RzLCBkZXB0aCkKLSAgICB7Ci0g
ICAgICAgIC8vIERlZXAgb2JqZWN0LgotICAgICAgICBpZiAoZGVwdGggPiAzKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIFByaW1pdGl2ZS4KLSAgICAgICAgaWYgKGlz
UHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBpc0JpZ0ludChvYmplY3QpIHx8IGlzU3ltYm9sKG9i
amVjdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAvLyBOdWxsLgotICAg
ICAgICBpZiAob2JqZWN0ID09PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFzKG9i
amVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgKytkZXB0aDsKLSAg
ICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOwotCi0gICAgICAgIC8vIEFycmF5cyBhcmUg
c2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCi0gICAgICAgIGxl
dCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKLSAgICAgICAgaWYgKHN1
YnR5cGUgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAgIGxldCBsZW5ndGggPSBvYmplY3QubGVu
Z3RoOwotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDUpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKG9i
amVjdFtpXSwga25vd25PYmplY3RzLCBkZXB0aCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gTm90IGEgYmFzaWMgb2JqZWN0LgotICAgICAgICBpZiAob2JqZWN0
Ll9fcHJvdG9fXyAmJiBvYmplY3QuX19wcm90b19fLl9fcHJvdG9fXykKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICAvLyBPYmplY3RzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZl
IDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGllcy4KLSAgICAgICAgbGV0IG93blByb3Bl
cnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOwotICAgICAgICBp
ZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ld
OwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIGlmIChkZXNjcmlwdG9y
ICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbChv
YmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgX2FiYnJldmlhdGVTdHJpbmcoc3RyaW5nLCBtYXhMZW5ndGgsIG1pZGRsZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoIDw9IG1heExlbmd0aCkKLSAgICAgICAgICAg
IHJldHVybiBzdHJpbmc7Ci0KLSAgICAgICAgaWYgKG1pZGRsZSkgewotICAgICAgICAgICAgbGV0
IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7Ci0gICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0g
bWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJz
dHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGgg
LSByaWdodEhhbGYsIHJpZ2h0SGFsZik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc3Ry
aW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1MjAyNiI7Ci0gICAgfQotfTsKLQotLy8gLS0t
LS0tLQotCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGZ1bmN0aW9uKG9yZGluYWws
IGNhbGxGcmFtZSkKLXsKLSAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRp
bmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOwotICAgIHRoaXMu
ZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKLSAgICB0aGlzLmxvY2F0aW9u
ID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1lLnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2Fs
bEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2FsbEZyYW1lLmNvbHVtbn07Ci0gICAgdGhpcy5z
Y29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKLSAgICB0aGlzLnRo
aXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNl
Iik7Ci0gICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7Ci19
OwotCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7Ci0gICAgX3dy
YXBTY29wZUNoYWluKGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGxldCBzY29wZUNoYWluID0g
Y2FsbEZyYW1lLnNjb3BlQ2hhaW47Ci0gICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9ucyA9IGNh
bGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwotCi0gICAgICAgIGxldCBzY29wZUNoYWluUHJv
eHkgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2Fs
bEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0
aW9uc1tpXSwgImJhY2t0cmFjZSIpOwotICAgICAgICByZXR1cm4gc2NvcGVDaGFpblByb3h5Owot
ICAgIH0KLX07Ci0KLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1l
cyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCi0gICAgMTogIndpdGgiLCAv
LyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BFCi0gICAgMzog
ImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJ
T05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9C
QUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQotICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8g
TkVTVEVEX0xFWElDQUxfU0NPUEUKLX07Ci0KLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5
Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlv
bn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAgICAgICBvYmplY3Q6IFJlbW90
ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAgICAgdHlwZTogSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAotICAgIH07Ci0KLSAg
ICBpZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7Ci0KLSAgICBpZiAobG9jYXRp
b24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247Ci0KLSAgICBpZiAoaXNFbXB0
eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7Ci0KLSAgICByZXR1
cm4gc2NvcGU7Ci19Ci0KLS8vIC0tLS0tLS0KLQotZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2Fs
bEZyYW1lKQotewotICAgIGxldCBzYXZlZFJlc3VsdEFsaWFzID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LnNhdmVkUmVzdWx0QWxpYXM7Ci0KLSAgICBsZXQgZGVmaW5lR2V0dGVyID0gKGtleSwgdmFsdWUs
IHdyYXApID0+IHsKLSAgICAgICAgaWYgKHdyYXApIHsKLSAgICAgICAgICAgIGxldCBvcmlnaW5h
bFZhbHVlID0gdmFsdWU7Ci0gICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
b3JpZ2luYWxWYWx1ZTsgfTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX19kZWZpbmVHZXR0
ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKLSAgICAgICAgaWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYg
c2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQotICAgICAgICAgICAgdGhpcy5fX2RlZmluZUdldHRl
cl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZhbHVlKTsKLSAgICB9OwotCi0gICAgaWYgKCJf
bGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIGRlZmluZUdldHRlcigiXyIs
IGluamVjdGVkU2NyaXB0Ll9sYXN0UmVzdWx0LCB0cnVlKTsKLQotICAgIGlmICgiX2V4Y2VwdGlv
blZhbHVlIiBpbiBpbmplY3RlZFNjcmlwdCkKLSAgICAgICAgZGVmaW5lR2V0dGVyKCJleGNlcHRp
b24iLCBpbmplY3RlZFNjcmlwdC5fZXhjZXB0aW9uVmFsdWUsIHRydWUpOwotCi0gICAgaWYgKCJf
ZXZlbnRWYWx1ZSIgaW4gaW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIGRlZmluZUdldHRlcigiZXZl
bnQiLCBpbmplY3RlZFNjcmlwdC5fZXZlbnRWYWx1ZSwgdHJ1ZSk7Ci0KLSAgICAvLyAkMS0kOTkK
LSAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluamVjdGVkU2NyaXB0Ll9zYXZlZFJlc3VsdHMubGVu
Z3RoOyArK2kpCi0gICAgICAgIGRlZmluZUdldHRlcihpLCBpbmplY3RlZFNjcmlwdC5fc2F2ZWRS
ZXN1bHRzW2ldLCB0cnVlKTsKLQotICAgIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEku
Z2V0dGVycykKLSAgICAgICAgZGVmaW5lR2V0dGVyKG5hbWUsIENvbW1hbmRMaW5lQVBJLmdldHRl
cnNbbmFtZV0pOwotCi0gICAgZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2Rz
KQotICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXTsKLX0K
LQotQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OwotCi1Db21tYW5kTGluZUFQSS5tZXRob2Rz
ID0ge307Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVzKG9i
amVjdCk7IH07Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SW5zdGFuY2VzIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3RhbmNlcyguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlPYmplY3RzIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3RhbmNlcyguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlIb2xkZXJzIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUhvbGRlcnMoLi4uYXJn
dW1lbnRzKTsgfTsKLQotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5zcGVjdCJdID0gZnVuY3Rp
b24ob2JqZWN0KSB7IHJldHVybiBpbmplY3RlZFNjcmlwdC5pbnNwZWN0T2JqZWN0KG9iamVjdCk7
IH07Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5hc3NlcnQoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNsZWFyKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0KC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1ZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLmRpcnhtbCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuZXJyb3IoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
Imdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmdyb3VwKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91
cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5ncm91cENvbGxhcHNlZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuaW5mbyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmxvZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmls
ZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5w
cm9maWxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxl
RW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnByb2ZpbGVFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJl
Y29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5yZWNvcmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29y
ZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5yZWNvcmRFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInNj
cmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuc2NyZWVuc2hvdCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUudGFibGUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRh
a2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS50aW1lKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5t
ZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnRpbWVFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGltZUxvZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudHJhY2UoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUud2FybiguLi5hcmd1bWVudHMpOyB9OwotCi1mb3IgKGxldCBuYW1lIGluIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHMpCi0gICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmlu
ZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1h
bmQgTGluZSBBUEldIH0iOyB9OwotCi1yZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2Zm
NmY5NzZjN2UzOWQ5OTk1OC4uNDkxMjAyYzYxODU5MjBkZWM1MGI2MjM4M2RjZGM4NDQ2MzQ0N2U3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjIwLDggKzIyMjAs
MTAgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICBpZiAoYnVp
bHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewogICAgICAgICAgICAg
aWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsK
LSAgICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgpICE9IFBhcnNlckVycm9yOjpTdGFja092
ZXJmbG93KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3Ig
Y29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAg
aWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdykgeworICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0
aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5lICIsIGVycm9yLmxpbmUoKSwgIi4gRHVt
cGluZyBidWlsdGluIHNvdXJjZS4uLiIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
c291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDRmNzdiMDk3YWIxZTIzNzdlNTNh
MjI4ZjRkOGY4ZGM5Mjc1ZmFiOTguLjY4YjlmNjJhZTY2YTE2NjcyNmU0YzUxZWZjNjRjYWJkNDZm
YWQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsNyBAQCBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShD
SEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhh
c093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNy
ZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ocGFy
c2VKU09OKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGVuYWJsZVN1cGVyU2Ft
cGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkaXNhYmxlU3VwZXJTYW1w
bGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGVucXVldWVKb2IpOwpAQCAt
MzYxLDYgKzM2MiwxNSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5
bWJvbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVO
dWxsU3ltYm9sKCkuZ2V0KCkpKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBhcnNl
SlNPTiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBhdXRvKiBqc29uU3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CisgICAgaWYgKCFqc29uU3RyaW5nKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNP
TlBhcnNlKGdsb2JhbE9iamVjdCwganNvblN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KSkpOwor
fQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhc3NlcnRD
YWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewpAQCAtMTA3OCw2ICsxMDg4LDggQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBt
X2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25z
dHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvcik7CisKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0
cmluZ0NvbnN0cnVjdG9yKTsKICAgICAKICAgICBtX2V2YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0
ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7
CkBAIC0xNTU1LDYgKzE1NjcsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsK
ICAgICAgICAgfSk7CiAKKyAgICAvLyBUT0RPOiBJbnN0ZWFkIG9mIHRoaXMsIGNhbiB3ZSBqdXN0
IGxpbmstdGltZSBjb25zdGFudCBKU09OPworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnBhcnNlSlNPTildLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcGFyc2VKU09OKSk7CisgICAgICAgIH0pOworCiAgICAg
Ly8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7CkBAIC0yMTk4
LDYgKzIyMTUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisvLyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3N0cmluZ0NvbnN0cnVjdG9yKTsKIAogICAgIHRoaXNPYmplY3QtPm1fZGVmYXVs
dENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAxNTYwNDY5MWUzODZhNmUzYjNiNDNjNDE2MDIyZGY4OTNi
NTUzNTkyLi41ZWY1ZWI5Y2EzOWJkODYwZWQxMGY0NmIyMTUxNjMwZTYwMTE1ZDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMxNiw2
ICszMTYsNyBAQCBwdWJsaWM6CiAgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fYWdncmVnYXRlRXJy
b3JTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2Jq
ZWN0Q29uc3RydWN0b3I7CisvLyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1f
c3RyaW5nQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1f
YXJyYXlDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1Db25zdHJ1Y3Rv
cj4gbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBDb25z
dHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAyNmFmNjE5ZGNhM2QyNmQ4
ZWRjNTdiOWM5NTI2YmFlMDVjOWVmMjZkLi5mNDNhYmI5MDhmZTc5YTAwMmI3Njk1MWFhNzZlZjg5
ODk1Yjk4YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5OSwxNCBAQCB2b2lkIE9iamVjdENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE9iagogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcm90b3R5cGVPZlByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5RGVzY3JpcHRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5
TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNQcml2YXRlTmFtZSgpLCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmtleXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvcktleXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5jcmVhdGVQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7
CisKICAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpCiAgICAgICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhc093biwgb2JqZWN0
Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDkyMDFlYThjMDQ2MDJiOWE5MGQ1ODYzZjNlMDA0
YTg0YTJmYTc3ODIuLjE4MmQ3YTRkNmM4OGNmZTgyNTIxNGYyZTAyMzMxMTRhMTZiZGE2NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cApAQCAtNjgsNiArNjgsOCBAQCB2b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fZGVmaW5lU2V0dGVy
X18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fbG9va3VwR2V0dGVyX18sIG9i
amVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFBy
b3RvRnVuY0xvb2t1cFNldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOworCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT3duUHJvcGVydHlQ
cml2YXRlTmFtZSgpLCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogfQogCiBPYmplY3RQ
cm90b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDA0MGRhY2E1ZmJlNWU5OTUwN2FiZjk1YzQ0YjA3MjU4MjEzNzU1MmUuLjAxYzJjNDNlYzM4
YjBjNWZmMmVhZjgwYTcyZWMwN2RjNDE5OTRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MTI3LDE4ICsyMTI3LDYgQEAgV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJL
SVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2ViQ29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVf
Q09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0g
ICAgTUFJTl9ERVBFTkRFTkNZIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NP
TU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVD
VVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09S
RV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpz
Ci0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUn0veHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAg
ICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hB
U0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEu
Y3BwKQogCkBAIC0yMzUwLDYgKzIzMzgsNyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
CiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJD
T1JFX0RJUn0vZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFU
T1JfU0NSSVBUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggMzk3YzZiYjA4YjE2ZDMxZmVmMWEyOGIyOTc1ZGEyNjE3ZDEzNGY2Zi4uNTNk
YmU2MmIwMWMxMTY4YjVjYjk4NmNkZTE4MTk2ODk2MzY1Zjc3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMzcxLDcgKzEzNzEsNyBA
QCAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCiAkKFBST0pFQ1RfRElS
KS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tDb25maWd1cmF0aW9uLmlkbAogJChQUk9KRUNUX0RJUikv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSUhvc3QuaWRsCi0kKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKyQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5qcwogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdC5pZGwKICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdERPTU9iamVjdC5pZGwKICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dFJlc291cmNlc09iamVjdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZl
NzA4MTJiOS4uMGE0OTQzOTVhYTIwZmJlNTFiODkwZWMzZGY4MDMzMTE1MzgzZWU1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgs
NyArOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NT
U1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01DbGllbnRJc29TdWJzcGFjZXMuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2Nm
OTYxZmM2ZmE0MjE2ZTQ2Yy4uOWVkOGU0MGFlZTE1NDJkMmU0ZjgzNTc5MjU4YzhmYTAyZmU4MDk4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAg
aWZuZXEgKCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1ZGUgJChKU19ET01fSEVB
REVSUzouaD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmggOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwot
CWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBZVEhP
TikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCSQoREVMRVRFKSBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5z
CiAKIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKQEAgLTIyNTIsNiArMjI0Miw3IEBAIFdl
YkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RGVjb2Rl
clN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMgXAog
ICAgICQoV2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAg
ICAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qcyBcCiAjCiAKIEJV
SUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVkNTExYjlkZjA0YmU2OWY5YzU1ZjY1
MjM1MTNlMTk5MWY3ZDNmMWYuLmY1NDI0OGVkMzliOWY3ODYxM2I3ZjIyMGVjODkzYWM4NWY0YWQ5
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkwMCw2ICs5MDAsNyBAQAogCQkyRTMwMUJFODI3NDU5NDcyMDBDMDU2NEYgLyog
Q29tcGlsZWRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ0NTEwNzcyMDJDN0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2VsZWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTM3REZE
QjEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3REZEODEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmgg
Ki87IH07CiAJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0UwMDQxMkRCQzVBNDAw
QTZCMjMzIC8qIEpTRE9NVVJMLmggKi87IH07CisJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKIAkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFs
U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKQEAgLTM1MTUs
NyArMzUxNiw2IEBACiAJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21p
c2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1ODFFRDEz
MUZCMjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAv
KiBTZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0SG9zdC5oICovOyB9OwotCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oICovOyB9OwogCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5o
ICovOyB9OwogCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87
IH07CiAJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2
NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCAqLzsgfTsKQEAgLTgyMDMsNiAr
ODIwMyw4IEBACiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFMzdFMDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVVSTC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21tYW5k
TGluZUFQSU1vZHVsZUJ1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVC
dWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJ
TW9kdWxlQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkz
NCw4ICsxMzkzNiw3IEBACiAJCUE1ODFFRDEyMUZCMjg4QzkwMENFRDRFQyAvKiBTZXJ2aWNlV29y
a2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vydmlj
ZVdvcmtlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIx
ODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2Vi
SW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkluamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTg0
RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IENvbW1hbmRMaW5lQVBJTW9kdWxlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0MjEsNyArMjA0MjIs
NiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNTg0RkUyNTE4NjM3REFCMDA4
NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLywKIAkJCQlBNTg0RkUzOTE4
NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwICovLAogCQkJCUE1ODRG
RTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oICovLAogCQkJCTkx
NzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgKi8sCkBAIC0yMDQ1OCw3ICsyMDQ1OCw3IEBACiAJCQkJQTU4NEZFMzMxODY0RDVB
RjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5pZGwgKi8sCiAJCQkJQTU4NEZFMjkxODYz
ODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLywKIAkJCQlBNTg0RkUy
QTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLywKLQkJCQlBNTg0
RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8s
CisJCQkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmpz
ICovLAogCQkJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovLAog
CQkJCTdBQUJBMjU4MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuaCAqLywKIAkJCQk3QTU0
ODgxNjE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmNwcCAqLywKQEAgLTIzNTc3
LDYgKzIzNTc3LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBF
RDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQw
NkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQy
ODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwICovLAor
CQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZUJ1aWx0
aW5zLmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBD
b3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAw
NzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovLApAQCAtMzQwNTYsNyArMzQwNTgsNyBA
QAogCQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYxODYz
N0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8q
IENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAv
KiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzc1
MTg0MDJBNjcwMDg5MkYxMyAvKiBDb21tb25DcnlwdG9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5j
cHAKaW5kZXggZDc3YzczZDhhZTQ5NTAxNjc1MjgyMjY0ZDBkMzZkNjVjY2U3NDJmZi4uNDRjOWFk
YWVhY2IyYTI2MjVkZjdjMDg5NjJlNjkxZDhlYmEyNDQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIK
IAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDgsOSArNDcsMTMg
QEAgQ29tbWFuZExpbmVBUElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkKIHsKIH0KIAot
U3RyaW5nIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAotewotICAgIHJldHVy
biBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzKSk7CitKU0Z1bmN0
aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QgeworICAgIGlmIChhdXRvKiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rp
b25zKCkuY29tbWFuZExpbmVBUElNb2R1bGUoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdldCgp
OworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1
bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9i
amVjdGAuIik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3QoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThjMmRlYmRlZGFjZjdmYzZiNDJkMmRm
NzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5N2Q1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApAQCAtMzMsNyAr
MzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBDb21tYW5kTGluZUFQSU1v
ZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEpTQzo6
SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNv
bnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0KEluc3BlY3Rvcjo6SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQz
YWJiNTZhMjU4MGQyYzE5MWQ4MjI0OTliNDMzYmM5MDk2MDA4NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5qcwpAQCAtMCww
ICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2Ny
aXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3Rl
ZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhv
c3QpCit7CisKK2luamVjdGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0
KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApCisgICAgICAgIHJldHVybjsKKwor
ICAgIGxldCBvYmplY3RJZCA9IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0KTsKKyAgICBsZXQg
aGludHMgPSB7fTsKKworICAgIHN3aXRjaCAoUmVtb3RlT2JqZWN0LmRlc2NyaWJlKG9iamVjdCkp
IHsKKyAgICBjYXNlICJEYXRhYmFzZSI6CisgICAgICAgIHZhciBkYXRhYmFzZUlkID0gQ29tbWFu
ZExpbmVBUElIb3N0LmRhdGFiYXNlSWQob2JqZWN0KTsKKyAgICAgICAgaWYgKGRhdGFiYXNlSWQp
CisgICAgICAgICAgICBoaW50cy5kYXRhYmFzZUlkID0gZGF0YWJhc2VJZDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAiU3RvcmFnZSI6CisgICAgICAgIHZhciBzdG9yYWdlSWQgPSBDb21tYW5k
TGluZUFQSUhvc3Quc3RvcmFnZUlkKG9iamVjdCk7CisgICAgICAgIGlmIChzdG9yYWdlSWQpCisg
ICAgICAgICAgICBoaW50cy5kb21TdG9yYWdlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVh
dGUoIigiICsgc3RvcmFnZUlkICsgIikiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Q29tbWFuZExpbmVBUElIb3N0Lmluc3BlY3Qob2JqZWN0SWQsIGhpbnRzKTsKK307CisKK0NvbW1h
bmRMaW5lQVBJLmdldHRlcnNbIjAiXSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBDb21tYW5k
TGluZUFQSUhvc3QuaW5zcGVjdGVkT2JqZWN0KCk7Cit9OworCitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJjb3B5Il0gPSBmdW5jdGlvbihvYmplY3QpIHsKKyAgICBsZXQgc3RyaW5nID0gbnVsbDsK
KworICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKKyAgICBp
ZiAoc3VidHlwZSA9PT0gIm5vZGUiKQorICAgICAgICBzdHJpbmcgPSBvYmplY3Qub3V0ZXJIVE1M
OworICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJyZWdleHAiKQorICAgICAgICBzdHJpbmcgPSAi
IiArIG9iamVjdDsKKyAgICBlbHNlIGlmIChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVl
KG9iamVjdCkpCisgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OworICAgIGVsc2UgaWYgKHR5
cGVvZiBvYmplY3QgPT09ICJzeW1ib2wiKQorICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuU3RyaW5nKG9iamVjdCk7CisgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0g
ImZ1bmN0aW9uIikKKyAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CisgICAgZWxzZSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
SlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgfSBjYXRjaCB7Cisg
ICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IENvbW1hbmRMaW5lQVBJSG9zdC5jb3B5VGV4dChzdHJpbmcpOworfTsKKworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdldCkgeworICAg
IHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuZ2V0RXZlbnRMaXN0ZW5lcnModGFyZ2V0KTsKK307
CisKK2Z1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpIHsKKyAgICBpZiAodHlwZXMg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIs
ICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJk
ZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJl
c2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07
CisgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKKyAgICAgICAgdHlwZXMg
PSBbdHlwZXNdOworCisgICAgbGV0IHJlc3VsdCA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2Ui
KQorICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsICJjbGljayIsICJkYmxjbGljayIsICJt
b3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVw
IiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQor
ICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsICJrZXlkb3duIiwgImtleXByZXNzIiwgImtl
eXVwIiwgInRleHRJbnB1dCIpOworICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNo
IikKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCAidG91Y2hjYW5jZWwiLCAidG91Y2hl
bmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJjb250cm9sIikKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCAiYmx1ciIs
ICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3Qi
LCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQGFycmF5UHVz
aChyZXN1bHQsIHR5cGVzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVu
Y3Rpb24gbG9nRXZlbnQoZXZlbnQpCit7CisgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUubG9nKGV2ZW50LnR5cGUsIGV2ZW50KTsKK30KKworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
bW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgeworICAgIGlmICghb2Jq
ZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlz
dGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXMo
dHlwZXMpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxz
ZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwg
ZmFsc2UpOworICAgIH0KK307CisKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInVubW9uaXRvckV2
ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgeworICAgIGlmICghb2JqZWN0IHx8ICFv
YmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCisgICAgICAgIG9iamVj
dC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworfTsKKwor
aWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuTm9kZSkgeworICAgIGZ1bmN0aW9uIGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUobm9kZSkgewor
ICAgICAgICByZXR1cm4gbm9kZSAmJiBJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShub2RlKSA9
PT0gIm5vZGUiICYmIChub2RlLm5vZGVUeXBlID09PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9k
ZS5FTEVNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
Lk5vZGUuRE9DVU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKTsKKyAgICB9CisKKyAgICBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyIkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAg
ICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXJ0LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworCisgICAgICAgIGxldCByZXN1bHQgPSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7Cisg
ICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAg
IGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0gIiMiKSB7CisgICAgICAgICAgICByZXN1
bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0
b3IpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oIlRoZSBjb25zb2xlIGZ1bmN0aW9uICQoKSBoYXMg
Y2hhbmdlZCBmcm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVlcnlTZWxlY3RvcihzZWxl
Y3RvcikuIFlvdSBtaWdodCB0cnkgJChcIiMlc1wiKSIsIHNlbGVjdG9yKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0g
PSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0
b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEdsb2JhbE9i
amVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgfTsKKworICAg
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlvbih4cGF0aCwgY29udGV4dCkg
eworICAgICAgICBsZXQgZG9jID0gKGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50KSB8
fCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQ7CisgICAgICAgIGxldCByZXN1bHQgPSBk
b2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBudWxsLCBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpOworICAgICAgICBzd2l0Y2ggKHJlc3Vs
dC5yZXN1bHRUeXBlKSB7CisgICAgICAgIGNhc2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRo
UmVzdWx0Lk5VTUJFUl9UWVBFOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5udW1iZXJWYWx1
ZTsKKyAgICAgICAgY2FzZSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuU1RSSU5H
X1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnN0cmluZ1ZhbHVlOworICAgICAgICBj
YXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJlc3VsdC5CT09MRUFOX1RZUEU6CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCBub2RlcyA9IFtdOworICAgICAgICBsZXQgbm9kZSA9IG51bGw7CisgICAgICAgIHdoaWxl
IChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCisgICAgICAgICAgICBub2Rlcy5wdXNoKG5v
ZGUpOworICAgICAgICByZXR1cm4gbm9kZXM7CisgICAgfTsKK30KKworZm9yIChsZXQgbmFtZSBp
biBDb21tYW5kTGluZUFQSS5tZXRob2RzKQorICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFt
ZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIo
KSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmNTFlMzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBl
M2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgL2Rl
di9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGlu
c3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtS
ZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0KSB7Ci0KLS8v
IEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJz
ZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5v
bi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCi0KLWluamVjdGVkU2NyaXB0Ll9pbnNwZWN0T2Jq
ZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGxldCBvYmplY3RJZCA9IFJlbW90ZU9iamVjdC5jcmVh
dGUob2JqZWN0KTsKLSAgICBsZXQgaGludHMgPSB7fTsKLQotICAgIHN3aXRjaCAoUmVtb3RlT2Jq
ZWN0LmRlc2NyaWJlKG9iamVjdCkpIHsKLSAgICBjYXNlICJEYXRhYmFzZSI6Ci0gICAgICAgIHZh
ciBkYXRhYmFzZUlkID0gQ29tbWFuZExpbmVBUElIb3N0LmRhdGFiYXNlSWQob2JqZWN0KTsKLSAg
ICAgICAgaWYgKGRhdGFiYXNlSWQpCi0gICAgICAgICAgICBoaW50cy5kYXRhYmFzZUlkID0gZGF0
YWJhc2VJZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAiU3RvcmFnZSI6Ci0gICAgICAgIHZh
ciBzdG9yYWdlSWQgPSBDb21tYW5kTGluZUFQSUhvc3Quc3RvcmFnZUlkKG9iamVjdCk7Ci0gICAg
ICAgIGlmIChzdG9yYWdlSWQpCi0gICAgICAgICAgICBoaW50cy5kb21TdG9yYWdlSWQgPSBJbmpl
Y3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc3RvcmFnZUlkICsgIikiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgQ29tbWFuZExpbmVBUElIb3N0Lmluc3BlY3Qob2JqZWN0SWQs
IGhpbnRzKTsKLX07Ci0KLUNvbW1hbmRMaW5lQVBJLmdldHRlcnNbIjAiXSA9IGZ1bmN0aW9uKCkg
ewotICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuaW5zcGVjdGVkT2JqZWN0KCk7Ci19Owot
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihvYmplY3QpIHsKLSAg
ICBsZXQgc3RyaW5nID0gbnVsbDsKLQotICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1
YnR5cGUob2JqZWN0KTsKLSAgICBpZiAoc3VidHlwZSA9PT0gIm5vZGUiKQotICAgICAgICBzdHJp
bmcgPSBvYmplY3Qub3V0ZXJIVE1MOwotICAgIGVsc2UgaWYgKHN1YnR5cGUgPT09ICJyZWdleHAi
KQotICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKLSAgICBlbHNlIGlmIChpbmplY3RlZFNj
cmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCi0gICAgICAgIHN0cmluZyA9ICIiICsgb2Jq
ZWN0OwotICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJzeW1ib2wiKQotICAgICAgICBz
dHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5nKG9iamVjdCk7Ci0gICAgZWxzZSBp
ZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgc3RyaW5nID0gIiIgKyBv
YmplY3Q7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsK
LSAgICAgICAgfSBjYXRjaCB7Ci0gICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIENvbW1hbmRMaW5lQVBJSG9zdC5jb3B5VGV4dChzdHJpbmcp
OwotfTsKLQotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1
bmN0aW9uKHRhcmdldCkgewotICAgIHJldHVybiBDb21tYW5kTGluZUFQSUhvc3QuZ2V0RXZlbnRM
aXN0ZW5lcnModGFyZ2V0KTsKLX07Ci0KLWZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXModHlw
ZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgdHlwZXMgPSBbIm1v
dXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdl
IiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIs
ICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIs
ICJzdWJtaXQiLCAidW5sb2FkIl07Ci0gICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3Ry
aW5nIikKLSAgICAgICAgdHlwZXMgPSBbdHlwZXNdOwotCi0gICAgbGV0IHJlc3VsdCA9IFtdOwot
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYg
KHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwg
ImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2Vv
dmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwotICAgICAgICBlbHNlIGlmICh0eXBlc1tp
XSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgia2V5ZG93biIsICJrZXlwcmVz
cyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09
ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5jZWwiLCAidG91Y2hl
bmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwgImNoYW5n
ZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJt
aXQiLCAiem9vbSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBl
c1tpXSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZ1bmN0aW9uIGxvZ0V2ZW50
KGV2ZW50KQotewotICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyhldmVudC50
eXBlLCBldmVudCk7Ci19Ci0KLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIm1vbml0b3JFdmVudHMi
XSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKLSAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0
LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQotICAgICAg
ICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIG9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOwotICAgICAgICBv
YmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKLSAgICB9
Ci19OwotCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0
aW9uKG9iamVjdCwgdHlwZXMpIHsKLSAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQotICAgICAgICByZXR1cm47
Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRM
aXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKLX07Ci0KLWlmIChpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKLSAg
ICBmdW5jdGlvbiBjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKG5vZGUpIHsKLSAgICAgICAgcmV0dXJu
IG5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUobm9kZSkgPT09ICJub2RlIiAmJiAo
bm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuRUxFTUVOVF9OT0RF
IHx8IG5vZGUubm9kZVR5cGUgPT09IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlLkRPQ1VNRU5U
X05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuRE9D
VU1FTlRfRlJBR01FTlRfTk9ERSk7Ci0gICAgfQotCi0gICAgQ29tbWFuZExpbmVBUEkubWV0aG9k
c1siJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7Ci0gICAgICAgIGlmIChjYW5RdWVy
eVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNl
bGVjdG9yKHNlbGVjdG9yKTsKLQotICAgICAgICBsZXQgcmVzdWx0ID0gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwotICAgICAgICBpZiAocmVz
dWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICBpZiAoc2VsZWN0b3Ig
JiYgc2VsZWN0b3JbMF0gIT09ICIjIikgewotICAgICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdG9yKTsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS53YXJuKCJUaGUgY29uc29sZSBmdW5jdGlvbiAkKCkgaGFzIGNoYW5nZWQgZnJvbSAk
PWdldEVsZW1lbnRCeUlkKGlkKSB0byAkPXF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLiBZb3UgbWln
aHQgdHJ5ICQoXCIjJXNcIikiLCBzZWxlY3Rvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH07Ci0KLSAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkJCJdID0gZnVuY3Rpb24oc2Vs
ZWN0b3IsIHN0YXJ0KSB7Ci0gICAgICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0
KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShz
dGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAgIH07Ci0KLSAgICBDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKLSAgICAgICAgbGV0
IGRvYyA9IChjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCkgfHwgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmRvY3VtZW50OwotICAgICAgICBsZXQgcmVzdWx0ID0gZG9jLmV2YWx1YXRlKHhw
YXRoLCBjb250ZXh0IHx8IGRvYywgbnVsbCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVz
dWx0LkFOWV9UWVBFLCBudWxsKTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQucmVzdWx0VHlwZSkg
ewotICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJlc3VsdC5OVU1CRVJf
VFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVyVmFsdWU7Ci0gICAgICAgIGNh
c2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVzdWx0LlNUUklOR19UWVBFOgotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1ZTsKLSAgICAgICAgY2FzZSBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFOgotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdC5ib29sZWFuVmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgbm9kZXMgPSBb
XTsKLSAgICAgICAgbGV0IG5vZGUgPSBudWxsOwotICAgICAgICB3aGlsZSAobm9kZSA9IHJlc3Vs
dC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKLSAgICAgICAg
cmV0dXJuIG5vZGVzOwotICAgIH07Ci19Ci0KLWZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVB
UEkubWV0aG9kcykKLSAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0g
ZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBM
aW5lIEFQSV0gfSI7IH07Ci0KLX0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTNiZDRlNjU2MDVmOGFmODQxMGI3MmM2ODcz
NDVhYjZlMjUyNWFhMS4uZmYzMjViMWY1ZTgwMWE0ZWI2ZmU0OWFiOTczYWQzN2ZhNzc0MWIyNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTA0LTIwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlw
dFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRl
biBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvcGFnZS9zZXRTY3JlZW5TaXplT3ZlcnJpZGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0
OgorCiAyMDIyLTA0LTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIHNjcm9sbEludG9WaWV3IGZhaWxzIHdpdGggc2Ny
b2xsLXNuYXAtdHlwZSBvbiA6cm9vdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1
ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1
OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDUgQEAgUEFTUzogU2hv
dWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlw
dCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBM
aXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNo
b3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBT
aG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LgogUEFTUzog
U2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4
NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5kNjc3YmEyZGVkZGYxZjUxNjg5MDJh
MTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTksMTEgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykgc3RhcnRpbmcgb24gbGluZSA1CiAg
ICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24g
PGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBzb3VyY2UgYWJvdmUgb24gbGluZSA3
Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3JpcHRzIEluamVjdGVkU2NyaXB0U291
cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAKICAgICBsZXQgZm91bmRFeHRl
cm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9
IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQg
PSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5k
SW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRDb21tYW5k
TGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZFVuZXhwZWN0ZWRTY3Jp
cHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBA
IC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgZnVuY3Rpb24g
aXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0KHBhcmFtcykgewotICAgICAgICBy
ZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDEwMDsg
Ly8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3Jp
cHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9k
eT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNFdmFsU2NyaXB0KHBhcmFtcykgewog
ICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0gImV2YWwuanMiOwogICAgIH0KIAot
ICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0gICAg
ICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRf
IikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0
dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Ui
KSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1l
OiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRpYWxTY3JpcHRzIiwKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kRXZh
bFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFm
b3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlzQ29tbWFuZExpbmVBUElTb3VyY2VT
Y3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZExpbmVB
UElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91
bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0luamVjdGVkU2NyaXB0U291cmNlU2Ny
aXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEluamVjdGVkU2NyaXB0
U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJVTkVYUEVDVEVEIFNDUklQVDogIiAr
IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5s
aW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0
LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5l
QXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBBdHRyaWJ1
dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIp
OwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRT
Y3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRT
b3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0
KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3Ig
Q29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29s
VGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3JpcHQsICJTaG91bGQgbm90IHJlY2Vp
dmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0
L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUt
b2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAppbmRleCBkNDQyMTdkMzYyZWE0ZjlhMjUyNjRhMGQ4
YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJkNTAzN2U1MmFlOTBjMjMzZjIyYjUzOTM5NmVlMWY4YWYx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9l
cnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90
ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0zMSw3ICszMSw3IEBAIEVYUFJFU1NJT046
IGVycm9yID0gbnVsbDsgdHJ5IHsgW10ueC54OyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsg
ZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBl
IjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdp
dGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAi
X3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2
ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAg
fQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtNzAsNyArNzAsNyBAQCBFWFBSRVNT
SU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGV2YWwoImlmKCkiKTsgfSBjYXRjaCAoZSkgeyBlcnJv
ciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAg
ICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBj
b2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNv
ZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBjb2Rl
XVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUXigKZ0aXZlIGNvZGVdXG5AW25hdGl2
ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAi
X2VudHJpZXMiOiBudWxsCkBAIC0xMDQsNyArMTA0LDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBu
dWxsOyB0cnkgeyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikuc3BsaXRUZXh0KDEwMCk7IH0g
Y2EKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjog
InN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmds
b2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxu
X3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxu
Z2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1c
bl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfSwKICAgICAgIHsKICAgICAgICAgIl9u
YW1lIjogImNvZGUiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2Uvc2V0
U2NyZWVuU2l6ZU92ZXJyaWRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
YWdlL3NldFNjcmVlblNpemVPdmVycmlkZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI1ODFk
NzVmM2M4MTg4NDRiM2NjMmZlZmI3MjI2YTMyZDdhMmU5YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL3NldFNjcmVlblNpemVPdmVycmlkZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFBhZ2Uuc2V0U2Ny
ZWVuU2l6ZU92ZXJyaWRlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU2NyZWVuU2l6ZU92ZXJyaWRl
T3ZlcnJpZGUKK1BBU1M6IEJvZHkgc2hvdWxkIGJlIHdoaXRlLgorT3ZlcnJpZGluZyBzY3JlZW4g
c2l6ZSB0byAxMDAweDUwMAorISEgRVhDRVBUSU9OOiBQYWdlQWdlbnQuc2V0U2NyZWVuU2l6ZU92
ZXJyaWRlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ1BhZ2VBZ2VudC5zZXRTY3JlZW5TaXplT3Zl
cnJpZGUoMTAwMCwgNTAwKScsICdQYWdlQWdlbnQuc2V0U2NyZWVuU2l6ZU92ZXJyaWRlJyBpcyB1
bmRlZmluZWQpCitTdGFjayBUcmFjZTogIzA6IChhbm9ueW1vdXMpIChAKQorIzE6IGFzeW5jRnVu
Y3Rpb25SZXN1bWUgW25hdGl2ZSBjb2RlXQorIzI6IChhbm9ueW1vdXMpIFtuYXRpdmUgY29kZV0K
KyMzOiBwcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0UHJvbWlzZSBbbmF0aXZlIGNvZGVdCisjNDog
cHJvbWlzZVJlYWN0aW9uSm9iIFtuYXRpdmUgY29kZV0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYmZj
YWM5ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3YTM4NS4uOTAwN2UxNGQ0MTAzYmU3YTkx
Y2M5OGEzOWMxMjgyN2FlM2EwYzYwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC02NCw4ICs2NCw4IEBA
IFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjog
IiIsCiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAgICAgInNjcmlwdElkIjog
IjxmaWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGluZU51bWJlciI6IDE0MiwKLSAgICAgICAg
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogNDA2
LAorICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogODAKICAgICAgICAgICAgIH0KICAgICAg
ICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzEx
Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUi
OiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0
ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5O
dW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogNDA2LAorICAgICAgICAgICJjb2x1
bW5OdW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZp
bHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAg
ICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAg
ICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAx
NDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIi
OiA0MDYsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6IDgwCiAgICAgICAgIH0KICAgICAgIF0s
CiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458104</attachid>
            <date>2022-04-21 17:36:49 -0700</date>
            <delta_ts>2022-04-22 18:40:59 -0700</delta_ts>
            <desc>WIP v0.4</desc>
            <filename>bug-152294-20220421173648.patch</filename>
            <type>text/plain</type>
            <size>77610</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDYyN2Q0MGRjYTA0MzBiZjNkMGQyYzlkYzNkMmY5OWE2ZTlmN2ZlLi5hNTY0ODkwNDIyZjMzMzVk
ODYyNTdhNDIwMDY0Y2ZkNDA3MWQ3OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAyMi0wNC0yMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVu
Y3Rpb25zKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QnVpbHRpbi5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLmV4ZWN1dGUpOgorICAgICAgICAobGV0
LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5hd2FpdFByb21pc2UpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5jYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChsZXQuSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKGxldC5Jbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcEpTT05TdHJpbmcpOgorICAgICAgICAobGV0LkluamVj
dGVkU2NyaXB0LnByb3RvdHlwZS53cmFwVGFibGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2Ny
aXB0LnByb3RvdHlwZS5pbmplY3RNb2R1bGUpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0
LnByb3RvdHlwZS5fcmVzb2x2ZUNhbGxBcmd1bWVudCk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRT
Y3JpcHQucHJvdG90eXBlLl9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yLmNyZWF0ZUZha2VWYWx1
ZURlc2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9y
RWFjaFByb3BlcnR5RGVzY3JpcHRvci5wcm9jZXNzUHJvcGVydHkpOgorICAgICAgICAobGV0Lklu
amVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9zYXZlUmVzdWx0KToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChsZXQuUmVtb3RlT2JqZWN0KToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKToKKyAgICAg
ICAgKGxldC5SZW1vdGVPYmplY3Quc2V0IF9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwpOgor
ICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5wcm90b3R5cGUuX2lzUHJldmlld2FibGVPYmplY3Qu
c2V0IGFkZCk6CisgICAgICAgIChDb21tYW5kTGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJl
ZF9oZXJlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIyLTA0
LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
UmVtb3ZlIFRlbXBSZWdpc3RlclNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5OGIyNDdiNjJhYjFiMDEzYWFm
MTNhZmIyNDdhNWJmOTg1MzI0N2MuLjM4MDlmY2Y2OTlmYjUxY2RjYWU5NjlkZmVhMGQyMDljMGQz
MTlhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wNC0yMSAgUGF0cmljayBB
bmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2Ug
SW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24t
dXNlci1vdmVycmlkZW4gYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuanM6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuanMuCisgICAgICAgIChpbmplY3RNb2R1bGUpOgorCiAyMDIyLTA0LTIxICBUaW0gTmd1eWVu
ICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgU21hbGwgY2xlYW51cHMgdG8gU3R5bGVCdWls
ZGVyQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGMwYTll
MmE3ZTgwMmRiOTQ4NTc2NzRmMjliODc5NzZkOWM1NmUyMGQuLjc2Y2IwNWVlNDZlZGY1OWFhMjhh
MGM5NmM1NGI4MWIwZjk3NjEwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTM2NCw2ICszNjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3Iu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlw
ZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9XZWJBc3NlbWJseS5qcwor
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApAQCAtMTQwNSwxNyArMTQwNiw2IEBAIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAot
ICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
U2NyaXB0U291cmNlLmggJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMg
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8g
Ii8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIg
PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291
cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BF
UkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVj
dGVkU2NyaXB0U291cmNlX2pzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
SW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQog
ICAgIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9j
b21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2
NjdmMmM2ODU0ZjhhMWJhMTNjMDk1ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi4xZmI2MjNjZDZmNmU4ZDg5
ODdmOTQ4MDQ1NDRmMGQ0NGU1YjM1ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtNjgsNyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBcCi0g
ICAgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtleXdv
cmRMb29rdXAuaCBcCiAgICAgUmVnRXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3IEBA
IEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9XZWJBc3NlbWJseS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIFwKICMKIAogIyBUaGUgY29tYmluZWQgb3V0
cHV0IGZpbGUgZGVwZW5kcyBvbiB0aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRv
ciBzY3JpcHRzLCBzbwpAQCAtMzY4LDEyICszNjgsNiBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzIDogQ29tYmluZWREb21haW5zLmpzb24gJChJTlNQRUNUT1JfR0VORVJB
VAogCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9w
cmVwcm9jZXNzLnBsIC0taW5wdXQgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cy5pbiAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykiIC0tb3V0cHV0
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIAkkKERFTEVURSkgaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5pbgogCi1JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIDogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzICQoSmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVIpL2pzbWluLnB5ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5w
bAotCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyIgPiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+PiAuL0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIElu
amVjdGVkU2NyaXB0U291cmNlX2pzIC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzIEluamVj
dGVkU2NyaXB0U291cmNlLmgKLQkkKERFTEVURSkgSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpz
Ci0KIEFJUl9PUENPREVfRklMRVMgPSBcCiAgICAgQWlyT3Bjb2RlLmggXAogICAgIEFpck9wY29k
ZVV0aWxzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2ti
dWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0
OTAxMDczMDE5NzlhODZkMTY4Ny4uZTYwMGNiM2U3MDlkMTkzNjY0OGMwZDZhZDI4ZmUxYTFjMWIx
ZmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93
a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC0zMDMsMjEgKzMwMyw1NSBAQCBjbGFzcyBC
dWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAgICAgICAg
c3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hl
czoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAgaWYgc3Rh
cnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVuZCA9IG1h
dGNoLmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAgICAgICAg
ICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAg
ICAgZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBpc0Vz
Y2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENo
YXJhY3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAg
ICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRl
cHRoICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAgICAgICAg
ICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQg
KyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hh
cmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5nQ2hhcmFj
dGVyOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRD
aGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5n
U3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5v
bmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1
ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhN
RTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1
bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAg
IyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1
c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5z
aWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3Vy
IHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMg
KHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsg
dW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1
bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNh
cmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAg
ICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciBpcyBub3QgJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3Ry
aW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBj
dXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQor
ICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAg
ICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAg
IGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25T
dHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVu
Y3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uMDc0
NGMxZDRkZjI0NTQ1ZDJlNDUwMWE0MDYyN2Y2NmYzOGU5MmRjYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1h
Y3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNy
byhwYXJzZUpTT04pIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCisgICAg
bWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAgbWFjcm8oaGFzT3duUHJvcGVydHkp
IFwKKyAgICBtYWNybyhpbmRleE9mKSBcCisgICAgbWFjcm8ocG9wKSBcCiAKIAogbmFtZXNwYWNl
IFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNlZDcy
My4uMTU3Yzk0MzkwYzU0MTIxNDNjZDIzMTkwYzJjZDVmOThiYWUyNDhiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMjAs
NiArMTIwLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVGdW5j
dGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAg
IHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCisgICAgdihwYXJzZUpTT04sIG51bGxwdHIpIFwKKyAg
ICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09O
U1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJm
MTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3
YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAK
KyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVk
U2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0
TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKElu
amVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQ
dHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50
IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGludCBpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNl
LCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247
Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJv
bm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZh
bHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8q
IGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlw
dCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3Bl
LmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFmdW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9u
VmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpA
QCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9u
Pj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChn
bG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFy
Z3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4g
cmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBAIC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3Jp
cHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQg
aWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVS
ZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9i
YWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAgIGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAg
IGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJv
cik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5l
QW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hl
biBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgp
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMo
Ik1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9iamVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMo
IiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXgg
MWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJm
MjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1f
c2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRlOgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNv
dXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgaW50IGlkKTsKIAogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25t
ZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5
YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdmZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVu
c3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAg
ICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxp
bmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3
aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwg
bmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmpl
Y3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVs
ZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVu
dmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291
cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5q
ZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAg
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBp
bmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVs
ZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgp
ID4gMCkKICAgICAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5l
LCBjb2x1bW4pOwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcg
J2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0
YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmpl
Y3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRl
eCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1
NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJs
aWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9kdWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBT
dHJpbmcgc291cmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBp
bmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5k
ZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJmMWViNzFiOGM0OTI1ZjZjNC4uNzBkYjFhM2RjZmNh
NTQ5ZjAyYTZmNzAyNjEzZmU4YWFkNjdhNzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywxMyBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGlu
c3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkgewotCi0vLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVy
cmlkZGVuIGJ1aWx0LWlucwotCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7CitAZ2xvYmFs
UHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRT
Y3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CiAK
IGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAg
cmV0dXJuIEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJpbmdEZXNjcmlwdGlvbihv
YmopCkBAIC05NCw2ICs5MCwyNCBAQCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQog
ICAgIH0KIH0KIAorZnVuY3Rpb24gYnVpbHRpbkl0ZXJhdG9yKGl0ZXJhdGFibGUpCit7CisgICAg
Ly8gZm9yLW9mIGxvb3BzIGxvb2sgdXAgdGhlIEBAaXRlcmF0b3IgcHJvcGVydHksIHdoaWNoIGlz
IG9ic2VydmFibGUgaWYgdGhlIHVzZXIgZGVmaW5lZCBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4K
KyAgICAvLyBUbyBhdm9pZCB0aGlzLCBjcmVhdGUgYSB3cmFwcGVyIG9iamVjdCB3aGVyZSBAQGl0
ZXJhdG9yIHJldHVybnMgdGhlIGFjdHVhbCBpdGVyYXRvci4KKyAgICBsZXQgaXRlcmF0b3JGdW5j
dGlvbiA9IGl0ZXJhdGFibGUuQEBpdGVyYXRvcjsKKyAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxs
KGl0ZXJhdG9yRnVuY3Rpb24pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5JdGVy
YXRvciByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBgaXRlcmF0YWJsZVtTeW1ib2wuaXRlcmF0
b3JdYCBleGlzdHMuIik7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGl0ZXJhdG9yRnVuY3Rpb24p
KQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5JdGVyYXRvciByZXF1aXJlcyB0aGF0
IHRoZSBwcm9wZXJ0eSBgaXRlcmF0YWJsZVtTeW1ib2wuaXRlcmF0b3JdYCBiZSBhIGZ1bmN0aW9u
LiIpOworCisgICAgbGV0IGl0ZXJhdG9yID0gaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChpdGVyYXRh
YmxlKTsKKyAgICBsZXQgd3JhcHBlciA9IHt9OworICAgIHdyYXBwZXIuQEBpdGVyYXRvciA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKworICAgIHJldHVybiB3cmFwcGVyOworfQor
CiAvLyAtLS0tLS0tCiAKIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CkBAIC0xMTUsNyArMTI5LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cmFwQW5kU2F2ZUNhbGwob2JqZWN0
R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgKCkgPT4g
ewogICAgICAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUgPSBmYWxzZTsKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdp
dGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNF
dmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuYXBwbHkodW5kZWZpbmVkLCBh
cmdzKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0
SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5j
dGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuQGFw
cGx5KEB1bmRlZmluZWQsIGFyZ3MpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTEzNiw3ICsx
NTAsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBp
bnN0YW5jZW9mIFByb21pc2UpKSB7CisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFu
Y2VvZiBAUHJvbWlzZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBnaXZl
biBpZCBpcyBub3QgYSBQcm9taXNlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE5OSw3ICsyMTMsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNj
cmlwdAogCiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIHdhc1Rocm93bjog
ZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMu
YXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFs
dWUsIGdlbmVyYXRlUHJldmlldykKKyAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVj
dC5jcmVhdGUoZnVuYy5AYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5h
bWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKICAgICAgICAgICAgIH07CiAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25W
YWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwpAQCAtMzA5LDcgKzMyMyw3IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCByZXN1bHQgPSBbXTsK
ICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0
LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFt
ZSkpOworICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsIG5ldyBJbmplY3RlZFNjcmlwdC5D
YWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKICAgICAgICAgICAgIGNhbGxGcmFt
ZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAgICAgIH0gd2hpbGUgKGNhbGxGcmFtZSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjYsNyArMzQwLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB3cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBn
cm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNvblN0cmluZyksIGdyb3Vw
TmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLndy
YXBPYmplY3QoQHBhcnNlSlNPTi5AY2FsbChqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBn
ZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogICAgICAgICB9CkBAIC0zNDgsNyArMzYyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0
eXBlKGNvbHVtbnMpID09PSAiYXJyYXkiKSB7CiAgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IFtd
OwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgKytpKQot
ICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tpXSkpOwor
ICAgICAgICAgICAgICAgIEBhcnJheVB1c2goY29sdW1uTmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNb
aV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKHRh
YmxlLCAiY29uc29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1bW5OYW1lcyk7CkBAIC00MjksMTEgKzQ0
MywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAg
ICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RNb2R1bGUo
bmFtZSwgc291cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVGdW5jdGlv
biwgaG9zdCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxzZTsKIAot
ICAgICAgICBsZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUo
IigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAh
PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3BlY3Rvcjog
YSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7CiAgICAgICAgIG1vZHVs
ZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmpl
Y3RlZFNjcmlwdElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIGhvc3Qp
OwpAQCAtNTE1LDcgKzUyOCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAgICAgIH0KIAotICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAgICB9
CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQpAQCAtNjU0LDEw
ICs2NjcsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJwcm94eSIp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcg
U2V0OworICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0OwogCiAgICAgICAgIC8v
IEhhbmRsZWQgYmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAgbmFtZVByb2Nlc3Nl
ZC5hZGQoIl9fcHJvdG9fXyIpOworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQoIl9fcHJvdG9f
XyIpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwg
c3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5hdGl2ZUJpbmRpbmdH
ZXR0ZXIpCiAgICAgICAgIHsKQEAgLTY3OCw3ICs2OTEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCiAgICAg
ICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJvbDsKICAgICAgICAg
ICAgICAgICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0
aW9ucyBjcmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9u
ZyB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUg
aW5zdGFuY2VvZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3Rl
ZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAg
ICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYm
IEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBl
RXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQogICAgICAgICAgICAgICAgICAgICBmYWtlRGVz
Y3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKQEAgLTcxMCwxNSAr
NzIzLDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAg
ICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9w
ZXJ0eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3Bl
cnR5TmFtZSkpCisgICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5TmFt
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uQ29udGludWU7CiAKLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKIAog
ICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBu
dWxsOwogCi0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9y
ID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
QmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQgaGVyZT8KICAgICAgICAgICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBzZXR0aW5ncy4KQEAgLTcyNyw3ICs3NDAsNyBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAobmF0aXZlR2V0dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0i
KSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIp
ICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoU3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgi
W25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5AaGFz
T3duUHJvcGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLkBoYXNP
d25Qcm9wZXJ0eSgic2V0IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMg
bWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoK
ICAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5
KHgsICJwIiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih4LCAicCIpCiAgICAgICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0
ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3Bl
cnR5LCB0cnVlKTsKQEAgLTc0OCw3ICs3NjEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYm
IG9iamVjdC5sZW5ndGggPiAwOwogICAgICAgICB9IGNhdGNoIHsgfQogCi0gICAgICAgIGZvciAo
bGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihv
KSkgeworICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBAT2Jq
ZWN0LkBnZXRQcm90b3R5cGVPZihvKSkgewogICAgICAgICAgICAgbGV0IGlzT3duUHJvcGVydHkg
PSBvID09PSBvYmplY3Q7CiAgICAgICAgICAgICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTsKIApA
QCAtNzY0LDcgKzc3Nyw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0g
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobyk7CisgICAgICAgICAgICAgICAgbGV0IHByb3Bl
cnR5TmFtZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwogICAgICAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5
TmFtZXNbaV0sIGlzT3duUHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVh
ayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpA
QCAtNzc2LDggKzc4OSw4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMobyk7CisgICAgICAgICAgICBpZiAoQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xz
KSB7CisgICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93
blByb3BlcnR5U3ltYm9scyhvKTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHByb3BlcnR5U3ltYm9scy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9w
ZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmpl
Y3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC04MDUsMTQgKzgxOCwxMyBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAg
ICAgbGV0IGVudHJpZXMgPSBbXTsKIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZh
YmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0u
Ci0gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCB2
YWx1ZSBvZiBidWlsdGluSXRlcmF0b3Iob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNo
U3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2go
e3ZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIHt2YWx1ZX0pOwogCiAg
ICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0Y2hDb3Vu
dCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgyNSwxNCArODM3LDEzIEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgewogICAgICAgICBsZXQgZW50
cmllcyA9IFtdOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhl
IHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAg
Zm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2YgYnVpbHRpbkl0ZXJhdG9yKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChm
ZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5w
dXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIHtrZXks
IHZhbHVlfSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3Ro
ID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs4ODcs
MTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAg
ICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9
PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0g
QHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1
bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5AaW5k
ZXhPZihyZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHsKICAgICAg
ICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4OwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtOTAxLDggKzkxMiw4IEBAIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25N
b2RlID0gewogfTsKIAogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAg
ICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIp
LAorICAgIENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBT
dG9wOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIpLAogfQogCiB2YXIgaW5qZWN0ZWRTY3Jp
cHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CkBAIC05NjIsNyArOTczLDcgQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9
IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1
ZShvYmplY3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRo
aXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAg
ICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3Qs
IEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTg2LDcg
Kzk5Nyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0
YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90
ZU9iamVjdCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5O
YW1lcyk7CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVl
LCBAdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAg
ICAgIGlmIChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlw
dC5yZWxlYXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1v
dGVPYmplY3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9i
amVjdElkKQpAQCAtMTA2OSw2ICsxMDgwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogCiAgICAgc3RhdGljIG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAg
ICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IE1vdmUgbm9kZS1zcGVjaWZpYyBsb2dp
YyB0byBhbiBpbmplY3RlZCBtb2R1bGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgV2ViQ29yZSBidWls
dGlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQgJiYg
ISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAgICAgICAgbGV0IG5vZGVOYW1lID0g
aXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk7CiAKQEAgLTExOTAsOSArMTIwMiw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgaWYgKG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAg
ICAvLyBOb24gYmFzaWMgX19wcm90b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5v
bi1lbnVtZXJhYmxlLCBtZXRob2RzIHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRv
ci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAg
JiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAg
ICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAg
ICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAg
ICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQor
ICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdF
eHApCiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAg
ICAgICAgIH0KQEAgLTEyMDksNyArMTIyMSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cg
cHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRo
ZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0
TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYg
KGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5AaW5jbHVkZXMobmFtZSkpCiAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51
ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMzEz
LDcgKzEzMjUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAg
ICAgICAgICAgZW50cmllcy5wb3AoKTsKKyAgICAgICAgICAgIGVudHJpZXMuQHBvcCgpOwogICAg
ICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMjMsNyArMTMzNSw3IEBAIGxldCBSZW1v
dGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBl
bnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBl
bnRyaWVzLkBtYXAoZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZShlbnRyeS52YWx1ZSwgZW50
cnkudmFsdWUgIT09IG9iamVjdCk7CiAgICAgICAgICAgICB1cGRhdGVNYWluUHJldmlldyhlbnRy
eS52YWx1ZSk7CiAgICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpIHsKQEAgLTEzMzYsOCAr
MTM0OCw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIF9p
c1ByZXZpZXdhYmxlT2JqZWN0KHZhbHVlLCBvYmplY3QpCiAgICAgewotICAgICAgICBsZXQgc2V0
ID0gbmV3IFNldDsKLSAgICAgICAgc2V0LmFkZChvYmplY3QpOworICAgICAgICBsZXQgc2V0ID0g
bmV3IEBTZXQ7CisgICAgICAgIHNldC5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgcmV0dXJuIHRo
aXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsKICAgICB9CkBA
IC0xMzU3LDExICsxMzY5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIEN5Y2xpYyBvYmplY3Rz
LgotICAgICAgICBpZiAoa25vd25PYmplY3RzLmhhcyhvYmplY3QpKQorICAgICAgICBpZiAoa25v
d25PYmplY3RzLkBoYXMob2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICArK2RlcHRoOwotICAgICAgICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgICAg
IGtub3duT2JqZWN0cy5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgLy8gQXJyYXlzIGFyZSBzaW1w
bGUgaWYgdGhleSBoYXZlIDUgb3IgbGVzcyBzaW1wbGUgb2JqZWN0cy4KICAgICAgICAgbGV0IHN1
YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOwpAQCAtMTM4MSwxMiArMTM5Mywx
MyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gT2JqZWN0cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2
ZSAzIG9yIGxlc3Mgc2ltcGxlIHZhbHVlIHByb3BlcnRpZXMuCi0gICAgICAgIGxldCBvd25Qcm9w
ZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKKyAgICAgICAg
bGV0IG93blByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCk7CiAgICAgICAgIGlmIChvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aCA+IDMpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIE1BUks6IFtQQ0FdIFdlIGFyZSBpdGVyYXRpbmcg
b3ZlciBhbiBhcnJheSBoZXJlLgogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93blByb3Bl
cnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBv
d25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
ICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZh
bHVlIiBpbiBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJv
cGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCkBAIC0xNTA2LDggKzE1MTksOCBAQCBD
b21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSB7
fTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7
IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
dmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqZWN0
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkg
eyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhv
YmplY3QpOyB9OwogCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4u
YXJndW1lbnRzKTsgfTsKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4u
YXJndW1lbnRzKTsgfTsKQEAgLTE1NDYsNCArMTU1OSw0IEBAIGZvciAobGV0IG5hbWUgaW4gQ29t
bWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRv
U3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBb
Q29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKIHJldHVybiBpbmplY3RlZFNjcmlwdDsKLX0pCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhNjk4MWJiZjVhZDk0Zjkz
ZmQ3OTgzZmY2Zjk3NmM3ZTM5ZDk5OTU4Li5iYzIzN2ExZjRmNDBiNjU4NzRhNTg4YTNiZjQ4OTA0
MWI5M2M2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIyMjEs
NyArMjIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICAgICAg
ICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJvcjo6U3Rh
Y2tPdmVyZmxvdykKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVy
cm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCkpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIs
IGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5lICIsIGVycm9yLmxpbmUoKSwgIi4iKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggNWEzYWFhOTFlNjI3MjhjMmNh
OWZhZWY1NjFkMmZhYmVkZTcwNTk1ZS4uNTE1Yzg1ZmQ3ZDMxZTEzNTgwYzBlOGE1MGYxMGY3Zjhm
NmFiZjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcApAQCAtMTMwLDcgKzEzMCwxMSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgfQog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JF
YWNoUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5mb3JFYWNoUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1ByaXZhdGVOYW1l
KCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVk
ZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluZGV4T2ZQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluZGV4T2ZQdWJsaWNOYW1lKCkp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFByaXZhdGVO
YW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFw
UHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFB1YmxpY05hbWUoKSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dmFsdWVzUHJpdmF0ZU5hbWUoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24oKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkp
OwogCiAgICAgSlNPYmplY3QqIHVuc2NvcGFibGVzID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0s
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyZDkw
NWE0MWRlYzQyMDExY2NlNzYxMDdjN2ViNDA2NDdmMDU4ZGJjLi42YzZlMWM1OTQwZGY4MzljODYw
MTI4NThlYmI1Y2RmMGM4OTVjOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yNzUsNiArMjc1LDcgQEAgRk9SX0VBQ0hfTEFa
WV9CVUlMVElOX1RZUEUoQ0hFQ0tfRkVBVFVSRV9GTEFHX1RZUEUpCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihtYWtlQm91bmRGdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihoYXNPd25MZW5ndGhQcm9wZXJ0eSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHBhcnNlSlNPTik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihl
bnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjIsMTUgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3lt
Ym9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihwYXJzZUpTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgYXV0byoganNvblN0cmluZyA9IGFzU3RyaW5nKGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIGlmICghanNvblN0cmluZykKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb25TdHJpbmctPnZhbHVlKGds
b2JhbE9iamVjdCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oYXNzZXJ0Q2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKIHsKQEAgLTEwNzYsNiArMTA4Niw3IEBAIGNhcGl0YWxOYW1lICMj
IENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNh
cGl0YWxOYW1lCiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0
aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2
bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlN0cmluZyldLnNl
dCh2bSwgdGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAgIAogICAgIG1fZXZhbEVycm9yU3Ry
dWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlh
bGl6ZXImIGluaXQpIHsKQEAgLTE1NTMsNiArMTU2NCwxMCBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgY3JlYXRlUHJp
dmF0ZVN5bWJvbCkpOwogICAgICAgICB9KTsKIAorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnBhcnNlSlNPTildLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcGFyc2VKU09OKSk7CisgICAgICAgIH0pOworCiAg
ICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7CkBAIC0y
MTg0LDYgKzIxOTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChK
U0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisvLyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3N0cmluZ0NvbnN0cnVjdG9yKTsKIAogICAgIHRoaXNPYmplY3QtPm1fZGVm
YXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY29sbGF0b3JT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3NzczOGFh
NjQ2NTY2MTRlYWFiZDhhZDE0Ny4uMzY1YTI3MGVmMzNmY2NlMzRlOGEyMWM2ZTk4YjkzMzU0ZGE4
NDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcApAQCAtOTksNyArOTksMTQgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoK
IAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgpLCBv
YmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVz
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlz
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Y3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworCiAg
ICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENvbnN0
cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcAppbmRleCBlMjEzNGEwZmU0ODk2YjIwMTA0N2EzYjQyN2I3MTg0YzEz
YTg4ZTVkLi40M2QwMGYzZjI4YmM2MGJkY2NjMzJhMDM0ZWU0YzUwY2M5MWI4MjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAg
LTY4LDYgKzY4LDggQEAgdm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2RlZmluZVNldHRlcl9fLCBv
YmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQ
cm90b0Z1bmNMb29rdXBHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cFNldHRlcl9fLCBvYmplY3RQcm90b0Z1
bmNMb29rdXBTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCAxKTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093blByb3BlcnR5UHJpdmF0
ZU5hbWUoKSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKIH0KIAogT2JqZWN0UHJvdG90
eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAz
YjdiYmMwOTU4ZDJjMGVlMWQ2NDcxNDc2MmQyMDU2Mjg4MjEwNWEwLi4yMGRhNWZmYjVlYmZlNjZk
Zjc5YjA0NTNlMjg5MDJkM2VkN2QyZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOCwx
OCArMjEyOCw2IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZS
QU1FV09SS19ERUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJ
R19GSUxFU19JRl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmgKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1B
SU5fREVQRU5ERU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAg
ICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5E
fSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJM
RX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElS
fS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAg
IENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9
L3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVS
QkFUSU0pCi1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RP
T0xTKCR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkK
IApAQCAtMjM1MSw2ICsyMzM5LDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAg
ICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9E
SVJ9L2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJB
VE9SX1NDUklQVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4u
OTUzYjcxYTEyMTNlMjI4OWY3NjNhNGIzOGQ1NjdiMWFlYjhjMTZiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCwxMCBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHlsZURl
Y2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29t
bWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lC
dWlsdGlucy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IGQ2NjNjMzIzNjg0ZDFjMGY4ODBmYjdjZjk2MWZjNmZhNDIx
NmU0NmMuLmIxMjNhYmY5M2UyNzU4ZDIxMTQ4YzEwMWM5ZDE3MzRkMDQ5NmY5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjIxOSwxNiArMjIxOSw2IEBAIGlmbmVxICgkKE5P
X1NVUFBMRU1FTlRBTF9GSUxFUyksMSkKIC1pbmNsdWRlICQoSlNfRE9NX0hFQURFUlM6Lmg9LmRl
cCkKIGVuZGlmCiAKLSMgSW5zcGVjdG9yIGludGVyZmFjZXMKLQotYWxsIDogQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaAotCi1Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIDogJChXZWJD
b3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLQllY2hvICIvLyMg
c291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMi
ID4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
bWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWlu
LmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQkkKERFTEVURSkgQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UubWluLmpzCi0KICMgV2ViQ29yZSBKUyBCdWlsdGlucwogCiBXZWJDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCkBAIC0yMjUyLDYgKzIyNDIsNyBAQCBXZWJDb3JlX0JVSUxU
SU5TX1NPVVJDRVMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dERlY29kZXJTdHJlYW0uanMg
XAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNv
cmUpL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcyBcCisgICAgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgXAogIwogCiBCVUlMVElO
U19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OGQ4ZWVhMmFmZDg1ZDE1ODYwNjZmYjNjNzA5
MmI3NjNiNWU3MjkxLi4yODA2YTE3OTFlMWExMThmN2Y4YzljNzQzNDE2YzljNTExM2FlYmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBp
bGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRC
QUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9
OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oICovOyB9OworCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQz
NDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBA
IC0zNTE1LDcgKzM1MTYsNiBAQAogCQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0
ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNr
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBD
RUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIw
MDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJ
bmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElI
b3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04
MjAyLDYgKzgyMDIsOCBAQAogCQkyRTM3REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5z
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYz
NDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3Jr
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5MzQsNyArMTM5MzYsNiBA
QAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0Ix
MCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0
SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlw
dEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElN
b2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNDIyLDcgKzIwNDIzLDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4
IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVB
UElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5k
TGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovLApAQCAtMjM1NzksNiArMjM1Nzks
OCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgz
MDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAz
NzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJ
MkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5n
U3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8q
IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRC
MDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgKi8sCkBAIC0zNDA2NSw3ICszNDA2Nyw3
IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5
MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAw
NzY1NTM2IC8qIENvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFGRTEzNzUxODQwMkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJ
TW9kdWxlLmNwcAppbmRleCBkNzdjNzNkOGFlNDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZm
Li5mNjZjMzQ0NDJmMTE2NzhkODEzNTA3MGY0ODBhZTc2ZGY5YjI2MzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1v
ZHVsZS5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNs
dWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFu
YWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5
ICs0NywxNCBAQCBDb21tYW5kTGluZUFQSU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQog
ewogfQogCi1TdHJpbmcgQ29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1
bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4g
U3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VfanMsIHNpemVvZihDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChh
dXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xv
YmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFs
RnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1
bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmpl
Y3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBK
U0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3QoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThjMmRlYmRlZGFj
ZjdmYzZiNDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5N2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUu
aApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBDb21t
YW5kTGluZUFQSU1vZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0KEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMKaW5kZXggZjUxZTM1MTljY2IxNzk2MDkwYzMyNzRkNWIwYzM3YjI1OWQwZTNlYS4u
MjQzYWJiNTZhMjU4MGQyYzE5MWQ4MjI0OTliNDMzYmM5MDk2MDA4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDExICsyNiwxMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKy8vIEBpbnRlcm5hbAog
Ci0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBp
bmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExp
bmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpIHsKLQotLy8gRklYTUU6IDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNl
IGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWls
dC1pbnMKK2Z1bmN0aW9uIGluamVjdE1vZHVsZShJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVP
YmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0KQorewogCiBpbmplY3Rl
ZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGlmIChhcmd1
bWVudHMubGVuZ3RoID09PSAwKQpAQCAtOTcsMTUgKzk2LDE1IEBAIGZ1bmN0aW9uIG5vcm1hbGl6
ZUV2ZW50VHlwZXModHlwZXMpIHsKICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewogICAgICAgICBpZiAodHlwZXNbaV0gPT09
ICJtb3VzZSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgiY2xpY2siLCAiZGJsY2xpY2siLCAi
bW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1
cCIsICJtb3VzZXdoZWVsIik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgImNsaWNr
IiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91
c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBl
c1tpXSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgia2V5ZG93biIsICJrZXlw
cmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVz
dWx0LCAia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAg
ICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVz
aCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsK
KyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCAidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQi
LCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0g
PT09ICJjb250cm9sIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwgImNoYW5nZSIs
ICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQi
LCAiem9vbSIpOworICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsICJibHVyIiwgImNoYW5n
ZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJt
aXQiLCAiem9vbSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBl
c1tpXSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgdHlwZXNbaV0pOwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTg2LDQgKzE4NSw0IEBAIGlmIChpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKIGZv
ciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQ
SS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24g
IiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0pCit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZjgyMjIzYTE4YzIxNDA4ZjRhNGJmNGU0NWNiZWE4YTAzMzhiOWY2ZS4uZjk0M2I2MjkyZDM2
NDkzZWI4ZTdlMmVkZGY3YmFiYzBjNjk3Y2NmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIy
LTA0LTIxICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdl
dCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdFBhcnNlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0
L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1j
b2x1bW4tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTA0LTIxICBUaW0gTmd1eWVuICA8bnRpbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gUmViYXNlbGluZSBmYXN0L2F0dGFjaG1lbnQvYXR0YWNo
bWVudC1kaXNhYmxlZC1yZW5kZXJpbmcuaHRtbCBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxZWIxNTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjcgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10K
LUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJp
bmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtv
YmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2luZyB3aGV0aGVy
IGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhl
IHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgotCi0KLT09IFJ1
bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKLS0t
IFJ1bm5pbmcgdGVzdCBzZXR1cC4KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQ
YXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChl
bnRyeUNvbnNvbGVMb2cpCi1TVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCi1QQVVTRUQg
KGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAg
IDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2Ny
aXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNv
bGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25z
b2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0g
ICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0KLUFDVElPTjogc3RlcC1vdmVy
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVn
Z2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAg
ICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJp
bmciKTsKLSAgICAgMTEgICAgfQotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29u
c29sZUxvZzoxMDo1Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAg
ICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93
KTsKLSAtPiAgIDkgICAgICAgIHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAg
IGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgotCi1BQ1RJT046
IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMTo1Ci0gICAgICA3ICAgICAgICBk
ZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAg
ICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAgMTAgICAgICAgIHxjb25zb2xlLmxvZygi
c3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0t
Ci0KLUFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEyOjIKLSAgICAg
IDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAtPiAg
MTEgICAgfXwKLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0gICAgIDE0Ci0KLUFD
VElPTjogcmVzdW1lCi1SRVNVTUVECi1QQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4K
LQotLS0gUnVubmluZyB0ZXN0IHNldHVwLgotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2Vy
LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVv
dXQoZW50cnlDb25zb2xlTG9nKQotU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQotUEFV
U0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0g
ICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48
L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlD
b25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAg
Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUp
OwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotCi1BQ1RJT046IHN0ZXAt
b3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBk
ZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRy
eUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlv
biBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDgg
ICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2co
Y29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDEx
ICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgot
ICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2co
KSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9n
fCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEw
ICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0
PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAg
ICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAg
OSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxv
Zygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiByZXN1bWUKLVJFU1VNRUQKLVBB
U1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3du
LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9w
YXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkMTY4YTcyNTRjZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlv
bi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewot
ICAgIGRlYnVnZ2VyOwotICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgY29uc29sZS5sb2co
Y29uc29sZSk7Ci0gICAgY29uc29sZS5sb2coInN0cmluZyIpOwotfQotCi0vLyAtLS0tLS0tLS0K
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVBc3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyIpOwotCi0g
ICAgd2luZG93LmluaXRpYWxpemVTdGVwcGluZ1Rlc3RTdWl0ZShzdWl0ZSk7Ci0KLSAgICBhZGRT
dGVwcGluZ1Rlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90
IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRo
ZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGlt
ZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8g
dGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNv
bW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KLSAgICAgICAgc2V0dXA6
IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHMoZmFsc2UpOyB9LAotICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgIm92ZXIiLAot
ICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAg
ICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIs
IC8vIGNvbnNvbGUubG9nKCJzdHJpbmciKQotICAgICAgICAgICAgInJlc3VtZSIsCi0gICAgICAg
IF0KLSAgICB9KTsKLQotICAgIGFkZFN0ZXBwaW5nVGVzdENhc2UoewotICAgICAgICBuYW1lOiAi
RGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRl
c2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRl
bWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBl
eHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAgLy8gQ2Fs
bCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5
IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGlu
Zy4KLSAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0
UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCi0gICAgICAgIHRlYXJkb3duOiBhc3lu
YyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
KGZhbHNlKTsgfSwKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgICJvdmVyIiwKLSAgICAg
ICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAg
ImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAgICAg
ICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQot
ICAgICAgICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQotICAgIGxvYWRNYWlu
UGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKLSAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBw
ZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4
dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTVi
NzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAt
OSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hv
dWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5s
aW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBF
dmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNv
dXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElT
b3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNj
cmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJz
ZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5k
Njc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTks
MTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykg
c3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBs
aXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBz
b3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3Jp
cHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
CiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElu
bGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0g
ZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsK
LSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxl
dCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJu
YWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0
KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJh
bXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAg
ICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5
OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNF
dmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0g
ImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VT
Y3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dp
dGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpz
Iik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChw
YXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVz
dENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRp
YWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2
OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxp
bmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlz
Q29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0lu
amVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJV
TkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05
Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5s
aW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3Vs
ZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3Vs
ZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBl
Y3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNw
ZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJT
aG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAg
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3Jp
cHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAppbmRleCBkNDQy
MTdkMzYyZWE0ZjlhMjUyNjRhMGQ4YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJkNTAzN2U1MmFlOTBj
MjMzZjIyYjUzOTM5NmVlMWY4YWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0zMSw3
ICszMSw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgW10ueC54OyB9IGNhdGNo
IChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0
YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZ2xv
YmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5f
d3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBb
bmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAt
NzAsNyArNzAsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGV2YWwoImlmKCki
KTsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJf
bmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3Zh
bHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVl
IjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUXi
gKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAg
ICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC0xMDQsNyArMTA0LDcgQEAg
RVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
Iikuc3BsaXRUZXh0KDEwMCk7IH0gY2EKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNr
IiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAic3BsaXRU
ZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJzcGxp
dFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT4oCmdGl2ZSBj
b2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfSwK
ICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogImNvZGUiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYmZj
YWM5ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3YTM4NS4uNmExNDkwOWI0ZDA1NWM3MjI5
ZGU0ZTcwZjExMGEwZTUzYzIyZDExYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC02NCw4ICs2NCw4IEBA
IFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjog
IiIsCiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAgICAgInNjcmlwdElkIjog
IjxmaWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGluZU51bWJlciI6IDE0MiwKLSAgICAgICAg
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogNDE3
LAorICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogODAKICAgICAgICAgICAgIH0KICAgICAg
ICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzEx
Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUi
OiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0
ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5O
dW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogNDE3LAorICAgICAgICAgICJjb2x1
bW5OdW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZp
bHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAg
ICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAg
ICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAx
NDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIi
OiA0MTcsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6IDgwCiAgICAgICAgIH0KICAgICAgIF0s
CiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458193</attachid>
            <date>2022-04-22 18:41:02 -0700</date>
            <delta_ts>2022-04-23 23:34:55 -0700</delta_ts>
            <desc>WIP v0.5</desc>
            <filename>bug-152294-20220422184101.patch</filename>
            <type>text/plain</type>
            <size>91515</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTZkYWE0OWQ0NDk0OGMyNjIwNTg1MDk4MmZhZjg0ODg5YmQ3MGYzLi43ZGRiYWVkYmFlY2E3MzY4
NzQ3NGM4Nzg5ZjcxZmJlZWYwZjA1ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMi0wNC0yMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2Ny
aXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbnNDb2xs
ZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChidWlsdGluSXRlcmF0b3Iud3JhcHBlci5pdGVyYXRvcik6CisgICAgICAgIChidWlsdGlu
SXRlcmF0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5leGVjdXRl
KToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuYXdhaXRQcm9taXNlKToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuY2FsbEZ1bmN0aW9uT24pOgor
ICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS53cmFwQ2FsbEZyYW1lcyk6Cisg
ICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBKU09OU3RyaW5nKToKKyAg
ICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcFRhYmxlKToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuaW5qZWN0TW9kdWxlKToKKyAgICAgICAgKGxl
dC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3Jlc29sdmVDYWxsQXJndW1lbnQpOgorICAgICAg
ICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRv
ci5jcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlw
dC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3IucHJvY2Vzc1Byb3BlcnR5KToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZ2V0U2V0
RW50cmllcyk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9nZXRNYXBF
bnRyaWVzKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3NhdmVSZXN1
bHQpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKGxldC5SZW1vdGVP
YmplY3QpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9y
VmFsdWUpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5ub2RlUHJldmlldyk6CisgICAgICAg
IChsZXQuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5fYXBwZW5kRW50cnlQcmV2aWV3cyk6CisgICAg
ICAgIChsZXQuUmVtb3RlT2JqZWN0LnNldCBfaXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKToK
KyAgICAgICAgKGxldC5SZW1vdGVPYmplY3QucHJvdG90eXBlLl9pc1ByZXZpZXdhYmxlT2JqZWN0
LnNldCBhZGQpOgorICAgICAgICAoQ29tbWFuZExpbmVBUEkubWV0aG9kcy5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisKIDIwMjItMDQtMjIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFwcGx5IHB1cmlmeU5hTiBpbiBtb3JlIHBsYWNlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjU3NjQyMDFkZGI1ZjhhNTYxNTdmYTYxMTVlMmZhMjM5NmViOGU4Li42YzgxYjI3MjI1Y2ZiN2I0
NTQ1MDk5NTU1MjRiNThkMDQxODYzM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MjItMDQtMjIgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8g
Z2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIGJ1aWx0LWlucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogZG9tL0VsZW1lbnQrRE9NUGFy
c2luZy5pZGw6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBkb20v
Tm9kZS5pZGw6CisgICAgICAgICogZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbDoKKyAgICAg
ICAgKiBkb20vUGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpp
bmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanM6CisgICAgICAgIChpbmplY3RNb2R1bGUpOgorICAgICAgICAoaW5q
ZWN0TW9kdWxlLik6CisgICAgICAgIChpbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCk6IERl
bGV0ZWQuCisgICAgICAgIChDb21tYW5kTGluZUFQSS5nZXR0ZXJzLnN0cmluZ19hcHBlYXJlZF9o
ZXJlKTogRGVsZXRlZC4KKyAgICAgICAgKENvbW1hbmRMaW5lQVBJLm1ldGhvZHMuc3RyaW5nX2Fw
cGVhcmVkX2hlcmUpOiBEZWxldGVkLgorICAgICAgICAobm9ybWFsaXplRXZlbnRUeXBlcyk6IERl
bGV0ZWQuCisgICAgICAgIChsb2dFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuZG9jdW1lbnQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuY2FuUXVlcnlT
ZWxlY3Rvck9uTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
ZG9jdW1lbnQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuQ29tbWFuZExpbmVBUEkubWV0aG9k
cy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6IERlbGV0ZWQuCisgICAgICAgIChsZXQubmFtZS5pbi5D
b21tYW5kTGluZUFQSS5tZXRob2RzLkNvbW1hbmRMaW5lQVBJLm1ldGhvZHMubmFtZS50b1N0cmlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6bGF5b3V0Q29udGV4
dFR5cGVGb3JSZW5kZXJlcik6CisgICAgICAgICogeG1sL1hQYXRoRXhwcmVzc2lvbi5pZGw6CisK
IDIwMjItMDQtMjIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBBZGQgRmxleEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkIHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMGE5ZTJh
N2U4MDJkYjk0ODU3Njc0ZjI5Yjg3OTc2ZDljNTZlMjBkLi43NmNiMDVlZTQ2ZWRmNTlhYTI4YTBj
OTZjNTRiODFiMGY5NzYxMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0zNjQsNiArMzY0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUu
anMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMKKyAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
CiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTE0MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9KU0NCdWlsdGlucy5oCiApCiAKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAg
ICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNj
cmlwdFNvdXJjZS5oICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENP
UkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLSAgICBERVBFTkRTICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4g
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5taW4uanMKLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5IDwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJM
X0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbmplY3Rl
ZFNjcmlwdFNvdXJjZV9qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0lu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgKLSAgICBWRVJCQVRJTSkKLQotbGlzdChBUFBF
TkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgpCi0KIGlmIChXVEZfQ1BVX1g4Nl82NCkKICAg
ICBpZiAoTVNWQyBBTkQgTk9UIEVOQUJMRV9DX0xPT1ApCiAgICAgICAgIGFkZF9jdXN0b21fY29t
bWFuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3
ZjJjNjg1NGY4YTFiYTEzYzA5NWY3ZTE1NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3
Zjk0ODA0NTQ0ZjBkNDRlNWIzNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTY4LDcgKzY4LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIg
PSAkKEphdmFTY3JpcHRDb3JlKS9TY3JpcHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAg
IEluamVjdGVkU2NyaXB0U291cmNlLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3Jk
TG9va3VwLmggXAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBK
YXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1
dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Ig
c2NyaXB0cywgc28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmRDb21tYW5kcy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQK
IAkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJl
cHJvY2Vzcy5wbCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMu
aW4gLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCA6IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwK
LQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMiID4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5t
aW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmpl
Y3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwot
CiBBSVJfT1BDT0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVV
dGlscy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVp
bHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93
a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRmNWYwMGE2ZjJmNDkw
MTA3MzAxOTc5YTg2ZDE2ODcuLmQxZDUyYmVjNjljYWRiMDEyYzY0ZWM5MDgzNjkyZDg2MTQzM2Qy
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMv
YnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2ti
dWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAtMzAzLDIxICszMDMsNTUgQEAgY2xhc3MgQnVp
bHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0
YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0
IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRj
aC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAg
ICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAg
IGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgaXNFc2Nh
cGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFy
YWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAg
ICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0
aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAg
ICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsg
MQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAgICAgY3VycmVudENoYXJh
Y3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3Rl
cjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hh
cmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0
YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3Ry
aW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAg
IGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25l
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJy
ZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgRklYTUU6
IDx3ZWJraXQub3JnL2IvIyMjIyMjPiBSZWd1bGFyIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5i
YWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAgICAgICAgICAgICAgICMg
Zm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNl
IHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAgICAgICAgICAjIGluc2lk
ZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBz
dHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAgICAgICAgICAgICAjICh1
bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVu
bGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAgICAgICAgICAgICMgdW5i
YWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJl
IGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAg
ICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAg
ICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50
Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAg
ICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAg
ICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0
aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdz
ID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25C
b3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
aW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uZmY0OTBlZTY2
ZDM3YTdkMmM0MjhhYzU0MTc5Y2RmNGRiOWY3NDk2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlz
UmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhKU09O
KSBcCisgICAgbWFjcm8oU3RyaW5nKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93
blByb3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCisgICAgbWFj
cm8oaW5kZXhPZikgXAorICAgIG1hY3JvKHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CmluZGV4IDFjNDdlZWViYTg2OTA4YjkwZjk5Y2IwY2U3NDZmMDE5YmQzZWQ3MjMuLjU1MDNmMzMz
ZjRhMTdkNzBkNGExZDFlOGRmN2EyMjBmZjA1NmI3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTIwLDYgKzEyMCw4IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYoY3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxw
dHIpIFwKICAgICB2KGlzUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGFycmF5U29y
dCwgbnVsbHB0cikgXAorICAgIHYoSlNPTiwgbnVsbHB0cikgXAorICAgIHYoU3RyaW5nLCBudWxs
cHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2Rl
KSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGNiMDYzNDAyYmYxMjJlYWUxNjk4ZWJhMmE3
YmI3ZjRkNzZlZjk3NzAuLjIyZDFiY2U3ZWFiMGZhZjE1NGUwODc1YjdjMGM3NmRjZGJkMWMxODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkJ1aWx0
aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuY2xlYXJFeGNl
cHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3Rl
ZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYg
c291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgaWQpCitFeHBlY3RlZDxK
U09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAg
U291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UsIHsgfSk7CiAgICAgSlNW
YWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIAotICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBJbnNwZWN0b3JF
dmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9ubWVudC5ldmFsdWF0ZUhh
bmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0ZUhhbmRsZXIoZ2xv
YmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25FeGNlcHRp
b24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byogZnVuY3Rpb25WYWx1ZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50KExpbmtU
aW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0KSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsK
KyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb25WYWx1ZSk7CiAgICAgaWYg
KGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCkBAIC0xNjYsNyArMTU5LDcg
QEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dl
ZCgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7Ci0gICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5l
eHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJldHVybiByZXN1bHQuZ2V0T2JqZWN0
KCk7CiB9CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgIGludCBpZCA9IGluamVjdGVkU2Ny
aXB0SWRGb3IoZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUlu
amVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGdsb2JhbE9iamVjdCwgaWQpOwor
ICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoZ2xvYmFsT2JqZWN0
LCBpZCk7CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKICAgICAgICAgYXV0byYgZXJyb3IgPSBj
cmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJUKGVycm9yKTsKQEAgLTE5NywxMiAr
MTkwLDEwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRT
Y3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGlmIChzdGFjay5zaXpl
KCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwg
Y29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNyZWF0aW5nIGluamVj
dGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoZ2xv
YmFsT2JqZWN0KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dB
bHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWNyZWF0
ZVJlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiTWlzc2luZyBpbmplY3Rl
ZCBzY3JpcHQgb2JqZWN0Iik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVk
U2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCAxZjc0MGM0MDY4NDUzNjZh
NzU5YmEwYWY0YzhjMzI3Nzc0OTU0OGVhLi5iNTQxMDEyZWY0YmI0YmYyMmU3YWUzODJiZmYxNTk4
NWFjOTlhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTc1LDggKzc1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIEhhc2hNYXA8SlNDOjpKU0dsb2JhbE9iamVjdCosIGludD4gbV9zY3JpcHRTdGF0ZVRvSWQ7
CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0gICAgRXhw
ZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBp
bnQgaWQpOworICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQgaWQp
OwogCiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52aXJvbm1lbnQ7CiAgICAgUmVmPElu
amVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmlu
ZGV4IDQ4MjZlNDZmZGI2MWEyZWQ2ZmJlODZiODk3NDEyZjQ4ZmQ1ZTlhMTEuLjBiNjc1ZTg0NDY2
OTA2MDIxMjM4N2ZkYjRiYWQ1ZDBhNjU3OGY4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC03NCwx
MyArNzQsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgaWYgKHN0YWNrLnNp
emUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5l
LCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2FsbGluZyAnaGFz
SW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2Jq
ZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5
cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0
LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCku
YXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbmplY3RNb2R1
bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5j
dGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1l
KCkpOwotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CisgICAgICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZShpbmplY3RNb2R1bGVGdW5jdGlv
bihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsKICAgICAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGluamVjdGVkU2NyaXB0Lmds
b2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0TW9kdWxlUmVzdWx0ID0gaW5qZWN0
ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKICAgICAgICAg
aWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKQEAgLTkyLDcgKzkxLDYgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE0KICAgICAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAg
ICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2FsbGluZyAnaW5qZWN0TW9kdWxlJyBm
b3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1
ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0
YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291
cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCmluZGV4IDI3OWJhZTRlYmFlNGMx
ODU0NDhjNjk3ZTlhMDNiZWRiNWVhZjg1OGIuLmE0YmVkOTY5MmI3NDU2YTAwNWQ3NmRmNGZlNDg1
MTYxZjk1ZTRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5qZWN0ZWRTY3JpcHRN
b2R1bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsKIHB1YmxpYzoKICAgICB+SW5qZWN0
ZWRTY3JpcHRNb2R1bGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2UoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTRnVuY3Rpb24qIGluamVjdE1vZHVsZUZ1bmN0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBKU0M6OkpT
VmFsdWUgaG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
Y29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCA0OGJhZWQ2YTFiN2Zm
YWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li5kY2M5YzI5YjVhMGEzNjY1MTg0YjZjODc3MzI3
YjYyZmNmNTUwYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTcgKzI3LDEzIEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcwotCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7Ci0KLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBh
IGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5z
Ci0KLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlv
biBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkKK3sKIAogZnVuY3Rpb24gdG9TdHJp
bmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAgICByZXR1cm4gQFN0cmluZyhv
YmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKQEAgLTk0LDYgKzkw
LDI0IEBAIGZ1bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCiAgICAgfQogfQogCitmdW5j
dGlvbiBidWlsdGluSXRlcmF0b3IoaXRlcmF0YWJsZSkKK3sKKyAgICAvLyBmb3Itb2YgbG9vcHMg
bG9vayB1cCB0aGUgQEBpdGVyYXRvciBwcm9wZXJ0eSwgd2hpY2ggaXMgb2JzZXJ2YWJsZSBpZiB0
aGUgdXNlciBkZWZpbmVkIGEgZ2V0dGVyIGZvciBAQGl0ZXJhdG9yLgorICAgIC8vIFRvIGF2b2lk
IHRoaXMsIGNyZWF0ZSBhIHdyYXBwZXIgb2JqZWN0IHdoZXJlIEBAaXRlcmF0b3IgcmV0dXJucyB0
aGUgYWN0dWFsIGl0ZXJhdG9yLgorICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmF0YWJs
ZS5AQGl0ZXJhdG9yOworICAgIGlmIChAaXNVbmRlZmluZWRPck51bGwoaXRlcmF0b3JGdW5jdGlv
bikpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpbkl0ZXJhdG9yIHJlcXVpcmVzIHRo
YXQgdGhlIHByb3BlcnR5IGBpdGVyYXRhYmxlW1N5bWJvbC5pdGVyYXRvcl1gIGV4aXN0cy4iKTsK
KworICAgIGlmICghQGlzQ2FsbGFibGUoaXRlcmF0b3JGdW5jdGlvbikpCisgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiYnVpbHRpbkl0ZXJhdG9yIHJlcXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IGBp
dGVyYXRhYmxlW1N5bWJvbC5pdGVyYXRvcl1gIGJlIGEgZnVuY3Rpb24uIik7CisKKyAgICBsZXQg
aXRlcmF0b3IgPSBpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKGl0ZXJhdGFibGUpOworICAgIGxldCB3
cmFwcGVyID0ge307CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpdGVyYXRvcjsgfQorCisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKIC8vIC0tLS0tLS0KIAog
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKQEAgLTExNSw3ICsxMjks
NyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlW
YWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAgICAgICAgICBj
b25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
LCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2
YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwg
YXJncyk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTM2LDcgKzE1MCw3IEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgUHJvbWlz
ZSkpIHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQcm9taXNlKSkg
ewogICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFBy
b21pc2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk5LDcgKzIxMyw3
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAg
ICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5hcHBseShvYmplY3QsIHJl
c29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2
aWV3KQorICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBh
cHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1
ZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAgICAgICAgICAgfTsKICAgICAgICAgfSBjYXRjaCAoZSkg
ewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRocm93blZhbHVlKGUsIG9iamVjdEdy
b3VwTmFtZSk7CkBAIC0zMDksNyArMzIzLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwogICAgICAgICBsZXQgZGVw
dGggPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CisgICAgICAgICAg
ICBAYXJyYXlQdXNoKHJlc3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRl
cHRoKyssIGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNh
bGxlcjsKICAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTMyNiw3ICszNDAsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgIHdyYXBKU09OU3RyaW5nKGpzb25TdHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJh
dGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlz
LndyYXBPYmplY3QoSlNPTi5wYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5l
cmF0ZVByZXZpZXcpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChASlNPTi5w
YXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAg
ICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CkBAIC0z
NDgsNyArMzYyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAiYXJy
YXkiKSB7CiAgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IFtdOwogICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNvbHVt
bk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBhcnJh
eVB1c2goY29sdW1uTmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZhbHNl
LCB0cnVlLCBjb2x1bW5OYW1lcyk7CkBAIC00MjksMTEgKzQ0MywxMCBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxl
c1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291cmNlLCBob3N0KQor
ICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVGdW5jdGlvbiwgaG9zdCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxzZTsKIAotICAgICAgICBsZXQgbW9kdWxlRnVu
Y3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsK
ICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikKICAgICAg
ICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3BlY3RvcjogYSBmdW5jdGlvbiB3YXMgZXhwZWN0
ZWQgZm9yIGluamVjdE1vZHVsZSI7CiAgICAgICAgIG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2Ny
aXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCB7
UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIGhvc3QpOwpAQCAtNTE1LDcgKzUyOCw3IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAgICB9CiAKICAgICBfY3JlYXRlVGhyb3du
VmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQpAQCAtNjU0LDEwICs2NjcsMTAgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKEluamVjdGVkU2Ny
aXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJwcm94eSIpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgU2V0OworICAgICAgICBsZXQgbmFt
ZVByb2Nlc3NlZCA9IG5ldyBAU2V0OwogCiAgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hlbiBg
aW5jbHVkZVByb3RvYC4KLSAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQoIl9fcHJvdG9fXyIpOwor
ICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQoIl9fcHJvdG9fXyIpOwogCiAgICAgICAgIGZ1bmN0
aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBp
c093blByb3BlcnR5LCBwb3NzaWJsZU5hdGl2ZUJpbmRpbmdHZXR0ZXIpCiAgICAgICAgIHsKQEAg
LTY3OCw3ICs2OTEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCiAgICAgICAgICAgICAgICAgICAgIGZha2VE
ZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJvbDsKICAgICAgICAgICAgICAgICAvLyBTaWxlbmNlIGFu
eSBwb3NzaWJsZSB1bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBjcmVhdGVkIGZyb20gYWNj
ZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9uZyB0aGlzIG9iamVjdC4KLSAgICAg
ICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlICYm
IEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBl
RXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAgICAgICAgICAgIGlmIChmYWtlRGVz
Y3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5p
c1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3Iu
dmFsdWUpKQogICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChm
dW5jdGlvbigpe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKICAg
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKQEAgLTcxMCwxNSArNzIzLDE1IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vz
c1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFtZSkpCisgICAgICAgICAg
ICBpZiAobmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKLSAg
ICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBu
YW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKIAogICAgICAgICAgICAgbGV0IG5hbWUg
PSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGlzU3lt
Ym9sKHByb3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBudWxsOwogCi0gICAgICAgICAgICBs
ZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWRlc2Ny
aXB0b3IpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3
ZSBnZXQgaGVyZT8KICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmlj
dGl2ZSBzZXR0aW5ncy4KQEAgLTcyNyw3ICs3NDAsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobmF0
aXZlR2V0dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlw
dG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0
ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAm
JiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoU3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8
ICghZGVzY3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5AaGFzT3duUHJvcGVydHkoImdldCIpICYm
ICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLkBoYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVz
Y3JpcHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoKICAgICAgICAgICAgICAgICAgICAg
Ly8gbGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmlu
ZWR9KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCiAgICAgICAgICAg
ICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3Io
bmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKQEAgLTc0OCw3
ICs3NjEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAi
YXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5ndGggPiAwOwog
ICAgICAgICB9IGNhdGNoIHsgfQogCi0gICAgICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVm
aW5lZChvKTsgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKSkgeworICAgICAgICBmb3IgKGxl
dCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVPZihv
KSkgewogICAgICAgICAgICAgbGV0IGlzT3duUHJvcGVydHkgPSBvID09PSBvYmplY3Q7CiAgICAg
ICAgICAgICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTsKIApAQCAtNzY0LDcgKzc3Nyw3IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXMobyk7CisgICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwogICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZXNbaV0sIGlzT3duUHJvcGVy
dHkpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtNzc2LDggKzc4OSw4IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAo
c2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3Bl
cnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7CisgICAgICAgICAg
ICBpZiAoQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7CisgICAgICAgICAgICAgICAg
bGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9scyhvKTsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9scy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3Bl
cnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZl
dGNoQWN0aW9uLlN0b3A7CkBAIC04MDUsMTQgKzgxOCwxMyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsK
IAotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJy
aWRlcyBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCi0gICAgICAgIGZvciAobGV0IHZh
bHVlIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBidWlsdGluSXRlcmF0
b3Iob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAgICAg
ICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAgICAg
ICBAYXJyYXlQdXNoKGVudHJpZXMsIHt2YWx1ZX0pOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hD
b3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0Y2hDb3VudCkKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTgyNSwxNCArODM3LDEzIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgewogICAgICAgICBsZXQgZW50cmllcyA9IFtdOwogCi0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIE1hcC5w
cm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVd
IG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgYnVpbHRpbkl0
ZXJhdG9yKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAg
ICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7Cisg
ICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIHtrZXksIHZhbHVlfSk7CiAKICAgICAgICAg
ICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs4ODcsMTAgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xhc3RSZXN1
bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3Vs
dCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCByZXN1bHQg
PT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0aW5nSW5k
ZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOworICAgICAgICBsZXQgZXhp
c3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5AaW5kZXhPZihyZXN1bHQpOwogICAgICAg
ICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0SW5kZXggPSBleGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTAxLDgg
KzkxMiw4IEBAIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewogfTsKIAogSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJj
b250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAorICAgIENvbnRpbnVlOiBAY3Jl
YXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBTdG9wOiBAY3JlYXRlUHJpdmF0ZVN5
bWJvbCgic3RvcCIpLAogfQogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3Jp
cHQ7CkBAIC05NjIsNyArOTczLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmll
dyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAgICAgICAg
ICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhv
YmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRoaXMucHJl
dmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5h
bWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTg2LDcgKzk5Nyw3IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2
aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewot
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZp
bmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGxldCBy
ZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwg
Z2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qu
b2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90
ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5
cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKQpAQCAtMTA2OSw2ICsx
MDgwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3Rh
dGljIG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5v
cmcvYi8jIyMjIyM+IE1vdmUgbm9kZS1zcGVjaWZpYyBsb2dpYyB0byBhbiBpbmplY3RlZCBtb2R1
bGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgV2ViQ29yZSBidWlsdGlucy4KICAgICAgICAgbGV0IGlz
WE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQu
eG1sVmVyc2lvbjsKICAgICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUu
bm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAKQEAgLTExOTAsOSArMTIw
Miw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYg
KG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90
b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2Rz
IHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9y
LnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5j
b25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1
ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZh
bHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRv
ci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRl
c2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAg
cHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyAr
MTIyMSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmls
dGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGlu
ZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExl
dmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFm
aXJzdExldmVsS2V5cy5AaW5jbHVkZXMobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlv
biBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMzEzLDcgKzEzMjUsNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAgICAgICAgICAgZW50cmllcy5wb3Ao
KTsKKyAgICAgICAgICAgIGVudHJpZXMuQHBvcCgpOwogICAgICAgICAgICAgcHJldmlldy5vdmVy
ZmxvdyA9IHRydWU7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAg
ICAgIH0KQEAgLTEzMjMsNyArMTMzNSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAg
ICAgIH0KIAotICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlvbihl
bnRyeSkgeworICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLkBtYXAoZnVuY3Rpb24o
ZW50cnkpIHsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZU9i
amVjdFByZXZpZXdGb3JWYWx1ZShlbnRyeS52YWx1ZSwgZW50cnkudmFsdWUgIT09IG9iamVjdCk7
CiAgICAgICAgICAgICB1cGRhdGVNYWluUHJldmlldyhlbnRyeS52YWx1ZSk7CiAgICAgICAgICAg
ICBpZiAoImtleSIgaW4gZW50cnkpIHsKQEAgLTEzMzYsOCArMTM0OCw4IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIF9pc1ByZXZpZXdhYmxlT2JqZWN0KHZh
bHVlLCBvYmplY3QpCiAgICAgewotICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKLSAgICAgICAg
c2V0LmFkZChvYmplY3QpOworICAgICAgICBsZXQgc2V0ID0gbmV3IEBTZXQ7CisgICAgICAgIHNl
dC5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJldmlld2FibGVPYmpl
Y3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsKICAgICB9CkBAIC0xMzU3LDExICsxMzY5LDExIEBA
IGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgIC8vIEN5Y2xpYyBvYmplY3RzLgotICAgICAgICBpZiAoa25vd25P
YmplY3RzLmhhcyhvYmplY3QpKQorICAgICAgICBpZiAoa25vd25PYmplY3RzLkBoYXMob2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICArK2RlcHRoOwotICAgICAg
ICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgICAgIGtub3duT2JqZWN0cy5AYWRkKG9i
amVjdCk7CiAKICAgICAgICAgLy8gQXJyYXlzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDUgb3Ig
bGVzcyBzaW1wbGUgb2JqZWN0cy4KICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZShvYmplY3QpOwpAQCAtMTM4MSwxMiArMTM5MywxMyBAQCBsZXQgUmVtb3RlT2JqZWN0
ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgLy8gT2JqZWN0cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSAzIG9yIGxlc3Mgc2ltcGxlIHZh
bHVlIHByb3BlcnRpZXMuCi0gICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKKyAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMg
PSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7CiAgICAgICAgIGlmIChvd25Q
cm9wZXJ0eU5hbWVzLmxlbmd0aCA+IDMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIC8vIE1BUks6IFtQQ0FdIFdlIGFyZSBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheSBoZXJlLgog
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwot
ICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
QE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2lz
UHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmpl
Y3RzLCBkZXB0aCkpCkBAIC0xNTA2LDggKzE1MTksOCBAQCBDb21tYW5kTGluZUFQSS5nZXR0ZXJz
ID0ge307CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSB7fTsKIAotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhv
YmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihv
YmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5
cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlv
bihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9OwogCiBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKIENvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKQEAgLTE1
NDYsNCArMTU1OSw0IEBAIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykK
ICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7
IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7
IH07CiAKIHJldHVybiBpbmplY3RlZFNjcmlwdDsKLX0pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBhNjk4MWJiZjVhZDk0ZjkzZmQ3OTgzZmY2Zjk3NmM3ZTM5ZDk5
OTU4Li5iYzIzN2ExZjRmNDBiNjU4NzRhNTg4YTNiZjQ4OTA0MWI5M2M2YWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdykKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
OiAiLCBlcnJvci5tZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVu
ZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBv
biBsaW5lICIsIGVycm9yLmxpbmUoKSwgIi4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKaW5kZXggNWEzYWFhOTFlNjI3MjhjMmNhOWZhZWY1NjFkMmZhYmVkZTcwNTk1
ZS4uNTE1Yzg1ZmQ3ZDMxZTEzNTgwYzBlOGE1MGYxMGY3ZjhmNmFiZjk2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTMwLDcg
KzEzMCwxMSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgfQogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJp
dmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHJpdmF0ZU5hbWUoKSwgZ2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHVibGlj
TmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCkpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmluZGV4T2ZQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmluZGV4T2ZQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRl
TmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtl
eXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5wb3BQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnBvcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwg
Z2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogCiAgICAgSlNPYmplY3QqIHVu
c2NvcGFibGVzID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFBy
b3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBkMTQ0MTI0OGY2ZTJmMjZmZWM4M2M5NWZj
NjcxNmJjMGQyMTQzNDE5Li5mODlmZjhiNzdlN2E2YmE4ZTY4NDliNWE5Zjg1YWNkYWJiNGM3OGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0xMDc2LDYgKzEwNzYsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBt
X2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25z
dHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvcik7CisKKyAgICBtX3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlN0cmluZyldLnNldCh2bSwgdGhpcywg
c3RyaW5nQ29uc3RydWN0b3IpOworCisgICAgYXV0byoganNvblByb3BlcnR5ID0gSlNPTk9iamVj
dDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9qc29uUHJvcGVydHkuc2V0KHZtLCB0aGlzLCBq
c29uUHJvcGVydHkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkpTT04pXS5zZXQodm0sIHRoaXMsIGpzb25Qcm9wZXJ0eSk7
CiAgICAgCiAgICAgbV9ldmFsRXJyb3JTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAo
TGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3ODdhZjY2
YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uN2Q3Y2FlNjgzZjcxM2M4ZjkxMzg2NzQzOWY4ZjU1
YjlhYmFhODZmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC05Niw2ICs5Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwogY2xhc3MgSlNNb2R1bGVMb2FkZXI7CiBjbGFz
cyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIEpTT05PYmplY3Q7CiBjbGFzcyBKU1Byb21pc2U7CiBj
bGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKQEAg
LTEyNCw2ICsxMjUsNyBAQCBjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFBy
b3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VPcmlnaW47CitjbGFzcyBT
dHJpbmdDb25zdHJ1Y3RvcjsKIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsK
IGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsK
QEAgLTMyMCw2ICszMjIsOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29u
c3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9t
aXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yPiBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
OworICAgIFdyaXRlQmFycmllcjxTdHJpbmdDb25zdHJ1Y3Rvcj4gbV9zdHJpbmdDb25zdHJ1Y3Rv
cjsKKyAgICBXcml0ZUJhcnJpZXI8SlNPTk9iamVjdD4gbV9qc29uUHJvcGVydHk7CiAKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0
b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0
b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3NzczOGFhNjQ2NTY2MTRlYWFi
ZDhhZDE0Ny4uMzY1YTI3MGVmMzNmY2NlMzRlOGEyMWM2ZTk4YjkzMzU0ZGE4NDgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cApAQCAtOTksNyArOTksMTQgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKIAogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9i
amVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCisgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5hbWUo
KSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUo
KSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0
ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1
ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworCiAgICAgaWYgKE9wdGlv
bnM6OnVzZUhhc093bigpKQogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENvbnN0cnVjdG9ySGFzT3du
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAppbmRleCBlMjEzNGEwZmU0ODk2YjIwMTA0N2EzYjQyN2I3MTg0YzEzYTg4ZTVkLi40M2Qw
MGYzZjI4YmM2MGJkY2NjMzJhMDM0ZWU0YzUwY2M5MWI4MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDgg
QEAgdm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2RlZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1
bmNEZWZpbmVTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29r
dXBHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5fX2xvb2t1cFNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0
ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
KTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093blByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2Jq
ZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKIH0KIAogT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzYjdiYmMwOTU4ZDJj
MGVlMWQ2NDcxNDc2MmQyMDU2Mjg4MjEwNWEwLi4yMGRhNWZmYjVlYmZlNjZkZjc5YjA0NTNlMjg5
MDJkM2VkN2QyZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOCwxOCArMjEyOCw2IEBA
IFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09SS19ERUNM
QVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9F
WElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLWFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5D
WSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBFTkRTICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQ
RVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAtMjM1MSw2
ICsyMzM5LDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9E
SVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0
RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uOTUzYjcxYTEyMTNl
MjI4OWY3NjNhNGIzOGQ1NjdiMWFlYjhjMTZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCwxMCBAQCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0aW9uK1By
b3BlcnR5TmFtZXMuaQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElN
b2R1bGVCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWls
dGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWlu
Z1N0cmF0ZWd5QnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IGQ2NjNjMzIzNjg0ZDFjMGY4ODBmYjdjZjk2MWZjNmZhNDIxNmU0NmMuLmIxMjNh
YmY5M2UyNzU4ZDIxMTQ4YzEwMWM5ZDE3MzRkMDQ5NmY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMjIxOSwxNiArMjIxOSw2IEBAIGlmbmVxICgkKE5PX1NVUFBMRU1FTlRB
TF9GSUxFUyksMSkKIC1pbmNsdWRlICQoSlNfRE9NX0hFQURFUlM6Lmg9LmRlcCkKIGVuZGlmCiAK
LSMgSW5zcGVjdG9yIGludGVyZmFjZXMKLQotYWxsIDogQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuaAotCi1Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIDogJChXZWJDb3JlKS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLQllY2hvICIvLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2pzbWluLnB5IDwgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMgPj4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQ
RVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VfanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmgKLQkkKERFTEVURSkgQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UubWluLmpzCi0KICMgV2ViQ29yZSBKUyBCdWlsdGlucwogCiBXZWJDb3JlX0JVSUxUSU5TX1NP
VVJDRVMgPSBcCkBAIC0yMjUyLDYgKzIyNDIsNyBAQCBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMg
PSBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dERlY29kZXJTdHJlYW0uanMgXAogICAgICQoV2Vi
Q29yZSkvZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcyBcCisgICAgJChXZWJDb3JlKS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgXAogIwogCiBCVUlMVElOU19HRU5FUkFUT1Jf
U0NSSVBUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5OGQ4ZWVhMmFmZDg1ZDE1ODYwNjZmYjNjNzA5MmI3NjNiNWU3Mjkx
Li4yODA2YTE3OTFlMWExMThmN2Y4YzljNzQzNDE2YzljNTExM2FlYmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiAr
ODk5LDcgQEAKIAkJMkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3
MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMz
IC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkUzN0RGRDgxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAw
NjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVS
TC5oICovOyB9OworCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0
MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE1LDcgKzM1
MTYsNiBAQAogCQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4
OENGMDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2Vy
dmljZVdvcmtlckFnZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBX
ZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlw
dEhvc3QuaCAqLzsgfTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsg
fTsKIAkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZF
MkUxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9Owog
CQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjAyLDYgKzgyMDIs
OCBAQAogCQkyRTM3REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RTM3RTAwMzEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3Jr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5MzQsNyArMTM5MzYsNiBAQAogCQlBNTgxRUQx
MjFGQjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0
RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIw
NDIyLDcgKzIwNDIzLDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3Rv
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZF
MjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJ
CQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAq
LywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3Qu
aCAqLywKIAkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwICovLApAQCAtMjM1NzksNiArMjM1NzksOCBAQAogCQkJCTk5
MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuY3BwICovLAogCQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYg
LyogQ29sb3JEYXRhLmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5
RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywK
IAkJCQk5OTA4QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWls
dGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWlu
Z1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyog
Q1NTUHJvcGVydHlOYW1lcy5jcHAgKi8sCkBAIC0zNDA2NSw3ICszNDA2Nyw3IEBACiAJCQkJMjZF
OTQ0RDkxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJF
M0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0
aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29t
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAwNzY1NTM2IC8qIENv
bW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFGRTEzNzUxODQw
MkE2NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5k
ZXggNjNlYTdmYWFmNTlkZDc3OTQwMjkzNDQ2MzM4ZmE4YjIyODM1NWZhNS4uMzY3ZTNlYWVkMTgx
NGYwNmRlMzgzMTgyODNiYzQwZWVkMjcwNmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBt
YWNybyhOYXZpZ2F0b3JQZXJtaXNzaW9ucykgXAogICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRp
YSkgXAorICAgIG1hY3JvKE5vZGUpIFwKICAgICBtYWNybyhOb3RpZmljYXRpb24pIFwKICAgICBt
YWNybyhOb3RpZmljYXRpb25FdmVudCkgXAogICAgIG1hY3JvKE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudCkgXApAQCAtNDIwLDYgKzQyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhYUldlYkdMTGF5ZXIpIFwKICAgICBtYWNybyhhYm9ydEFsZ29yaXRobSkgXAogICAgIG1h
Y3JvKGFib3J0U3RlcHMpIFwKKyAgICBtYWNybyhhZGRFdmVudExpc3RlbmVyKSBcCiAgICAgbWFj
cm8oYXBwZW5kRnJvbUpTKSBcCiAgICAgbWFjcm8oYXNzb2NpYXRlZFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIpIFwKICAgICBtYWNybyhhdXRvQWxsb2NhdGVDaHVua1NpemUpIFwKQEAgLTQ1
OSw2ICs0NjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oZW5jb2RlKSBcCiAg
ICAgbWFjcm8oZW5jb2RpbmcpIFwKICAgICBtYWNybyhlcnJvclN0ZXBzKSBcCisgICAgbWFjcm8o
ZXZhbHVhdGUpIFwKICAgICBtYWNybyhmYWlsdXJlS2luZCkgXAogICAgIG1hY3JvKGZhdGFsKSBc
CiAgICAgbWFjcm8oZmV0Y2gpIFwKQEAgLTQ2OSw2ICs0NzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8oZmx1c2hBbGdvcml0aG0pIFwKICAgICBtYWNybyhmb2N1cykgXAogICAg
IG1hY3JvKGZyYW1lcykgXAorICAgIG1hY3JvKGdldEVsZW1lbnRCeUlkKSBcCiAgICAgbWFjcm8o
Z2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKGdldFRyYWNrcykgXAogICAg
IG1hY3JvKGdldFVzZXJNZWRpYSkgXApAQCAtNTE4LDYgKzUyMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBtYWNybyhvcGVuRGF0YWJhc2UpIFwKICAgICBtYWNybyhvcGVuZXIpIFwKICAg
ICBtYWNybyhvcGVyYXRpb25zKSBcCisgICAgbWFjcm8ob3V0ZXJIVE1MKSBcCiAgICAgbWFjcm8o
b3duZXJSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKHBhcmVudCkgXAogICAgIG1hY3JvKHBl
bmRpbmdQdWxsSW50b3MpIFwKQEAgLTUyNyw2ICs1MzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8ocHVsbEFnYWluKSBcCiAgICAgbWFjcm8ocHVsbEFsZ29yaXRobSkgXAogICAg
IG1hY3JvKHB1bGxpbmcpIFwKKyAgICBtYWNybyhxdWVyeVNlbGVjdG9yKSBcCisgICAgbWFjcm8o
cXVlcnlTZWxlY3RvckFsbCkgXAogICAgIG1hY3JvKHF1ZXVlKSBcCiAgICAgbWFjcm8ocXVldWVk
QWRkSWNlQ2FuZGlkYXRlKSBcCiAgICAgbWFjcm8ocXVldWVkQ3JlYXRlQW5zd2VyKSBcCkBAIC01
NDEsNiArNTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHJlYWRlcikgXAog
ICAgIG1hY3JvKHJlYWR5UHJvbWlzZSkgXAogICAgIG1hY3JvKHJlYWR5UHJvbWlzZUNhcGFiaWxp
dHkpIFwKKyAgICBtYWNybyhyZW1vdmVFdmVudExpc3RlbmVyKSBcCiAgICAgbWFjcm8ocmVxdWVz
dEFuaW1hdGlvbkZyYW1lKSBcCiAgICAgbWFjcm8ocmVxdWVzdElkbGVDYWxsYmFjaykgXAogICAg
IG1hY3JvKHJlc3BvbnNlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dCtET01QYXJzaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50K0RPTVBhcnNpbmcu
aWRsCmluZGV4IGZjMTFmZTc5M2FjMmM5ODZlOTY3NmYzODFhODc3YTIxNGZmYTA3ZGEuLmFmNDQ2
NTI3ZWEwMGY2NjFiMTZlOTg0ZDgyZDAyZGY5MDk3MzFjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCkBAIC0yNSw2ICsyNSw2IEBACiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5zaW9ucy10by10aGUtZWxlbWVudC1pbnRl
cmZhY2UKIHBhcnRpYWwgaW50ZXJmYWNlIEVsZW1lbnQgewotICAgIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG91dGVySFRNTDsKKyAg
ICBbQ0VSZWFjdGlvbnMsIFByaXZhdGVJZGVudGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSBhdHRy
aWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJIVE1MOwogICAg
IFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGluc2VydEFkamFjZW50SFRNTChET01TdHJpbmcgcG9z
aXRpb24sIERPTVN0cmluZyB0ZXh0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbApp
bmRleCAzYzMyNjRiNmUyZWJmYWRiNjI4NGVkZTNlYWIwMTY4MGY3NTNkNmM2Li5kNGIwYjM3MGRl
MjE2ODcyYjlmMThkNTUxYzM4OGNkM2U0NDIwOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKICAgICBb
Q2FsbFdpdGg9Q3VycmVudFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKCk7CiAK
LSAgICBbSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHVuZGVmaW5l
ZCBhZGRFdmVudExpc3RlbmVyKFtBdG9tU3RyaW5nXSBET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0
ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIChBZGRFdmVudExpc3RlbmVyT3B0aW9ucyBvciBib29s
ZWFuKSBvcHRpb25zID0gZmFsc2UpOwotICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlz
dGVuZXJGb3JCaW5kaW5nc10gdW5kZWZpbmVkIHJlbW92ZUV2ZW50TGlzdGVuZXIoW0F0b21TdHJp
bmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgKEV2
ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7CisgICAgW0lt
cGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzLCBQcml2YXRlSWRlbnRpZmll
ciwgUHVibGljSWRlbnRpZmllcl0gdW5kZWZpbmVkIGFkZEV2ZW50TGlzdGVuZXIoW0F0b21TdHJp
bmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgKEFk
ZEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7CisgICAg
W0ltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzLCBQcml2YXRlSWRl
bnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gdW5kZWZpbmVkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
W0F0b21TdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0
aW9uYWwgKEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7
CiAgICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzXSBib29sZWFuIGRp
c3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCA5ZTQ0ZDI4
ZDdiNmRiNzZlMzQ3ODFmN2YyNDJhNWE3OGNhZDc5YjZlLi43MzZiMTE0ZTliZTcyNTNkNzk0MmFm
YTJhY2NhODYwMDQ2OTlkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC0yNiw2ICsyNiw4IEBACiAg
ICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNDdXN0b21IZWFkZXIsCiAgICAg
SlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgUHJpdmF0ZUlkZW50aWZpZXIsCisgICAgUHVibGlj
SWRlbnRpZmllciwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgTm9kZSA6IEV2ZW50
VGFyZ2V0IHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTEVNRU5UX05PREUgPSAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob25FbGVtZW50UGFyZW50Tm9kZS5pZGwKaW5kZXggNDA3NzcwNjdh
NWU0YWRmZTNmODhkNTgxNWQyYThmODNjOWUxMDM0Yi4uM2MwMTg0MzZkYWI5MmRiYmJjNjNlM2Qw
NmU1OWM1MzE2ZTA5NzNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1l
bnRQYXJlbnROb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVu
dE5vZGUuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdn
Lm9yZy8jaW50ZXJmYWNlLW5vbmVsZW1lbnRwYXJlbnRub2RlCiBpbnRlcmZhY2UgbWl4aW4gTm9u
RWxlbWVudFBhcmVudE5vZGUgewotICAgIFtET01KSVQ9UmVhZERPTV0gRWxlbWVudD8gZ2V0RWxl
bWVudEJ5SWQoW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElk
KTsKKyAgICBbRE9NSklUPVJlYWRET00sIFByaXZhdGVJZGVudGlmaWVyLCBQdWJsaWNJZGVudGlm
aWVyXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdd
IERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9QYXJlbnROb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbAppbmRl
eCBhMDRkZTM4OGRmOTZmYzJmYzllYzhlYWYyNmE1YTUxMjA2YzA0MjcxLi5iODExOGVjMzRiYTYw
MmYzMjY5Nzg0NWE0MWYyZjBkODExNzk1YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUGFyZW50Tm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRs
CkBAIC0zNSw2ICszNSw2IEBAIGludGVyZmFjZSBtaXhpbiBQYXJlbnROb2RlIHsKICAgICBbQ0VS
ZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCBhcHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5n
KS4uLiBub2Rlcyk7CiAgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmluZWQgcmVw
bGFjZUNoaWxkcmVuKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogCi0gICAgRWxlbWVu
dD8gcXVlcnlTZWxlY3RvcihET01TdHJpbmcgc2VsZWN0b3JzKTsKLSAgICBbTmV3T2JqZWN0XSBO
b2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKERPTVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtQcml2
YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gRWxlbWVudD8gcXVlcnlTZWxlY3RvcihE
T01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbTmV3T2JqZWN0LCBQcml2YXRlSWRlbnRpZmllciwg
UHVibGljSWRlbnRpZmllcl0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChET01TdHJpbmcgc2Vs
ZWN0b3JzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlLmNwcAppbmRleCBkNzdjNzNkOGFlNDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0
MmZmLi5mNjZjMzQ0NDJmMTE2NzhkODEzNTA3MGY0ODBhZTc2ZGY5YjI2MzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQ
SU1vZHVsZS5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0
TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00
OCw5ICs0NywxNCBAQCBDb21tYW5kTGluZUFQSU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUo
KQogewogfQogCi1TdHJpbmcgQ29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitK
U0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1
cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VfanMsIHNpemVvZihDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlm
IChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2Fs
R2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVy
bmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVs
ZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBp
bmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9u
LWBKU0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3Qo
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThjMmRlYmRl
ZGFjZjdmYzZiNDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5
N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBD
b21tYW5kTGluZUFQSU1vZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0KEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuanMKaW5kZXggZjUxZTM1MTljY2IxNzk2MDkwYzMyNzRkNWIwYzM3YjI1OWQwZTNl
YS4uYTgxMjBkZTkxZTYyODIyZTdmMmE0MTMzODQ2NTgyOWQ5MTlhOGQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDExICsyNiwxMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKy8vIEBpbnRlcm5h
bAogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFu
ZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpIHsKLQotLy8gRklYTUU6IDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291
cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBi
dWlsdC1pbnMKK2Z1bmN0aW9uIGluamVjdE1vZHVsZShJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1v
dGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0KQorewogCiBpbmpl
Y3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNjMsMTkgKzYyLDIwIEBAIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGxldCBzdHJpbmcgPSBu
dWxsOwogCiAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOwor
ICAgIC8vIFRPRE86IEBvdXRlckhUTUwgZG9lc24ndCBhcHBlYXIgdG8gZG8gdGhlIHJpZ2h0IHRo
aW5nIHlldC4KICAgICBpZiAoc3VidHlwZSA9PT0gIm5vZGUiKQotICAgICAgICBzdHJpbmcgPSBv
YmplY3Qub3V0ZXJIVE1MOworICAgICAgICBzdHJpbmcgPSBvYmplY3QuQG91dGVySFRNTDsKICAg
ICBlbHNlIGlmIChzdWJ0eXBlID09PSAicmVnZXhwIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBv
YmplY3Q7CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRTY3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmpl
Y3QpKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Yg
b2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LlN0cmluZyhvYmplY3QpOworICAgICAgICBzdHJpbmcgPSBAU3RyaW5nKG9iamVjdCk7CiAg
ICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5n
ID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBz
dHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxs
LCAiICAiKTsKKyAgICAgICAgICAgIHN0cmluZyA9IEBKU09OLnN0cmluZ2lmeShvYmplY3QsIG51
bGwsICIgICIpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHN0cmluZyA9ICIiICsg
b2JqZWN0OwogICAgICAgICB9CkBAIC04OSw3ICs4OSw3IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImdldEV2ZW50TGlzdGVuZXJzIl0gPSBmdW5jdGlvbih0YXJnZXQpIHsKIH07CiAKIGZ1bmN0
aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVm
aW5lZCkKKyAgICBpZiAodHlwZXMgPT09IEB1bmRlZmluZWQpCiAgICAgICAgIHR5cGVzID0gWyJt
b3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5n
ZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMi
LCAibG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3Qi
LCAic3VibWl0IiwgInVubG9hZCJdOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0
cmluZyIpCiAgICAgICAgIHR5cGVzID0gW3R5cGVzXTsKQEAgLTk3LDE1ICs5NywxNSBAQCBmdW5j
dGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7CiAgICAgbGV0IHJlc3VsdCA9IFtdOwog
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYg
KHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwg
ImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2Vv
dmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOworICAgICAgICAgICAgQGFycmF5UHVzaChy
ZXN1bHQsICJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1v
dXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKICAgICAgICAg
ZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImtl
eWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBA
YXJyYXlQdXNoKHJlc3VsdCwgImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElu
cHV0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAidG91Y2giKQotICAgICAgICAg
ICAgcmVzdWx0LnB1c2goInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0
b3VjaHN0YXJ0Iik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgInRvdWNoY2FuY2Vs
IiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CiAgICAgICAgIGVsc2Ug
aWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgiYmx1
ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxl
Y3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCAi
Ymx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJz
ZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVz
dWx0LnB1c2godHlwZXNbaV0pOworICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsIHR5cGVz
W2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExNiwzOCArMTE2LDM4IEBA
IGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogfQogCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJt
b25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7Ci0gICAgaWYgKCFvYmpl
Y3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcikKKyAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LkBhZGRFdmVudExpc3RlbmVyIHx8ICFv
YmplY3QuQHJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKICAgICB0eXBlcyA9
IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlw
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlw
ZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVy
KHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgICAgICBvYmplY3QuQHJlbW92ZUV2ZW50
TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5AYWRk
RXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVj
dCwgdHlwZXMpIHsKLSAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIg
fHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgIGlmICghb2JqZWN0IHx8ICFvYmpl
Y3QuQGFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5AcmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAg
ICAgICAgcmV0dXJuOwogICAgIHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7CiAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAg
IG9iamVjdC5AcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsK
IH07CiAKLWlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0Lk5vZGUpIHsKK2lmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYg
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LkBOb2RlKSB7CiAgICAgZnVuY3Rpb24gY2FuUXVlcnlTZWxl
Y3Rvck9uTm9kZShub2RlKSB7Ci0gICAgICAgIHJldHVybiBub2RlICYmIEluamVjdGVkU2NyaXB0
SG9zdC5zdWJ0eXBlKG5vZGUpID09PSAibm9kZSIgJiYgKG5vZGUubm9kZVR5cGUgPT09IGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5Ob2RlLkVMRU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUg
PT09IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOwor
ICAgICAgICByZXR1cm4gbm9kZSAmJiBJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShub2RlKSA9
PT0gIm5vZGUiICYmIChub2RlLm5vZGVUeXBlID09PSAxIC8qIEVMRU1FTlRfTk9ERSAqLyB8fCBu
b2RlLm5vZGVUeXBlID09PSA5IC8qIERPQ1VNRU5UX05PREUgKi8gfHwgbm9kZS5ub2RlVHlwZSA9
PT0gMTEgLyogRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAqLyk7CiAgICAgfQogCiAgICAgQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CiAgICAg
ICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVy
biBzdGFydC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGFy
dC5AcXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5AcXVlcnlTZWxl
Y3RvcihzZWxlY3Rvcik7CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogCiAgICAgICAgIGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0gIiMiKSB7
Ci0gICAgICAgICAgICByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoc2VsZWN0b3IpOworICAgICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmRvY3VtZW50LkBnZXRFbGVtZW50QnlJZChzZWxlY3Rvcik7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUud2FybigiVGhlIGNvbnNvbGUgZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2VkIGZyb20gJD1n
ZXRFbGVtZW50QnlJZChpZCkgdG8gJD1xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4gWW91IG1pZ2h0
IHRyeSAkKFwiIyVzXCIpIiwgc2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OwpAQCAtMTU4LDI3ICsxNTgsMjggQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgIH07CiAKICAgICBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyIkJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CisgICAg
ICAgIC8vIFRPRE86IEkgZG9uJ3QgdGhpbmsgQXJyYXkuZnJvbSBpcyBhY3R1YWxseSBleHBvc2Vk
IHlldC4uLgogICAgICAgICBpZiAoY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAg
ICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVl
cnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LkFycmF5LmZyb20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBAQXJyYXkuZnJvbShzdGFy
dC5AcXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOworICAgICAgICByZXR1cm4gQEFycmF5LmZy
b20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LkBxdWVyeVNlbGVjdG9yQWxsKHNlbGVj
dG9yKSk7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5j
dGlvbih4cGF0aCwgY29udGV4dCkgewogICAgICAgICBsZXQgZG9jID0gKGNvbnRleHQgJiYgY29u
dGV4dC5vd25lckRvY3VtZW50KSB8fCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQ7Ci0g
ICAgICAgIGxldCByZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBu
dWxsLCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gZG9jLkBldmFsdWF0ZSh4cGF0aCwgY29udGV4dCB8fCBkb2Ms
IG51bGwsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUgKi8sIG51bGwpOwogICAgICAgICBzd2l0
Y2ggKHJlc3VsdC5yZXN1bHRUeXBlKSB7Ci0gICAgICAgIGNhc2UgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LlhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFOgorICAgICAgICBjYXNlIDEgLyogWFBhdGhSZXN1
bHQuTlVNQkVSX1RZUEUgKi86CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm51bWJlclZhbHVl
OwotICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJlc3VsdC5TVFJJTkdf
VFlQRToKKyAgICAgICAgY2FzZSAyIC8qIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFICovOgogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1ZTsKLSAgICAgICAgY2FzZSBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFOgorICAgICAgICBjYXNlIDMg
LyogWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFICovOgogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgbm9kZXMgPSBbXTsKICAg
ICAgICAgbGV0IG5vZGUgPSBudWxsOwogICAgICAgICB3aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVy
YXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgICAgIEBh
cnJheVB1c2gobm9kZXMsIG5vZGUpOwogICAgICAgICByZXR1cm4gbm9kZXM7CiAgICAgfTsKIH0K
QEAgLTE4Niw0ICsxODcsNCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYm
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmlu
ZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1h
bmQgTGluZSBBUEldIH0iOyB9OwogCi19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBhZTAyOWJmYmJlOTMz
ODI4YmRiMGM5ZWFiNTk5MmUwMDQ5NDk4NTY5Li5jZGY0MWNhNGZjZDU0N2YyZDI4MTFiZTdkNjg3
YTEwMjkyOTZjYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtOTM5LDggKzkzOSwxMSBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShQ
cm90b2NvbDo6RE9NOgogCiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OkxheW91dENvbnRl
eHRUeXBlPiBJbnNwZWN0b3JDU1NBZ2VudDo6bGF5b3V0Q29udGV4dFR5cGVGb3JSZW5kZXJlcihS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGlmIChpczxSZW5kZXJGbGV4aWJsZUJveD4o
cmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gUHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5
cGU6OkZsZXg7CisgICAgaWYgKGF1dG8qIHJlbmRlckZsZXhpYmxlQm94ID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlckZsZXhpYmxlQm94PihyZW5kZXJlcikpIHsKKyAgICAgICAgLy8gU3ViY2xhc3Nl
cyBvZiBSZW5kZXJGbGV4aWJsZUJveCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgZmxleCBjb250
YWluZXJzLCBhcyBpdCBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgICAg
ICAgIGlmICghcmVuZGVyRmxleGlibGVCb3gtPmlzRmxleGlibGVCb3hJbXBsKCkpCisgICAgICAg
ICAgICByZXR1cm4gUHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU6OkZsZXg7CisgICAg
fQogICAgIGlmIChpczxSZW5kZXJHcmlkPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBQcm90
b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZTo6R3JpZDsKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbAppbmRleCBlYTdiMzE0MGQ2
NmIxNmE1ZjA5ZDk0YTMzMGE3MzdiN2Y0Y2ZkNTE2Li5iZjcwMjRhZDIyMGIxYmZhNDJjNjUxYzcx
OWIxMTRkZDFjM2ZkNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHBy
ZXNzaW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbApA
QCAtMjIsNSArMjIsNSBAQAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEV4cG9z
ZWQ9V2luZG93CiBdIGludGVyZmFjZSBYUGF0aEV4cHJlc3Npb24gewotICAgIFhQYXRoUmVzdWx0
IGV2YWx1YXRlKE5vZGUgY29udGV4dE5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUg
PSAwLCBvcHRpb25hbCBYUGF0aFJlc3VsdD8gaW5SZXN1bHQgPSBudWxsKTsKKyAgICBbUHJpdmF0
ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIFhQYXRoUmVzdWx0IGV2YWx1YXRlKE5vZGUg
Y29udGV4dE5vZGUsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHR5cGUgPSAwLCBvcHRpb25hbCBY
UGF0aFJlc3VsdD8gaW5SZXN1bHQgPSBudWxsKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDhhYjIxNmQwNDQyNzU3
ZmQ2YWM0NDE5MDA5MDA0NDUxNmYzZjYyMi4uNGFlMTkzYjlmMjJhM2RlNTA3NDcxYzAzMjNjNTM5
ZDg5M2I5ZmIxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA0LTIyICBQYXRyaWNrIEFu
Z2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJ
bmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11
c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1z
Y3JpcHRzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQ6CisKIDIwMjItMDQtMjIgIEth
cmwgUmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mgd2syIGFy
bTY0IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbmZyYXN0cnVjdHVyZS9yZWZ0
ZXN0LXdhaXQuaHRtbCBpcyBhIGZsYWt5IGltYWdlIGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVy
bmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
ZWIxNTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjcgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNP
TlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcK
LUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNv
bnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZh
bHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgotCi0KLT09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKLS0tIFJ1
bm5pbmcgdGVzdCBzZXR1cC4KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRy
eUNvbnNvbGVMb2cpCi1TVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCi1QQVVTRUQgKGRl
YnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0
PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVM
b2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xl
LmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAg
IDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0KLUFDVElPTjogc3RlcC1vdmVyCi1Q
QVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2
ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2Vy
OwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBj
b25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmci
KTsKLSAgICAgMTEgICAgfQotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29s
ZUxvZzoxMDo1Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAg
IDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsK
LSAtPiAgIDkgICAgICAgIHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNv
bnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgotCi1BQ1RJT046IHN0
ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAg
ICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAgMTAgICAgICAgIHxjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0K
LUFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEyOjIKLSAgICAgIDgg
ICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhj
b25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAtPiAgMTEg
ICAgfXwKLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0gICAgIDE0Ci0KLUFDVElP
TjogcmVzdW1lCi1SRVNVTUVECi1QQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KLQot
LS0gUnVubmluZyB0ZXN0IHNldHVwLgotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQo
ZW50cnlDb25zb2xlTG9nKQotU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQotUEFVU0VE
IChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAg
ICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3Nj
cmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25z
b2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29u
c29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwot
ICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotCi1BQ1RJT046IHN0ZXAtb3Zl
cgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNv
bnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAg
ICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAg
IH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAg
ICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7
Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3
aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAg
ICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVw
LWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBk
ZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiByZXN1bWUKLVJFU1VNRUQKLVBBU1M6
IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkMTY4YTcyNTRjZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAg
IGRlYnVnZ2VyOwotICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgY29uc29sZS5sb2coInN0cmluZyIpOwotfQotCi0vLyAtLS0tLS0tLS0KLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyIpOwotCi0gICAg
d2luZG93LmluaXRpYWxpemVTdGVwcGluZ1Rlc3RTdWl0ZShzdWl0ZSk7Ci0KLSAgICBhZGRTdGVw
cGluZ1Rlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJu
YWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJl
IGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJ
bnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91
dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhl
IGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1h
bmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KLSAgICAgICAgc2V0dXA6IGFz
eW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMoZmFsc2UpOyB9LAotICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgIm92ZXIiLAotICAg
ICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIsIC8v
IGNvbnNvbGUubG9nKCJzdHJpbmciKQotICAgICAgICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0K
LSAgICB9KTsKLQotICAgIGFkZFN0ZXBwaW5nVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiRGVi
dWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2Ny
aXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVu
dHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHBy
ZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAgLy8gQ2FsbCBv
dXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRv
IHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4K
LSAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCi0gICAgICAgIHRlYXJkb3duOiBhc3luYyAo
KSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZh
bHNlKTsgfSwKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAg
ICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImlu
IiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAgICAgICAg
ICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQotICAg
ICAgICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQotICAgIGxvYWRNYWluUGFn
ZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKLSAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQg
aW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VG
b3JJbnRlcm5hbFNjcmlwdHMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApp
bmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTViNzQ4
NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAtOSw3
ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hvdWxk
IGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5l
IEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBFdmFs
IFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJj
ZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3Vy
Y2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlw
dHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQ
YXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQu
aHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5kNjc3
YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTksMTEg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykgc3Rh
cnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBsaXN0
ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBzb3Vy
Y2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3JpcHRz
IEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAK
ICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGlu
ZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0gZmFs
c2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsKLSAg
ICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBm
b3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxT
Y3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
fQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0KHBh
cmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMu
c3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAgICBy
ZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5OyAv
LyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNFdmFs
U2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0gImV2
YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3Jp
cHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dpdGgo
Il9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJh
bXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVzdENh
c2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRpYWxT
Y3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2OCw2
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxpbmVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlzQ29t
bWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0luamVj
dGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJVTkVY
UEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05Myw4
ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5l
IFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBl
Y3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3VsZCBm
aW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3VsZCBm
aW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RU
aGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0
b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJTaG91
bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3JpcHQs
ICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9t
b2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAppbmRleCBkNDQyMTdk
MzYyZWE0ZjlhMjUyNjRhMGQ4YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJkNTAzN2U1MmFlOTBjMjMz
ZjIyYjUzOTM5NmVlMWY4YWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9k
ZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0zMSw3ICsz
MSw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgW10ueC54OyB9IGNhdGNoIChl
KSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNr
IiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZ2xvYmFs
IGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3Jh
cENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2Nv
cGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0
aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtNzAs
NyArNzAsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGV2YWwoImlmKCkiKTsg
fSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFt
ZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVl
IjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjog
ImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUXigKZ0
aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAg
ICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC0xMDQsNyArMTA0LDcgQEAgRVhQ
UkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIiku
c3BsaXRUZXh0KDEwMCk7IH0gY2EKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwK
ICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0
QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25A
W25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRl
eHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT4oCmdGl2ZSBjb2Rl
XVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfSwKICAg
ICAgIHsKICAgICAgICAgIl9uYW1lIjogImNvZGUiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYmZjYWM5
ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3YTM4NS4uNmExNDkwOWI0ZDA1NWM3MjI5ZGU0
ZTcwZjExMGEwZTUzYzIyZDExYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC02NCw4ICs2NCw4IEBAIFBB
U1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIs
CiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAgICAgInNjcmlwdElkIjogIjxm
aWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGluZU51bWJlciI6IDE0MiwKLSAgICAgICAgICAg
ICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogNDE3LAor
ICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogODAKICAgICAgICAgICAgIH0KICAgICAgICAg
ICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4
IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAi
IiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJl
ZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogNDE3LAorICAgICAgICAgICJjb2x1bW5O
dW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRl
cmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAg
ICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAg
ICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIs
Ci0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiA0
MTcsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6IDgwCiAgICAgICAgIH0KICAgICAgIF0sCiAg
ICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458228</attachid>
            <date>2022-04-23 23:34:58 -0700</date>
            <delta_ts>2022-04-24 13:01:55 -0700</delta_ts>
            <desc>WIP v0.6</desc>
            <filename>bug-152294-20220423233457.patch</filename>
            <type>text/plain</type>
            <size>105723</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzFmM2VmOWY1Y2E4MTNmMjNiYTJhMDc1YWU0M2UxZTViZTRhYjYyLi45NDcwZTNjZjVhOGEwYjA1
OTY4NWFhOGM3NjczOTc2ODE3YmI5NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMi0wNC0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2Ny
aXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbnNDb2xs
ZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChidWlsdGluSXRlcmF0b3Iud3JhcHBlci5pdGVyYXRvcik6CisgICAgICAgIChidWlsdGlu
SXRlcmF0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5leGVjdXRl
KToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuYXdhaXRQcm9taXNlKToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuY2FsbEZ1bmN0aW9uT24pOgor
ICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS53cmFwQ2FsbEZyYW1lcyk6Cisg
ICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBKU09OU3RyaW5nKToKKyAg
ICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcFRhYmxlKToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuaW5qZWN0TW9kdWxlKToKKyAgICAgICAgKGxl
dC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3Jlc29sdmVDYWxsQXJndW1lbnQpOgorICAgICAg
ICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRv
ci5jcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlw
dC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3IucHJvY2Vzc1Byb3BlcnR5KToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZ2V0U2V0
RW50cmllcyk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9nZXRNYXBF
bnRyaWVzKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3NhdmVSZXN1
bHQpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKGxldC5SZW1vdGVP
YmplY3QpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9y
VmFsdWUpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5ub2RlUHJldmlldyk6CisgICAgICAg
IChsZXQuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5fYXBwZW5kRW50cnlQcmV2aWV3cyk6CisgICAg
ICAgIChsZXQuUmVtb3RlT2JqZWN0LnNldCBfaXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKToK
KyAgICAgICAgKGxldC5SZW1vdGVPYmplY3QucHJvdG90eXBlLl9pc1ByZXZpZXdhYmxlT2JqZWN0
LnNldCBhZGQpOgorICAgICAgICAoQ29tbWFuZExpbmVBUEkubWV0aG9kcy5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisKIDIwMjItMDQtMjIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXhlcyBhZnRl
ciByMjkzMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZkMTQxNTcxZjYyYWZiOWIyMTJmMzhmMWRlNTg3Yjk3
Y2ZmZjkzMC4uNzhmZmE3NTg2OTY3NGU4ODdlNDIxNjRlZDg2MWYzNjRhNDUzODlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTIzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlw
dFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRl
biBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5pZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob25FbGVt
ZW50UGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoaW5q
ZWN0TW9kdWxlKToKKyAgICAgICAgKGluamVjdE1vZHVsZS4pOgorICAgICAgICAoaW5qZWN0ZWRT
Y3JpcHQuX2luc3BlY3RPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoQ29tbWFuZExpbmVBUEku
Z2V0dGVycy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6IERlbGV0ZWQuCisgICAgICAgIChDb21tYW5k
TGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJlZF9oZXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KG5vcm1hbGl6ZUV2ZW50VHlwZXMpOiBEZWxldGVkLgorICAgICAgICAobG9nRXZlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50Lmluc3BlY3RlZEds
b2JhbE9iamVjdC5Ob2RlLmNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUpOiBEZWxldGVkLgorICAgICAg
ICAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50Lmluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlLkNvbW1hbmRMaW5lQVBJLm1ldGhvZHMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOiBEZWxldGVk
LgorICAgICAgICAobGV0Lm5hbWUuaW4uQ29tbWFuZExpbmVBUEkubWV0aG9kcy5Db21tYW5kTGlu
ZUFQSS5tZXRob2RzLm5hbWUudG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmxheW91dENvbnRleHRUeXBlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHht
bC9YUGF0aEV4cHJlc3Npb24uaWRsOgorCiAyMDIyLTA0LTIzICBBbmRyZXMgR29uemFsZXogIDxh
bmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBWCBJVE06IFRhYmxlIHJvdyBvYmplY3Rz
IHNob3VsZCByZXR1cm4gYSBub24tbnVsbCB1bmlnbm9yZWQgcGFyZW50IGV2ZW4gd2hlbiBhIHRh
YmxlIG9iamVjdCBpcyBub3QgZm91bmQgaW4gaXRzIGFuY2VzdHJ5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGMwYTllMmE3ZTgwMmRiOTQ4NTc2NzRmMjliODc5NzZkOWM1
NmUyMGQuLjc2Y2IwNWVlNDZlZGY1OWFhMjhhMGM5NmM1NGI4MWIwZjk3NjEwYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM2NCw2ICszNjQsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9XZWJBc3NlbWJseS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApA
QCAtMTQwNSwxNyArMTQwNiw2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMK
ICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgK
ICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmggJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBN
QUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0v
eHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFO
RCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlw
dF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRI
T05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+
ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzICR7SmF2YVNjcmlw
dENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0Nf
TE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDhkNTQw
YmQ1MTkyMTdiNTUyYmYwNjA5OGM5ZGRjMmEyNzRmMzM0MGIuLmY3YjNkYjdiNjFkMzA2MDdlOGE2
ZmI1MTQzYTRjMjRlYWQyMjg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTIxLDcgKzIxLDYgQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRl
ZFdhc21PcHMuYXNtCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdEJ5dGVjb2Rlcy5hc20KICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0V2FzbS5hc20K
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1
ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi4xZmI2MjNjZDZmNmU4ZDg5ODdmOTQ4MDQ1NDRmMGQ0NGU1YjM1
ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNjgs
NyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUp
L1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBcCi0gICAgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAgICAgUmVn
RXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJh
eUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFy
cmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9XZWJBc3Nl
bWJseS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzIFwKICMKIAogIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0
aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbwpAQCAtMzY4
LDEyICszNjgsNiBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIDogQ29t
YmluZWREb21haW5zLmpzb24gJChJTlNQRUNUT1JfR0VORVJBVAogCSQoUEVSTCkgJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9wcmVwcm9jZXNzLnBsIC0taW5wdXQg
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5pbiAtLWRlZmluZXMgIiQoRkVB
VFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykiIC0tb3V0cHV0IGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKIAkkKERFTEVURSkgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcy5pbgogCi1JbmplY3RlZFNjcmlwdFNvdXJjZS5oIDogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAotCWVjaG8gIi8vIyBzb3VyY2VV
Ukw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAuL0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9qc21pbi5weSA8ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyA+PiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pz
IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzIEluamVjdGVkU2NyaXB0U291cmNlLmgKLQkk
KERFTEVURSkgSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0KIEFJUl9PUENPREVfRklMRVMg
PSBcCiAgICAgQWlyT3Bjb2RlLmggXAogICAgIEFpck9wY29kZVV0aWxzLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3OWM4ZGNkYjFlZTk2ODM0YTcwOTZhZDYzMjA5MDI4MDEy
MDIwMGU1Li45ZjBlYjcyNzk2MTJkYWIyYWQzMWJkMDk2MGFiMzkxYmIwYzc0NTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAKIAkJQTUxM0U1QkUx
ODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QjkxODVCRkFDQzAwN0U5NUFEIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07
CiAJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUx
M0U1QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgg
Ki87IH07Ci0JCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1
QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07CiAJCUE1
MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1Rjk2MjQw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3Q0IgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTE0QjJDMTE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUy
Qzk1RkYyMTU5RDQzMjAwN0Q4QUMwIC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzRDIxNTlENDFFMDBG
Q0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDcyMCw3ICs0NzE5LDYgQEAKIAkJQTUxM0U1QkMx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QkQxODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2Ny
aXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEzRTVDNjE4NUY5
NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDOTE4
NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
U2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg3LDcgKzcy
ODUsNiBAQAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90
eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNv
ZGVzLmFzbSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxh
dG9yQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8q
IEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCkBAIC0xMDQ1
NSw3ICsxMDQ1Miw2IEBACiAJCQkJQTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjEx
ODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5NTlFOTMyMUJEMTgyNzkwMDFBQTQxMyAvKiBpbmxpbmUtYW5k
LW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTc5
MDVCQjY5MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0OEE3QkYwMUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWls
dGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3dr
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0OTAx
MDczMDE5NzlhODZkMTY4Ny4uZDFkNTJiZWM2OWNhZGIwMTJjNjRlYzkwODM2OTJkODYxNDMzZDIz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC0zMDMsMjEgKzMwMyw1NSBAQCBjbGFzcyBCdWls
dGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAgICAgICAgc3Rh
cnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoK
ICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAgaWYgc3RhcnQg
PCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVuZCA9IG1hdGNo
LmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAgICAgICAgICAg
ICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAg
ZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBpc0VzY2Fw
aW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgICAg
ICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRo
ICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAgICAgICAgICAg
ICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAx
CisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFj
dGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5nQ2hhcmFjdGVy
OgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFy
YWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJp
bmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAg
ZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJl
bnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhNRTog
PHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJh
bGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAgIyBm
b3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2Ug
dGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5zaWRl
L291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0
cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMgKHVu
bGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5s
ZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1bmJh
bGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUg
YWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAgICAg
ICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFy
dENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFy
dENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRD
aGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAxCisgICAgICAg
ICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAgICAgICAgICAg
ICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZnVuY3Rp
b25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlvblN0cmluZ3Mg
PSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJv
dW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApp
bmRleCA1NDgzZTg3MWU3NDNhOWExMmIyY2UzMGRkZmMyYTAwYzUyYWViYzVkLi4zM2IxODJjYmRl
ZWVjMGVjODRiYTVlZWZhMWRkNWQ4YTgxMmRkZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xOTIsNiArMTkyLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oaXNS
ZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGFycmF5U29ydCkgXAorICAgIG1hY3JvKGpzb25Q
YXJzZSkgXAorICAgIG1hY3JvKGpzb25TdHJpbmdpZnkpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwK
KyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Q
cm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAg
bWFjcm8oaGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNybyhpbmRleE9mKSBcCisgICAgbWFjcm8o
cG9wKSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKaW5kZXggMjYzZTQzYmZjMGU4MzExNjA1
MDJhOTg1ZTI0MWFlMDdjNzdlZTJmNC4uZmJjNDIwMDQ4N2E1MGI1OGY0NmFjMDVhOGI3ODQyNjRm
ODk1NjA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJh
dG9ySGVscGVycy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0
b3JIZWxwZXJzLmpzCkBAIC01MSwzICs1MSwyNCBAQCBmdW5jdGlvbiBwZXJmb3JtSXRlcmF0aW9u
KGl0ZXJhYmxlKQogICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBpbmRleCsrLCBpdGVt
LnZhbHVlKTsKICAgICB9CiB9CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGluSXRl
cmF0b3IoaXRlcmFibGUpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIC8vIGZvci1v
ZiBsb29wcyBsb29rIHVwIHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5LCB3aGljaCBpcyBvYnNlcnZh
YmxlIGlmIHRoZSB1c2VyIGRlZmluZWQgYSBnZXR0ZXIgZm9yIEBAaXRlcmF0b3IuCisgICAgLy8g
VG8gYXZvaWQgdGhpcywgY3JlYXRlIGEgd3JhcHBlciBvYmplY3Qgd2hlcmUgQEBpdGVyYXRvciBy
ZXR1cm5zIHRoZSBhY3R1YWwgaXRlcmF0b3IuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBp
dGVyYWJsZS5AQGl0ZXJhdG9yOworICAgIGlmIChAaXNVbmRlZmluZWRPck51bGwoaXRlcmF0b3JG
dW5jdGlvbikpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpbkl0ZXJhdG9yIHJlcXVp
cmVzIHRoYXQgdGhlIHByb3BlcnR5IGBpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdYCBleGlzdHMu
Iik7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGl0ZXJhdG9yRnVuY3Rpb24pKQorICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5JdGVyYXRvciByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0
eSBgaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXWAgYmUgYSBmdW5jdGlvbi4iKTsKKworICAgIGxl
dCBpdGVyYXRvciA9IGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoaXRlcmFibGUpOworICAgIGxldCB3
cmFwcGVyID0ge307CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpdGVyYXRvcjsgfQorCisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4
NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi5iODY1M2U4NjU2OTkzMWZjYmI2ZTJmNGI0
MjU0OGM0YjBjNmUxMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOSBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKICAgICB2KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1Jl
bW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAg
ICB2KGpzb25QYXJzZSwgbnVsbHB0cikgXAorICAgIHYoanNvblN0cmluZ2lmeSwgbnVsbHB0cikg
XAorICAgIHYoU3RyaW5nLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElN
RV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGNiMDYz
NDAyYmYxMjJlYWUxNjk4ZWJhMmE3YmI3ZjRkNzZlZjk3NzAuLjIyZDFiY2U3ZWFiMGZhZjE1NGUw
ODc1YjdjMGM3NmRjZGJkMWMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dFNvdXJjZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5l
cy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5q
ZWN0ZWRTY3JpcHQuY2xlYXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Z0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXpl
b2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBO
YWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQgaWQpCitFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShz
b3VyY2UsIHsgfSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFRoaXMoKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2Vw
dGlvbjsKLSAgICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9l
bnZpcm9ubWVudC5ldmFsdWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUg
PSBldmFsdWF0ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFs
dWUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAg
YXV0byogZnVuY3Rpb25WYWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5s
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVk
U2NyaXB0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQo
c2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVu
Y3Rpb25WYWx1ZSk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCkBAIC0xNjYsNyArMTU5LDcgQEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNl
cHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1
ZSwgYXJncyk7Ci0gICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJl
dHVybiByZXN1bHQuZ2V0T2JqZWN0KCk7CiB9CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAg
IGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRGb3IoZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIGNy
ZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCks
IGdsb2JhbE9iamVjdCwgaWQpOworICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoZ2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKICAg
ICAgICAgYXV0byYgZXJyb3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJU
KGVycm9yKTsKQEAgLTE5NywxMiArMTkwLDEwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAg
ICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0
ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciB3aGVuIGNyZWF0aW5nIGluamVjdGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgZXJyb3ItPnZh
bHVlKCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1
bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KICAgICBpZiAoIWNyZWF0ZVJlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fs
d2F5cygiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgb2JqZWN0Iik7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApp
bmRleCAxZjc0MGM0MDY4NDUzNjZhNzU5YmEwYWY0YzhjMzI3Nzc0OTU0OGVhLi5iNTQxMDEyZWY0
YmI0YmYyMmU3YWUzODJiZmYxNTk4NWFjOTlhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTc1LDgg
Kzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hNYXA8SlNDOjpKU0dsb2JhbE9iamVjdCosIGlu
dD4gbV9zY3JpcHRTdGF0ZVRvSWQ7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGluamVjdGVkU2Ny
aXB0U291cmNlKCk7Ci0gICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBpbnQgaWQpOworICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3Qq
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBpbnQgaWQpOwogCiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52
aXJvbm1lbnQ7CiAgICAgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhv
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEyZWQ2ZmJlODZiODk3NDEyZjQ4
ZmQ1ZTlhMTEuLjBiNjc1ZTg0NDY2OTA2MDIxMjM4N2ZkYjRiYWQ1ZDBhNjU3OGY4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCkBAIC03NCwxMyArNzQsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVs
ZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0K
ICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVy
cm9yIHdoZW4gY2FsbGluZyAnaGFzSW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQp
XG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7
Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWhh
c0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVk
TW9kdWxlUmVzdWx0LnZhbHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJpbmplY3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVj
dG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChzb3VyY2UoKSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1
ZShpbmplY3RNb2R1bGVGdW5jdGlvbihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsK
ICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0
TW9kdWxlUmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KGZ1bmN0aW9uKTsKICAgICAgICAgaWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKQEAgLTkyLDcg
KzkxLDYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgICAgIGlmIChzdGFjay5z
aXplKCkgPiAwKQogICAgICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1u
KGxpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2Fs
bGluZyAnaW5qZWN0TW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2Jh
bE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
CmluZGV4IDI3OWJhZTRlYmFlNGMxODU0NDhjNjk3ZTlhMDNiZWRiNWVhZjg1OGIuLmE0YmVkOTY5
MmI3NDU2YTAwNWQ3NmRmNGZlNDg1MTYxZjk1ZTRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsK
IHB1YmxpYzoKICAgICB+SW5qZWN0ZWRTY3JpcHRNb2R1bGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTRnVuY3Rp
b24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgaG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5q
cwppbmRleCA0OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li4wNDY5ZjYx
MTlmYzkyMTQ2ZjdlNDRkZTljZDI3NTMxMTNhMGI0ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTcgKzI3
LDEzIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlw
dF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwotCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9z
dCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7Ci0KLS8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRkZW4gYnVpbHQtaW5zCi0KLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0Bn
bG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmpl
Y3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkK
K3sKIAogZnVuY3Rpb24gdG9TdHJpbmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsK
KyAgICByZXR1cm4gQFN0cmluZyhvYmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0
aW9uKG9iaikKQEAgLTExNSw3ICsxMTEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2Fs
bChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0
LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3Ry
aW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRl
ZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0
ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhv
c3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
MTM2LDcgKzEzMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNl
T2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVj
dCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewogICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3
aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMTk5LDcgKzE5NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAKICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgd2Fz
VGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVh
dGUoZnVuYy5hcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0
dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQorICAgICAgICAgICAgICAgIHJlc3VsdDogUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVj
dEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAgICAgICAgICAg
fTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0
ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7CkBAIC0zMDksNyArMzA1LDcgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IHJlc3Vs
dCA9IFtdOwogICAgICAgICBsZXQgZGVwdGggPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywg
Y2FsbEZyYW1lKSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgbmV3IEluamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOwogICAgICAgICAgICAg
Y2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1l
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNiw3ICszMjIsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHdyYXBKU09OU3RyaW5nKGpzb25T
dHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoSlNPTi5wYXJzZShqc29uU3RyaW5n
KSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgcmV0dXJu
IHRoaXMud3JhcE9iamVjdChAanNvblBhcnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUs
IGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAgICAgICAgIH0KQEAgLTM0OCw3ICszNDQsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1
YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKICAgICAgICAgICAgIGNvbHVtbk5hbWVzID0g
W107CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7
CisgICAgICAgICAgICAgICAgQGFycmF5UHVzaChjb2x1bW5OYW1lcywgdG9TdHJpbmcoY29sdW1u
c1tpXSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUo
dGFibGUsICJjb25zb2xlIiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKQEAgLTQyOSwxMSAr
NDI1LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAg
ICAgIHJldHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAgIH0KIAotICAgIGluamVjdE1vZHVs
ZShuYW1lLCBzb3VyY2UsIGhvc3QpCisgICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0
aW9uLCBob3N0KQogICAgIHsKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOwog
Ci0gICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0
ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwogICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1bmN0aW9u
ICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5zcGVjdG9y
OiBhIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxlIjsKICAgICAgICAgbW9k
dWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGlu
amVjdGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgaG9z
dCk7CkBAIC00NzMsNyArNDY4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBncm91cCA9IFtdOwogICAgICAgICAgICAgICAgIHRo
aXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0gZ3JvdXA7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBncm91cC5wdXNoKGlkKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZ3Jv
dXAsIGlkKTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbaWRdID0gb2Jq
ZWN0R3JvdXBOYW1lOwogICAgICAgICB9CiAKQEAgLTUxNSw3ICs1MTAsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuIHJlc29s
dmVkQXJnOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAg
cmV0dXJuIEB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93blZhbHVlKHZhbHVl
LCBvYmplY3RHcm91cCkKQEAgLTYyMiw3ICs2MTcsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBS
ZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFs
c2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICBpZiAoInN5bWJvbCIgaW4gZGVzY3Jp
cHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnN5bWJvbCA9IFJlbW90ZU9iamVjdC5j
cmVhdGUoZGVzY3JpcHRvci5zeW1ib2wsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAgICAgICAgICBk
ZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNj
cmlwdG9ycywgZGVzY3JpcHRvcik7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYg
Y291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAh
PT0gIl9fcHJvdG9fXyIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAgLTY0NCw3ICs2MzksNyBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3Ig
PSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZhbHVlfTsKICAgICAgICAg
ICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5p
c093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOwor
ICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KQEAgLTY1NCwxMCArNjQ5LDEw
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlm
IChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09PSAicHJveHkiKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IFNldDsKKyAg
ICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAogICAgICAgICAvLyBIYW5kbGVk
IGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKCJf
X3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsKIAog
ICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwg
ZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQog
ICAgICAgICB7CkBAIC02NzgsNyArNjczLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAgICAgICAg
ICAgICAgICBmYWtlRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAgICAgICAg
Ly8gU2lsZW5jZSBhbnkgcG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlvbnMgY3Jl
YXRlZCBmcm9tIGFjY2Vzc2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3JvbmcgdGhpcyBv
YmplY3QuCi0gICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNl
b2YgUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0
aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAg
ICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlzZSAmJiBJbmplY3Rl
ZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZh
a2VEZXNjcmlwdG9yLnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iu
dmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFrZURl
c2NyaXB0b3I7CiAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CkBAIC03MTAsMTUgKzcwNSwxNSBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1
bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUp
KQorICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNv
bnRpbnVlOwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAg
ICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBz
eW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAot
ICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmpl
Y3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNj
cmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRv
IHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzIyLDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChT
dHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFk
ZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVz
Y3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUg
Y29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuQGhhc093blByb3Bl
cnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5AaGFzT3duUHJvcGVy
dHkoInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9wZXJzIG1heSBjcmVh
dGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGllbnQ6CiAgICAgICAg
ICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCAicCIs
IHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeCwgInAi
KQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVhdGVGYWtlVmFs
dWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgdHJ1
ZSk7CkBAIC03NDUsMTAgKzc0MCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNlOwogICAgICAgICB0
cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmpl
Y3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5n
dGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShv
YmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3Qu
bGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBmb3IgKGxldCBvID0g
b2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKKyAg
ICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gQE9iamVjdC5AZ2V0
UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBpc093blByb3BlcnR5ID0gbyA9PT0g
b2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7CiAKQEAgLTc2NCw3
ICs3NTksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVz
ID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWVzW2ld
LCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1
bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAgLTc3Niw4
ICs3NzEsOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewotICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8p
OworICAgICAgICAgICAgaWYgKEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9scykgeworICAg
ICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0
eVN5bWJvbHMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0
eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwog
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3Jp
cHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtODA1LDE0ICs4MDAsMTMgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIGxldCBl
bnRyaWVzID0gW107CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0
aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAg
ICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Yg
QGJ1aWx0aW5JdGVyYXRvcihvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+
IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7dmFsdWV9
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmllcywge3ZhbHVlfSk7CiAKICAgICAgICAg
ICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtODI1LDE0ICs4MTksMTMgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIGxldCBlbnRyaWVzID0g
W107CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBv
dmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxl
dCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVl
XSBvZiBAYnVpbHRpbkl0ZXJhdG9yKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0
YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtr
ZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIHtrZXksIHZhbHVl
fSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBm
ZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs4NjksMTAgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAg
IHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5k
ZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVm
aW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOwor
ICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5AaW5kZXhPZihy
ZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtOTAxLDggKzg5NCw4IEBAIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0g
ewogfTsKIAogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250
aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAorICAg
IENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBTdG9wOiBA
Y3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIpLAogfQogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBu
ZXcgSW5qZWN0ZWRTY3JpcHQ7CkBAIC05NjIsNyArOTU1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMu
X2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dl
bmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAg
ICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRl
ZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTg2LDcgKzk3OSw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBj
cmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1u
TmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVj
dCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7
CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5k
ZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlm
IChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxl
YXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmpl
Y3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElk
KQpAQCAtMTAxMSw3ICsxMDA0LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogCiAgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAm
JiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5z
cGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAgLTEwNjks
NiArMTA2Miw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAg
IHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IDx3ZWJr
aXQub3JnL2IvIyMjIyMjPiBgUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3YCBzaG91bGQgc2hvdWxk
IHVzZSBXZWJDb3JlIGJ1aWx0aW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUu
b3duZXJEb2N1bWVudCAmJiAhIW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAg
ICBsZXQgbm9kZU5hbWUgPSBpc1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKIApAQCAtMTE0Miw4ICsxMTM2LDggQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3Vu
dCA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMubGVuZ3RoIDogMDsKIAogICAgICAg
ICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50
KSwKLSAgICAgICAgICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRo
Lm1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCkKKyAgICAgICAgICAgIHByb3BlcnRpZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiAoNSA+IGZpcnN0TGV2ZWxLZXlzQ291bnQgPyA1IDog
Zmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICAgICBpbmRleGVzOiBpc1RhYmxlUm93c1Jl
cXVlc3QgPyAxMDAwIDogKDEwID4gZmlyc3RMZXZlbEtleXNDb3VudCA/IDEwIDogZmlyc3RMZXZl
bEtleXNDb3VudCksCiAgICAgICAgIH07CiAKICAgICAgICAgdHJ5IHsKQEAgLTExOTAsOSArMTE4
NCw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYg
KG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90
b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2Rz
IHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9y
LnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5j
b25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1
ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZh
bHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRv
ci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRl
c2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAg
cHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyAr
MTIwMyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmls
dGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGlu
ZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExl
dmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFm
aXJzdExldmVsS2V5cy5AaW5jbHVkZXMobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlv
biBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3LDcgKzEyMjEsNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwp
CiAgICAgICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAg
ICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKHByZXZpZXcucHJvcGVydGllcywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIApA
QCAtMTMxMyw3ICsxMzA3LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUp
IHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAgICBlbnRyaWVzLkBwb3Ao
KTsKICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzEzMTcsNyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRy
aWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRy
aWVzID0gZW50cmllcy5AbWFwKGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgICBlbnRyeS52
YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkudmFs
dWUsIGVudHJ5LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAgICAgdXBkYXRlTWFpblByZXZp
ZXcoZW50cnkudmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KSB7CkBAIC0x
MzM2LDggKzEzMzAsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAK
ICAgICBfaXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsKLSAgICAgICAg
bGV0IHNldCA9IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAgICAgICAgbGV0
IHNldCA9IG5ldyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAgICAgICAgIHJl
dHVybiB0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNldCwgMSk7CiAg
ICAgfQpAQCAtMTM1NywxMSArMTM1MSwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBDeWNsaWMg
b2JqZWN0cy4KLSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAg
aWYgKGtub3duT2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOwor
ICAgICAgICBrbm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAgICAgICAgIC8vIEFycmF5cyBh
cmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCiAgICAgICAg
IGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAgLTEzODEsMTIg
KzEzNzUsMTMgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0
aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgICAgICBsZXQg
b3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cisg
ICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QpOwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBNQVJLOiBbUENBXSBXZSBhcmUgaXRl
cmF0aW5nIG92ZXIgYW4gYXJyYXkgaGVyZS4KICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAm
JiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2Jq
ZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTUwNiw4ICsxNTAx
LDggQEAgQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OwogCiBDb21tYW5kTGluZUFQSS5tZXRo
b2RzID0ge307CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9i
amVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVz
KG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihv
YmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkB2
YWx1ZXMob2JqZWN0KTsgfTsKIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5j
ZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFu
Y2VzKC4uLmFyZ3VtZW50cyk7IH07CiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVj
dHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFu
Y2VzKC4uLmFyZ3VtZW50cyk7IH07CkBAIC0xNTQ2LDQgKzE1NDEsNCBAQCBmb3IgKGxldCBuYW1l
IGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tu
YW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsg
IigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7
Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1
YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEz
YmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlcnJvci5p
c1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJy
b3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBl
Y3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWls
dGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5saW5lKCksICIuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0
NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJk
ZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFy
cmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
b3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJy
YXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFy
cmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVh
M2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4
MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJh
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5j
bHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5h
bWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRl
eE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwg
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNO
YW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uOTlm
NGY3OTQxMWJjYWNiMzllYTQwMWQ5MjhiNzc5ZWMxMDAxNDlkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4
IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQ
cml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvIGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7Cit9CisKICNpZiBB
U1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENhbGwsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0x
MDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlz
ZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdD
b25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0
cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMs
IHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRl
cigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsK
ICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJv
clR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09OIGhlbHBl
cnMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCks
IGpzb25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5naWZ5KSk7CisgICAgICAgIH0p
OworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBhMGFhZWQzNDc4N2FmNjZhNGVjMjgzMmNiNzg0N2ZhZjI4YTRmYTliLi40Y2FhNmRjOTQwZTE4
NzUyZTdjZDQ2Njk3NWM3M2E0ZjliOWM1NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTk2LDYgKzk2LDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CiBjbGFzcyBKU01v
ZHVsZUxvYWRlcjsKIGNsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgSlNPTk9iamVjdDsKIGNs
YXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOwogY2xhc3MgSlNQcm9t
aXNlUHJvdG90eXBlOwpAQCAtMTI0LDYgKzEyNSw3IEBAIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90
eXBlOwogY2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJj
ZU9yaWdpbjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBBY3Rp
dmF0aW9uU3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMiw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJh
cnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0cnVjdG9yPiBt
X3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJ
bnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNm
OWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLjM2NWEyNzBlZjMzZmNjZTM0ZThh
MjFjNmU5OGI5MzM1NGRhODQ4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDE0IEBAIHZvaWQgT2Jq
ZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9m
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0
T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZh
dGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yQ3Jl
YXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Mik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JWYWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKwogICAgIGlmIChPcHRpb25zOjp1c2VIYXNPd24oKSkKICAgICAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFz
T3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggZTIxMzRhMGZlNDg5NmIyMDEw
NDdhM2I0MjdiNzE4NGMxM2E4OGU1ZC4uNDNkMDBmM2YyOGJjNjBiZGNjYzMyYTAzNGVlNGM1MGNj
OTFiODIyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCkBAIC02OCw2ICs2OCw4IEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19k
ZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19sb29rdXBH
ZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19sb29rdXBTZXR0ZXJf
Xywgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNP
d25Qcm9wZXJ0eVByaXZhdGVOYW1lKCksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiB9
CiAKIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZmEwNGI3ZWNlYmJlODNmN2Q3MjQ3OTM0Yzk4OGRlZjRmZmMxYzhjYS4u
NzkyYTY3MDE2MjdjMWVhM2M4OWJkZWE1YzhjZjNiMjJjZmNkZGVmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMjksMTggKzIxMjksNiBAQCBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2Vi
Q29yZSkKIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlVGVzdFN1cHBvcnQpCiBXRUJL
SVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKIAotIyBHZW5lcmF0ZSBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5taW4uanMKLSAgICBNQUlOX0RFUEVOREVOQ1kgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94
eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01NQU5E
ICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0
X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7
UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5
IDwgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
ID4+ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaAotICAgIFZFUkJBVElNKQotbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oKQot
Ci0KIE1BS0VfSEFTSF9UT09MUygke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9Db2xvckRhdGEpCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbG9yRGF0YS5jcHApCiAKQEAgLTIzNTIsNiArMjM0MCw3IEBAIHNldChXZWJDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke1dFQkNPUkVfRElSfS9kb20vVGV4dERlY29kZXJTdHJlYW0uanMK
ICAgICAke1dFQkNPUkVfRElSfS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMKICAgICAke1dFQkNP
UkVfRElSfS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMKKyAgICAke1dFQkNP
UkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKICkKIAogc2V0
KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGEzZDY4YWRmZTEzMWM0ODdjNzljYzRjMmFm
MWM4YTg2ZTcwODEyYjkuLjk1M2I3MWExMjEzZTIyODlmNzYzYTRiMzhkNTY3YjFhZWI4YzE2Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CkBAIC04LDcgKzgsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0
YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZUJ1
aWx0aW5zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0
aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50
UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNl
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgw
ZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0
OTZmOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTks
NiBAQCBpZm5lcSAoJChOT19TVVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RP
TV9IRUFERVJTOi5oPS5kZXApCiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFs
bCA6IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCA6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCi0JZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzIiA+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQo
UFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLm1pbi5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxF
VEUpIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVp
bHRpbnMKIAogV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcg
QEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRE
ZWNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5q
cyBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMg
XAorICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
IFwKICMKIAogQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjNlZGJiMTQ3ZTc0
ZTM2YTk5NTRmZjdjMjY5Nzg1MWZlODMwMDZiYS4uNzQ5MTVjNmJjZGIwY2QxMzA4MDU3Zjc5OTgx
MmM3NjE0MTgyYWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODk5LDYgKzg5OSw3IEBACiAJCTJFMzAxQkU4Mjc0NTk0NzIw
MEMwNTY0RiAvKiBDb21waWxlZFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ1MTA3NzIwMkM3RTAxMDA2NTdEMzMgLyogQ29tcGlsZWRT
ZWxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdERkQ4MTJEQkFGQjgwMEE2QjIzMyAv
KiBET01VUkwuaCAqLzsgfTsKIAkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJM
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3RTAw
NDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLzsgfTsKKwkJMkUzQUVGRkIyODA5RjEx
RDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0FFRkY5MjgwOUYxMTkw
MDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovOyB9Owog
CQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM3MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS5oICovOyB9OwpAQCAtMzUxNyw3ICszNTE4LDYgQEAKIAkJQTU3OEY0M0YxREUwQjYzMDAw
M0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDNFMURFMEI2MkIwMDNERkM2QSAvKiBSZWpl
Y3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTU4MUVEMTMxRkIyODhDRjAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4
MUVEMTAxRkIyODhDODAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oICovOyB9OwogCQlB
NTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0MEUyMzE4N0I4QUMy
MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07Ci0JCUE1ODRGRTI2MTg2
MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RBQjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi87IH07CiAJCUE1ODRGRTJDMTg2
Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi87IH07CiAJCUE1ODRGRTMwMTg2NENCODQwMDg0M0Ix
MCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKIAkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU4NEZFMzIxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9z
dC5oICovOyB9OwpAQCAtODIwNCw2ICs4MjA0LDggQEAKIAkJMkUzN0RGRDkxMkRCQUZCODAwQTZC
MjMzIC8qIERPTVVSTC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NVVJMLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDMxMkRCQzVBNDAwQTZCMjMzIC8qIEpT
RE9NVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVVJM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDQxMkRCQzVBNDAwQTZC
MjMzIC8qIEpTRE9NVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9N
VVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FFRkY5MjgwOUYxMTkwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyRTNB
RUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlu
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0
aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
OTQwLDcgKzEzOTQyLDYgQEAKIAkJQTU4MUVEMTIxRkIyODhDOTAwQ0VENEVDIC8qIFNlcnZpY2VX
b3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUy
MjE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBX
ZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1
ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyNzE4NjM3RENBMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQyOCw3ICsyMDQyOSw2IEBACiAJCTFDNUZBRUNB
MERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUE1ODRGRTM5MTg2NEUyRDgwMDg0M0IxMCAv
KiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCiAJCQkJQTU4NEZFM0ExODY0RTJEODAwODQz
QjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmggKi8sCiAJCQkJOTE3NUNFNTkyMUUyODFFQzAw
REYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLywKQEAg
LTIzNTg1LDYgKzIzNTg1LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FE
MDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJ
CQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8sCisJCQkJMkUz
QUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRp
bnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1
IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY3MUJD
QUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJ
RTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovLApAQCAt
MzQwODMsNyArMzQwODUsNyBAQAogCQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAvKiBDb21i
aW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTJD
MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1
MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OUM2OUQwMjgxMEQxMUQwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAwNzY1NTM2IC8qIENvbW1vbkNyeXB0b0RFUlV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNjNlYTdmYWFmNTlkZDc3OTQwMjkzNDQ2MzM4ZmE4
YjIyODM1NWZhNS4uNTU1ZGU0OTJlN2MyNTAwODY1N2I3NDQyZjk0OTNlZGJmYWM1YzEyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApA
QCAtMjQ2LDYgKzI0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhOYXZpZ2F0
b3JNZWRpYURldmljZXMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JQZXJtaXNzaW9ucykgXAogICAg
IG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAorICAgIG1hY3JvKE5vZGUpIFwKICAgICBtYWNy
byhOb3RpZmljYXRpb24pIFwKICAgICBtYWNybyhOb3RpZmljYXRpb25FdmVudCkgXAogICAgIG1h
Y3JvKE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCkgXApAQCAtNDIwLDYgKzQyMSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhYUldlYkdMTGF5ZXIpIFwKICAgICBtYWNybyhh
Ym9ydEFsZ29yaXRobSkgXAogICAgIG1hY3JvKGFib3J0U3RlcHMpIFwKKyAgICBtYWNybyhhZGRF
dmVudExpc3RlbmVyKSBcCiAgICAgbWFjcm8oYXBwZW5kRnJvbUpTKSBcCiAgICAgbWFjcm8oYXNz
b2NpYXRlZFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpIFwKICAgICBtYWNybyhhdXRvQWxs
b2NhdGVDaHVua1NpemUpIFwKQEAgLTQ1OSw2ICs0NjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8oZW5jb2RlKSBcCiAgICAgbWFjcm8oZW5jb2RpbmcpIFwKICAgICBtYWNybyhl
cnJvclN0ZXBzKSBcCisgICAgbWFjcm8oZXZhbHVhdGUpIFwKICAgICBtYWNybyhmYWlsdXJlS2lu
ZCkgXAogICAgIG1hY3JvKGZhdGFsKSBcCiAgICAgbWFjcm8oZmV0Y2gpIFwKQEAgLTQ2OSw2ICs0
NzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oZmx1c2hBbGdvcml0aG0pIFwK
ICAgICBtYWNybyhmb2N1cykgXAogICAgIG1hY3JvKGZyYW1lcykgXAorICAgIG1hY3JvKGdldEVs
ZW1lbnRCeUlkKSBcCiAgICAgbWFjcm8oZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbSkgXAogICAg
IG1hY3JvKGdldFRyYWNrcykgXAogICAgIG1hY3JvKGdldFVzZXJNZWRpYSkgXApAQCAtNDg4LDYg
KzQ5Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhpc0Rpc3R1cmJlZCkgXAog
ICAgIG1hY3JvKGlzTG9hZGluZykgXAogICAgIG1hY3JvKGlzU2VjdXJlQ29udGV4dCkgXAorICAg
IG1hY3JvKGl0ZXJhdGVOZXh0KSBcCiAgICAgbWFjcm8oa2luZCkgXAogICAgIG1hY3JvKGxhbmd1
YWdlKSBcCiAgICAgbWFjcm8obG9jYWxTdHJlYW1zKSBcCkBAIC01MTgsNiArNTIzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKG9wZW5EYXRhYmFzZSkgXAogICAgIG1hY3JvKG9w
ZW5lcikgXAogICAgIG1hY3JvKG9wZXJhdGlvbnMpIFwKKyAgICBtYWNybyhvdXRlckhUTUwpIFwK
ICAgICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8ocGFyZW50KSBcCiAg
ICAgbWFjcm8ocGVuZGluZ1B1bGxJbnRvcykgXApAQCAtNTI3LDYgKzUzMyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhwdWxsQWdhaW4pIFwKICAgICBtYWNybyhwdWxsQWxnb3Jp
dGhtKSBcCiAgICAgbWFjcm8ocHVsbGluZykgXAorICAgIG1hY3JvKHF1ZXJ5U2VsZWN0b3IpIFwK
KyAgICBtYWNybyhxdWVyeVNlbGVjdG9yQWxsKSBcCiAgICAgbWFjcm8ocXVldWUpIFwKICAgICBt
YWNybyhxdWV1ZWRBZGRJY2VDYW5kaWRhdGUpIFwKICAgICBtYWNybyhxdWV1ZWRDcmVhdGVBbnN3
ZXIpIFwKQEAgLTU0MSw2ICs1NDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
cmVhZGVyKSBcCiAgICAgbWFjcm8ocmVhZHlQcm9taXNlKSBcCiAgICAgbWFjcm8ocmVhZHlQcm9t
aXNlQ2FwYWJpbGl0eSkgXAorICAgIG1hY3JvKHJlbW92ZUV2ZW50TGlzdGVuZXIpIFwKICAgICBt
YWNybyhyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIFwKICAgICBtYWNybyhyZXF1ZXN0SWRsZUNhbGxi
YWNrKSBcCiAgICAgbWFjcm8ocmVzcG9uc2UpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjNhZTBhMDgyMzI4OTMzMDA1
YzQxZDYwMWM1NTU3MWYxMWMwYWQzMi4uZmYwNDdkZWZhNWM5YjcxZDcwMzE1ODNkYzY4MGYwMDlk
ZTAwNDMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTQ3NzksNyArNDc3OSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSkgewogICAgICAgICBuZXh0IGlmIE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOwogICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn07Ci0gICAgICAgIG5leHQgdW5sZXNzIEF0dHJpYnV0
ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKworICAgICAgICAj
IENFUmVhY3Rpb25zIGF0dHJpYnV0ZXMgc2hvdWxkIHN0aWxsIGJlIGFsbG93ZWQgdG8gaGF2ZSBh
IFByaXZhdGVJZGVudGlmaWVyIGZvciB0aGVpciBnZXR0ZXIuCisgICAgICAgIGlmIChub3QgJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7CisgICAgICAgICAg
ICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgIH0KIAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIik7CiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwpAQCAtNDc4
Nyw4ICs0NzkxLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRn
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpOwogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIGFzc2VydCgiQ3Vz
dG9tR2V0dGVyU2V0dGVyIGlzIG5vdCBhbGxvd2VkIGZvciBET01BdHRyaWJ1dGUuIERPTUF0dHJp
YnV0ZUdldHRlclNldHRlciBtdXN0IGJlIHVzZWQuIikgaWYgSXNBY2NlbGVyYXRlZERPTUF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIGJ1aWx0aW5OYW1lcyh2bSkuIiAuICRh
dHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCAkZ2V0dGVyLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpKTtcbiIpOworICAgICAgICBpZiAoSXNBY2NlbGVyYXRlZERPTUF0dHJpYnV0ZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKSkgeworICAgICAgICAgICAgbXkgJGNsYXNzRm9yVGhpcyA9ICIke2Ns
YXNzTmFtZX06OmluZm8oKSI7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBw
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgYnVpbHRpbk5hbWVzKHZtKS4iIC4gJGF0dHJpYnV0
ZU5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNDOjpET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgJGdldHRlciwgbnVsbHB0ciwgSlNDOjpET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsg
JGNsYXNzRm9yVGhpcywgbnVsbHB0ciB9KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpKTtcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIGJ1aWx0aW5OYW1lcyh2bSku
IiAuICRhdHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCAkZ2V0dGVyLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTtcbiIpOworICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudCtET01QYXJzaW5nLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCmluZGV4IGZjMTFmZTc5M2FjMmM5ODZlOTY3NmYz
ODFhODc3YTIxNGZmYTA3ZGEuLmFmNDQ2NTI3ZWEwMGY2NjFiMTZlOTg0ZDgyZDAyZGY5MDk3MzFj
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsCkBAIC0yNSw2
ICsyNSw2IEBACiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9ET00tUGFyc2luZy8jZXh0ZW5z
aW9ucy10by10aGUtZWxlbWVudC1pbnRlcmZhY2UKIHBhcnRpYWwgaW50ZXJmYWNlIEVsZW1lbnQg
ewotICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIG91dGVySFRNTDsKKyAgICBbQ0VSZWFjdGlvbnMsIFByaXZhdGVJZGVudGlmaWVy
LCBQdWJsaWNJZGVudGlmaWVyXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBE
T01TdHJpbmcgb3V0ZXJIVE1MOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIGluc2VydEFk
amFjZW50SFRNTChET01TdHJpbmcgcG9zaXRpb24sIERPTVN0cmluZyB0ZXh0KTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCAzYzMyNjRiNmUyZWJmYWRiNjI4NGVkZTNlYWIw
MTY4MGY3NTNkNmM2Li5kNGIwYjM3MGRlMjE2ODcyYjlmMThkNTUxYzM4OGNkM2U0NDIwOTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKIF0gaW50ZXJm
YWNlIEV2ZW50VGFyZ2V0IHsKICAgICBbQ2FsbFdpdGg9Q3VycmVudFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIGNvbnN0cnVjdG9yKCk7CiAKLSAgICBbSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3Rl
bmVyRm9yQmluZGluZ3NdIHVuZGVmaW5lZCBhZGRFdmVudExpc3RlbmVyKFtBdG9tU3RyaW5nXSBE
T01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIChBZGRFdmVu
dExpc3RlbmVyT3B0aW9ucyBvciBib29sZWFuKSBvcHRpb25zID0gZmFsc2UpOwotICAgIFtJbXBs
ZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nc10gdW5kZWZpbmVkIHJlbW92
ZUV2ZW50TGlzdGVuZXIoW0F0b21TdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVy
PyBsaXN0ZW5lciwgb3B0aW9uYWwgKEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9w
dGlvbnMgPSBmYWxzZSk7CisgICAgW0ltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJp
bmRpbmdzLCBQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gdW5kZWZpbmVkIGFk
ZEV2ZW50TGlzdGVuZXIoW0F0b21TdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVy
PyBsaXN0ZW5lciwgb3B0aW9uYWwgKEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4p
IG9wdGlvbnMgPSBmYWxzZSk7CisgICAgW0ltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0ZW5l
ckZvckJpbmRpbmdzLCBQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gdW5kZWZp
bmVkIHJlbW92ZUV2ZW50TGlzdGVuZXIoW0F0b21TdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVu
dExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgKEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJv
b2xlYW4pIG9wdGlvbnMgPSBmYWxzZSk7CiAgICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVu
dEZvckJpbmRpbmdzXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbAppbmRleCA5ZTQ0ZDI4ZDdiNmRiNzZlMzQ3ODFmN2YyNDJhNWE3OGNhZDc5YjZl
Li43MzZiMTE0ZTliZTcyNTNkNzk0MmFmYTJhY2NhODYwMDQ2OTlkMGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aWRsCkBAIC0yNiw2ICsyNiw4IEBACiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAg
ICAgSlNDdXN0b21IZWFkZXIsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgUHJpdmF0
ZUlkZW50aWZpZXIsCisgICAgUHVibGljSWRlbnRpZmllciwKICAgICBFeHBvc2VkPVdpbmRvdwog
XSBpbnRlcmZhY2UgTm9kZSA6IEV2ZW50VGFyZ2V0IHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBFTEVNRU5UX05PREUgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vbkVs
ZW1lbnRQYXJlbnROb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob25FbGVtZW50UGFyZW50
Tm9kZS5pZGwKaW5kZXggNDA3NzcwNjdhNWU0YWRmZTNmODhkNTgxNWQyYThmODNjOWUxMDM0Yi4u
M2MwMTg0MzZkYWI5MmRiYmJjNjNlM2QwNmU1OWM1MzE2ZTA5NzNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9uRWxlbWVudFBhcmVudE5vZGUuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiAKIC8v
IGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmVsZW1lbnRwYXJlbnRu
b2RlCiBpbnRlcmZhY2UgbWl4aW4gTm9uRWxlbWVudFBhcmVudE5vZGUgewotICAgIFtET01KSVQ9
UmVhZERPTV0gRWxlbWVudD8gZ2V0RWxlbWVudEJ5SWQoW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKKyAgICBbRE9NSklUPVJlYWRET00sIFByaXZhdGVJ
ZGVudGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVx
dWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9QYXJlbnROb2RlLmlkbAppbmRleCBhMDRkZTM4OGRmOTZmYzJmYzllYzhlYWYyNmE1YTUx
MjA2YzA0MjcxLi5iODExOGVjMzRiYTYwMmYzMjY5Nzg0NWE0MWYyZjBkODExNzk1YzViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCkBAIC0zNSw2ICszNSw2IEBAIGludGVyZmFjZSBtaXhp
biBQYXJlbnROb2RlIHsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCBh
cHBlbmQoKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAgICAgW0NFUmVhY3Rpb25zLCBV
bnNjb3BhYmxlXSB1bmRlZmluZWQgcmVwbGFjZUNoaWxkcmVuKChOb2RlIG9yIERPTVN0cmluZyku
Li4gbm9kZXMpOwogCi0gICAgRWxlbWVudD8gcXVlcnlTZWxlY3RvcihET01TdHJpbmcgc2VsZWN0
b3JzKTsKLSAgICBbTmV3T2JqZWN0XSBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKERPTVN0cmlu
ZyBzZWxlY3RvcnMpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0g
RWxlbWVudD8gcXVlcnlTZWxlY3RvcihET01TdHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbTmV3T2Jq
ZWN0LCBQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gTm9kZUxpc3QgcXVlcnlT
ZWxlY3RvckFsbChET01TdHJpbmcgc2VsZWN0b3JzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAppbmRleCBkNzdjNzNkOGFlNDk1
MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5mNjZjMzQ0NDJmMTE2NzhkODEzNTA3MGY0ODBh
ZTc2ZGY5YjI2MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0NywxNCBAQCBDb21tYW5kTGluZUFQSU1vZHVs
ZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQogewogfQogCi1TdHJpbmcgQ29tbWFuZExpbmVBUElN
b2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6
aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMsIHNpemVvZihDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3
YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1h
bmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29t
bWFuZExpbmVBUElNb2R1bGU6Omhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAppbmRl
eCAyNzcxNmZjYTY3YTliYThjMmRlYmRlZGFjZjdmYzZiNDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNk
NGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21t
YW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TW9kdWxlIHsKIHB1YmxpYzoKICAgICBDb21tYW5kTGluZUFQSU1vZHVsZSgpOwogCi0gICAgU3Ry
aW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0
TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogICAg
IEpTQzo6SlNWYWx1ZSBob3N0KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlND
OjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5q
ZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKaW5kZXggZjUxZTM1MTljY2IxNzk2
MDkwYzMyNzRkNWIwYzM3YjI1OWQwZTNlYS4uMmQ1MGYwNTM4YzYzNjQ1ZWYyMDhlY2Y1ZjBiNjkw
NzJlMzhiOWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwxMCBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuanMKKy8vIEBpbnRlcm5hbAogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9z
dCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlw
dCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpIHsK
LQotLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6
IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRl
ZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKK2Z1bmN0aW9uIGluamVjdE1vZHVsZShJ
bmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJ
ZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFu
ZExpbmVBUElIb3N0KQorewogCiBpbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0
aW9uKG9iamVjdCkgewogICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNjQsMTgg
KzYzLDE4IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgewogCiAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOwog
ICAgIGlmIChzdWJ0eXBlID09PSAibm9kZSIpCi0gICAgICAgIHN0cmluZyA9IG9iamVjdC5vdXRl
ckhUTUw7CisgICAgICAgIHN0cmluZyA9IG9iamVjdC5Ab3V0ZXJIVE1MOwogICAgIGVsc2UgaWYg
KHN1YnR5cGUgPT09ICJyZWdleHAiKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAg
ICBlbHNlIGlmIChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCiAgICAg
ICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09
ICJzeW1ib2wiKQotICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5n
KG9iamVjdCk7CisgICAgICAgIHN0cmluZyA9IEBTdHJpbmcob2JqZWN0KTsKICAgICBlbHNlIGlm
ICh0eXBlb2Ygb2JqZWN0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9i
amVjdDsKICAgICBlbHNlIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHN0cmluZyA9IGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5KU09OLnN0cmluZ2lmeShvYmplY3QsIG51bGwsICIgICIpOwor
ICAgICAgICAgICAgc3RyaW5nID0gQGpzb25TdHJpbmdpZnkob2JqZWN0LCAiICAiKTsKICAgICAg
ICAgfSBjYXRjaCB7CiAgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICAgICAg
fQpAQCAtODksMjMgKzg4LDI4IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdldEV2ZW50TGlz
dGVuZXJzIl0gPSBmdW5jdGlvbih0YXJnZXQpIHsKIH07CiAKIGZ1bmN0aW9uIG5vcm1hbGl6ZUV2
ZW50VHlwZXModHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKKyAgICBpZiAo
dHlwZXMgPT09IEB1bmRlZmluZWQpCiAgICAgICAgIHR5cGVzID0gWyJtb3VzZSIsICJrZXkiLCAi
dG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rp
b24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNl
dCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVu
bG9hZCJdOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCiAgICAgICAg
IHR5cGVzID0gW3R5cGVzXTsKIAotICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICBsZXQgcmVzdWx0
ID0gbmV3IEBTZXQ7CisgICAgZnVuY3Rpb24gYWRkVHlwZXNUb1Jlc3VsdCh0eXBlcykgeworICAg
ICAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmF0b3IodHlwZXMpKQorICAgICAgICAg
ICAgcmVzdWx0LkBhZGQodHlwZSk7CisgICAgfQorCiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0
eXBlcy5sZW5ndGg7IGkrKykgewogICAgICAgICBpZiAodHlwZXNbaV0gPT09ICJtb3VzZSIpCi0g
ICAgICAgICAgICByZXN1bHQucHVzaCgiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vkb3duIiwg
Im1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1cCIsICJtb3VzZXdo
ZWVsIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJjbGljayIsICJkYmxjbGljayIs
ICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3Vz
ZXVwIiwgIm1vdXNld2hlZWwiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXki
KQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAi
LCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJrZXlkb3duIiwg
ImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOwogICAgICAgICBlbHNlIGlmICh0eXBl
c1tpXSA9PT0gInRvdWNoIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJ0b3VjaGNhbmNlbCIs
ICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOworICAgICAgICAgICAgYWRk
VHlwZXNUb1Jlc3VsdCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRv
dWNoc3RhcnQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKLSAg
ICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIs
ICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOworICAgICAg
ICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQi
LCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZXNbaV0pOworICAgICAgICAgICAg
cmVzdWx0LkBhZGQodHlwZXNbaV0pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
MTE2LDM4ICsxMjAsMzYgQEAgZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCiB9CiAKIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbIm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMp
IHsKLSAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVj
dC5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuQGFkZEV2
ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5AcmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0
dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBvYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgb2JqZWN0
LmFkZEV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChs
ZXQgdHlwZSBvZiBAYnVpbHRpbkl0ZXJhdG9yKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkg
eworICAgICAgICBvYmplY3QuQHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZh
bHNlKTsKKyAgICAgICAgb2JqZWN0LkBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBm
YWxzZSk7CiAgICAgfQogfTsKIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidW5tb25pdG9yRXZl
bnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7Ci0gICAgaWYgKCFvYmplY3QgfHwgIW9i
amVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKKyAg
ICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LkBhZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QuQHJl
bW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6
ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3Ro
OyArK2kpCi0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dF
dmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5JdGVyYXRvcihub3Jt
YWxpemVFdmVudFR5cGVzKHR5cGVzKSkpCisgICAgICAgIG9iamVjdC5AcmVtb3ZlRXZlbnRMaXN0
ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogfTsKIAotaWYgKGluc3BlY3RlZEdsb2JhbE9i
amVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgeworaWYgKGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQE5vZGUp
IHsKICAgICBmdW5jdGlvbiBjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKG5vZGUpIHsKLSAgICAgICAg
cmV0dXJuIG5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUobm9kZSkgPT09ICJub2Rl
IiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuRUxFTUVO
VF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlLkRP
Q1VNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5v
ZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7CisgICAgICAgIHJldHVybiBub2RlICYmIEluamVj
dGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG5vZGUpID09PSAibm9kZSIgJiYgKG5vZGUubm9kZVR5cGUg
PT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8gfHwgbm9kZS5ub2RlVHlwZSA9PT0gOSAvKiBO
b2RlLkRPQ1VNRU5UX05PREUgKi8gfHwgbm9kZS5ub2RlVHlwZSA9PT0gMTEgLyogTm9kZS5ET0NV
TUVOVF9GUkFHTUVOVF9OT0RFICovKTsKICAgICB9CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyIkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKICAgICAgICAgaWYgKGNhblF1
ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0LnF1ZXJ5
U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0LkBxdWVyeVNlbGVj
dG9yKHNlbGVjdG9yKTsKIAotICAgICAgICBsZXQgcmVzdWx0ID0gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICBsZXQgcmVzdWx0
ID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LkBxdWVyeVNlbGVjdG9yKHNlbGVjdG9y
KTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAg
ICAgICAgaWYgKHNlbGVjdG9yICYmIHNlbGVjdG9yWzBdICE9PSAiIyIpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChz
ZWxlY3Rvcik7CisgICAgICAgICAgICByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9j
dW1lbnQuQGdldEVsZW1lbnRCeUlkKHNlbGVjdG9yKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQp
IHsKICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKCJU
aGUgY29uc29sZSBmdW5jdGlvbiAkKCkgaGFzIGNoYW5nZWQgZnJvbSAkPWdldEVsZW1lbnRCeUlk
KGlkKSB0byAkPXF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLiBZb3UgbWlnaHQgdHJ5ICQoXCIjJXNc
IikiLCBzZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0xNTksMjYg
KzE2MSwyNiBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkJCJd
ID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CiAgICAgICAgIGlmIChjYW5RdWVyeVNlbGVj
dG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7Ci0gICAgICAg
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOworICAgICAgICAgICAg
cmV0dXJuIEBBcnJheS5AZnJvbShzdGFydC5AcXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwor
ICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dC5AcXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwogICAgIH07CiAKICAgICBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKICAgICAgICAg
bGV0IGRvYyA9IChjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCkgfHwgaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmRvY3VtZW50OwotICAgICAgICBsZXQgcmVzdWx0ID0gZG9jLmV2YWx1YXRl
KHhwYXRoLCBjb250ZXh0IHx8IGRvYywgbnVsbCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRo
UmVzdWx0LkFOWV9UWVBFLCBudWxsKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGRvYy5AZXZhbHVh
dGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBudWxsLCAwIC8qIFhQYXRoUmVzdWx0LkFOWV9UWVBF
ICovLCBudWxsKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQucmVzdWx0VHlwZSkgewotICAgICAg
ICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJlc3VsdC5OVU1CRVJfVFlQRToKKyAg
ICAgICAgY2FzZSAxIC8qIFhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFICovOgogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC5udW1iZXJWYWx1ZTsKLSAgICAgICAgY2FzZSBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEU6CisgICAgICAgIGNhc2UgMiAvKiBYUGF0aFJl
c3VsdC5TVFJJTkdfVFlQRSAqLzoKICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc3RyaW5nVmFs
dWU7Ci0gICAgICAgIGNhc2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVzdWx0LkJPT0xF
QU5fVFlQRToKKyAgICAgICAgY2FzZSAzIC8qIFhQYXRoUmVzdWx0LkJPT0xFQU5fVFlQRSAqLzoK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOwogICAgICAgICB9CiAKICAg
ICAgICAgbGV0IG5vZGVzID0gW107CiAgICAgICAgIGxldCBub2RlID0gbnVsbDsKLSAgICAgICAg
d2hpbGUgKG5vZGUgPSByZXN1bHQuaXRlcmF0ZU5leHQoKSkKLSAgICAgICAgICAgIG5vZGVzLnB1
c2gobm9kZSk7CisgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0LkBpdGVyYXRlTmV4dCgpKQor
ICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAgICAgICAgIHJldHVybiBub2Rl
czsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE4OCw0IEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKIGZvciAobGV0IG5h
bWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2Rz
W25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUg
KyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0pCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEV4cHJlc3Npb24uaWRsCmluZGV4IGVhN2IzMTQwZDY2YjE2YTVmMDlkOTRhMzMwYTcz
N2I3ZjRjZmQ1MTYuLmJmNzAyNGFkMjIwYjFiZmE0MmM2NTFjNzE5YjExNGRkMWMzZmQ3MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaWRsCkBAIC0yMiw1ICsyMiw1IEBACiAg
ICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJm
YWNlIFhQYXRoRXhwcmVzc2lvbiB7Ci0gICAgWFBhdGhSZXN1bHQgZXZhbHVhdGUoTm9kZSBjb250
ZXh0Tm9kZSwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRo
UmVzdWx0PyBpblJlc3VsdCA9IG51bGwpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGlj
SWRlbnRpZmllcl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUoTm9kZSBjb250ZXh0Tm9kZSwgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgdHlwZSA9IDAsIG9wdGlvbmFsIFhQYXRoUmVzdWx0PyBpblJlc3Vs
dCA9IG51bGwpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3Vs
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCmluZGV4IDA5NDQ1NzYy
YzgwYzRkNDE2YWQxNzQwYzRlNzJiODQzY2IyYzMzZjcuLmIxZWVhYjBlMTA5ZTg3YTZlMzM2M2Fk
NWY0NmIyMmZlNDZlOGIyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJl
c3VsdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbApAQCAtNDIs
NiArNDIsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGludmFsaWRJdGVyYXRv
clN0YXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNuYXBzaG90TGVu
Z3RoOwogCi0gICAgTm9kZSBpdGVyYXRlTmV4dCgpOworICAgIFtQcml2YXRlSWRlbnRpZmllciwg
UHVibGljSWRlbnRpZmllcl0gTm9kZSBpdGVyYXRlTmV4dCgpOwogICAgIE5vZGUgc25hcHNob3RJ
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNzI2NzNlZGIxOGUxNTQ3YmEz
MzUwNDYwMDMzMTE3ZmEwNjUxOTFmLi4xMWYyODc5MjBjYTNhM2M0OTMwNmVmNTdiNDcyZTg1OTJl
Zjc3NTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjMgIFBhdHJpY2sgQW5nbGUg
IDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVj
dGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXIt
b3ZlcnJpZGVuIGJ1aWx0LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUyMjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlw
dHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9w
YXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9k
ZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNC0yMyAgQW5kcmVz
IEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQVggSVRNOiBUYWJs
ZSByb3cgb2JqZWN0cyBzaG91bGQgcmV0dXJuIGEgbm9uLW51bGwgdW5pZ25vcmVkIHBhcmVudCBl
dmVuIHdoZW4gYSB0YWJsZSBvYmplY3QgaXMgbm90IGZvdW5kIGluIGl0cyBhbmNlc3RyeS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJu
YWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
cGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxZWIxNTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2Jq
ZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBN
RVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVj
a2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBl
bmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMKLS0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
ZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZAotRVhQUkVTU0lPTjog
c2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCi1TVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVz
dW1lCi1QQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
Zzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRp
b24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlv
biBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4
ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2co
Y29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0KLUFDVElP
Tjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxz
Y3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcg
ICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0g
ICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNv
bGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzoxMDo1Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29s
ZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29s
ZS5sb2cod2luZG93KTsKLSAtPiAgIDkgICAgICAgIHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAg
ICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAx
MgotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMTo1Ci0gICAg
ICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7
Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAgMTAgICAgICAgIHxj
b25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKLSAgICAgMTMgICAg
Ly8gLS0tLS0tLS0tCi0KLUFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9n
OjEyOjIKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAg
ICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJp
bmciKTsKLSAtPiAgMTEgICAgfXwKLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0g
ICAgIDE0Ci0KLUFDVElPTjogcmVzdW1lCi1SRVNVTUVECi1QQVNTOiBTaG91bGQgaGF2ZSB1c2Vk
IGFsbCBzdGVwcy4KLQotLS0gUnVubmluZyB0ZXN0IHNldHVwLgotLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQKLUVYUFJFU1NJ
T046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQotU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4s
IHJlc3VtZQotUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNv
bGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxv
Y2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVu
Y3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAg
ICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUu
bG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotCi1B
Q1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAg
ICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAg
ICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cp
OwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBj
b25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1Q
QVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAg
NiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dl
cjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAg
Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5n
Iik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNv
bGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRy
eUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAg
IGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29s
ZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0K
LQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAg
NSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0g
ICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiByZXN1bWUK
LVJFU1VNRUQKLVBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgotLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMTY4YTcyNTRjZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1w
YXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gZW50cnlDb25z
b2xlTG9nKCkgewotICAgIGRlYnVnZ2VyOwotICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAg
Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgY29uc29sZS5sb2coInN0cmluZyIpOwotfQotCi0v
LyAtLS0tLS0tLS0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2Ny
aXB0cyIpOwotCi0gICAgd2luZG93LmluaXRpYWxpemVTdGVwcGluZ1Rlc3RTdWl0ZShzdWl0ZSk7
Ci0KLSAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246
ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMg
d2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNz
aW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAgLy8gQ2FsbCBvdXQg
ZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdh
aXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KLSAg
ICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VG
b3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9LAotICAgICAgICBzdGVwczogWwotICAgICAgICAg
ICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykK
LSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAg
ICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKCJzdHJpbmciKQotICAgICAgICAgICAgInJlc3Vt
ZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQotICAgIGFkZFN0ZXBwaW5nVGVzdENhc2UoewotICAg
ICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZCIs
Ci0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBvdmVyIGNvbnNv
bGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4i
LAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAg
ICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMg
bm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZp
YSB0aGUgc2V0dGluZy4KLSAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVn
Z2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCi0gICAgICAgIHRl
YXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgICJv
dmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAg
ICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93
KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxv
Zyh3aW5kb3cpXQotICAgICAgICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQot
ICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKLSAgICAgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cg
Y2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0ku
c2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2Vk
LWV4cGVjdGVkLnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYw
MTg4Li42M2E2ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVj
dGVkLnR4dApAQCAtOSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0
LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hv
dWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBT
aG91bGQgZmluZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29t
bWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1
bmV4cGVjdGVkIHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zY3JpcHRQYXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQx
MzU0OWQ5YTVmLi5kNjc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBA
IC0xOSwxNCArMTksMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2Ny
aXB0PiAodGhpcykgc3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9u
bG9hZCBldmVudCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAv
LyAgIC0gZXZhbCBzb3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBp
bnRlcm5hbCBzY3JpcHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAg
IGxldCBmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElu
bGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRF
dmFsU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3Jp
cHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZh
bHNlOwogICAgIGxldCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0
aW9uIGlzRXh0ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFy
YW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJl
bG93LgorICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3Rh
cnRMaW5lID49IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gaXNFdmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNv
dXJjZVVSTCA9PT0gImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRT
Y3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNl
VVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5l
bmRzV2l0aCgiLmpzIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNv
dXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5k
ZXhPZigiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAg
c3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5B
bmRDaGVja0luaXRpYWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
QEAgLTc5LDEwICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQo
cGFyYW1zKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNl
U2NyaXB0ICYmIGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNj
cmlwdCAmJiBpc0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2Nv
bFRlc3QubG9nKCJVTkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VP
YmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9
IHRydWU7CkBAIC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hv
dWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNj
cmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0
LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNj
cmlwdCwgIlNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91
bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3Vy
Y2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2Ny
aXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVu
ZXhwZWN0ZWRTY3JpcHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0
cy4iKTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4
dAppbmRleCBkNDQyMTdkMzYyZWE0ZjlhMjUyNjRhMGQ4YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJk
NTAzN2U1MmFlOTBjMjMzZjIyYjUzOTM5NmVlMWY4YWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQu
dHh0CkBAIC0zMSw3ICszMSw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgW10u
eC54OyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAg
Il9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJf
dmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZl
IGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxu
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1c
bl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVz
IjogbnVsbApAQCAtNzAsNyArNzAsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7
IGV2YWwoImlmKCkiKTsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7
CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAot
ICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAg
ICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0
ZVdpdGhTY29wZUXigKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRp
dmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC0xMDQs
NyArMTA0LDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiIikuc3BsaXRUZXh0KDEwMCk7IH0gY2EKICAgICAgIHsKICAgICAgICAgIl9u
YW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFs
dWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92
YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdp
dGhT4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVd
IgogICAgICAgfSwKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogImNvZGUiLApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50
eHQKaW5kZXggYmZjYWM5ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3YTM4NS4uZjkyNzBm
MGZhNDEwNGU0NjQyNzYwMzY5ZjFmNWE0NWQwYThlOWZjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC02
NCw4ICs2NCw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICAgICAiZnVu
Y3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAgICAg
InNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGluZU51bWJlciI6IDE0
MiwKLSAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgICAgICJsaW5l
TnVtYmVyIjogNDA1LAorICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogODAKICAgICAgICAg
ICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApA
QCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJm
dW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlw
dElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogNDA1LAorICAg
ICAgICAgICJjb2x1bW5OdW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZy
YW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5n
IHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwi
OiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxp
bmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAg
ImxpbmVOdW1iZXIiOiA0MDUsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6IDgwCiAgICAgICAg
IH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458236</attachid>
            <date>2022-04-24 13:01:58 -0700</date>
            <delta_ts>2022-04-25 16:29:51 -0700</delta_ts>
            <desc>WIP v0.7</desc>
            <filename>bug-152294-20220424130157.patch</filename>
            <type>text/plain</type>
            <size>106382</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzFmM2VmOWY1Y2E4MTNmMjNiYTJhMDc1YWU0M2UxZTViZTRhYjYyLi45NDcwZTNjZjVhOGEwYjA1
OTY4NWFhOGM3NjczOTc2ODE3YmI5NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMi0wNC0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2Ny
aXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbnNDb2xs
ZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChidWlsdGluSXRlcmF0b3Iud3JhcHBlci5pdGVyYXRvcik6CisgICAgICAgIChidWlsdGlu
SXRlcmF0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5leGVjdXRl
KToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuYXdhaXRQcm9taXNlKToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuY2FsbEZ1bmN0aW9uT24pOgor
ICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS53cmFwQ2FsbEZyYW1lcyk6Cisg
ICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBKU09OU3RyaW5nKToKKyAg
ICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcFRhYmxlKToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuaW5qZWN0TW9kdWxlKToKKyAgICAgICAgKGxl
dC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3Jlc29sdmVDYWxsQXJndW1lbnQpOgorICAgICAg
ICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRv
ci5jcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlw
dC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3IucHJvY2Vzc1Byb3BlcnR5KToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZ2V0U2V0
RW50cmllcyk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9nZXRNYXBF
bnRyaWVzKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3NhdmVSZXN1
bHQpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKGxldC5SZW1vdGVP
YmplY3QpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9y
VmFsdWUpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5ub2RlUHJldmlldyk6CisgICAgICAg
IChsZXQuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5fYXBwZW5kRW50cnlQcmV2aWV3cyk6CisgICAg
ICAgIChsZXQuUmVtb3RlT2JqZWN0LnNldCBfaXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKToK
KyAgICAgICAgKGxldC5SZW1vdGVPYmplY3QucHJvdG90eXBlLl9pc1ByZXZpZXdhYmxlT2JqZWN0
LnNldCBhZGQpOgorICAgICAgICAoQ29tbWFuZExpbmVBUEkubWV0aG9kcy5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisKIDIwMjItMDQtMjIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXhlcyBhZnRl
ciByMjkzMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZkMTQxNTcxZjYyYWZiOWIyMTJmMzhmMWRlNTg3Yjk3
Y2ZmZjkzMC4uNzhmZmE3NTg2OTY3NGU4ODdlNDIxNjRlZDg2MWYzNjRhNDUzODlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTIzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlw
dFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRl
biBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5pZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob25FbGVt
ZW50UGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoaW5q
ZWN0TW9kdWxlKToKKyAgICAgICAgKGluamVjdE1vZHVsZS4pOgorICAgICAgICAoaW5qZWN0ZWRT
Y3JpcHQuX2luc3BlY3RPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoQ29tbWFuZExpbmVBUEku
Z2V0dGVycy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6IERlbGV0ZWQuCisgICAgICAgIChDb21tYW5k
TGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJlZF9oZXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KG5vcm1hbGl6ZUV2ZW50VHlwZXMpOiBEZWxldGVkLgorICAgICAgICAobG9nRXZlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50Lmluc3BlY3RlZEds
b2JhbE9iamVjdC5Ob2RlLmNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUpOiBEZWxldGVkLgorICAgICAg
ICAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50Lmluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlLkNvbW1hbmRMaW5lQVBJLm1ldGhvZHMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOiBEZWxldGVk
LgorICAgICAgICAobGV0Lm5hbWUuaW4uQ29tbWFuZExpbmVBUEkubWV0aG9kcy5Db21tYW5kTGlu
ZUFQSS5tZXRob2RzLm5hbWUudG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmxheW91dENvbnRleHRUeXBlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHht
bC9YUGF0aEV4cHJlc3Npb24uaWRsOgorCiAyMDIyLTA0LTIzICBBbmRyZXMgR29uemFsZXogIDxh
bmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBWCBJVE06IFRhYmxlIHJvdyBvYmplY3Rz
IHNob3VsZCByZXR1cm4gYSBub24tbnVsbCB1bmlnbm9yZWQgcGFyZW50IGV2ZW4gd2hlbiBhIHRh
YmxlIG9iamVjdCBpcyBub3QgZm91bmQgaW4gaXRzIGFuY2VzdHJ5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGMwYTllMmE3ZTgwMmRiOTQ4NTc2NzRmMjliODc5NzZkOWM1
NmUyMGQuLjc2Y2IwNWVlNDZlZGY1OWFhMjhhMGM5NmM1NGI4MWIwZjk3NjEwYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM2NCw2ICszNjQsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9XZWJBc3NlbWJseS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApA
QCAtMTQwNSwxNyArMTQwNiw2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMK
ICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgK
ICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmggJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBN
QUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0v
eHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFO
RCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlw
dF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRI
T05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+
ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzICR7SmF2YVNjcmlw
dENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0Nf
TE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDhkNTQw
YmQ1MTkyMTdiNTUyYmYwNjA5OGM5ZGRjMmEyNzRmMzM0MGIuLmY3YjNkYjdiNjFkMzA2MDdlOGE2
ZmI1MTQzYTRjMjRlYWQyMjg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTIxLDcgKzIxLDYgQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRl
ZFdhc21PcHMuYXNtCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdEJ5dGVjb2Rlcy5hc20KICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0V2FzbS5hc20K
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1
ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi4xZmI2MjNjZDZmNmU4ZDg5ODdmOTQ4MDQ1NDRmMGQ0NGU1YjM1
ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNjgs
NyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUp
L1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBcCi0gICAgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAgICAgUmVn
RXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJh
eUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFy
cmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9XZWJBc3Nl
bWJseS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzIFwKICMKIAogIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0
aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbwpAQCAtMzY4
LDEyICszNjgsNiBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIDogQ29t
YmluZWREb21haW5zLmpzb24gJChJTlNQRUNUT1JfR0VORVJBVAogCSQoUEVSTCkgJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9wcmVwcm9jZXNzLnBsIC0taW5wdXQg
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5pbiAtLWRlZmluZXMgIiQoRkVB
VFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykiIC0tb3V0cHV0IGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKIAkkKERFTEVURSkgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcy5pbgogCi1JbmplY3RlZFNjcmlwdFNvdXJjZS5oIDogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAotCWVjaG8gIi8vIyBzb3VyY2VV
Ukw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAuL0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9qc21pbi5weSA8ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyA+PiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pz
IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzIEluamVjdGVkU2NyaXB0U291cmNlLmgKLQkk
KERFTEVURSkgSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0KIEFJUl9PUENPREVfRklMRVMg
PSBcCiAgICAgQWlyT3Bjb2RlLmggXAogICAgIEFpck9wY29kZVV0aWxzLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3OWM4ZGNkYjFlZTk2ODM0YTcwOTZhZDYzMjA5MDI4MDEy
MDIwMGU1Li45ZjBlYjcyNzk2MTJkYWIyYWQzMWJkMDk2MGFiMzkxYmIwYzc0NTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAKIAkJQTUxM0U1QkUx
ODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QjkxODVCRkFDQzAwN0U5NUFEIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07
CiAJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUx
M0U1QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgg
Ki87IH07Ci0JCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1
QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07CiAJCUE1
MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1Rjk2MjQw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3Q0IgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTE0QjJDMTE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUy
Qzk1RkYyMTU5RDQzMjAwN0Q4QUMwIC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzRDIxNTlENDFFMDBG
Q0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDcyMCw3ICs0NzE5LDYgQEAKIAkJQTUxM0U1QkMx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QkQxODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2Ny
aXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEzRTVDNjE4NUY5
NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDOTE4
NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
U2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg3LDcgKzcy
ODUsNiBAQAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90
eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNv
ZGVzLmFzbSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxh
dG9yQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8q
IEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCkBAIC0xMDQ1
NSw3ICsxMDQ1Miw2IEBACiAJCQkJQTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjEx
ODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5NTlFOTMyMUJEMTgyNzkwMDFBQTQxMyAvKiBpbmxpbmUtYW5k
LW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTc5
MDVCQjY5MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0OEE3QkYwMUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWls
dGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3dr
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0OTAx
MDczMDE5NzlhODZkMTY4Ny4uZDFkNTJiZWM2OWNhZGIwMTJjNjRlYzkwODM2OTJkODYxNDMzZDIz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC0zMDMsMjEgKzMwMyw1NSBAQCBjbGFzcyBCdWls
dGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAgICAgICAgc3Rh
cnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoK
ICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAgaWYgc3RhcnQg
PCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVuZCA9IG1hdGNo
LmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAgICAgICAgICAg
ICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAg
ZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBpc0VzY2Fw
aW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgICAg
ICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRo
ICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAgICAgICAgICAg
ICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAx
CisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFj
dGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5nQ2hhcmFjdGVy
OgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFy
YWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJp
bmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAg
ZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJl
bnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhNRTog
PHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJh
bGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAgIyBm
b3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2Ug
dGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5zaWRl
L291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0
cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMgKHVu
bGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5s
ZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1bmJh
bGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUg
YWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAgICAg
ICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFy
dENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFy
dENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRD
aGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAxCisgICAgICAg
ICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAgICAgICAgICAg
ICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZnVuY3Rp
b25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlvblN0cmluZ3Mg
PSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJv
dW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApp
bmRleCA1NDgzZTg3MWU3NDNhOWExMmIyY2UzMGRkZmMyYTAwYzUyYWViYzVkLi4zM2IxODJjYmRl
ZWVjMGVjODRiYTVlZWZhMWRkNWQ4YTgxMmRkZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xOTIsNiArMTkyLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oaXNS
ZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGFycmF5U29ydCkgXAorICAgIG1hY3JvKGpzb25Q
YXJzZSkgXAorICAgIG1hY3JvKGpzb25TdHJpbmdpZnkpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwK
KyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Q
cm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAg
bWFjcm8oaGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNybyhpbmRleE9mKSBcCisgICAgbWFjcm8o
cG9wKSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKaW5kZXggMjYzZTQzYmZjMGU4MzExNjA1
MDJhOTg1ZTI0MWFlMDdjNzdlZTJmNC4uZmJjNDIwMDQ4N2E1MGI1OGY0NmFjMDVhOGI3ODQyNjRm
ODk1NjA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJh
dG9ySGVscGVycy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0
b3JIZWxwZXJzLmpzCkBAIC01MSwzICs1MSwyNCBAQCBmdW5jdGlvbiBwZXJmb3JtSXRlcmF0aW9u
KGl0ZXJhYmxlKQogICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBpbmRleCsrLCBpdGVt
LnZhbHVlKTsKICAgICB9CiB9CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGluSXRl
cmF0b3IoaXRlcmFibGUpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIC8vIGZvci1v
ZiBsb29wcyBsb29rIHVwIHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5LCB3aGljaCBpcyBvYnNlcnZh
YmxlIGlmIHRoZSB1c2VyIGRlZmluZWQgYSBnZXR0ZXIgZm9yIEBAaXRlcmF0b3IuCisgICAgLy8g
VG8gYXZvaWQgdGhpcywgY3JlYXRlIGEgd3JhcHBlciBvYmplY3Qgd2hlcmUgQEBpdGVyYXRvciBy
ZXR1cm5zIHRoZSBhY3R1YWwgaXRlcmF0b3IuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBp
dGVyYWJsZS5AQGl0ZXJhdG9yOworICAgIGlmIChAaXNVbmRlZmluZWRPck51bGwoaXRlcmF0b3JG
dW5jdGlvbikpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpbkl0ZXJhdG9yIHJlcXVp
cmVzIHRoYXQgdGhlIHByb3BlcnR5IGBpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdYCBleGlzdHMu
Iik7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGl0ZXJhdG9yRnVuY3Rpb24pKQorICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5JdGVyYXRvciByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0
eSBgaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXWAgYmUgYSBmdW5jdGlvbi4iKTsKKworICAgIGxl
dCBpdGVyYXRvciA9IGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoaXRlcmFibGUpOworICAgIGxldCB3
cmFwcGVyID0ge307CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpdGVyYXRvcjsgfQorCisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4
NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi5iODY1M2U4NjU2OTkzMWZjYmI2ZTJmNGI0
MjU0OGM0YjBjNmUxMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOSBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKICAgICB2KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1Jl
bW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAg
ICB2KGpzb25QYXJzZSwgbnVsbHB0cikgXAorICAgIHYoanNvblN0cmluZ2lmeSwgbnVsbHB0cikg
XAorICAgIHYoU3RyaW5nLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElN
RV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGNiMDYz
NDAyYmYxMjJlYWUxNjk4ZWJhMmE3YmI3ZjRkNzZlZjk3NzAuLjIyZDFiY2U3ZWFiMGZhZjE1NGUw
ODc1YjdjMGM3NmRjZGJkMWMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dFNvdXJjZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5l
cy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5q
ZWN0ZWRTY3JpcHQuY2xlYXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Z0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXpl
b2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBO
YWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQgaWQpCitFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShz
b3VyY2UsIHsgfSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFRoaXMoKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2Vw
dGlvbjsKLSAgICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9l
bnZpcm9ubWVudC5ldmFsdWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUg
PSBldmFsdWF0ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFs
dWUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAg
YXV0byogZnVuY3Rpb25WYWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5s
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVk
U2NyaXB0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQo
c2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVu
Y3Rpb25WYWx1ZSk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCkBAIC0xNjYsNyArMTU5LDcgQEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNl
cHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1
ZSwgYXJncyk7Ci0gICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJl
dHVybiByZXN1bHQuZ2V0T2JqZWN0KCk7CiB9CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAg
IGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRGb3IoZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIGNy
ZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCks
IGdsb2JhbE9iamVjdCwgaWQpOworICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoZ2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKICAg
ICAgICAgYXV0byYgZXJyb3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJU
KGVycm9yKTsKQEAgLTE5NywxMiArMTkwLDEwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAg
ICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0
ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciB3aGVuIGNyZWF0aW5nIGluamVjdGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgZXJyb3ItPnZh
bHVlKCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1
bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KICAgICBpZiAoIWNyZWF0ZVJlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fs
d2F5cygiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgb2JqZWN0Iik7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApp
bmRleCAxZjc0MGM0MDY4NDUzNjZhNzU5YmEwYWY0YzhjMzI3Nzc0OTU0OGVhLi5iNTQxMDEyZWY0
YmI0YmYyMmU3YWUzODJiZmYxNTk4NWFjOTlhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTc1LDgg
Kzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hNYXA8SlNDOjpKU0dsb2JhbE9iamVjdCosIGlu
dD4gbV9zY3JpcHRTdGF0ZVRvSWQ7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGluamVjdGVkU2Ny
aXB0U291cmNlKCk7Ci0gICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBpbnQgaWQpOworICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3Qq
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBpbnQgaWQpOwogCiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52
aXJvbm1lbnQ7CiAgICAgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhv
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEyZWQ2ZmJlODZiODk3NDEyZjQ4
ZmQ1ZTlhMTEuLjBiNjc1ZTg0NDY2OTA2MDIxMjM4N2ZkYjRiYWQ1ZDBhNjU3OGY4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCkBAIC03NCwxMyArNzQsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVs
ZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0K
ICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVy
cm9yIHdoZW4gY2FsbGluZyAnaGFzSW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQp
XG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7
Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWhh
c0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVk
TW9kdWxlUmVzdWx0LnZhbHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJpbmplY3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVj
dG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChzb3VyY2UoKSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1
ZShpbmplY3RNb2R1bGVGdW5jdGlvbihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsK
ICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0
TW9kdWxlUmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KGZ1bmN0aW9uKTsKICAgICAgICAgaWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKQEAgLTkyLDcg
KzkxLDYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgICAgIGlmIChzdGFjay5z
aXplKCkgPiAwKQogICAgICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1u
KGxpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2Fs
bGluZyAnaW5qZWN0TW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2Jh
bE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
CmluZGV4IDI3OWJhZTRlYmFlNGMxODU0NDhjNjk3ZTlhMDNiZWRiNWVhZjg1OGIuLmE0YmVkOTY5
MmI3NDU2YTAwNWQ3NmRmNGZlNDg1MTYxZjk1ZTRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsK
IHB1YmxpYzoKICAgICB+SW5qZWN0ZWRTY3JpcHRNb2R1bGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTRnVuY3Rp
b24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgaG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5q
cwppbmRleCA0OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li4wNDY5ZjYx
MTlmYzkyMTQ2ZjdlNDRkZTljZDI3NTMxMTNhMGI0ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTcgKzI3
LDEzIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlw
dF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwotCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9z
dCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7Ci0KLS8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRkZW4gYnVpbHQtaW5zCi0KLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0Bn
bG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmpl
Y3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkK
K3sKIAogZnVuY3Rpb24gdG9TdHJpbmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsK
KyAgICByZXR1cm4gQFN0cmluZyhvYmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0
aW9uKG9iaikKQEAgLTExNSw3ICsxMTEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2Fs
bChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0
LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3Ry
aW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRl
ZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0
ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhv
c3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
MTM2LDcgKzEzMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNl
T2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVj
dCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewogICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3
aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMTk5LDcgKzE5NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAKICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgd2Fz
VGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVh
dGUoZnVuYy5hcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0
dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQorICAgICAgICAgICAgICAgIHJlc3VsdDogUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVj
dEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAgICAgICAgICAg
fTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0
ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7CkBAIC0zMDksNyArMzA1LDcgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IHJlc3Vs
dCA9IFtdOwogICAgICAgICBsZXQgZGVwdGggPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywg
Y2FsbEZyYW1lKSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3VsdCwgbmV3IEluamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOwogICAgICAgICAgICAg
Y2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1l
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNiw3ICszMjIsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHdyYXBKU09OU3RyaW5nKGpzb25T
dHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoSlNPTi5wYXJzZShqc29uU3RyaW5n
KSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgcmV0dXJu
IHRoaXMud3JhcE9iamVjdChAanNvblBhcnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUs
IGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAgICAgICAgIH0KQEAgLTM0OCw3ICszNDQsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1
YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKICAgICAgICAgICAgIGNvbHVtbk5hbWVzID0g
W107CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7
CisgICAgICAgICAgICAgICAgQGFycmF5UHVzaChjb2x1bW5OYW1lcywgdG9TdHJpbmcoY29sdW1u
c1tpXSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUo
dGFibGUsICJjb25zb2xlIiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKQEAgLTQyOSwxMSAr
NDI1LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAg
ICAgIHJldHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAgIH0KIAotICAgIGluamVjdE1vZHVs
ZShuYW1lLCBzb3VyY2UsIGhvc3QpCisgICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0
aW9uLCBob3N0KQogICAgIHsKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOwog
Ci0gICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0
ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwogICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1bmN0aW9u
ICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5zcGVjdG9y
OiBhIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxlIjsKICAgICAgICAgbW9k
dWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGlu
amVjdGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgaG9z
dCk7CkBAIC00NzMsNyArNDY4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBncm91cCA9IFtdOwogICAgICAgICAgICAgICAgIHRo
aXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0gZ3JvdXA7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBncm91cC5wdXNoKGlkKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZ3Jv
dXAsIGlkKTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbaWRdID0gb2Jq
ZWN0R3JvdXBOYW1lOwogICAgICAgICB9CiAKQEAgLTUxNSw3ICs1MTAsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuIHJlc29s
dmVkQXJnOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAg
cmV0dXJuIEB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93blZhbHVlKHZhbHVl
LCBvYmplY3RHcm91cCkKQEAgLTYyMiw3ICs2MTcsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBS
ZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFs
c2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICBpZiAoInN5bWJvbCIgaW4gZGVzY3Jp
cHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnN5bWJvbCA9IFJlbW90ZU9iamVjdC5j
cmVhdGUoZGVzY3JpcHRvci5zeW1ib2wsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAgICAgICAgICBk
ZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNj
cmlwdG9ycywgZGVzY3JpcHRvcik7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYg
Y291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAh
PT0gIl9fcHJvdG9fXyIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAgLTY0NCw3ICs2MzksNyBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3Ig
PSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZhbHVlfTsKICAgICAgICAg
ICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5p
c093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOwor
ICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KQEAgLTY1NCwxMCArNjQ5LDEw
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlm
IChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09PSAicHJveHkiKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IFNldDsKKyAg
ICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAogICAgICAgICAvLyBIYW5kbGVk
IGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKCJf
X3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsKIAog
ICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwg
ZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQog
ICAgICAgICB7CkBAIC02NzgsNyArNjczLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAgICAgICAg
ICAgICAgICBmYWtlRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAgICAgICAg
Ly8gU2lsZW5jZSBhbnkgcG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlvbnMgY3Jl
YXRlZCBmcm9tIGFjY2Vzc2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3JvbmcgdGhpcyBv
YmplY3QuCi0gICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNl
b2YgUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0
aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAg
ICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlzZSAmJiBJbmplY3Rl
ZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZh
a2VEZXNjcmlwdG9yLnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iu
dmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFrZURl
c2NyaXB0b3I7CiAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CkBAIC03MTAsMTUgKzcwNSwxNSBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1
bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUp
KQorICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNv
bnRpbnVlOwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAg
ICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBz
eW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAot
ICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmpl
Y3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNj
cmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRv
IHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzIyLDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChT
dHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFk
ZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVz
Y3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUg
Y29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuQGhhc093blByb3Bl
cnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5AaGFzT3duUHJvcGVy
dHkoInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9wZXJzIG1heSBjcmVh
dGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGllbnQ6CiAgICAgICAg
ICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCAicCIs
IHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeCwgInAi
KQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVhdGVGYWtlVmFs
dWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgdHJ1
ZSk7CkBAIC03NDUsMTAgKzc0MCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNlOwogICAgICAgICB0
cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmpl
Y3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5n
dGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShv
YmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3Qu
bGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBmb3IgKGxldCBvID0g
b2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKKyAg
ICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gQE9iamVjdC5AZ2V0
UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBpc093blByb3BlcnR5ID0gbyA9PT0g
b2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7CiAKQEAgLTc2NCw3
ICs3NTksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVz
ID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWVzW2ld
LCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1
bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAgLTc3Niw4
ICs3NzEsOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewotICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8p
OworICAgICAgICAgICAgaWYgKEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9scykgeworICAg
ICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0
eVN5bWJvbHMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0
eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwog
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3Jp
cHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtODA1LDE0ICs4MDAsMTMgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIGxldCBl
bnRyaWVzID0gW107CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0
aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAg
ICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Yg
QGJ1aWx0aW5JdGVyYXRvcihvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+
IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7dmFsdWV9
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmllcywge3ZhbHVlfSk7CiAKICAgICAgICAg
ICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtODI1LDE0ICs4MTksMTMgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIGxldCBlbnRyaWVzID0g
W107CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBv
dmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxl
dCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVl
XSBvZiBAYnVpbHRpbkl0ZXJhdG9yKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0
YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtr
ZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIHtrZXksIHZhbHVl
fSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBm
ZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs4NjksMTAgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAg
IHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5k
ZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVm
aW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOwor
ICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5AaW5kZXhPZihy
ZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtOTAxLDggKzg5NCw4IEBAIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0g
ewogfTsKIAogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250
aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAorICAg
IENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICBTdG9wOiBA
Y3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIpLAogfQogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBu
ZXcgSW5qZWN0ZWRTY3JpcHQ7CkBAIC05NjIsNyArOTU1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMu
X2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dl
bmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAg
ICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRl
ZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTg2LDcgKzk3OSw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBj
cmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1u
TmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVj
dCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7
CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5k
ZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlm
IChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxl
YXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmpl
Y3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElk
KQpAQCAtMTAxMSw3ICsxMDA0LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogCiAgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAm
JiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5z
cGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAgLTEwNjks
NiArMTA2Miw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAg
IHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IDx3ZWJr
aXQub3JnL2IvIyMjIyMjPiBgUmVtb3RlT2JqZWN0Lm5vZGVQcmV2aWV3YCBzaG91bGQgc2hvdWxk
IHVzZSBXZWJDb3JlIGJ1aWx0aW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUu
b3duZXJEb2N1bWVudCAmJiAhIW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAg
ICBsZXQgbm9kZU5hbWUgPSBpc1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKIApAQCAtMTE0Miw4ICsxMTM2LDggQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3Vu
dCA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMubGVuZ3RoIDogMDsKIAogICAgICAg
ICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50
KSwKLSAgICAgICAgICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRo
Lm1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCkKKyAgICAgICAgICAgIHByb3BlcnRpZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiAoNSA+IGZpcnN0TGV2ZWxLZXlzQ291bnQgPyA1IDog
Zmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICAgICBpbmRleGVzOiBpc1RhYmxlUm93c1Jl
cXVlc3QgPyAxMDAwIDogKDEwID4gZmlyc3RMZXZlbEtleXNDb3VudCA/IDEwIDogZmlyc3RMZXZl
bEtleXNDb3VudCksCiAgICAgICAgIH07CiAKICAgICAgICAgdHJ5IHsKQEAgLTExOTAsOSArMTE4
NCw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYg
KG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90
b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2Rz
IHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9y
LnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5j
b25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1
ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZh
bHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRv
ci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRl
c2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAg
cHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyAr
MTIwMyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmls
dGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGlu
ZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExl
dmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFm
aXJzdExldmVsS2V5cy5AaW5jbHVkZXMobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlv
biBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3LDcgKzEyMjEsNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwp
CiAgICAgICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAg
ICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKHByZXZpZXcucHJvcGVydGllcywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIApA
QCAtMTMxMyw3ICsxMzA3LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUp
IHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAgICBlbnRyaWVzLkBwb3Ao
KTsKICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzEzMTcsNyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRy
aWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRy
aWVzID0gZW50cmllcy5AbWFwKGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgICBlbnRyeS52
YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkudmFs
dWUsIGVudHJ5LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAgICAgdXBkYXRlTWFpblByZXZp
ZXcoZW50cnkudmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KSB7CkBAIC0x
MzM2LDggKzEzMzAsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAK
ICAgICBfaXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsKLSAgICAgICAg
bGV0IHNldCA9IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAgICAgICAgbGV0
IHNldCA9IG5ldyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAgICAgICAgIHJl
dHVybiB0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNldCwgMSk7CiAg
ICAgfQpAQCAtMTM1NywxMSArMTM1MSwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBDeWNsaWMg
b2JqZWN0cy4KLSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAg
aWYgKGtub3duT2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOwor
ICAgICAgICBrbm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAgICAgICAgIC8vIEFycmF5cyBh
cmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCiAgICAgICAg
IGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAgLTEzODEsMTIg
KzEzNzUsMTMgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0
aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgICAgICBsZXQg
b3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cisg
ICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QpOwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBNQVJLOiBbUENBXSBXZSBhcmUgaXRl
cmF0aW5nIG92ZXIgYW4gYXJyYXkgaGVyZS4KICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAm
JiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2Jq
ZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTUwNiw4ICsxNTAx
LDggQEAgQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OwogCiBDb21tYW5kTGluZUFQSS5tZXRo
b2RzID0ge307CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9i
amVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVz
KG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihv
YmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkB2
YWx1ZXMob2JqZWN0KTsgfTsKIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5j
ZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFu
Y2VzKC4uLmFyZ3VtZW50cyk7IH07CiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVj
dHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFu
Y2VzKC4uLmFyZ3VtZW50cyk7IH07CkBAIC0xNTQ2LDQgKzE1NDEsNCBAQCBmb3IgKGxldCBuYW1l
IGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tu
YW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsg
IigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7
Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1
YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEz
YmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlcnJvci5p
c1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJy
b3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBl
Y3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWls
dGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5saW5lKCksICIuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0
NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJk
ZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFy
cmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
b3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJy
YXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFy
cmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVh
M2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4
MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJh
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5j
bHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5h
bWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRl
eE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwg
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNO
YW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uOTlm
NGY3OTQxMWJjYWNiMzllYTQwMWQ5MjhiNzc5ZWMxMDAxNDlkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4
IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQ
cml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvIGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7Cit9CisKICNpZiBB
U1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENhbGwsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0x
MDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlz
ZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdD
b25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0
cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMs
IHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRl
cigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsK
ICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJv
clR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09OIGhlbHBl
cnMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCks
IGpzb25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5naWZ5KSk7CisgICAgICAgIH0p
OworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBhMGFhZWQzNDc4N2FmNjZhNGVjMjgzMmNiNzg0N2ZhZjI4YTRmYTliLi40Y2FhNmRjOTQwZTE4
NzUyZTdjZDQ2Njk3NWM3M2E0ZjliOWM1NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTk2LDYgKzk2LDcgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7CiBjbGFzcyBKU01v
ZHVsZUxvYWRlcjsKIGNsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgSlNPTk9iamVjdDsKIGNs
YXNzIEpTUHJvbWlzZTsKIGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOwogY2xhc3MgSlNQcm9t
aXNlUHJvdG90eXBlOwpAQCAtMTI0LDYgKzEyNSw3IEBAIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90
eXBlOwogY2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJj
ZU9yaWdpbjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBBY3Rp
dmF0aW9uU3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMiw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJh
cnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAg
ICAgV3JpdGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0cnVjdG9yPiBt
X3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJ
bnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNm
OWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLjM2NWEyNzBlZjMzZmNjZTM0ZThh
MjFjNmU5OGI5MzM1NGRhODQ4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDE0IEBAIHZvaWQgT2Jq
ZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9m
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0
T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZh
dGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yQ3Jl
YXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Mik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JWYWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKwogICAgIGlmIChPcHRpb25zOjp1c2VIYXNPd24oKSkKICAgICAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFz
T3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggZTIxMzRhMGZlNDg5NmIyMDEw
NDdhM2I0MjdiNzE4NGMxM2E4OGU1ZC4uNDNkMDBmM2YyOGJjNjBiZGNjYzMyYTAzNGVlNGM1MGNj
OTFiODIyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCkBAIC02OCw2ICs2OCw4IEBAIHZvaWQgT2JqZWN0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19k
ZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19sb29rdXBH
ZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+X19sb29rdXBTZXR0ZXJf
Xywgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNP
d25Qcm9wZXJ0eVByaXZhdGVOYW1lKCksIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiB9
CiAKIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZmEwNGI3ZWNlYmJlODNmN2Q3MjQ3OTM0Yzk4OGRlZjRmZmMxYzhjYS4u
NzkyYTY3MDE2MjdjMWVhM2M4OWJkZWE1YzhjZjNiMjJjZmNkZGVmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMjksMTggKzIxMjksNiBAQCBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2Vi
Q29yZSkKIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlVGVzdFN1cHBvcnQpCiBXRUJL
SVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKIAotIyBHZW5lcmF0ZSBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5taW4uanMKLSAgICBNQUlOX0RFUEVOREVOQ1kgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94
eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01NQU5E
ICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0
X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7
UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5
IDwgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
ID4+ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaAotICAgIFZFUkJBVElNKQotbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oKQot
Ci0KIE1BS0VfSEFTSF9UT09MUygke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9Db2xvckRhdGEpCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbG9yRGF0YS5jcHApCiAKQEAgLTIzNTIsNiArMjM0MCw3IEBAIHNldChXZWJDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke1dFQkNPUkVfRElSfS9kb20vVGV4dERlY29kZXJTdHJlYW0uanMK
ICAgICAke1dFQkNPUkVfRElSfS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMKICAgICAke1dFQkNP
UkVfRElSfS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMKKyAgICAke1dFQkNP
UkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKICkKIAogc2V0
KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGEzZDY4YWRmZTEzMWM0ODdjNzljYzRjMmFm
MWM4YTg2ZTcwODEyYjkuLjk1M2I3MWExMjEzZTIyODlmNzYzYTRiMzhkNTY3YjFhZWI4YzE2Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CkBAIC04LDcgKzgsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0
YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZUJ1
aWx0aW5zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0
aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50
UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNl
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgw
ZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0
OTZmOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTks
NiBAQCBpZm5lcSAoJChOT19TVVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RP
TV9IRUFERVJTOi5oPS5kZXApCiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFs
bCA6IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCA6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCi0JZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzIiA+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQo
UFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLm1pbi5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxF
VEUpIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVp
bHRpbnMKIAogV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcg
QEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRE
ZWNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5q
cyBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMg
XAorICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
IFwKICMKIAogQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCAxYWNhZGUwMDliMGI3YTkyODA4MzgwY2E1MjJiYzM1Mjk3YzM5ZjQ2Li5jOTA4MDQyMWM4
MzhmY2MzZTQyZWE4ZWZhMGNjNzU0MjJkZGRmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIw
NTcsNiArMjA1Nyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAog
ICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAg
ICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAg
JHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
QnVpbHRpbnMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVy
ZmFjZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldElu
dGVyZmFjZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVu
dFR5cGVIZWxwZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyM2VkYmIxNDdlNzRlMzZhOTk1NGZmN2MyNjk3ODUxZmU4MzAw
NmJhLi43NDkxNWM2YmNkYjBjZDEzMDgwNTdmNzk5ODEyYzc2MTQxODJhZmU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTks
NiArODk5LDcgQEAKIAkJMkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUx
MDc3MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZC
MjMzIC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUzN0RGRDgxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3
RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RP
TVVSTC5oICovOyB9OworCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcg
KzM1MTgsNiBAQAogCQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNl
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU3OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFG
QjI4OENGMDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyog
U2VydmljZVdvcmtlckFnZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAv
KiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNj
cmlwdEhvc3QuaCAqLzsgfTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAq
LzsgfTsKIAkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4
NEZFMkUxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9
OwogCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRE
NUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgy
MDQsOCBAQAogCQkyRTM3REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTM3RTAwMzEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
b3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgy
MDBCMEYxQkEgLyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5NDAsNyArMTM5NDIsNiBAQAogCQlBNTgx
RUQxMjFGQjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwNDI4LDcgKzIwNDI5LDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3Bl
Y3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4
NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8s
CiAJCQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNw
cCAqLywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhv
c3QuaCAqLywKIAkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovLApAQCAtMjM1ODUsNiArMjM1ODUsOCBAQAogCQkJ
CTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5
RDYgLyogQ29sb3JEYXRhLmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyog
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjky
ODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAq
LywKIAkJCQk5OTA4QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lC
dWlsdGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVl
dWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUg
LyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgKi8sCkBAIC0zNDA4Myw3ICszNDA4NSw3IEBACiAJCQkJ
MjZFOTQ0RDkxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9z
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4
NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyog
Q29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8q
IENvbW1vbkF0b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMz
MDA3NjU1MzYgLyogQ29tbW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCA2M2VhN2ZhYWY1OWRkNzc5NDAyOTM0NDYzMzhmYThiMjI4MzU1ZmE1Li41NTVkZTQ5MmU3YzI1
MDA4NjU3Yjc0NDJmOTQ5M2VkYmZhYzVjMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yNDYsNiArMjQ2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmlnYXRvck1lZGlhRGV2aWNlcykgXAogICAgIG1h
Y3JvKE5hdmlnYXRvclBlcm1pc3Npb25zKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlh
KSBcCisgICAgbWFjcm8oTm9kZSkgXAogICAgIG1hY3JvKE5vdGlmaWNhdGlvbikgXAogICAgIG1h
Y3JvKE5vdGlmaWNhdGlvbkV2ZW50KSBcCiAgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50KSBcCkBAIC00MjAsNiArNDIxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1h
Y3JvKFhSV2ViR0xMYXllcikgXAogICAgIG1hY3JvKGFib3J0QWxnb3JpdGhtKSBcCiAgICAgbWFj
cm8oYWJvcnRTdGVwcykgXAorICAgIG1hY3JvKGFkZEV2ZW50TGlzdGVuZXIpIFwKICAgICBtYWNy
byhhcHBlbmRGcm9tSlMpIFwKICAgICBtYWNybyhhc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlcikgXAogICAgIG1hY3JvKGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSkgXApAQCAtNDU5
LDYgKzQ2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhlbmNvZGUpIFwKICAg
ICBtYWNybyhlbmNvZGluZykgXAogICAgIG1hY3JvKGVycm9yU3RlcHMpIFwKKyAgICBtYWNybyhl
dmFsdWF0ZSkgXAogICAgIG1hY3JvKGZhaWx1cmVLaW5kKSBcCiAgICAgbWFjcm8oZmF0YWwpIFwK
ICAgICBtYWNybyhmZXRjaCkgXApAQCAtNDY5LDYgKzQ3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBtYWNybyhmbHVzaEFsZ29yaXRobSkgXAogICAgIG1hY3JvKGZvY3VzKSBcCiAgICAg
bWFjcm8oZnJhbWVzKSBcCisgICAgbWFjcm8oZ2V0RWxlbWVudEJ5SWQpIFwKICAgICBtYWNybyhn
ZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oZ2V0VHJhY2tzKSBcCiAgICAg
bWFjcm8oZ2V0VXNlck1lZGlhKSBcCkBAIC00ODgsNiArNDkyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIG1hY3JvKGlzRGlzdHVyYmVkKSBcCiAgICAgbWFjcm8oaXNMb2FkaW5nKSBcCiAg
ICAgbWFjcm8oaXNTZWN1cmVDb250ZXh0KSBcCisgICAgbWFjcm8oaXRlcmF0ZU5leHQpIFwKICAg
ICBtYWNybyhraW5kKSBcCiAgICAgbWFjcm8obGFuZ3VhZ2UpIFwKICAgICBtYWNybyhsb2NhbFN0
cmVhbXMpIFwKQEAgLTUxOCw2ICs1MjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFj
cm8ob3BlbkRhdGFiYXNlKSBcCiAgICAgbWFjcm8ob3BlbmVyKSBcCiAgICAgbWFjcm8ob3BlcmF0
aW9ucykgXAorICAgIG1hY3JvKG91dGVySFRNTCkgXAogICAgIG1hY3JvKG93bmVyUmVhZGFibGVT
dHJlYW0pIFwKICAgICBtYWNybyhwYXJlbnQpIFwKICAgICBtYWNybyhwZW5kaW5nUHVsbEludG9z
KSBcCkBAIC01MjcsNiArNTMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHB1
bGxBZ2FpbikgXAogICAgIG1hY3JvKHB1bGxBbGdvcml0aG0pIFwKICAgICBtYWNybyhwdWxsaW5n
KSBcCisgICAgbWFjcm8ocXVlcnlTZWxlY3RvcikgXAorICAgIG1hY3JvKHF1ZXJ5U2VsZWN0b3JB
bGwpIFwKICAgICBtYWNybyhxdWV1ZSkgXAogICAgIG1hY3JvKHF1ZXVlZEFkZEljZUNhbmRpZGF0
ZSkgXAogICAgIG1hY3JvKHF1ZXVlZENyZWF0ZUFuc3dlcikgXApAQCAtNTQxLDYgKzU0OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhyZWFkZXIpIFwKICAgICBtYWNybyhyZWFk
eVByb21pc2UpIFwKICAgICBtYWNybyhyZWFkeVByb21pc2VDYXBhYmlsaXR5KSBcCisgICAgbWFj
cm8ocmVtb3ZlRXZlbnRMaXN0ZW5lcikgXAogICAgIG1hY3JvKHJlcXVlc3RBbmltYXRpb25GcmFt
ZSkgXAogICAgIG1hY3JvKHJlcXVlc3RJZGxlQ2FsbGJhY2spIFwKICAgICBtYWNybyhyZXNwb25z
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCBiM2FlMGEwODIzMjg5MzMwMDVjNDFkNjAxYzU1NTcxZjExYzBhZDMyLi5m
ZjA0N2RlZmE1YzliNzFkNzAzMTU4M2RjNjgwZjAwOWRlMDA0MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDc3OSw3
ICs0Nzc5LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIG5leHQgaWYg
TmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIG5leHQg
dW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVy
fTsKLSAgICAgICAgbmV4dCB1bmxlc3MgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOworCisgICAgICAgICMgQ0VSZWFjdGlvbnMgYXR0cmlidXRlcyBz
aG91bGQgc3RpbGwgYmUgYWxsb3dlZCB0byBoYXZlIGEgUHJpdmF0ZUlkZW50aWZpZXIgZm9yIHRo
ZWlyIGdldHRlci4KKyAgICAgICAgaWYgKG5vdCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDRVJlYWN0aW9uc30pIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzIEF0dHJpYnV0ZVNo
b3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CkBAIC00Nzg3LDggKzQ3OTEsMTIgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRl
ck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKLSAgICAgICAgYXNzZXJ0KCJDdXN0b21HZXR0ZXJTZXR0ZXIgaXMgbm90IGFs
bG93ZWQgZm9yIERPTUF0dHJpYnV0ZS4gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyIG11c3QgYmUg
dXNlZC4iKSBpZiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgYnVpbHRpbk5hbWVzKHZtKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHJpdmF0ZU5h
bWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRnZXR0ZXIsIG51bGxwdHIpLCBh
dHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpO1xuIik7CisgICAgICAgIGlmIChJ
c0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CisgICAg
ICAgICAgICBteSAkY2xhc3NGb3JUaGlzID0gIiR7Y2xhc3NOYW1lfTo6aW5mbygpIjsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCBidWlsdGluTmFtZXModm0pLiIgLiAkYXR0cmlidXRlTmFtZSAuICJQcml2YXRlTmFtZSgpLCBK
U0M6OkRPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCBudWxscHRy
LCBKU0M6OkRPTUF0dHJpYnV0ZUFubm90YXRpb24geyAkY2xhc3NGb3JUaGlzLCBudWxscHRyIH0p
LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpO1xuIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgYnVpbHRpbk5hbWVzKHZtKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHJp
dmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRnZXR0ZXIsIG51bGxw
dHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpO1xuIik7CisgICAgICAg
IH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
K0RPTVBhcnNpbmcuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQrRE9NUGFyc2luZy5p
ZGwKaW5kZXggZmMxMWZlNzkzYWMyYzk4NmU5Njc2ZjM4MWE4NzdhMjE0ZmZhMDdkYS4uYWY0NDY1
MjdlYTAwZjY2MWIxNmU5ODRkODJkMDJkZjkwOTczMWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQrRE9NUGFyc2luZy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQrRE9NUGFyc2luZy5pZGwKQEAgLTI1LDYgKzI1LDYgQEAKIAogLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL0RPTS1QYXJzaW5nLyNleHRlbnNpb25zLXRvLXRoZS1lbGVtZW50LWludGVy
ZmFjZQogcGFydGlhbCBpbnRlcmZhY2UgRWxlbWVudCB7Ci0gICAgW0NFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0ZXJIVE1MOworICAg
IFtDRVJlYWN0aW9ucywgUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIGF0dHJp
YnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBvdXRlckhUTUw7CiAgICAg
W0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgaW5zZXJ0QWRqYWNlbnRIVE1MKERPTVN0cmluZyBwb3Np
dGlvbiwgRE9NU3RyaW5nIHRleHQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmlu
ZGV4IDNjMzI2NGI2ZTJlYmZhZGI2Mjg0ZWRlM2VhYjAxNjgwZjc1M2Q2YzYuLmQ0YjBiMzcwZGUy
MTY4NzJiOWYxOGQ1NTFjMzg4Y2QzZTQ0MjA5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmlkbApAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1DdXJyZW50U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoKTsKIAot
ICAgIFtJbXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nc10gdW5kZWZpbmVk
IGFkZEV2ZW50TGlzdGVuZXIoW0F0b21TdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3Rl
bmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgKEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xl
YW4pIG9wdGlvbnMgPSBmYWxzZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0
ZW5lckZvckJpbmRpbmdzXSB1bmRlZmluZWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbVN0cmlu
Z10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCAoRXZl
bnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsKKyAgICBbSW1w
bGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3MsIFByaXZhdGVJZGVudGlmaWVy
LCBQdWJsaWNJZGVudGlmaWVyXSB1bmRlZmluZWQgYWRkRXZlbnRMaXN0ZW5lcihbQXRvbVN0cmlu
Z10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCAoQWRk
RXZlbnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsKKyAgICBb
SW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MsIFByaXZhdGVJZGVu
dGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSB1bmRlZmluZWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihb
QXRvbVN0cmluZ10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRp
b25hbCAoRXZlbnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsK
ICAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3NdIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChFdmVudCBldmVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCmluZGV4IDllNDRkMjhk
N2I2ZGI3NmUzNDc4MWY3ZjI0MmE1YTc4Y2FkNzliNmUuLjczNmIxMTRlOWJlNzI1M2Q3OTQyYWZh
MmFjY2E4NjAwNDY5OWQwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKQEAgLTI2LDYgKzI2LDggQEAKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBKU0N1c3RvbUhlYWRlciwKICAgICBK
U0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICBQcml2YXRlSWRlbnRpZmllciwKKyAgICBQdWJsaWNJ
ZGVudGlmaWVyLAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBOb2RlIDogRXZlbnRU
YXJnZXQgewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEVMRU1FTlRfTk9ERSA9IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVudE5vZGUuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbAppbmRleCA0MDc3NzA2N2E1
ZTRhZGZlM2Y4OGQ1ODE1ZDJhOGY4M2M5ZTEwMzRiLi4zYzAxODQzNmRhYjkyZGJiYmM2M2UzZDA2
ZTU5YzUzMTZlMDk3M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVu
dFBhcmVudE5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob25FbGVtZW50UGFyZW50
Tm9kZS5pZGwKQEAgLTI2LDUgKzI2LDUgQEAKIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNpbnRlcmZhY2Utbm9uZWxlbWVudHBhcmVudG5vZGUKIGludGVyZmFjZSBtaXhpbiBOb25F
bGVtZW50UGFyZW50Tm9kZSB7Ci0gICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50PyBnZXRFbGVt
ZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQp
OworICAgIFtET01KSVQ9UmVhZERPTSwgUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZp
ZXJdIEVsZW1lbnQ/IGdldEVsZW1lbnRCeUlkKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10g
RE9NU3RyaW5nIGVsZW1lbnRJZCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1BhcmVudE5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCmluZGV4
IGEwNGRlMzg4ZGY5NmZjMmZjOWVjOGVhZjI2YTVhNTEyMDZjMDQyNzEuLmI4MTE4ZWMzNGJhNjAy
ZjMyNjk3ODQ1YTQxZjJmMGQ4MTE3OTVjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9QYXJlbnROb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwK
QEAgLTM1LDYgKzM1LDYgQEAgaW50ZXJmYWNlIG1peGluIFBhcmVudE5vZGUgewogICAgIFtDRVJl
YWN0aW9ucywgVW5zY29wYWJsZV0gdW5kZWZpbmVkIGFwcGVuZCgoTm9kZSBvciBET01TdHJpbmcp
Li4uIG5vZGVzKTsKICAgICBbQ0VSZWFjdGlvbnMsIFVuc2NvcGFibGVdIHVuZGVmaW5lZCByZXBs
YWNlQ2hpbGRyZW4oKE5vZGUgb3IgRE9NU3RyaW5nKS4uLiBub2Rlcyk7CiAKLSAgICBFbGVtZW50
PyBxdWVyeVNlbGVjdG9yKERPTVN0cmluZyBzZWxlY3RvcnMpOwotICAgIFtOZXdPYmplY3RdIE5v
ZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW1ByaXZh
dGVJZGVudGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSBFbGVtZW50PyBxdWVyeVNlbGVjdG9yKERP
TVN0cmluZyBzZWxlY3RvcnMpOworICAgIFtOZXdPYmplY3QsIFByaXZhdGVJZGVudGlmaWVyLCBQ
dWJsaWNJZGVudGlmaWVyXSBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKERPTVN0cmluZyBzZWxl
Y3RvcnMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUwMTY3NTI4MjI2NGQwZDM2ZDY1Y2NlNzQy
ZmYuLmY2NmMzNDQ0MmYxMTY3OGQ4MTM1MDcwZjQ4MGFlNzZkZjliMjYzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjYs
NyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJ
TW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAgLTQ4
LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpDb21tYW5kTGluZUFQSU1vZHVsZSgp
CiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlKCkgY29uc3QKK0pT
RnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIHJldHVy
biBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzKSk7CisgICAgaWYg
KGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxH
bG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5idWlsdGluSW50ZXJu
YWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSgpLm1faW5qZWN0TW9kdWxl
RnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBnZXQgYGlu
amVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFuZExpbmVBUElNb2R1bGVgIGZvciBub24t
YEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1ZSBDb21tYW5kTGluZUFQSU1vZHVsZTo6aG9zdChJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCmluZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGViZGVk
YWNmN2ZjNmI0MmQyZGY3NGIuLjBhNTBkNGE1ZjMzM2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDog
cHVibGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAgIENv
bW1hbmRMaW5lQVBJTW9kdWxlKCk7CiAKLSAgICBTdHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0TWFuYWdlciosIGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcwppbmRleCBmNTFlMzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2Vh
Li4yZDUwZjA1MzhjNjM2NDVlZjIwOGVjZjVmMGI2OTA3MmUzOGI5ZWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsMTEgKzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19J
bmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworLy8gQGludGVybmFs
CiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qs
IGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5k
TGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkgewotCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1
aWx0LWlucworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90
ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7CiAKIGluamVj
dGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFy
Z3VtZW50cy5sZW5ndGggPT09IDApCkBAIC02NCwxOCArNjMsMTggQEAgQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAKICAgICBsZXQgc3VidHlwZSA9
IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCk7CiAgICAgaWYgKHN1YnR5cGUgPT09ICJub2Rl
IikKLSAgICAgICAgc3RyaW5nID0gb2JqZWN0Lm91dGVySFRNTDsKKyAgICAgICAgc3RyaW5nID0g
b2JqZWN0LkBvdXRlckhUTUw7CiAgICAgZWxzZSBpZiAoc3VidHlwZSA9PT0gInJlZ2V4cCIpCiAg
ICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgaWYgKGluamVjdGVkU2NyaXB0
LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7
CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN5bWJvbCIpCi0gICAgICAgIHN0cmlu
ZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcob2JqZWN0KTsKKyAgICAgICAgc3RyaW5n
ID0gQFN0cmluZyhvYmplY3QpOwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJmdW5j
dGlvbiIpCiAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgewogICAgICAg
ICB0cnkgewotICAgICAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkpTT04u
c3RyaW5naWZ5KG9iamVjdCwgbnVsbCwgIiAgIik7CisgICAgICAgICAgICBzdHJpbmcgPSBAanNv
blN0cmluZ2lmeShvYmplY3QsICIgICIpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAg
IHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgICAgICB9CkBAIC04OSwyMyArODgsMjggQEAgQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdl
dCkgewogfTsKIAogZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykgewotICAgIGlm
ICh0eXBlcyA9PT0gdW5kZWZpbmVkKQorICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKICAg
ICAgICAgdHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0
IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIs
ICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAi
c2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07CiAgICAgZWxzZSBpZiAodHlw
ZW9mIHR5cGVzID09PSAic3RyaW5nIikKICAgICAgICAgdHlwZXMgPSBbdHlwZXNdOwogCi0gICAg
bGV0IHJlc3VsdCA9IFtdOworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlv
biBhZGRUeXBlc1RvUmVzdWx0KHR5cGVzKSB7CisgICAgICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1
aWx0aW5JdGVyYXRvcih0eXBlcykpCisgICAgICAgICAgICByZXN1bHQuQGFkZCh0eXBlKTsKKyAg
ICB9CisKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgIGlmICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJj
bGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0Iiwg
Im1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgICAgIGFkZFR5
cGVzVG9SZXN1bHQoImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUi
LCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwogICAg
ICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVz
aCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKKyAgICAgICAg
ICAgIGFkZFR5cGVzVG9SZXN1bHQoImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4
dElucHV0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAidG91Y2giKQotICAgICAg
ICAgICAgcmVzdWx0LnB1c2goInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIs
ICJ0b3VjaHN0YXJ0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJ0b3VjaGNhbmNl
bCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOwogICAgICAgICBlbHNl
IGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImJs
dXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2Vs
ZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJi
bHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNl
bGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1
bHQucHVzaCh0eXBlc1tpXSk7CisgICAgICAgICAgICByZXN1bHQuQGFkZCh0eXBlc1tpXSk7CiAg
ICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTYsMzggKzEyMCwzNiBAQCBmdW5jdGlv
biBsb2dFdmVudChldmVudCkKIH0KIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibW9uaXRvckV2
ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewotICAgIGlmICghb2JqZWN0IHx8ICFv
YmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisg
ICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5AYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LkBy
ZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxp
emVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBs
b2dFdmVudCwgZmFsc2UpOwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tp
XSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmF0
b3Iobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKSB7CisgICAgICAgIG9iamVjdC5AcmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOworICAgICAgICBvYmplY3QuQGFk
ZEV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwg
dHlwZXMpIHsKLSAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwg
IW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3Qu
QGFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5AcmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAg
ICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgb2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChs
ZXQgdHlwZSBvZiBAYnVpbHRpbkl0ZXJhdG9yKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkK
KyAgICAgICAgb2JqZWN0LkByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxz
ZSk7CiB9OwogCi1pZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5Ob2RlKSB7CitpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50
ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5ATm9kZSkgewogICAgIGZ1bmN0aW9uIGNhblF1ZXJ5
U2VsZWN0b3JPbk5vZGUobm9kZSkgewotICAgICAgICByZXR1cm4gbm9kZSAmJiBJbmplY3RlZFNj
cmlwdEhvc3Quc3VidHlwZShub2RlKSA9PT0gIm5vZGUiICYmIChub2RlLm5vZGVUeXBlID09PSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZS5FTEVNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9
PT0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUuRE9DVU1FTlRfTk9ERSB8fCBub2RlLm5vZGVU
eXBlID09PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RF
KTsKKyAgICAgICAgcmV0dXJuIG5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUobm9k
ZSkgPT09ICJub2RlIiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9E
RSAqLyB8fCBub2RlLm5vZGVUeXBlID09PSA5IC8qIE5vZGUuRE9DVU1FTlRfTk9ERSAqLyB8fCBu
b2RlLm5vZGVUeXBlID09PSAxMSAvKiBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgKi8pOwog
ICAgIH0KIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQiXSA9IGZ1bmN0aW9uKHNlbGVj
dG9yLCBzdGFydCkgewogICAgICAgICBpZiAoY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAg
ICAgICAgICByZXR1cm4gc3RhcnQuQHF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwogCi0gICAgICAg
IGxldCByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cihzZWxlY3Rvcik7CisgICAgICAgIGxldCByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
ZG9jdW1lbnQuQHF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwogICAgICAgICBpZiAocmVzdWx0KQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICBpZiAoc2VsZWN0b3IgJiYgc2Vs
ZWN0b3JbMF0gIT09ICIjIikgewotICAgICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5AZ2V0RWxlbWVudEJ5SWQoc2Vs
ZWN0b3IpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oIlRoZSBjb25zb2xlIGZ1bmN0aW9uICQoKSBo
YXMgY2hhbmdlZCBmcm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVlcnlTZWxlY3Rvcihz
ZWxlY3RvcikuIFlvdSBtaWdodCB0cnkgJChcIiMlc1wiKSIsIHNlbGVjdG9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTE1OSwyNiArMTYxLDI2IEBAIGlmIChpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKIAog
ICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3Rh
cnQpIHsKICAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAg
ICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5
U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKHN0YXJ0
LkBxdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBAQXJyYXkuQGZy
b20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LkBxdWVyeVNlbGVjdG9yQWxsKHNlbGVj
dG9yKSk7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5j
dGlvbih4cGF0aCwgY29udGV4dCkgewogICAgICAgICBsZXQgZG9jID0gKGNvbnRleHQgJiYgY29u
dGV4dC5vd25lckRvY3VtZW50KSB8fCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQ7Ci0g
ICAgICAgIGxldCByZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBu
dWxsLCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gZG9jLkBldmFsdWF0ZSh4cGF0aCwgY29udGV4dCB8fCBkb2Ms
IG51bGwsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUgKi8sIG51bGwpOwogICAgICAgICBzd2l0
Y2ggKHJlc3VsdC5yZXN1bHRUeXBlKSB7Ci0gICAgICAgIGNhc2UgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LlhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFOgorICAgICAgICBjYXNlIDEgLyogWFBhdGhSZXN1
bHQuTlVNQkVSX1RZUEUgKi86CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm51bWJlclZhbHVl
OwotICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5YUGF0aFJlc3VsdC5TVFJJTkdf
VFlQRToKKyAgICAgICAgY2FzZSAyIC8qIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFICovOgogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1ZTsKLSAgICAgICAgY2FzZSBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFOgorICAgICAgICBjYXNlIDMg
LyogWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFICovOgogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgbm9kZXMgPSBbXTsKICAg
ICAgICAgbGV0IG5vZGUgPSBudWxsOwotICAgICAgICB3aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVy
YXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgd2hpbGUg
KG5vZGUgPSByZXN1bHQuQGl0ZXJhdGVOZXh0KCkpCisgICAgICAgICAgICBAYXJyYXlQdXNoKG5v
ZGVzLCBub2RlKTsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH07CiB9CkBAIC0xODYsNCAr
MTg4LDQgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuTm9kZSkgewogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRo
b2RzKQogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlv
bigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJ
XSB9IjsgfTsKIAotfSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4
cHJlc3Npb24uaWRsIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwKaW5k
ZXggZWE3YjMxNDBkNjZiMTZhNWYwOWQ5NGEzMzBhNzM3YjdmNGNmZDUxNi4uYmY3MDI0YWQyMjBi
MWJmYTQyYzY1MWM3MTliMTE0ZGQxYzNmZDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhw
cmVzc2lvbi5pZGwKQEAgLTIyLDUgKzIyLDUgQEAKICAgICBFeHBvcnRUb1dyYXBwZWRGdW5jdGlv
biwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgWFBhdGhFeHByZXNzaW9uIHsKLSAg
ICBYUGF0aFJlc3VsdCBldmFsdWF0ZShOb2RlIGNvbnRleHROb2RlLCBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCB0eXBlID0gMCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0gbnVsbCk7
CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSBYUGF0aFJlc3VsdCBl
dmFsdWF0ZShOb2RlIGNvbnRleHROb2RlLCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB0eXBlID0g
MCwgb3B0aW9uYWwgWFBhdGhSZXN1bHQ/IGluUmVzdWx0ID0gbnVsbCk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFJlc3VsdC5pZGwKaW5kZXggMDk0NDU3NjJjODBjNGQ0MTZhZDE3NDBjNGU3MmI4NDNj
YjJjMzNmNy4uYjFlZWFiMGUxMDllODdhNmUzMzYzYWQ1ZjQ2YjIyZmU0NmU4YjI3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhSZXN1bHQuaWRsCkBAIC00Miw2ICs0Miw2IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaW52YWxpZEl0ZXJhdG9yU3RhdGU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgc25hcHNob3RMZW5ndGg7CiAKLSAgICBOb2RlIGl0ZXJhdGVO
ZXh0KCk7CisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSBOb2RlIGl0
ZXJhdGVOZXh0KCk7CiAgICAgTm9kZSBzbmFwc2hvdEl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7
CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGM3MjY3M2VkYjE4ZTE1NDdiYTMzNTA0NjAwMzMxMTdmYTA2NTE5MWYuLjEx
ZjI4NzkyMGNhM2EzYzQ5MzA2ZWY1N2I0NzJlODU5MmVmNzc1MzAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMi0wNC0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWls
dC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRz
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNl
ZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNl
ZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhw
ZWN0ZWQudHh0OgorCiAyMDIyLTA0LTIzICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBWCBJVE06IFRhYmxlIHJvdyBvYmplY3RzIHNob3VsZCByZXR1
cm4gYSBub24tbnVsbCB1bmlnbm9yZWQgcGFyZW50IGV2ZW4gd2hlbiBhIHRhYmxlIG9iamVjdCBp
cyBub3QgZm91bmQgaW4gaXRzIGFuY2VzdHJ5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0
cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYjE1Mzk4ODI0
MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNl
LWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEy
NyArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09MRSBNRVNT
QUdFOiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ09OU09MRSBN
RVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xl
XQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cg
Y2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0ku
c2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1
aXRlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwotLS0gUnVubmluZyB0ZXN0
IHNldHVwLgotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJu
YWxTY3JpcHRzLkRpc2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxv
ZykKLVNURVBTOiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKLVBBVVNFRCAoZGVidWdnZXItc3Rh
dGVtZW50KQotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1
ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAt
PiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRv
dyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAg
IGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLQotQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rp
b24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4
ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9n
KGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAx
MSAgICB9Ci0KLUFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEwOjUK
LSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAg
ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotIC0+ICAgOSAg
ICAgICAgfGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2co
InN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCi0KLUFDVElPTjogc3RlcC1pbgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAg
ICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUu
bG9nKGNvbnNvbGUpOwotIC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAg
ICAgMTEgICAgfQotICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KLQotQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTI6MgotICAgICAgOCAgICAgICAgY29u
c29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwot
ICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAg
ICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KLSAgICAgMTQKLQotQUNUSU9OOiByZXN1bWUK
LVJFU1VNRUQKLVBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgotCi0tLSBSdW5uaW5n
IHRlc3Qgc2V0dXAuCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJ
bnRlcm5hbFNjcmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNv
bGVMb2cpCi1TVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCi1QQVVTRUQgKGRlYnVnZ2Vy
LXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAg
ICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7
Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3
aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAg
ICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0KLUFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBB
VCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1
bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xl
LmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAg
ICAgMTEgICAgfQotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5
OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29s
ZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29s
ZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAg
ICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotCi1BQ1RJ
T046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxz
Y3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcg
ICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0g
ICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNv
bGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAg
IGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwot
IC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25z
b2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsK
LSAgICAgMTEgICAgfQotCi1BQ1RJT046IHJlc3VtZQotUkVTVU1FRAotUEFTUzogU2hvdWxkIGhh
dmUgdXNlZCBhbGwgc3RlcHMuCi0tLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2Ny
aXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRl
cm5hbC1zY3JpcHRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNjhhNzI1
NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Bh
dXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgZGVidWdnZXI7
Ci0gICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci19Ci0KLS8vIC0tLS0tLS0tLQotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
IkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIik7Ci0KLSAgICB3aW5kb3cuaW5p
dGlhbGl6ZVN0ZXBwaW5nVGVzdFN1aXRlKHN1aXRlKTsKLQotICAgIGFkZFN0ZXBwaW5nVGVzdENh
c2UoewotICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMu
RGlzYWJsZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3QgYmUgYWJsZSB0byBz
dGVwIGludG8gY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhlIEludGVybmFsIElu
amVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5Q29u
c29sZUxvZykiLAotICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBz
aW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQg
aWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgotICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4g
eyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7
IH0sCi0gICAgICAgIHN0ZXBzOiBbCi0gICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAg
ICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8v
IGNvbnNvbGUubG9nKGNvbnNvbGUpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5s
b2coInN0cmluZyIpCi0gICAgICAgICAgICAicmVzdW1lIiwKLSAgICAgICAgXQotICAgIH0pOwot
Ci0gICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQ
YXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJT
aG91bGQgYmUgYWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1
c2UgdGhlIEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJz
ZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykiLAotICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3Rs
eSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0
aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgotICAgICAgICBz
ZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVy
bmFsU2NyaXB0cyh0cnVlKTsgfSwKLSAgICAgICAgdGVhcmRvd246IGFzeW5jICgpID0+IHsgcmV0
dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9LAot
ICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJp
biIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29t
ZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQotICAgICAgICAgICAgICAgICJpbiIs
IC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9nKHdpbmRvdyldCi0gICAgICAgICAgICAi
cmVzdW1lIiwKLSAgICAgICAgXQotICAgIH0pOwotCi0gICAgbG9hZE1haW5QYWdlQ29udGVudCgp
LnRoZW4oKCkgPT4gewotICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKLSAg
ICB9KTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgot
PHA+Q2hlY2tpbmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5v
dCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFs
U2NyaXB0cy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CmluZGV4IDVkZWU5
NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODguLjYzYTZlNWI3NDg0Yjg2ODljN2Qx
NDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNSBAQCBQ
QVNTOiBTaG91bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxp
bmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgQXR0cmlidXRl
IEV2ZW50IExpc3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5kIEV2YWwgU2NyaXB0Lgot
UEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4K
LVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQu
CiBQQVNTOiBTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCmluZGV4
IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5ZDlhNWYuLmQ2NzdiYTJkZWRkZjFm
NTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5LDE0ICsxOSwxMSBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+ICh0aGlzKSBzdGFydGluZyBvbiBs
aW5lIDUKICAgICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2FkIGV2ZW50IGxpc3RlbmVyIGF0dHJp
YnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAgLSBldmFsIHNvdXJjZSBhYm92ZSBv
biBsaW5lIDcKLSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVybmFsIHNjcmlwdHMgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKIAogICAgIGxldCBm
b3VuZEV4dGVybmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lU2NyaXB0VGFn
U2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5l
clNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxTY3JpcHQgPSBmYWxzZTsKLSAgICBs
ZXQgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3Vu
ZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kVW5leHBl
Y3RlZFNjcmlwdCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24gaXNFeHRlcm5hbFNjcmlwdChwYXJh
bXMpIHsKQEAgLTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAKICAgICBm
dW5jdGlvbiBpc0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQocGFyYW1zKSB7Ci0g
ICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUg
Pj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCisgICAgICAgIHJldHVybiBpc0lu
bGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUgPj0gOTk7IC8vIEVzdGltYXRl
IG9mIDxib2R5PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0V2YWxTY3JpcHQocGFy
YW1zKSB7CiAgICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMID09PSAiZXZhbC5qcyI7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdChwYXJhbXMp
IHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3Rl
ZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNXaXRoKCIuanMiKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykgewotICAg
ICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9mKCJDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAg
ICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENoZWNrSW5pdGlhbFNjcmlwdHMiLAog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAtNzksMTAgKzY4LDYgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZElubGluZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgh
Zm91bmRFdmFsU2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJhbXMpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgJiYgaXNDb21tYW5kTGluZUFQ
SVNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDb21t
YW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKCFmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ICYmIGlzSW5qZWN0ZWRTY3JpcHRT
b3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5qZWN0
ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlVORVhQRUNURUQgU0NS
SVBUOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1ZTsKQEAgLTkzLDggKzc4LDYgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQo
Zm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRh
ZyBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91
bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5l
IEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJv
dG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0LCAiU2hvdWxkIGZpbmQgRXZhbCBT
Y3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJ
bmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4
cGVjdFRoYXQoZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIElu
c3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAg
UHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBlY3RlZFNjcmlwdCwgIlNob3VsZCBu
b3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIpOwogCiAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90
ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJlYTRmOWEy
NTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJiNTM5Mzk2
ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUt
b2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9k
ZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAgRVhQ
UkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsgZXJyb3Ig
PSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAg
ICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisg
ICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
bkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0i
CiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3MCw3IEBA
IEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNhdGNoIChl
KSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNr
IiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZXZhbEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtu
YXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0
aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUgY29kZV1c
bkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBd
LAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNTSU9OOiBl
cnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxpdFRleHQo
MTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAi
X3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBj
b2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNv
ZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZl
IGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5AW25hdGl2
ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAgICAgewogICAg
ICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVhYzBmYmQ4
MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li5mOTI3MGYwZmE0MTA0ZTQ2NDI3NjAzNjlmMWY1YTQ1
ZDBhOGU5ZmM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGlu
ZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGlu
ZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzogQ2FwdHVy
aW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAg
ICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIs
Ci0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAgICAiY29sdW1u
TnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiA0MDUsCisgICAgICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiOiA4MAogICAgICAgICAgICAgfQogICAgICAgICAgIF0sCiAgICAg
ICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzog
Q2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAg
ICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAg
ICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3Cisg
ICAgICAgICAgImxpbmVOdW1iZXIiOiA0MDUsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6IDgw
CiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAg
LTE3Nyw4ICsxNzcsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAiZnVu
Y3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICJzY3JpcHRJ
ZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAibGluZU51bWJlciI6IDE0MiwKLSAgICAgICAg
ICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAibGluZU51bWJlciI6IDQwNSwKKyAgICAg
ICAgICAiY29sdW1uTnVtYmVyIjogODAKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFt
ZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458308</attachid>
            <date>2022-04-25 16:29:54 -0700</date>
            <delta_ts>2022-04-26 12:42:22 -0700</delta_ts>
            <desc>WIP v0.8</desc>
            <filename>bug-152294-20220425162953.patch</filename>
            <type>text/plain</type>
            <size>112419</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzFmM2VmOWY1Y2E4MTNmMjNiYTJhMDc1YWU0M2UxZTViZTRhYjYyLi45NDcwZTNjZjVhOGEwYjA1
OTY4NWFhOGM3NjczOTc2ODE3YmI5NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMi0wNC0yMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU2Ny
aXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbnNDb2xs
ZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgICh0b1N0cmluZyk6CisgICAg
ICAgIChidWlsdGluSXRlcmF0b3Iud3JhcHBlci5pdGVyYXRvcik6CisgICAgICAgIChidWlsdGlu
SXRlcmF0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5leGVjdXRl
KToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuYXdhaXRQcm9taXNlKToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuY2FsbEZ1bmN0aW9uT24pOgor
ICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS53cmFwQ2FsbEZyYW1lcyk6Cisg
ICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLndyYXBKU09OU3RyaW5nKToKKyAg
ICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUud3JhcFRhYmxlKToKKyAgICAgICAg
KGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuaW5qZWN0TW9kdWxlKToKKyAgICAgICAgKGxl
dC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3Jlc29sdmVDYWxsQXJndW1lbnQpOgorICAgICAg
ICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRv
ci5jcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlw
dC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3IucHJvY2Vzc1Byb3BlcnR5KToK
KyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX2ZvckVhY2hQcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZ2V0U2V0
RW50cmllcyk6CisgICAgICAgIChsZXQuSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9nZXRNYXBF
bnRyaWVzKToKKyAgICAgICAgKGxldC5JbmplY3RlZFNjcmlwdC5wcm90b3R5cGUuX3NhdmVSZXN1
bHQpOgorICAgICAgICAobGV0LkluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKGxldC5SZW1vdGVP
YmplY3QpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9y
VmFsdWUpOgorICAgICAgICAobGV0LlJlbW90ZU9iamVjdC5ub2RlUHJldmlldyk6CisgICAgICAg
IChsZXQuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5fYXBwZW5kRW50cnlQcmV2aWV3cyk6CisgICAg
ICAgIChsZXQuUmVtb3RlT2JqZWN0LnNldCBfaXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKToK
KyAgICAgICAgKGxldC5SZW1vdGVPYmplY3QucHJvdG90eXBlLl9pc1ByZXZpZXdhYmxlT2JqZWN0
LnNldCBhZGQpOgorICAgICAgICAoQ29tbWFuZExpbmVBUEkubWV0aG9kcy5zdHJpbmdfYXBwZWFy
ZWRfaGVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisKIDIwMjItMDQtMjIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXhlcyBhZnRl
ciByMjkzMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZkMTQxNTcxZjYyYWZiOWIyMTJmMzhmMWRlNTg3Yjk3
Y2ZmZjkzMC4uNzhmZmE3NTg2OTY3NGU4ODdlNDIxNjRlZDg2MWYzNjRhNDUzODlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA0LTIzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlw
dFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRl
biBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGRvbS9FbGVtZW50K0RPTVBhcnNpbmcuaWRsOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5pZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob25FbGVt
ZW50UGFyZW50Tm9kZS5pZGw6CisgICAgICAgICogZG9tL1BhcmVudE5vZGUuaWRsOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoaW5q
ZWN0TW9kdWxlKToKKyAgICAgICAgKGluamVjdE1vZHVsZS4pOgorICAgICAgICAoaW5qZWN0ZWRT
Y3JpcHQuX2luc3BlY3RPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoQ29tbWFuZExpbmVBUEku
Z2V0dGVycy5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6IERlbGV0ZWQuCisgICAgICAgIChDb21tYW5k
TGluZUFQSS5tZXRob2RzLnN0cmluZ19hcHBlYXJlZF9oZXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KG5vcm1hbGl6ZUV2ZW50VHlwZXMpOiBEZWxldGVkLgorICAgICAgICAobG9nRXZlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50Lmluc3BlY3RlZEds
b2JhbE9iamVjdC5Ob2RlLmNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUpOiBEZWxldGVkLgorICAgICAg
ICAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50Lmluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlLkNvbW1hbmRMaW5lQVBJLm1ldGhvZHMuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOiBEZWxldGVk
LgorICAgICAgICAobGV0Lm5hbWUuaW4uQ29tbWFuZExpbmVBUEkubWV0aG9kcy5Db21tYW5kTGlu
ZUFQSS5tZXRob2RzLm5hbWUudG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmxheW91dENvbnRleHRUeXBlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHht
bC9YUGF0aEV4cHJlc3Npb24uaWRsOgorCiAyMDIyLTA0LTIzICBBbmRyZXMgR29uemFsZXogIDxh
bmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBWCBJVE06IFRhYmxlIHJvdyBvYmplY3Rz
IHNob3VsZCByZXR1cm4gYSBub24tbnVsbCB1bmlnbm9yZWQgcGFyZW50IGV2ZW4gd2hlbiBhIHRh
YmxlIG9iamVjdCBpcyBub3QgZm91bmQgaW4gaXRzIGFuY2VzdHJ5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGMwYTllMmE3ZTgwMmRiOTQ4NTc2NzRmMjliODc5NzZkOWM1
NmUyMGQuLjc2Y2IwNWVlNDZlZGY1OWFhMjhhMGM5NmM1NGI4MWIwZjk3NjEwYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM2NCw2ICszNjQsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9XZWJBc3NlbWJseS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApA
QCAtMTQwNSwxNyArMTQwNiw2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMK
ICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgK
ICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmggJHtKYXZhU2NyaXB0Q29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBN
QUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0v
eHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFO
RCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlw
dF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRI
T05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+
ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzICR7SmF2YVNjcmlw
dENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0Nf
TE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDhkNTQw
YmQ1MTkyMTdiNTUyYmYwNjA5OGM5ZGRjMmEyNzRmMzM0MGIuLmY3YjNkYjdiNjFkMzA2MDdlOGE2
ZmI1MTQzYTRjMjRlYWQyMjg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTIxLDcgKzIxLDYgQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRl
ZFdhc21PcHMuYXNtCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdEJ5dGVjb2Rlcy5hc20KICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0V2FzbS5hc20K
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1
ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi4xZmI2MjNjZDZmNmU4ZDg5ODdmOTQ4MDQ1NDRmMGQ0NGU1YjM1
ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNjgs
NyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUp
L1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBcCi0gICAgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAgICAgUmVn
RXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJh
eUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFy
cmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9XZWJBc3Nl
bWJseS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzIFwKICMKIAogIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0
aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbwpAQCAtMzY4
LDEyICszNjgsNiBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIDogQ29t
YmluZWREb21haW5zLmpzb24gJChJTlNQRUNUT1JfR0VORVJBVAogCSQoUEVSTCkgJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9wcmVwcm9jZXNzLnBsIC0taW5wdXQg
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5pbiAtLWRlZmluZXMgIiQoRkVB
VFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykiIC0tb3V0cHV0IGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKIAkkKERFTEVURSkgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcy5pbgogCi1JbmplY3RlZFNjcmlwdFNvdXJjZS5oIDogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAotCWVjaG8gIi8vIyBzb3VyY2VV
Ukw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAuL0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9qc21pbi5weSA8ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyA+PiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pz
IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzIEluamVjdGVkU2NyaXB0U291cmNlLmgKLQkk
KERFTEVURSkgSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0KIEFJUl9PUENPREVfRklMRVMg
PSBcCiAgICAgQWlyT3Bjb2RlLmggXAogICAgIEFpck9wY29kZVV0aWxzLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3OWM4ZGNkYjFlZTk2ODM0YTcwOTZhZDYzMjA5MDI4MDEy
MDIwMGU1Li4yZmE5MjdlMmMxZjBiNTU5ZmQ0NTA3ZDMyZWUzMTVjMzc5NWE4ODZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAKIAkJQTUxM0U1QkUx
ODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QjkxODVCRkFDQzAwN0U5NUFEIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07
CiAJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUx
M0U1QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgg
Ki87IH07Ci0JCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1
QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07CiAJCUE1
MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1Rjk2MjQw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3Q0IgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTE0QjJDMTE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUy
Qzk1RkYyMTU5RDQzMjAwN0Q4QUMwIC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzRDIxNTlENDFFMDBG
Q0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc2NCw2ICszNzYzLDcgQEAKIAkJMkFEMkVERkEx
OTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFbnVtZXJhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9uU2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8qIEdD
TG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0xvZ2dp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRjAwRDI4MTcxQUMwMDAz
NzFBMjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBT
aGFkb3dSZWFsbVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAz
MjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21UeXBlRGVmaW5pdGlvbklubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVR5cGVEZWZpbml0aW9u
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTc3MEM0RjI3Qjk0Q0U0
MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzIwLDcgKzQ3MjAsNiBAQAogCQlBNTEzRTVCQzE4
NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCRDE4NUJGQUND
MDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzMxODVGOTJDOTAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MTNFNUM2MTg1Rjk0
MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM5MTg1
Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1MTRCMkMwMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlw
dEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRT
Y3JpcHRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyODcsNyArNzI4
Niw2IEBACiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1
dC5oICovLAogCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5
cGUubHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29k
ZXMuYXNtICovLAotCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5oICovLAogCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDczMUI0REMxQzYwMEQ2
OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTkzNjYs
NiArOTM2NCw3IEBACiAJCQkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8qIFJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTUzNEQ5QkY4MjM2M0M1NUQwMDU0NTI0RCAv
KiBTZXRJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk3MDM1NTg3RDFDNDE4NDE5MDA0QkQ3
QkYgLyogU2V0UHJvdG90eXBlLmpzICovLAorCQkJCTJFM0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAv
KiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM2MDFCNjVEOUIxMDA5REIx
RUYgLyogU3RyaW5nQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNjExQjY1RDlCMTAwOURC
MUVGIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCUExRTA0NTFCMUMyNUI0
QjEwMEJCNjYzQyAvKiBTdHJpbmdQcm90b3R5cGUuanMgKi8sCkBAIC0xMDQ1NSw3ICsxMDQ1NCw2
IEBACiAJCQkJQTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjExODdCN0I4NjAwODQz
QjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTEzRTVD
NzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk5NTlFOTMyMUJEMTgyNzkwMDFBQTQxMyAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHls
ZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTc5MDVCQjY5MUQxMjA1
MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEE3QkYw
MUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGlu
c19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVp
bHRpbnNfbW9kZWwucHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0OTAxMDczMDE5NzlhODZk
MTY4Ny4uNTU4NjlmZDQ1NzQzNDUwODg5YjNjZDk4OTY1M2VhN2JkMGZkNDU2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2Rl
bC5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0
aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1Miw3IEBAIGZ1bmN0aW9uSXNBc3luY1JlZ0V4cCA9IHJl
LmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1bmN0aW9uIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UCiBm
dW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwg
cmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25PdmVycmlkZGVuTmFtZVJlZ0V4cCA9
IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJpZGRlbk5hbWU9KFwiLitcIikkIiwgcmUuTVVMVElMSU5F
IHwgcmUuRE9UQUxMKQogZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/
OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixc
cypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCitmdW5jdGlvblBhcmFt
ZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBpbGUociIsXHMqKD8hW157fV0qXH0pIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShy
IlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogc2luZ2xlTGluZUNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9U
QUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICAgICAg
aXNfbmFrZWRfY29uc3RydWN0b3IgPSBmdW5jdGlvbk5ha2VkQ29uc3RydWN0b3JSZWdFeHAubWF0
Y2goZnVuY3Rpb25fc291cmNlKSAhPSBOb25lCiAgICAgICAgIGlmIGlzX25ha2VkX2NvbnN0cnVj
dG9yOgogICAgICAgICAgICAgaXNfY29uc3RydWN0b3IgPSBUcnVlCi0gICAgICAgIHBhcmFtZXRl
cnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwo
ZnVuY3Rpb25fc291cmNlKVswXS5zcGxpdCgnLCcpXQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Mu
c3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlci5zcGxpdChmdW5jdGlv
blBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0pXQogICAgICAgICBp
ZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0gMDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQog
CkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBjbGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAg
IGZ1bmN0aW9uQm91bmRzID0gW10KICAgICAgICAgc3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAK
KwogICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0
Y2guc3RhcnQoKQogICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICB3aGls
ZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAg
ICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZGVwdGggPSAxCi0gICAgICAgICAgICBl
bmQgPSBlbmQgKyAxCisgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAg
ICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKICAgICAgICAgICAg
IHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgot
ICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgICAgIGVs
aWYgdGV4dFtlbmRdID09ICd9JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAt
IDEKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9
IDEKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAg
ICAgICAgICAgICBpZiBpc0VzY2FwaW5nQ2hhcmFjdGVyOgorICAgICAgICAgICAgICAgICAgICBp
c0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAg
ICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJl
bnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09
IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQg
Y3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
ICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhNRTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IFJl
Z3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAo
bGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBl
LmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91
ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdv
cmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9m
IGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVt
cGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9u
IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9y
IGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGlu
ZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdp
dGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFj
dGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciAhPSAnYCc6CisgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJp
bmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ3snOgorICAgICAg
ICAgICAgICAgICAgICBkZXB0aCArPSAxCisgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hh
cmFjdGVyID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggLT0gMQorCisgICAgICAg
ICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwg
ZW5kKSkKIAogICAgICAgICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlw
KCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggOWI5
YWI3NWM2ZDc1YWE3M2Y3ZTE4ZDY5ZmUyYTg4NzdhZWQ1YWI0OC4uYTFkM2M5M2JlMjdhMzhkMGFl
ZWJkNzUwNzVkNjUwYzFmOTY3ZmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVj
dXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IHBhcmFt
ZXRlcnNTdGFydCArIDE7CiAgICAgICAgIHVuc2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJv
b2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOwogICAgICAgICBib29sIHNhd09uZVBhcmFt
ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFzUmVzdFBhcmFtID0gZmFsc2U7CiAgICAgICAgIHdo
aWxlICh0cnVlKSB7CkBAIC0xMTMsNyArMTE0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBT
CiAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnKScpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICd9JykKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJs
eUJyYWNrZXRzID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09
ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNrZXRzKSB7CisgICAgICAgICAgICAgICAgaW5zaWRlQ3Vy
bHlCcmFja2V0cyA9IHRydWU7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykK
ICAgICAgICAgICAgICAgICArK2NvbW1hczsKICAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxM
Q2hhcj46OmlzV2hpdGVTcGFjZShjaGFyYWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdP
bmVQYXJhbSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4u
MzNiMTgyY2JkZWVlYzBlYzg0YmE1ZWVmYTFkZDVkOGE4MTJkZGQ4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAg
IG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBt
YWNybyhqc29uUGFyc2UpIFwKKyAgICBtYWNybyhqc29uU3RyaW5naWZ5KSBcCisgICAgbWFjcm8o
U3RyaW5nKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCisgICAgbWFj
cm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5U3ltYm9s
cykgXAorICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCisgICAgbWFjcm8oaW5kZXhPZikgXAor
ICAgIG1hY3JvKHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCmluZGV4IDI2M2U0M2Jm
YzBlODMxMTYwNTAyYTk4NWUyNDFhZTA3Yzc3ZWUyZjQuLmZiYzQyMDA0ODdhNTBiNThmNDZhYzA1
YThiNzg0MjY0Zjg5NTYwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9JdGVyYXRvckhlbHBlcnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0l0ZXJhdG9ySGVscGVycy5qcwpAQCAtNTEsMyArNTEsMjQgQEAgZnVuY3Rpb24gcGVyZm9y
bUl0ZXJhdGlvbihpdGVyYWJsZSkKICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaW5k
ZXgrKywgaXRlbS52YWx1ZSk7CiAgICAgfQogfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24g
YnVpbHRpbkl0ZXJhdG9yKGl0ZXJhYmxlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAg
ICAvLyBmb3Itb2YgbG9vcHMgbG9vayB1cCB0aGUgQEBpdGVyYXRvciBwcm9wZXJ0eSwgd2hpY2gg
aXMgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVkIGEgZ2V0dGVyIGZvciBAQGl0ZXJhdG9y
LgorICAgIC8vIFRvIGF2b2lkIHRoaXMsIGNyZWF0ZSBhIHdyYXBwZXIgb2JqZWN0IHdoZXJlIEBA
aXRlcmF0b3IgcmV0dXJucyB0aGUgYWN0dWFsIGl0ZXJhdG9yLgorICAgIGxldCBpdGVyYXRvckZ1
bmN0aW9uID0gaXRlcmFibGUuQEBpdGVyYXRvcjsKKyAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxs
KGl0ZXJhdG9yRnVuY3Rpb24pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5JdGVy
YXRvciByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBgaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9y
XWAgZXhpc3RzLiIpOworCisgICAgaWYgKCFAaXNDYWxsYWJsZShpdGVyYXRvckZ1bmN0aW9uKSkK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluSXRlcmF0b3IgcmVxdWlyZXMgdGhhdCB0
aGUgcHJvcGVydHkgYGl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl1gIGJlIGEgZnVuY3Rpb24uIik7
CisKKyAgICBsZXQgaXRlcmF0b3IgPSBpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKGl0ZXJhYmxlKTsK
KyAgICBsZXQgd3JhcHBlciA9IHt9OworICAgIHdyYXBwZXIuQEBpdGVyYXRvciA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKworICAgIHJldHVybiB3cmFwcGVyOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXgg
MWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMy4uYjg2NTNlODY1Njk5MzFm
Y2JiNmUyZjRiNDI1NDhjNGIwYzZlMTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMjAsNiArMTIwLDkgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAog
ICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoYXJyYXlTb3J0LCBudWxs
cHRyKSBcCisgICAgdihqc29uUGFyc2UsIG51bGxwdHIpIFwKKyAgICB2KGpzb25TdHJpbmdpZnks
IG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAKICNkZWZpbmUgREVDTEFS
RV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApp
bmRleCBjYjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5NzcwLi4yMmQxYmNlN2Vh
YjBmYWYxNTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0z
MSw5ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYXRj
aFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0xMzUsMjUgKzEzNSwx
OCBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiAg
ICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIH0KIAotU3RyaW5n
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewotICAgIHJl
dHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmplY3RlZFNjcmlwdFNvdXJj
ZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLUV4cGVjdGVkPEpT
T2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVh
dGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRp
b24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1h
a2VTb3VyY2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1
YXRpb25FeGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFu
ZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0gICAgSlNWYWx1ZSBmdW5j
dGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwgc291cmNlQ29kZSwgZ2xv
YmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBpZiAoZXZhbHVhdGlvbkV4
Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2YWx1YXRpb25FeGNlcHRp
b24pOworICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdsb2Jh
bE9iamVjdC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVJbnNwZWN0
b3JJbmplY3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VV
bmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFmdW5jdGlvblZhbHVlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENh
bGxEYXRhKGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRh
OjpUeXBlOjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVkPEpTT2JqZWN0KiwgTmFr
ZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNj
CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhLCBnbG9i
YWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkp
KTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBAIC0xODMsNyArMTc2LDcg
QEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGdsb2JhbE9iamVjdCk7Ci0g
ICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlw
dFNvdXJjZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNy
ZWF0ZUluamVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAgIGlmICghY3JlYXRlUmVz
dWx0KSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0LmVycm9yKCk7CiAgICAg
ICAgIEFTU0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJbmplY3RlZFNjcmlwdCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNr
WzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fs
d2F5cygiRXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDolZClcbiIs
IGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkudXRmOCgpLmRhdGEoKSwg
bGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3Jp
cHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFsdWUoKSkgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9iamVjdCIpOwotICAgICAg
ICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4YzMyNzc3NDk1NDhlYS4u
YjU0MTAxMmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5o
CkBAIC03NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRlOgotICAgIFN0cmluZyBp
bmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYg
c291cmNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAgICBFeHBlY3RlZDxKU0M6
OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlw
dChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAogICAgIEluc3BlY3RvckVudmlyb25t
ZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0
ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2
Yjg5NzQxMmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdmZGI0YmFkNWQwYTY1Nzhm
ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3Rh
Y2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzog
JXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RG
U3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5l
LCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAg
ICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigpIHx8ICFo
YXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7CiAgICAgICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFn
ZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChK
U0M6OkpTVmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2Jq
ZWN0KCkpKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpOwogICAgICAgICBh
dXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7
CkBAIC05Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVj
dGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgICAgICBp
ZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGlu
ZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5h
bWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNj
cmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5YTAzYmVkYjVlYWY4NThi
Li5hNGJlZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0ZjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVibGljIEluamVjdGVkU2Ny
aXB0QmFzZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9kdWxlKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlND
OjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJmMWViNzFiOGM0OTI1ZjZj
NC4uZWQ0NGY5OTJmZGVlMmU5NWQ0NjQzNjhlOTI2ZDBlMmMxNzI3Zjg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNC0yMDE1
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTI3LDE3ICsyNywxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLQotKGZ1bmN0aW9uIChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkgewot
Ci0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3Rvcjog
UGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVl
ZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwotCi12YXIgT2JqZWN0ID0ge30uY29uc3Ry
dWN0b3I7CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRT
Y3JpcHQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVk
U2NyaXB0SWQpCit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3Ry
aW5nKG9iaik7CisgICAgcmV0dXJuIEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJp
bmdEZXNjcmlwdGlvbihvYmopCkBAIC0xMTUsNyArMTExLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cmFw
QW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywg
c2F2ZVJlc3VsdCwgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUg
PSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2Ny
aXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBm
dW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSku
YXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0
ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0
ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVD
b21tYW5kTGluZUFQSSkuQGFwcGx5KEB1bmRlZmluZWQsIGFyZ3MpOwogICAgICAgICB9KTsKICAg
ICB9CiAKQEAgLTEzNiw3ICsxMzIsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIFByb21pc2UpKSB7CisgICAgICAgIGlmICghKHBy
b21pc2VPYmplY3QgaW5zdGFuY2VvZiBAUHJvbWlzZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
KCJPYmplY3Qgd2l0aCBnaXZlbiBpZCBpcyBub3QgYSBQcm9taXNlIik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTE4Nyw3ICsxODMsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2Fs
bEFyZ3NbaV0pOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEBTdHJp
bmcoZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
OTksNyArMTk1LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
IAogICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNl
LAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5
KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBn
ZW5lcmF0ZVByZXZpZXcpCisgICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3Jl
YXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCBy
ZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgICAgICAgICB9OwogICAgICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGhyb3duVmFsdWUo
ZSwgb2JqZWN0R3JvdXBOYW1lKTsKQEAgLTMwOSw3ICszMDUsNyBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAg
ICAgIGxldCBkZXB0aCA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNo
KG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsK
KyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZy
YW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBj
YWxsRnJhbWUuY2FsbGVyOwogICAgICAgICB9IHdoaWxlIChjYWxsRnJhbWUpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMzI2LDcgKzMyMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgd3JhcEpTT05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBO
YW1lLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICB0cnkgewotICAgICAgICAgICAg
cmV0dXJuIHRoaXMud3JhcE9iamVjdChKU09OLnBhcnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUs
IHRydWUsIGdlbmVyYXRlUHJldmlldyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2Jq
ZWN0KEBqc29uUGFyc2UoanNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2
aWV3KTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
ICAgfQpAQCAtMzQ4LDcgKzM0NCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5z
KSA9PT0gImFycmF5IikgewogICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBbXTsKICAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAg
ICAgICBjb2x1bW5OYW1lcy5wdXNoKHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKKyAgICAgICAgICAg
ICAgICBAYXJyYXlQdXNoKGNvbHVtbk5hbWVzLCB0b1N0cmluZyhjb2x1bW5zW2ldKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNv
bGUiLCBmYWxzZSwgdHJ1ZSwgY29sdW1uTmFtZXMpOwpAQCAtNDI5LDExICs0MjUsMTAgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgcmV0dXJuIHRo
aXMuX21vZHVsZXNbbmFtZV07CiAgICAgfQogCi0gICAgaW5qZWN0TW9kdWxlKG5hbWUsIHNvdXJj
ZSwgaG9zdCkKKyAgICBpbmplY3RNb2R1bGUobmFtZSwgbW9kdWxlRnVuY3Rpb24sIGhvc3QpCiAg
ICAgewogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gZmFsc2U7CiAKLSAgICAgICAgbGV0
IG1vZHVsZUZ1bmN0aW9uID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIHNvdXJj
ZSArICIpIik7CiAgICAgICAgIGlmICh0eXBlb2YgbW9kdWxlRnVuY3Rpb24gIT09ICJmdW5jdGlv
biIpCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVuY3Rpb24g
d2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1bGUiOwogICAgICAgICBtb2R1bGVGdW5jdGlvbihJ
bmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJ
ZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBob3N0KTsKQEAgLTQ3Myw3
ICs0NjgsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgICAgIGdyb3VwID0gW107CiAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0R3Jv
dXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVzaChncm91cCwgaWQpOwogICAg
ICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5hbWU7
CiAgICAgICAgIH0KIApAQCAtNTE1LDcgKzUxMCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAg
ICAgIH0KIAotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gQHVuZGVm
aW5lZDsKICAgICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3Vw
KQpAQCAtNTcxLDcgKzU2Niw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7CiAgICAgICAgIGlmIChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMu
Y3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBu
dWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lv
biwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLkBjYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0KIAogICAgIF9jYWxsRnJh
bWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjIyLDcgKzYxNyw3IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci52YWx1ZSwg
b2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgICAgIGlm
ICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc3lt
Ym9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2JqZWN0R3JvdXBO
YW1lKTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7CisgICAgICAg
ICAgICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKIAogICAgICAgICAgICAg
aWYgKGluY2x1ZGVQcm90byAmJiBjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQg
JiYgZGVzY3JpcHRvci5uYW1lICE9PSAiX19wcm90b19fIikKICAgICAgICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtNjQ0LDcgKzYz
OSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
ICAgICBsZXQgZGVzY3JpcHRvciA9IHtuYW1lOiBwcm9wZXJ0eS5uYW1lLCB2YWx1ZTogcHJvcGVy
dHkudmFsdWV9OwogICAgICAgICAgICAgaWYgKGNvbXBsZXRlRGVzY3JpcHRvcikKICAgICAgICAg
ICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3Jz
LnB1c2goZGVzY3JpcHRvcik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBk
ZXNjcmlwdG9yKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAg
fQpAQCAtNjU0LDEwICs2NDksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkg
PT09ICJwcm94eSIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9j
ZXNzZWQgPSBuZXcgU2V0OworICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0Owog
CiAgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAg
bmFtZVByb2Nlc3NlZC5hZGQoIl9fcHJvdG9fXyIpOworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBh
ZGQoIl9fcHJvdG9fXyIpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2Ny
aXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5h
dGl2ZUJpbmRpbmdHZXR0ZXIpCiAgICAgICAgIHsKQEAgLTY3OCw3ICs2NzMsNyBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGlmIChz
eW1ib2wpCiAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJv
bDsKICAgICAgICAgICAgICAgICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRsZWRyZWpl
Y3Rpb24gZXhjZXB0aW9ucyBjcmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29y
IHdpdGggYSB3cm9uZyB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2Ny
aXB0b3IudmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1By
b21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFs
dWUpKQorICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9m
IEBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRp
dmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQogICAgICAgICAgICAgICAg
ICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
QEAgLTcxMCwxNSArNzA1LDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFt
ZSwgaXNPd25Qcm9wZXJ0eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNz
ZWQuaGFzKHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5AaGFz
KHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQu
YWRkKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVy
dHlOYW1lKTsKIAogICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUp
OwogICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9w
ZXJ0eU5hbWUgOiBudWxsOwogCi0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxl
dCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQgaGVyZT8KICAgICAgICAgICAg
ICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBzZXR0aW5ncy4KQEAgLTcyNyw3
ICs3MjIsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobmF0aXZlR2V0dGVyc0FzVmFsdWVzKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRp
dmUgY29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJv
cGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3Bl
cnR5KCJzZXQiKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQFN0cmluZyhkZXNjcmlwdG9yLmdl
dCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRl
c2NyaXB0b3IuQGhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVz
Y3JpcHRvci5AaGFzT3duUHJvcGVydHkoInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBEZXZlbG9wZXJzIG1heSBjcmVhdGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBi
ZSByZXNpbGllbnQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh4LCAicCIsIHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoeCwgInAiKQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2Ny
aXB0b3IgPSBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRv
ciwgaXNPd25Qcm9wZXJ0eSwgdHJ1ZSk7CkBAIC03NDUsMTAgKzc0MCwxMCBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlr
ZSA9IGZhbHNlOwogICAgICAgICB0cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1v
dGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5s
ZW5ndGgpICYmIG9iamVjdC5sZW5ndGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBS
ZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmpl
Y3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAot
ICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YobykpIHsKKyAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVk
KG8pOyBvID0gQE9iamVjdC5AZ2V0UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBp
c093blByb3BlcnR5ID0gbyA9PT0gb2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFr
ID0gZmFsc2U7CiAKQEAgLTc2NCw3ICs3NTksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJv
cGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0
eShvLCBwcm9wZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uU3RvcDsKQEAgLTc3Niw4ICs3NzEsOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scykgewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlTeW1ib2xzKG8pOworICAgICAgICAgICAgaWYgKEBPYmplY3QuQGdldE93blBy
b3BlcnR5U3ltYm9scykgeworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBA
T2JqZWN0LkBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNb
aV0sIGlzT3duUHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJl
c3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtODA1
LDE0ICs4MDAsMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICB7CiAgICAgICAgIGxldCBlbnRyaWVzID0gW107CiAKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1i
b2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAg
ICAgZm9yIChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5JdGVyYXRvcihvYmplY3QpKSB7CiAgICAgICAg
ICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGVudHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmllcywg
e3ZhbHVlfSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3Ro
ID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODI1LDE0ICs4MTks
MTMgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAg
ICAgICAgIGxldCBlbnRyaWVzID0gW107CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2Jz
ZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0
b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAg
IGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRpbkl0ZXJhdG9yKG9iamVjdCkpIHsKICAg
ICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3Rh
cnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNo
KGVudHJpZXMsIHtrZXksIHZhbHVlfSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYm
IGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtODc2LDEwICs4NjksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAg
ICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAg
aWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3Vs
dHMuaW5kZXhPZihyZXN1bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3Nh
dmVkUmVzdWx0cy5AaW5kZXhPZihyZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAh
PT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0lu
ZGV4OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTAxLDggKzg5NCw4IEBAIEluamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlID0gewogfTsKIAogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRj
aEFjdGlvbiA9IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6
IFN5bWJvbCgic3RvcCIpLAorICAgIENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29u
dGludWUiKSwKKyAgICBTdG9wOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIpLAogfQogCiB2
YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CkBAIC05NjIsNyArOTU1LDcg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAg
IHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3Qu
cHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcu
bG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29s
dW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRl
UHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtOTc3LDcgKzk3MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBS
ZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChleCkgewotICAg
ICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwogICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNj
cmlwdGlvbik7CkBAIC05ODYsNyArOTc5LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogCiAgICAgc3RhdGljIGNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZSh2YWx1
ZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcykKICAgICB7Ci0gICAgICAgIGxldCByZW1v
dGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCB1bmRlZmluZWQsIGZhbHNlLCBnZW5l
cmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKTsKKyAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5l
dyBSZW1vdGVPYmplY3QodmFsdWUsIEB1bmRlZmluZWQsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcs
IGNvbHVtbk5hbWVzKTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5vYmplY3RJZCkKICAgICAg
ICAgICAgIGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3QocmVtb3RlT2JqZWN0Lm9iamVjdElk
KTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZSAmJiByZW1vdGVPYmpl
Y3QuY2xhc3NQcm90b3R5cGUub2JqZWN0SWQpCkBAIC0xMDExLDcgKzEwMDQsNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgLy8gRmlyZUJ1ZydzIGFy
cmF5IGRldGVjdGlvbi4KICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFs
dWUuc3BsaWNlID09PSAiZnVuY3Rpb24iICYmIGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCisgICAg
ICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBAaXNGaW5p
dGUodmFsdWUubGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gImFycmF5IjsKICAgICAg
ICAgfSBjYXRjaCB7IH0KIApAQCAtMTA1MCw4ICsxMDQzLDggQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBpZiAoc3VidHlwZSA9PT0gImFycmF5IikKICAg
ICAgICAgICAgIHJldHVybiBjbGFzc05hbWU7CiAKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJp
dGVyYXRvciIgJiYgU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbHVlKQotICAgICAgICAgICAgcmV0
dXJuIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ107CisgICAgICAgIGlmIChzdWJ0eXBlID09PSAi
aXRlcmF0b3IiICYmIEBAdG9TdHJpbmdUYWcgaW4gdmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
dmFsdWVbQEB0b1N0cmluZ1RhZ107CiAKICAgICAgICAgLy8gTm9kZUxpc3QgaW4gSlNDIGlzIGEg
ZnVuY3Rpb24sIGNoZWNrIGZvciBhcnJheSBwcmlvciB0byB0aGlzLgogICAgICAgICBpZiAodHlw
ZW9mIHZhbHVlID09PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMDYyLDcgQEAgbGV0IFJlbW90
ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGljIG5vZGVQcmV2aWV3KG5v
ZGUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8jIyMjIyM+IGBSZW1v
dGVPYmplY3Qubm9kZVByZXZpZXdgIHNob3VsZCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHRpbnMu
CiAgICAgICAgIGxldCBpc1hNTERvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50ICYmICEhbm9k
ZS5vd25lckRvY3VtZW50LnhtbFZlcnNpb247CiAgICAgICAgIGxldCBub2RlTmFtZSA9IGlzWE1M
RG9jdW1lbnQgPyBub2RlLm5vZGVOYW1lIDogbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwog
CkBAIC0xMTQyLDggKzExMzYsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBm
aXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCiAgICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNo
b2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAw
MCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAgICAgaW5kZXhl
czogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5
c0NvdW50KQorICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAw
MCA6ICg1ID4gZmlyc3RMZXZlbEtleXNDb3VudCA/IDUgOiBmaXJzdExldmVsS2V5c0NvdW50KSwK
KyAgICAgICAgICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiAoMTAgPiBm
aXJzdExldmVsS2V5c0NvdW50ID8gMTAgOiBmaXJzdExldmVsS2V5c0NvdW50KSwKICAgICAgICAg
fTsKIAogICAgICAgICB0cnkgewpAQCAtMTE5MCw5ICsxMTg0LDkgQEAgbGV0IFJlbW90ZU9iamVj
dCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBpZiAobmFtZSA9PT0gIl9fcHJvdG9fXyIp
IHsKICAgICAgICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2JqZWN0cyBtYXkgaGF2ZSBp
bnRlcmVzdGluZywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hvdy4KICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IKLSAg
ICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBPYmplY3QK
LSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBBcnJh
eQotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IFJl
Z0V4cCkKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9
PSBAT2JqZWN0CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3Rv
ciAhPT0gQEFycmF5CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1
Y3RvciAhPT0gQFJlZ0V4cCkKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFs
c2U7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlv
bi5Db250aW51ZTsKICAgICAgICAgfQpAQCAtMTIwOSw3ICsxMjAzLDcgQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0
ZXIsIG9ubHkgc2hvdyBwcm9wZXJ0aWVzIGluIHRoZSBmaWx0ZXIuCiAgICAgICAgIC8vIEZJWE1F
OiBDdXJyZW50bHkgdGhlc2UgZmlsdGVycyBkbyBub3RoaW5nIG9uIHRoZSBiYWNrZW5kLgotICAg
ICAgICBpZiAoZmlyc3RMZXZlbEtleXMgJiYgIWZpcnN0TGV2ZWxLZXlzLmluY2x1ZGVzKG5hbWUp
KQorICAgICAgICBpZiAoZmlyc3RMZXZlbEtleXMgJiYgIWZpcnN0TGV2ZWxLZXlzLkBpbmNsdWRl
cyhuYW1lKSkKICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLkNvbnRpbnVlOwogCiAgICAgICAgIGZ1bmN0aW9uIGFwcGVuZFByZXZpZXcocHJvcGVy
dHkpIHsKQEAgLTEyMjcsNyArMTIyMSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcy5w
dXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJldmlldy5wcm9wZXJ0aWVz
LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCkBAIC0xMjcwLDYgKzEyNjQsNyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHN5bWJvbFN0
cmluZ30pOwogICAgICAgICB9CisgICAgICAgIC8vIAogCiAgICAgICAgIC8vIE9iamVjdC4KICAg
ICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OwpAQCAtMTMxMyw3ICsxMzA4LDcgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJp
ZXMucG9wKCk7CisgICAgICAgICAgICBlbnRyaWVzLkBwb3AoKTsKICAgICAgICAgICAgIHByZXZp
ZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwogICAgICAgICB9CkBAIC0xMzIzLDcgKzEzMTgsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmllcy5tYXAoZnVu
Y3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmllcy5AbWFwKGZ1
bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5j
cmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkudmFsdWUsIGVudHJ5LnZhbHVlICE9PSBv
YmplY3QpOwogICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkudmFsdWUpOwogICAg
ICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KSB7CkBAIC0xMzM2LDggKzEzMzEsOCBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaXNQcmV2aWV3YWJsZU9i
amVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7Ci0g
ICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAgICAgICAgbGV0IHNldCA9IG5ldyBAU2V0OworICAg
ICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9pc1ByZXZpZXdh
YmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNldCwgMSk7CiAgICAgfQpAQCAtMTM1NywxMSArMTM1
MiwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KLSAgICAgICAgaWYg
KGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5AaGFz
KG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgKytkZXB0aDsK
LSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOworICAgICAgICBrbm93bk9iamVjdHMu
QGFkZChvYmplY3QpOwogCiAgICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2
ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3Rl
T2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAgLTEzODEsMTIgKzEzNzYsMTMgQEAgbGV0IFJlbW90
ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNp
bXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7CisgICAgICAgIGxldCBvd25Qcm9wZXJ0
eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOwogICAgICAgICBp
ZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAvLyBNQVJLOiBbUENBXSBXZSBhcmUgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXkg
aGVyZS4KICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gb3duUHJvcGVydHlOYW1l
c1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3Jp
cHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAmJiAhKCJ2YWx1ZSIgaW4gZGVzY3Jp
cHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCF0
aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0W3Byb3BlcnR5TmFtZV0sIGtu
b3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTQxNyw3ICsxNDEzLDcgQEAgSW5qZWN0ZWRTY3JpcHQu
Q2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCiB7CiAgICAgdGhp
cy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQi
OiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFt
ZS5mdW5jdGlvbk5hbWU7Ci0gICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJZDogU3RyaW5nKGNh
bGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5lLCBjb2x1bW5OdW1i
ZXI6IGNhbGxGcmFtZS5jb2x1bW59OworICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6IEBT
dHJpbmcoY2FsbEZyYW1lLnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNv
bHVtbk51bWJlcjogY2FsbEZyYW1lLmNvbHVtbn07CiAgICAgdGhpcy5zY29wZUNoYWluID0gdGhp
cy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKICAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmpl
Y3QuY3JlYXRlKGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7CiAgICAgdGhpcy5p
c1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7CkBAIC0xNTA2LDggKzE1MDIs
OCBAQCBDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhv
ZHMgPSB7fTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2Jq
ZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMo
b2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9i
amVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZh
bHVlcyhvYmplY3QpOyB9OwogCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNl
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uYXJndW1lbnRzKTsgfTsKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uYXJndW1lbnRzKTsgfTsKQEAgLTE1NDYsNCArMTU0Miw0IEBAIGZvciAobGV0IG5hbWUg
aW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25h
bWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAi
KCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKIHJldHVybiBpbmplY3RlZFNjcmlwdDsK
LX0pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhNjk4MWJiZjVh
ZDk0ZjkzZmQ3OTgzZmY2Zjk3NmM3ZTM5ZDk5OTU4Li5iYzIzN2ExZjRmNDBiNjU4NzRhNTg4YTNi
ZjQ4OTA0MWI5M2M2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTIyMjEsNyArMjIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAg
ICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVycm9yLmlz
VmFsaWQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJv
cjo6U3RhY2tPdmVyZmxvdykKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVj
dGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCkpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0
aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5lICIsIGVycm9yLmxpbmUoKSwgIi4iKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IGZjNzg4OTQ2
NTFlOWQ3Njk3N2Y3OTVjNDU0ZDk5ZWUxOWYxM2U3OWMuLmZmYzljOWMyMzMxZGFlM2Q2YTY1YmRl
ZmFjNTBiYjFhMDNmMzY3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQXJy
YXlDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJv
eHlPYmplY3QuaCIKIApAQCAtNTcsNiArNTgsOCBAQCB2b2lkIEFycmF5Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYQog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5LCBhcnJheUNvbnN0cnVjdG9ySXNBcnJh
eUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mcm9tUHJpdmF0ZU5hbWUoKSwgYXJy
YXlDb25zdHJ1Y3RvckZyb21Db2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggNWEz
YWFhOTFlNjI3MjhjMmNhOWZhZWY1NjFkMmZhYmVkZTcwNTk1ZS4uNTE1Yzg1ZmQ3ZDMxZTEzNTgw
YzBlOGE1MGYxMGY3ZjhmNmFiZjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTMwLDcgKzEzMCwxMSBAQCB2b2lkIEFycmF5
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgfQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5mb3JFYWNoUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNs
dWRlc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluZGV4T2ZQcml2YXRlTmFt
ZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluZGV4
T2ZQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCkpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm1hcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQcml2YXRlTmFtZSgpLCBn
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFB1YmxpY05h
bWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSkpOwogCiAgICAgSlNPYmplY3QqIHVuc2NvcGFibGVzID0gY29uc3RydWN0
RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVy
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBkMTQ0MTI0OGY2ZTJmMjZmZWM4M2M5NWZjNjcxNmJjMGQyMTQzNDE5Li45OWY0
Zjc5NDExYmNhY2IzOWVhNDAxZDkyOGI3NzllYzEwMDE0OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yNzUsNiArMjc1LDgg
QEAgRk9SX0VBQ0hfTEFaWV9CVUlMVElOX1RZUEUoQ0hFQ0tfRkVBVFVSRV9GTEFHX1RZUEUpCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihtYWtlQm91bmRGdW5jdGlvbik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihoYXNPd25MZW5ndGhQcm9wZXJ0eSk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25QYXJzZSk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc29uU3RyaW5naWZ5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGVuYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihkaXNhYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGVucXVldWVKb2IpOwpAQCAtMzYxLDYgKzM2MywyMyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFBy
aXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKIH0KIAorSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzb25QYXJzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1
dG8ganNvbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU09OUGFyc2UoZ2xvYmFsT2JqZWN0LCBqc29uKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc29uU3RyaW5naWZ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCByZXN1bHQpKTsKK30KKwogI2lmIEFT
U0VSVF9FTkFCTEVECiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXNzZXJ0Q2FsbCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKQEAgLTEw
NzQsOSArMTA5MywxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMj
IENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgbV9wcm9taXNl
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1faW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvcik7CisgICAgbV9zdHJpbmdDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHN0cmluZ0Nv
bnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3Ry
dWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IpOwotICAgIAorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlN0cmluZyldLnNldCh2bSwgdGhpcywg
c3RyaW5nQ29uc3RydWN0b3IpOworCiAgICAgbV9ldmFsRXJyb3JTdHJ1Y3R1cmUuaW5pdExhdGVy
KAogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewog
ICAgICAgICAgICAgaW5pdC5nbG9iYWwtPmluaXRpYWxpemVFcnJvckNvbnN0cnVjdG9yPEVycm9y
VHlwZTo6RXZhbEVycm9yPihpbml0KTsKQEAgLTE1NTMsNiArMTU3NCwxNCBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
Y3JlYXRlUHJpdmF0ZVN5bWJvbCkpOwogICAgICAgICB9KTsKIAorICAgIC8vIEpTT04gaGVscGVy
cworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6Ompzb25QYXJzZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwg
anNvblBhcnNlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25TdHJpbmdpZnkpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGpzb25TdHJpbmdpZnkpKTsKKyAgICAgICAgfSk7
CisKICAgICAvLyBTaGFkb3dSZWFsbXMKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVSZW1vdGVGdW5jdGlvbildLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgY3JlYXRlUmVtb3RlRnVuY3Rpb24pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IGEwYWFlZDM0Nzg3YWY2NmE0ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIuLjRjYWE2ZGM5NDBlMTg3
NTJlN2NkNDY2OTc1YzczYTRmOWI5YzU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGU7CiBjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKIGNsYXNzIEpTTW9k
dWxlTG9hZGVyOwogY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBKU09OT2JqZWN0OwogY2xh
c3MgSlNQcm9taXNlOwogY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3I7CiBjbGFzcyBKU1Byb21p
c2VQcm90b3R5cGU7CkBAIC0xMjQsNiArMTI1LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90b3R5
cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNl
T3JpZ2luOworY2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFjdGl2
YXRpb25TdGFja05vZGU7CkBAIC0zMjAsNiArMzIyLDcgQEAgcHVibGljOgogICAgIFdyaXRlQmFy
cmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1f
c3RyaW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIElu
dGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5
ZTE3OGZiMWM3NzczOGFhNjQ2NTY2MTRlYWFiZDhhZDE0Ny4uMzY1YTI3MGVmMzNmY2NlMzRlOGEy
MWM2ZTk4YjkzMzU0ZGE4NDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtOTksNyArOTksMTQgQEAgdm9pZCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBPYmoKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOwogCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQ
cml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRP
d25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0
ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JDcmVh
dGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAy
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvclZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworCiAgICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQogICAgICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNP
d24sIG9iamVjdENvbnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBlMjEzNGEwZmU0ODk2YjIwMTA0
N2EzYjQyN2I3MTg0YzEzYTg4ZTVkLi40M2QwMGYzZjI4YmM2MGJkY2NjMzJhMDM0ZWU0YzUwY2M5
MWI4MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDggQEAgdm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2Rl
ZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cEdl
dHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cFNldHRlcl9f
LCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093
blByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKIH0K
IAogT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBmYTA0YjdlY2ViYmU4M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi43
OTJhNjcwMTYyN2MxZWEzYzg5YmRlYTVjOGNmM2IyMmNmY2RkZWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjEyOSwxOCArMjEyOSw2IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJD
b3JlKQogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJ
VF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmgKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgg
JHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
Lm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4
ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQg
JHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRf
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQ
WVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkg
PCAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMg
Pj4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWlu
LmpzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0K
LQogTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29sb3JEYXRhLmNwcCkKIApAQCAtMjM1Miw2ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJ
TlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwog
ICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09S
RV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09S
RV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQo
QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYx
YzhhODZlNzA4MTJiOS4uOTUzYjcxYTEyMTNlMjI4OWY3NjNhNGIzOGQ1NjdiMWFlYjhjMTZiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTgsNyArOCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaQogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRh
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlQnVp
bHRpbnMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRp
bnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NQ2xpZW50SXNvU3Vic3BhY2Vz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ2NjNjMzIzNjg0ZDFjMGY4ODBm
YjdjZjk2MWZjNmZhNDIxNmU0NmMuLmIxMjNhYmY5M2UyNzU4ZDIxMTQ4YzEwMWM5ZDE3MzRkMDQ5
NmY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjIxOSwxNiArMjIxOSw2
IEBAIGlmbmVxICgkKE5PX1NVUFBMRU1FTlRBTF9GSUxFUyksMSkKIC1pbmNsdWRlICQoSlNfRE9N
X0hFQURFUlM6Lmg9LmRlcCkKIGVuZGlmCiAKLSMgSW5zcGVjdG9yIGludGVyZmFjZXMKLQotYWxs
IDogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCi1Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oIDogJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMiID4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQ
WVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS94eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UubWluLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQkkKERFTEVU
RSkgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0KICMgV2ViQ29yZSBKUyBCdWls
dGlucwogCiBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCkBAIC0yMjUyLDYgKzIyNDIsNyBA
QCBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dERl
Y29kZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpz
IFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcyBc
CisgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMg
XAogIwogCiBCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDFhY2FkZTAwOWIwYjdhOTI4MDgzODBjYTUyMmJjMzUyOTdjMzlmNDYuLmM5MDgwNDIxYzgz
OGZjYzNlNDJlYThlZmEwY2M3NTQyMmRkZGY3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjA1
Nyw2ICsyMDU3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAg
ICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuaAogICAg
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NWYWx1ZUtleXdvcmRzLmgKKyAgICAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VC
dWlsdGlucy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0V2ZW50SW50ZXJm
YWNlcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0V2ZW50VGFyZ2V0SW50
ZXJmYWNlcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0hUTUxFbGVtZW50
VHlwZUhlbHBlcnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIzZWRiYjE0N2U3NGUzNmE5OTU0ZmY3YzI2OTc4NTFmZTgzMDA2
YmEuLjc0OTE1YzZiY2RiMGNkMTMwODA1N2Y3OTk4MTJjNzYxNDE4MmFmZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OSw2
ICs4OTksNyBAQAogCQkyRTMwMUJFODI3NDU5NDcyMDBDMDU2NEYgLyogQ29tcGlsZWRTZWxlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0NTEw
NzcyMDJDN0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2VsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTM3REZEQjEyREJBRkI4MDBBNkIy
MzMgLyogRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTM3REZEODEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggKi87IH07CiAJCTJFMzdF
MDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9N
VVJMLmggKi87IH07CisJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKIAkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKQEAgLTM1MTcsNyAr
MzUxOCw2IEBACiAJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VU
cmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZC
Mjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBT
ZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8q
IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2Ny
aXB0SG9zdC5oICovOyB9OwotCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oICovOyB9OwogCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICov
OyB9OwogCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07
CiAJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2NEQ1
QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCAqLzsgfTsKQEAgLTgyMDQsNiArODIw
NCw4IEBACiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFMzdFMDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29y
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk0MCw3ICsxMzk0Miw2IEBACiAJCUE1ODFF
RDEyMUZCMjg4QzkwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckFnZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdlYklu
amVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
ODRGRTI5MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb21tYW5kTGluZUFQSU1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA0MjgsNyArMjA0MjksNiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVj
dG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNTg0
RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLywK
IAkJCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3Bw
ICovLAogCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9z
dC5oICovLAogCQkJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCkBAIC0yMzU4NSw2ICsyMzU4NSw4IEBACiAJCQkJ
OTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWls
dGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjUxQkNBRDA3RDAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlE
NiAvKiBDb2xvckRhdGEuY3BwICovLAorCQkJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLywKKwkJCQkyRTNBRUZGOTI4
MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oICov
LAogCQkJCTk5MDhCMEY2MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJDNSAv
KiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLywKQEAgLTM0MDgzLDcgKzM0MDg1LDcgQEAKIAkJCQky
NkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEyMDk5REYwMjcwMDkwRDc4MSAvKiBD
b21tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlCQUQgLyog
Q29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RTY2NEZDMUU3MzcwMzMw
MDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IDYzZWE3ZmFhZjU5ZGQ3Nzk0MDI5MzQ0NjMzOGZhOGIyMjgzNTVmYTUuLjA2N2E1ODk2YTk4MWFk
MmFiZmJjODYyNmJhOTdjZWE2ZTM2ZDJkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTI0Niw2ICsyNDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAgICAgbWFj
cm8oTmF2aWdhdG9yUGVybWlzc2lvbnMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEp
IFwKKyAgICBtYWNybyhOb2RlKSBcCiAgICAgbWFjcm8oTm90aWZpY2F0aW9uKSBcCiAgICAgbWFj
cm8oTm90aWZpY2F0aW9uRXZlbnQpIFwKICAgICBtYWNybyhPZmZsaW5lQXVkaW9Db21wbGV0aW9u
RXZlbnQpIFwKQEAgLTQyMCw2ICs0MjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFj
cm8oWFJXZWJHTExheWVyKSBcCiAgICAgbWFjcm8oYWJvcnRBbGdvcml0aG0pIFwKICAgICBtYWNy
byhhYm9ydFN0ZXBzKSBcCisgICAgbWFjcm8oYWRkRXZlbnRMaXN0ZW5lcikgXAogICAgIG1hY3Jv
KGFwcGVuZEZyb21KUykgXAogICAgIG1hY3JvKGFzc29jaWF0ZWRSZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyKSBcCiAgICAgbWFjcm8oYXV0b0FsbG9jYXRlQ2h1bmtTaXplKSBcCkBAIC00Njks
NiArNDcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGZsdXNoQWxnb3JpdGht
KSBcCiAgICAgbWFjcm8oZm9jdXMpIFwKICAgICBtYWNybyhmcmFtZXMpIFwKKyAgICBtYWNybyhn
ZXRFbGVtZW50QnlJZCkgXAogICAgIG1hY3JvKGdldEludGVybmFsV3JpdGFibGVTdHJlYW0pIFwK
ICAgICBtYWNybyhnZXRUcmFja3MpIFwKICAgICBtYWNybyhnZXRVc2VyTWVkaWEpIFwKQEAgLTQ4
OCw2ICs0OTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oaXNEaXN0dXJiZWQp
IFwKICAgICBtYWNybyhpc0xvYWRpbmcpIFwKICAgICBtYWNybyhpc1NlY3VyZUNvbnRleHQpIFwK
KyAgICBtYWNybyhpdGVyYXRlTmV4dCkgXAogICAgIG1hY3JvKGtpbmQpIFwKICAgICBtYWNybyhs
YW5ndWFnZSkgXAogICAgIG1hY3JvKGxvY2FsU3RyZWFtcykgXApAQCAtNTE4LDYgKzUyMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhvcGVuRGF0YWJhc2UpIFwKICAgICBtYWNy
byhvcGVuZXIpIFwKICAgICBtYWNybyhvcGVyYXRpb25zKSBcCisgICAgbWFjcm8ob3V0ZXJIVE1M
KSBcCiAgICAgbWFjcm8ob3duZXJSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKHBhcmVudCkg
XAogICAgIG1hY3JvKHBlbmRpbmdQdWxsSW50b3MpIFwKQEAgLTUyNyw2ICs1MzIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8ocHVsbEFnYWluKSBcCiAgICAgbWFjcm8ocHVsbEFs
Z29yaXRobSkgXAogICAgIG1hY3JvKHB1bGxpbmcpIFwKKyAgICBtYWNybyhxdWVyeVNlbGVjdG9y
KSBcCisgICAgbWFjcm8ocXVlcnlTZWxlY3RvckFsbCkgXAogICAgIG1hY3JvKHF1ZXVlKSBcCiAg
ICAgbWFjcm8ocXVldWVkQWRkSWNlQ2FuZGlkYXRlKSBcCiAgICAgbWFjcm8ocXVldWVkQ3JlYXRl
QW5zd2VyKSBcCkBAIC01NDEsNiArNTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1h
Y3JvKHJlYWRlcikgXAogICAgIG1hY3JvKHJlYWR5UHJvbWlzZSkgXAogICAgIG1hY3JvKHJlYWR5
UHJvbWlzZUNhcGFiaWxpdHkpIFwKKyAgICBtYWNybyhyZW1vdmVFdmVudExpc3RlbmVyKSBcCiAg
ICAgbWFjcm8ocmVxdWVzdEFuaW1hdGlvbkZyYW1lKSBcCiAgICAgbWFjcm8ocmVxdWVzdElkbGVD
YWxsYmFjaykgXAogICAgIG1hY3JvKHJlc3BvbnNlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGIzYWUwYTA4MjMyODkz
MzAwNWM0MWQ2MDFjNTU1NzFmMTFjMGFkMzIuLmZmMDQ3ZGVmYTVjOWI3MWQ3MDMxNTgzZGM2ODBm
MDA5ZGUwMDQzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC00Nzc5LDcgKzQ3NzksMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKICAgICAgICAgbmV4dCBpZiBOZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNl
LCAkYXR0cmlidXRlKTsKICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9OwotICAgICAgICBuZXh0IHVubGVzcyBBdHRy
aWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisKKyAgICAg
ICAgIyBDRVJlYWN0aW9ucyBhdHRyaWJ1dGVzIHNob3VsZCBzdGlsbCBiZSBhbGxvd2VkIHRvIGhh
dmUgYSBQcml2YXRlSWRlbnRpZmllciBmb3IgdGhlaXIgZ2V0dGVyLgorICAgICAgICBpZiAobm90
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgeworICAgICAg
ICAgICAgbmV4dCB1bmxlc3MgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpOworICAgICAgICB9CiAKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldl
YkNvcmVKU0NsaWVudERhdGEuaCIpOwogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKQEAg
LTQ3ODcsOCArNDc5MSwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBt
eSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICBhc3NlcnQo
IkN1c3RvbUdldHRlclNldHRlciBpcyBub3QgYWxsb3dlZCBmb3IgRE9NQXR0cmlidXRlLiBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIgbXVzdCBiZSB1c2VkLiIpIGlmIElzQWNjZWxlcmF0ZWRET01B
dHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBidWlsdGluTmFtZXModm0pLiIg
LiAkYXR0cmlidXRlTmFtZSAuICJQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgJGdldHRlciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7XG4iKTsKKyAgICAgICAgaWYgKElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUoJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKKyAgICAgICAgICAgIG15ICRjbGFzc0ZvclRoaXMgPSAi
JHtjbGFzc05hbWV9OjppbmZvKCkiOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIGJ1aWx0aW5OYW1lcyh2bSkuIiAuICRhdHRy
aWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sICRnZXR0ZXIsIG51bGxwdHIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlv
biB7ICRjbGFzc0ZvclRoaXMsIG51bGxwdHIgfSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7XG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBidWlsdGluTmFtZXMo
dm0pLiIgLiAkYXR0cmlidXRlTmFtZSAuICJQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSk7XG4iKTsKKyAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQrRE9NUGFyc2luZy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudCtET01QYXJzaW5nLmlkbAppbmRleCBmYzExZmU3OTNhYzJjOTg2ZTk2
NzZmMzgxYTg3N2EyMTRmZmEwN2RhLi5hZjQ0NjUyN2VhMDBmNjYxYjE2ZTk4NGQ4MmQwMmRmOTA5
NzMxY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudCtET01QYXJzaW5n
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudCtET01QYXJzaW5nLmlkbApAQCAt
MjUsNiArMjUsNiBAQAogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vRE9NLVBhcnNpbmcvI2V4
dGVuc2lvbnMtdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlCiBwYXJ0aWFsIGludGVyZmFjZSBFbGVt
ZW50IHsKLSAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmddIERPTVN0cmluZyBvdXRlckhUTUw7CisgICAgW0NFUmVhY3Rpb25zLCBQcml2YXRlSWRlbnRp
ZmllciwgUHVibGljSWRlbnRpZmllcl0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIG91dGVySFRNTDsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBpbnNl
cnRBZGphY2VudEhUTUwoRE9NU3RyaW5nIHBvc2l0aW9uLCBET01TdHJpbmcgdGV4dCk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKaW5kZXggM2MzMjY0YjZlMmViZmFkYjYyODRlZGUz
ZWFiMDE2ODBmNzUzZDZjNi4uZDRiMGIzNzBkZTIxNjg3MmI5ZjE4ZDU1MWMzODhjZDNlNDQyMDky
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCkBAIC0yOCw3ICsyOCw3IEBACiBdIGlu
dGVyZmFjZSBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRoPUN1cnJlbnRTY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBjb25zdHJ1Y3RvcigpOwogCi0gICAgW0ltcGxlbWVudGVkQXM9YWRkRXZlbnRM
aXN0ZW5lckZvckJpbmRpbmdzXSB1bmRlZmluZWQgYWRkRXZlbnRMaXN0ZW5lcihbQXRvbVN0cmlu
Z10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCAoQWRk
RXZlbnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsKLSAgICBb
SW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHVuZGVmaW5lZCBy
ZW1vdmVFdmVudExpc3RlbmVyKFtBdG9tU3RyaW5nXSBET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0
ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIChFdmVudExpc3RlbmVyT3B0aW9ucyBvciBib29sZWFu
KSBvcHRpb25zID0gZmFsc2UpOworICAgIFtJbXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlzdGVuZXJG
b3JCaW5kaW5ncywgUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIHVuZGVmaW5l
ZCBhZGRFdmVudExpc3RlbmVyKFtBdG9tU3RyaW5nXSBET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0
ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIChBZGRFdmVudExpc3RlbmVyT3B0aW9ucyBvciBib29s
ZWFuKSBvcHRpb25zID0gZmFsc2UpOworICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlz
dGVuZXJGb3JCaW5kaW5ncywgUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIHVu
ZGVmaW5lZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9tU3RyaW5nXSBET01TdHJpbmcgdHlwZSwg
RXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIChFdmVudExpc3RlbmVyT3B0aW9ucyBv
ciBib29sZWFuKSBvcHRpb25zID0gZmFsc2UpOwogICAgIFtJbXBsZW1lbnRlZEFzPWRpc3BhdGNo
RXZlbnRGb3JCaW5kaW5nc10gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5pZGwKaW5kZXggOWU0NGQyOGQ3YjZkYjc2ZTM0NzgxZjdmMjQyYTVhNzhjYWQ3
OWI2ZS4uNzM2YjExNGU5YmU3MjUzZDc5NDJhZmEyYWNjYTg2MDA0Njk5ZDBmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmlkbApAQCAtMjYsNiArMjYsOCBAQAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JU
LAogICAgIEpTQ3VzdG9tSGVhZGVyLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIFBy
aXZhdGVJZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIsCiAgICAgRXhwb3NlZD1XaW5k
b3cKIF0gaW50ZXJmYWNlIE5vZGUgOiBFdmVudFRhcmdldCB7CiAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgRUxFTUVOVF9OT0RFID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b25FbGVtZW50UGFyZW50Tm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBh
cmVudE5vZGUuaWRsCmluZGV4IDQwNzc3MDY3YTVlNGFkZmUzZjg4ZDU4MTVkMmE4ZjgzYzllMTAz
NGIuLjNjMDE4NDM2ZGFiOTJkYmJiYzYzZTNkMDZlNTljNTMxNmUwOTczZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob25FbGVtZW50UGFyZW50Tm9kZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbApAQCAtMjYsNSArMjYsNSBAQAog
CiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1ub25lbGVtZW50cGFy
ZW50bm9kZQogaW50ZXJmYWNlIG1peGluIE5vbkVsZW1lbnRQYXJlbnROb2RlIHsKLSAgICBbRE9N
SklUPVJlYWRET01dIEVsZW1lbnQ/IGdldEVsZW1lbnRCeUlkKFtSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CisgICAgW0RPTUpJVD1SZWFkRE9NLCBQcml2
YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gRWxlbWVudD8gZ2V0RWxlbWVudEJ5SWQo
W1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFyZW50Tm9kZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUGFyZW50Tm9kZS5pZGwKaW5kZXggYTA0ZGUzODhkZjk2ZmMyZmM5ZWM4ZWFmMjZh
NWE1MTIwNmMwNDI3MS4uYjgxMThlYzM0YmE2MDJmMzI2OTc4NDVhNDFmMmYwZDgxMTc5NWM1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BhcmVudE5vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9QYXJlbnROb2RlLmlkbApAQCAtMzUsNiArMzUsNiBAQCBpbnRlcmZhY2Ug
bWl4aW4gUGFyZW50Tm9kZSB7CiAgICAgW0NFUmVhY3Rpb25zLCBVbnNjb3BhYmxlXSB1bmRlZmlu
ZWQgYXBwZW5kKChOb2RlIG9yIERPTVN0cmluZykuLi4gbm9kZXMpOwogICAgIFtDRVJlYWN0aW9u
cywgVW5zY29wYWJsZV0gdW5kZWZpbmVkIHJlcGxhY2VDaGlsZHJlbigoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKTsKIAotICAgIEVsZW1lbnQ/IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNl
bGVjdG9ycyk7Ci0gICAgW05ld09iamVjdF0gTm9kZUxpc3QgcXVlcnlTZWxlY3RvckFsbChET01T
dHJpbmcgc2VsZWN0b3JzKTsKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZp
ZXJdIEVsZW1lbnQ/IHF1ZXJ5U2VsZWN0b3IoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CisgICAgW05l
d09iamVjdCwgUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIE5vZGVMaXN0IHF1
ZXJ5U2VsZWN0b3JBbGwoRE9NU3RyaW5nIHNlbGVjdG9ycyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKaW5kZXggZDc3YzczZDhh
ZTQ5NTAxNjc1MjgyMjY0ZDBkMzZkNjVjY2U3NDJmZi4uZjY2YzM0NDQyZjExNjc4ZDgxMzUwNzBm
NDgwYWU3NmRmOWIyNjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGUuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIKIAotI2luY2x1ZGUgIkNvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDgsOSArNDcsMTQgQEAgQ29tbWFuZExpbmVBUElN
b2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkKIHsKIH0KIAotU3RyaW5nIENvbW1hbmRMaW5l
QVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAorSlNGdW5jdGlvbiogQ29tbWFuZExpbmVBUElNb2R1
bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzLCBzaXplb2YoQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2VfanMpKTsKKyAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCkpCisgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmNvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlKCkubV9pbmplY3RNb2R1bGVGdW5jdGlvbi5nZXQoKTsKKworICAgIFdURkxv
Z0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGdldCBgaW5qZWN0TW9kdWxlYCBmdW5jdGlvbiBmcm9tIGBD
b21tYW5kTGluZUFQSU1vZHVsZWAgZm9yIG5vbi1gSlNET01HbG9iYWxPYmplY3RgLiIpOworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1ZhbHVl
IENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgK
aW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1MGQ0YTVm
MzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
Q29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsKIAotICAg
IFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGlu
amVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsK
ICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcios
IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lk
IGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgY29uc3Qg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUzNTE5Y2Ni
MTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLjhkNzllZDJjOTExZWY4OGFlNWFkNmFjMDY3
YjA4NzYyNjM2ZTkzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTAgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlw
dEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRT
Y3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0
KSB7Ci0KLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVj
dG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFy
YW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCitmdW5jdGlvbiBpbmplY3RNb2R1
bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2Ny
aXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENv
bW1hbmRMaW5lQVBJSG9zdCkKK3sKIAogaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QgPSBm
dW5jdGlvbihvYmplY3QpIHsKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKQEAgLTY0
LDE4ICs2MywxOCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihv
YmplY3QpIHsKIAogICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0
KTsKICAgICBpZiAoc3VidHlwZSA9PT0gIm5vZGUiKQotICAgICAgICBzdHJpbmcgPSBvYmplY3Qu
b3V0ZXJIVE1MOworICAgICAgICBzdHJpbmcgPSBvYmplY3QuQG91dGVySFRNTDsKICAgICBlbHNl
IGlmIChzdWJ0eXBlID09PSAicmVnZXhwIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7
CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRTY3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQog
ICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0
ID09PSAic3ltYm9sIikKLSAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0
cmluZyhvYmplY3QpOworICAgICAgICBzdHJpbmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAgZWxz
ZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIg
KyBvYmplY3Q7CiAgICAgZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcg
PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAi
KTsKKyAgICAgICAgICAgIHN0cmluZyA9IEBqc29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAg
ICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAg
ICAgIH0KQEAgLTg5LDIzICs4OCwyOCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVu
dExpc3RlbmVycyJdID0gZnVuY3Rpb24odGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxp
emVFdmVudFR5cGVzKHR5cGVzKSB7Ci0gICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCisgICAg
aWYgKHR5cGVzID09PSBAdW5kZWZpbmVkKQogICAgICAgICB0eXBlcyA9IFsibW91c2UiLCAia2V5
IiwgInRvdWNoIiwgImNvbnRyb2wiLCAiYWJvcnQiLCAiYmx1ciIsICJjaGFuZ2UiLCAiZGV2aWNl
bW90aW9uIiwgImRldmljZW9yaWVudGF0aW9uIiwgImVycm9yIiwgImZvY3VzIiwgImxvYWQiLCAi
cmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWFyY2giLCAic2VsZWN0IiwgInN1Ym1pdCIs
ICJ1bmxvYWQiXTsKICAgICBlbHNlIGlmICh0eXBlb2YgdHlwZXMgPT09ICJzdHJpbmciKQogICAg
ICAgICB0eXBlcyA9IFt0eXBlc107CiAKLSAgICBsZXQgcmVzdWx0ID0gW107CisgICAgbGV0IHJl
c3VsdCA9IG5ldyBAU2V0OworICAgIGZ1bmN0aW9uIGFkZFR5cGVzVG9SZXN1bHQodHlwZXMpIHsK
KyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRpbkl0ZXJhdG9yKHR5cGVzKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5AYWRkKHR5cGUpOworICAgIH0KKwogICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2Ui
KQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93
biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91
c2V3aGVlbCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiY2xpY2siLCAiZGJsY2xp
Y2siLCAibW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAi
bW91c2V1cCIsICJtb3VzZXdoZWVsIik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAi
a2V5IikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtl
eXVwIiwgInRleHRJbnB1dCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgia2V5ZG93
biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAgICAgZWxzZSBpZiAo
dHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5j
ZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgICAg
IGFkZFR5cGVzVG9SZXN1bHQoInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIs
ICJ0b3VjaHN0YXJ0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIp
Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVz
ZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAg
ICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJl
c2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5AYWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTExNiwzOCArMTIwLDM2IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogfQogCiBDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJtb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5
cGVzKSB7Ci0gICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFv
YmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKKyAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LkBh
ZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QuQHJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAg
IHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgb2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgIG9i
amVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZv
ciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5JdGVyYXRvcihub3JtYWxpemVFdmVudFR5cGVzKHR5cGVz
KSkpIHsKKyAgICAgICAgb2JqZWN0LkByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50
LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5AYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVu
dCwgZmFsc2UpOwogICAgIH0KIH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInVubW9uaXRv
ckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewotICAgIGlmICghb2JqZWN0IHx8
ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIp
CisgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5AYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0
LkByZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3Jt
YWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxl
bmd0aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwg
bG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmF0b3Io
bm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QuQHJlbW92ZUV2ZW50
TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKIH07CiAKLWlmIChpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKK2lmIChp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkBO
b2RlKSB7CiAgICAgZnVuY3Rpb24gY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShub2RlKSB7Ci0gICAg
ICAgIHJldHVybiBub2RlICYmIEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG5vZGUpID09PSAi
bm9kZSIgJiYgKG5vZGUubm9kZVR5cGUgPT09IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlLkVM
RU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9k
ZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09IGluc3BlY3RlZEdsb2JhbE9iamVj
dC5Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOworICAgICAgICByZXR1cm4gbm9kZSAmJiBJ
bmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShub2RlKSA9PT0gIm5vZGUiICYmIChub2RlLm5vZGVU
eXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovIHx8IG5vZGUubm9kZVR5cGUgPT09IDkg
LyogTm9kZS5ET0NVTUVOVF9OT0RFICovIHx8IG5vZGUubm9kZVR5cGUgPT09IDExIC8qIE5vZGUu
RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAqLyk7CiAgICAgfQogCiAgICAgQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CiAgICAgICAgIGlmIChj
YW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBzdGFydC5x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydC5AcXVlcnlT
ZWxlY3RvcihzZWxlY3Rvcik7CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5AcXVlcnlTZWxlY3RvcihzZWxl
Y3Rvcik7CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgICAgIGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0gIiMiKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoc2VsZWN0b3IpOworICAgICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmRvY3VtZW50LkBnZXRFbGVtZW50QnlJZChzZWxlY3Rvcik7CiAgICAgICAgICAgICBpZiAocmVz
dWx0KSB7CiAgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2Fy
bigiVGhlIGNvbnNvbGUgZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2VkIGZyb20gJD1nZXRFbGVtZW50
QnlJZChpZCkgdG8gJD1xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4gWW91IG1pZ2h0IHRyeSAkKFwi
IyVzXCIpIiwgc2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtMTU5
LDI2ICsxNjEsMjcgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
JCQiXSA9IGZ1bmN0aW9uKHNlbGVjdG9yLCBzdGFydCkgewogICAgICAgICBpZiAoY2FuUXVlcnlT
ZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAg
ICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAg
ICAgIHJldHVybiBAQXJyYXkuQGZyb20oc3RhcnQuQHF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3Ip
KTsKKyAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9j
dW1lbnQuQHF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICB9OwogCiAgICAgQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siJHgiXSA9IGZ1bmN0aW9uKHhwYXRoLCBjb250ZXh0KSB7CiAgICAg
ICAgIGxldCBkb2MgPSAoY29udGV4dCAmJiBjb250ZXh0Lm93bmVyRG9jdW1lbnQpIHx8IGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudDsKLSAgICAgICAgbGV0IHJlc3VsdCA9IGRvYy5ldmFs
dWF0ZSh4cGF0aCwgY29udGV4dCB8fCBkb2MsIG51bGwsIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Y
UGF0aFJlc3VsdC5BTllfVFlQRSwgbnVsbCk7CisgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9y
Zy9iLyMjIyMjIz4gWFBhdGhFeHByZXNzaW9uLnByb3RvdHlwZS5ldmFsdWF0ZSBzaG91bGQgaGF2
ZSBhIHByaXZhdGUgaWRlbnRpZmllci4KKyAgICAgICAgbGV0IHJlc3VsdCA9IGRvYy5ldmFsdWF0
ZSh4cGF0aCwgY29udGV4dCB8fCBkb2MsIG51bGwsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUg
Ki8sIG51bGwpOwogICAgICAgICBzd2l0Y2ggKHJlc3VsdC5yZXN1bHRUeXBlKSB7Ci0gICAgICAg
IGNhc2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFOgorICAg
ICAgICBjYXNlIDEgLyogWFBhdGhSZXN1bHQuTlVNQkVSX1RZUEUgKi86CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0Lm51bWJlclZhbHVlOwotICAgICAgICBjYXNlIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5YUGF0aFJlc3VsdC5TVFJJTkdfVFlQRToKKyAgICAgICAgY2FzZSAyIC8qIFhQYXRoUmVz
dWx0LlNUUklOR19UWVBFICovOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1
ZTsKLSAgICAgICAgY2FzZSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuWFBhdGhSZXN1bHQuQk9PTEVB
Tl9UWVBFOgorICAgICAgICBjYXNlIDMgLyogWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFICovOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAogICAg
ICAgICBsZXQgbm9kZXMgPSBbXTsKICAgICAgICAgbGV0IG5vZGUgPSBudWxsOwotICAgICAgICB3
aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVz
aChub2RlKTsKKyAgICAgICAgd2hpbGUgKG5vZGUgPSByZXN1bHQuQGl0ZXJhdGVOZXh0KCkpCisg
ICAgICAgICAgICBAYXJyYXlQdXNoKG5vZGVzLCBub2RlKTsKICAgICAgICAgcmV0dXJuIG5vZGVz
OwogICAgIH07CiB9CkBAIC0xODYsNCArMTg5LDQgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVj
dC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogZm9yIChsZXQgbmFt
ZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
bmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSAr
ICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKIAotfSkKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhSZXN1bHQuaWRsCmluZGV4IDA5NDQ1NzYyYzgwYzRkNDE2YWQxNzQwYzRlNzJiODQzY2IyYzMz
ZjcuLmIxZWVhYjBlMTA5ZTg3YTZlMzM2M2FkNWY0NmIyMmZlNDZlOGIyNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUmVzdWx0LmlkbApAQCAtNDIsNiArNDIsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGludmFsaWRJdGVyYXRvclN0YXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHNuYXBzaG90TGVuZ3RoOwogCi0gICAgTm9kZSBpdGVyYXRlTmV4dCgp
OworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gTm9kZSBpdGVyYXRl
TmV4dCgpOwogICAgIE5vZGUgc25hcHNob3RJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNzI2NzNlZGIxOGUxNTQ3YmEzMzUwNDYwMDMzMTE3ZmEwNjUxOTFmLi4xMWYyODc5
MjBjYTNhM2M0OTMwNmVmNTdiNDcyZTg1OTJlZjc3NTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjItMDQtMjMgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4g
dG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIGJ1aWx0LWlucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVk
LnR4dDoKKwogMjAyMi0wNC0yMyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5j
b20+CiAKICAgICAgICAgQVggSVRNOiBUYWJsZSByb3cgb2JqZWN0cyBzaG91bGQgcmV0dXJuIGEg
bm9uLW51bGwgdW5pZ25vcmVkIHBhcmVudCBldmVuIHdoZW4gYSB0YWJsZSBvYmplY3QgaXMgbm90
IGZvdW5kIGluIGl0cyBhbmNlc3RyeS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWIxNTM5ODgyNDA2YmE5
ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3It
aW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAs
MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTog
W29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FH
RTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNP
TlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBi
ZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRp
bmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
RGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKLS0tIFJ1bm5pbmcgdGVzdCBzZXR1
cC4KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2Ny
aXB0cy5EaXNhYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCi1T
VEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCi1QQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVu
dCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8
c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3
ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwot
ICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25z
b2xlLmxvZygic3RyaW5nIik7Ci0KLUFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNv
bnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVu
dHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAg
ICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25z
b2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAg
fQotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMDo1Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVn
Z2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAtPiAgIDkgICAgICAg
IHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJp
bmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDgg
ICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhj
b25zb2xlKTsKLSAtPiAgMTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDEx
ICAgIH0KLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0KLUFDVElPTjogc3RlcC1p
bgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEyOjIKLSAgICAgIDggICAgICAgIGNvbnNvbGUu
bG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAg
MTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAtPiAgMTEgICAgfXwKLSAgICAgMTIK
LSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0gICAgIDE0Ci0KLUFDVElPTjogcmVzdW1lCi1SRVNV
TUVECi1QQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KLQotLS0gUnVubmluZyB0ZXN0
IHNldHVwLgotLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJu
YWxTY3JpcHRzLkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9n
KQotU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQotUEFVU0VEIChkZWJ1Z2dlci1zdGF0
ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUg
ICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+
ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93
KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAg
Y29uc29sZS5sb2coInN0cmluZyIpOwotCi1BQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50
cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlv
biBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDgg
ICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2co
Y29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDEx
ICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgot
ICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2co
KSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9n
fCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEw
ICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0
PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAg
ICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAg
OSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxv
Zygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5j
dGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAg
IDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5s
b2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAg
IDExICAgIH0KLQotQUNUSU9OOiByZXN1bWUKLVJFU1VNRUQKLVBBU1M6IFNob3VsZCBoYXZlIHVz
ZWQgYWxsIHN0ZXBzLgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwt
c2NyaXB0cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTY4YTcyNTRjZTFl
ZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1m
b3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgIGRlYnVnZ2VyOwotICAg
IGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgY29u
c29sZS5sb2coInN0cmluZyIpOwotfQotCi0vLyAtLS0tLS0tLS0KLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJEZWJ1
Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyIpOwotCi0gICAgd2luZG93LmluaXRpYWxp
emVTdGVwcGluZ1Rlc3RTdWl0ZShzdWl0ZSk7Ci0KLSAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsK
LSAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2Fi
bGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBp
bnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3Rl
ZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVM
b2cpIiwKLSAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2Ug
dGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNo
YW5naW5nIHZpYSB0aGUgc2V0dGluZy4KLSAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0
dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9LAot
ICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJp
biIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25z
b2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKCJz
dHJpbmciKQotICAgICAgICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQotICAg
IGFkZFN0ZXBwaW5nVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VG
b3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxk
IGJlIGFibGUgdG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRo
ZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGlt
ZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8g
dGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNv
bW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KLSAgICAgICAgc2V0dXA6
IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHModHJ1ZSk7IH0sCi0gICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBE
ZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKLSAgICAg
ICAgc3RlcHM6IFsKLSAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAv
LyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVy
ZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBb
U29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQotICAgICAgICAgICAgInJlc3Vt
ZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQotICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVu
KCgpID0+IHsKLSAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci0gICAgfSk7
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNo
ZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRl
cGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMuPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAppbmRleCA1ZGVlOTVlZGY4
OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0
YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDUgQEAgUEFTUzog
U2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIFNj
cmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVu
dCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4KLVBBU1M6
IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuCi1QQVNT
OiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LgogUEFT
UzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAppbmRleCBkNGY4
ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5kNjc3YmEyZGVkZGYxZjUxNjg5
MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTksMTEgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykgc3RhcnRpbmcgb24gbGluZSA1
CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBsaXN0ZW5lciBhdHRyaWJ1dGUg
b24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBzb3VyY2UgYWJvdmUgb24gbGlu
ZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3JpcHRzIEluamVjdGVkU2NyaXB0
U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAKICAgICBsZXQgZm91bmRF
eHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZVNjcmlwdFRhZ1Njcmlw
dCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3Jp
cHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZv
dW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRDb21t
YW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZFVuZXhwZWN0ZWRT
Y3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxTY3JpcHQocGFyYW1zKSB7
CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgZnVuY3Rp
b24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0KHBhcmFtcykgewotICAgICAg
ICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDEw
MDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAgICByZXR1cm4gaXNJbmxpbmVT
Y3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5OyAvLyBFc3RpbWF0ZSBvZiA8
Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNFdmFsU2NyaXB0KHBhcmFtcykg
ewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0gImV2YWwuanMiOwogICAgIH0K
IAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0g
ICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3Jp
cHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAg
cmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBu
YW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRpYWxTY3JpcHRzIiwKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2OCw2IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5k
RXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlzQ29tbWFuZExpbmVBUElTb3Vy
Y2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZExp
bmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgh
Zm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0luamVjdGVkU2NyaXB0U291cmNl
U2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEluamVjdGVkU2Ny
aXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJVTkVYUEVDVEVEIFNDUklQVDog
IiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05Myw4ICs3OCw2IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5k
SW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2Ny
aXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5s
aW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBBdHRy
aWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29s
VGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3VsZCBmaW5kIEV2YWwgU2NyaXB0
LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5qZWN0
ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RU
aGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0
b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3JpcHQsICJTaG91bGQgbm90IHJl
Y2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2Jq
ZWN0L2Vycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAppbmRleCBkNDQyMTdkMzYyZWE0ZjlhMjUyNjRh
MGQ4YzMwYWFmNGFmZTIzODE2Li5hZmJkMzJkNTAzN2U1MmFlOTBjMjMzZjIyYjUzOTM5NmVlMWY4
YWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVj
dC9lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Jl
bW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0zMSw3ICszMSw3IEBAIEVYUFJFU1NJ
T046IGVycm9yID0gbnVsbDsgdHJ5IHsgW10ueC54OyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsg
fTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90
eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAg
ICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25h
dGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAg
ICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtNzAsNyArNzAsNyBAQCBFWFBS
RVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGV2YWwoImlmKCkiKTsgfSBjYXRjaCAoZSkgeyBl
cnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAg
ICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2
ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZl
IGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBj
b2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUXigKZ0aXZlIGNvZGVdXG5AW25h
dGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAg
ICAiX2VudHJpZXMiOiBudWxsCkBAIC0xMDQsNyArMTA0LDcgQEAgRVhQUkVTU0lPTjogZXJyb3Ig
PSBudWxsOyB0cnkgeyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikuc3BsaXRUZXh0KDEwMCk7
IH0gY2EKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBl
IjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1c
bmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxu
QFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2Rl
XVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhT4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29k
ZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfSwKICAgICAgIHsKICAgICAgICAg
Il9uYW1lIjogImNvZGUiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYmZjYWM5ODllYWMwZmJkODBlODVh
Y2M2M2M0ZTdjMjg2Yjg3YTM4NS4uZjkyNzBmMGZhNDEwNGU0NjQyNzYwMzY5ZjFmNWE0NWQwYThl
OWZjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29s
dW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGlu
ZS1jb2x1bW4tZXhwZWN0ZWQudHh0CkBAIC02NCw4ICs2NCw4IEBAIFBBU1M6IENhcHR1cmluZyBz
dGFydGVkLgogICAgICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgICAg
ICJ1cmwiOiAiIiwKICAgICAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAg
ICAgICAgICAgICAibGluZU51bWJlciI6IDE0MiwKLSAgICAgICAgICAgICAgImNvbHVtbk51bWJl
ciI6IDk3CisgICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogNDA1LAorICAgICAgICAgICAgICAi
Y29sdW1uTnVtYmVyIjogODAKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1
cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAi
dXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAg
ICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAg
ICAgICJsaW5lTnVtYmVyIjogNDA1LAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA4MAogICAg
ICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcs
OCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9u
TmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAi
PGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNv
bHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiA0MDUsCisgICAgICAgICAg
ImNvbHVtbk51bWJlciI6IDgwCiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6
ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458389</attachid>
            <date>2022-04-26 12:42:25 -0700</date>
            <delta_ts>2022-04-27 12:17:48 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-152294-20220426124225.patch</filename>
            <type>text/plain</type>
            <size>101574</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzFmM2VmOWY1Y2E4MTNmMjNiYTJhMDc1YWU0M2UxZTViZTRhYjYyLi5lMzUwNWY3OGUxYzA3NDY1
YTk1OGI1YzRhMzlmMTRiZDVhMDgxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMi0wNC0yNSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBCdWlsZCBJbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBhIHBsYWluIGhlYWRlciBmaWxlIGNvbnRh
aW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93a2J1aWx0aW5zL2J1
aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJpbmcpOgor
ICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAt
IEluc3BlY3RvckluamVjdGVkU2NyaXB0IGNvbnRhaW5zIHVuYmFsYW5jZWQgY3VybHkgYnJhY2tl
dHMgaW5zaWRlIHF1b3Rlcy4gVGhlIGdlbmVyYXRpb24gb2YgYnVpbHRpbnMgaXMgbm93CisgICAg
ICAgIGhhcmRlbmVkIGFnYWluc3QgdGhpcy4gUHJldmlvdXNseSBhbGwgY3VybHkgYnJhY2tldHMg
d2VyZSBjb3VudGVkLCB3aGljaCBtZWFudCB0aGF0IHRoZSBzb3VyY2UgY29kZSB3b3VsZCBiZSBj
dXQKKyAgICAgICAgb2ZmIGVhcmxpZXIgdGhhbiB0aGUgYWN0dWFsIGVuZCBvZiB0aGUgZnVuY3Rp
b24uCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAg
ICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAt
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIHVzZXMgZGVzdHJ1Y3R1cmluZyB0byBnZXQg
dGhlIGBSZW1vdGVPYmplY3RgIGFuZCBgQ29tbWFuZExpbmVBUElgIGNsYXNzZXMgYXQKKyAgICAg
ICAgaW5zdGFudGlhdGlvbi4gV2UgbmVlZCB0byB0cmVhdCB0aGlzIGRlc3RydWN0dXJlIGFzIGEg
c2luZ2xlIHBhcmFtZXRlciwgb3RoZXJ3aXNlIGRlYnVnIGFzc2VydGlvbnMgd2lsbCBjYXRjaAor
ICAgICAgICB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBwYXJhbWV0ZXIgY291bnRzLgorCisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oOgorICAgICAgICAtIEFkZCBzeW1ib2xzIHRoYXQgd2UgbmVlZCB0byBoYXZl
IGEgcHJpdmF0ZSB2ZXJzaW9uIG9mLCBhbmQgZm9yIHNvbWUgb2YgdGhvc2Ugc3ltYm9scyBtYWtl
IHRoZW0gbGluay10aW1lIGNvbnN0YW50cy4KKworICAgICAgICAqIGJ1aWx0aW5zL0l0ZXJhdG9y
SGVscGVycy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYnVpbHRpbkl0ZXJhYmxlLndyYXBw
ZXIuaXRlcmF0b3IpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5idWlsdGluSXRlcmFibGUpOgor
ICAgICAgICAtIEFkZCBhIHJldXNhYmxlIGhlbHBlciB0aGF0IHRha2VzIHRoZSByZWFsIGl0ZXJh
dG9yIGZvciBhbiBpdGVyYWJsZSwgYW5kIHByb3ZpZGVzIGEgd3JhcHBlciB0aGF0IHVzZXMgdGhl
IHJlYWwKKyAgICAgICAgaXRlcmF0b3IuIFdoZW4gdXNlZCB3aXRoIGEgZm9yLW9mIGxvb3AsIHRo
aXMgcHJldmVudHMgdGhlIGl0ZXJhdGlvbiBmcm9tIGJlaW5nIG9ic2VydmFibGUvb3ZlcnJpZGRl
biBieSBzY3JpcHQKKyAgICAgICAgYXV0aG9ycy4KKyAgICAgICAgCisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSk6
IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgor
ICAgICAgICAtIFVzZSB0aGUgbmV3IGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIEluamVjdGVk
IFNjcmlwdCBjcmVhdGlvbiBmdW5jdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9k
dWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TW9kdWxlLmg6CisgICAgICAgIC0gSW5qZWN0ZWQgbW9kdWxlcyBhcmUgbm93IHByb3ZpZGVkIGFz
IGEgSlNGdW5jdGlvbiwgbm90IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgLSBVc2UgcHJpdmF0ZSBzeW1ib2xz
IHRocm91Z2hvdXQgdG8gZW5zdXJlIHdlIGdldCBub24tb2JzZXJ2YWJsZSwgbm9uLW92ZXJyaWRk
ZW4gdmVyc2lvbnMgb2YgZnVuY3Rpb25zIGFuZCB2YWx1ZXMuCisgICAgICAgIC0gSW4gbWFueSBj
YXNlcywgdGhpcyBpcyBhIDE6MSBtYXBwaW5nIHdoZXJlIHRoZSBuZXcgc3ltYm9sIGlzIGp1c3Qg
cHJlZml4ZWQgd2l0aCBhbiBgQGAuCisgICAgICAgIC0gRm9yIHB1c2hpbmcgdmFsdWVzIHRvIGFy
cmF5cywgdXNlIGBAYXJyYXlQdXNoYCwgdGhlIGJ1aWx0aW4gd2F5IG9mIHB1c2hpbmcgYSB2YWx1
ZSBpbnRvIGFuIGFycmF5LgorICAgICAgICAtIEZvciB0aGUgYFN5bWJvbGAgY29uc3RydWN0b3Is
IGp1c3QgdXNlIHRoZSBleGlzdGluZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGluc3RlYWQgb2Yg
ZXhwb3NpbmcgYSBwcml2YXRlCisgICAgICAgIHZlcnNpb24gb2YgdGhlIGBTeW1ib2xgIGNvbnN0
cnVjdG9yLgorICAgICAgICAtIEZvciBmb3Itb2YgbG9vcHMsIHdyYXAgdGhlIGl0ZXJhYmxlIHdp
dGggYEBidWlsdGluSXRlcmFibGVgLgorICAgICAgICAtIGBTeW1ib2wudG9TdHJpbmdUYWdgIGlz
IGNvbnZlcnRlZCB0byBgQEB0b1N0cmluZ1RhZ2AsIHRoZSBwcml2YXRlIHZlcnNpb24gb2YgdGhh
dCBzeW1ib2wuCisgICAgICAgIC0gYE1hdGgubWF4YCBpbiBgUmVtb3RlT2JqZWN0LnByb3RvdHlw
ZS5fZ2VuZXJhdGVQcmV2aWV3YCBpcyBjb252ZXJ0ZWQgdG8ganVzdCB1c2UgYSBjb21wYXJpc29u
IGluc3RlYWQgb2YKKyAgICAgICAgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBhcyBw
cml2YXRlIGJ1aWx0aW5zLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBidWlsdGluIGNv
bXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGltZXMgYW1iaWd1
b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAtIEV4cG9z
ZSBuZWNlc3NhcnkgZnVuY3Rpb25zL2NvbnN0cnVjdG9ycyB2aWEgdGhlaXIgcHJpdmF0ZSBuYW1l
IGZvciB1c2UgaW4gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYW5kCisgICAgICAgIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgLSBBZGQgYSBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBTdHJp
bmcgY29uc3RydWN0b3IuCisgICAgICAgIC0gQWRkIGhlbHBlcnMgZm9yIEpTT04gcGFyc2luZy9z
ZXJpYWxpemF0aW9uLgorCiAyMDIyLTA0LTIyICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMg
YWZ0ZXIgcjI5MzIwMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI2ZDE0MTU3MWY2MmFmYjliMjEyZjM4ZjFkZTU4
N2I5N2NmZmY5MzAuLjIwNGM4YzdkOTBmYTk4ZGIxZGM0YzE0OGE1YjQxOWRmM2QyZDM5MzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wNC0yNSAgUGF0cmljayBBbmdsZSAgPHBh
bmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVy
cmlkZW4gYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgIC0gQnVpbGQgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgYXMgYSBi
dWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBjb250YWluaW5nIGl0cyBzb3VyY2Ug
Y29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJj
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmg6CisgICAgICAgIC0gUHJvdmlkZSBhIEpTRnVuY3Rpb24gZm9yIG1vZHVsZSBpbmplY3Rp
b24gaW5zdGVhZCBvZiByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM6CisgICAgICAgIC0gU2ltaWxhciB0byBKYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMsIHVzZSBwcml2YXRlIG5h
bWVzIGZvciBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMKKyAgICAgICAgdGhyb3VnaG91dCB0byBn
ZXQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdGlucy4KKyAgICAgICAgLSBJbiBgbm9ybWFsaXpl
RXZlbnRUeXBlc2AgdXNlIGEgU2V0IGluc3RlYWQgb2YgYW4gYXJyYXksIHNpbmNlIHdlIGFyZSBw
cm9jZXNzaW5nIHVzZXItcHJvdmlkZWQgdHlwZXMgdGhhdCBtYXkKKyAgICAgICAgYmUgcmVwZWF0
ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHR5cGVz
IHRvIGluc2VydCB0aGVtIGluIHRoZSBzZXQsIGJ1dCBzaW5jZQorICAgICAgICBgQGFycmF5UHVz
aGAgZG9lc24ndCBzdXBwb3J0IHB1c2hpbmcgbXVsdGlwbGUgdmFsdWVzIGF0IHRoZSBzYW1lIHRp
bWUgdGhpcyBpcyBubyBtb3JlIHdvcmsgdGhhbiB1c2luZyBhbiBBcnJheS4KKyAgICAgICAgCisK
IDIwMjItMDQtMjMgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYIElUTTogVGFibGUgcm93IG9iamVjdHMgc2hvdWxkIHJldHVybiBhIG5vbi1udWxs
IHVuaWdub3JlZCBwYXJlbnQgZXZlbiB3aGVuIGEgdGFibGUgb2JqZWN0IGlzIG5vdCBmb3VuZCBp
biBpdHMgYW5jZXN0cnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzBh
OWUyYTdlODAyZGI5NDg1NzY3NGYyOWI4Nzk3NmQ5YzU2ZTIwZC4uNzZjYjA1ZWU0NmVkZjU5YWEy
OGEwYzk2YzU0YjgxYjBmOTc2MTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMzY0LDYgKzM2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rv
ci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90
eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1dlYkFzc2VtYmx5Lmpz
CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBAIC0xNDA1LDE3ICsxNDA2LDYgQEAgbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7SmF2YVNjcmlwdENvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCi1hZGRfY3VzdG9tX2NvbW1hbmQo
Ci0gICAgT1VUUFVUICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuaCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0lu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCi0gICAgREVQRU5E
UyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNo
byAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpz
IiA+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRT
b3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgSW5q
ZWN0ZWRTY3JpcHRTb3VyY2VfanMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi0KLWxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oKQotCiBpZiAoV1RGX0NQVV9YODZfNjQp
CiAgICAgaWYgKE1TVkMgQU5EIE5PVCBFTkFCTEVfQ19MT09QKQogICAgICAgICBhZGRfY3VzdG9t
X2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGQ1NDBiZDUxOTIxN2I1NTJiZjA2MDk4YzlkZGMy
YTI3NGYzMzQwYi4uZjdiM2RiN2I2MWQzMDYwN2U4YTZmYjUxNDNhNGMyNGVhZDIyODg1NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtMjEsNyArMjEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvR2VuZXJhdGVkV2FzbU9wcy5hc20KICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0b3JQcm90b3R5
cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9Jbml0Qnl0ZWNvZGVzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0luaXRXYXNtLmFzbQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0U291cmNlLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDY2N2YyYzY4NTRmOGExYmExM2MwOTVmN2UxNTRmNjhlOTdjYmYzOTEuLjFmYjYy
M2NkNmY2ZThkODk4N2Y5NDgwNDU0NGYwZDQ0ZTViMzVmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02OCw3ICs2OCw2IEBAIEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSID0gJChKYXZhU2NyaXB0Q29yZSkvU2NyaXB0cwogCiAuUEhPTlkgOiBhbGwK
IGFsbCA6IFwKLSAgICBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIFwKICAgICBMZXhlci5sdXQuaCBc
CiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBSZWdFeHBKaXRUYWJsZXMuaCBcCkBAIC0xMzgs
NiArMTM3LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzIFwKKyAgICAkKEphdmFTY3Jp
cHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgXAogIwogCiAjIFRoZSBj
b21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9uIHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBh
bmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCkBAIC0zNjgsMTIgKzM2OCw2IEBAIGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgOiBDb21iaW5lZERvbWFpbnMuanNvbiAkKElOU1BF
Q1RPUl9HRU5FUkFUCiAJJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL3ByZXByb2Nlc3MucGwgLS1pbnB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzLmluIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVT
KSIgLS1vdXRwdXQgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCSQoREVM
RVRFKSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluCiAKLUluamVjdGVk
U2NyaXB0U291cmNlLmggOiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikveHhkLnBsCi0JZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVj
dGVkU2NyaXB0U291cmNlLmpzIiA+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQ
WVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+IC4vSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UubWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5t
aW4uanMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAotCSQoREVMRVRFKSBJbmplY3RlZFNjcmlwdFNv
dXJjZS5taW4uanMKLQogQUlSX09QQ09ERV9GSUxFUyA9IFwKICAgICBBaXJPcGNvZGUuaCBcCiAg
ICAgQWlyT3Bjb2RlVXRpbHMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc5
YzhkY2RiMWVlOTY4MzRhNzA5NmFkNjMyMDkwMjgwMTIwMjAwZTUuLjJmYTkyN2UyYzFmMGI1NTlm
ZDQ1MDdkMzJlZTMxNWMzNzk1YTg4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDQ1LDcgKzE0NDUsNiBAQAogCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTEzRTVCOTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxM0U1QzAx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKIAkJQTUxM0U1QzIxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLzsgfTsKLQkJQTUxM0U1QzcxODVGOTQ0
NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLzsgfTsKIAkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8q
IEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUxM0U1QzkxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE1MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTRCMkMxMTg1QTY4
NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyog
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRB
Z2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zNzY0LDYgKzM3NjMsNyBAQAogCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVy
YXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVudW1lcmF0aW9u
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2
NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJFM0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAvKiBTaGFkb3dSZWFsbVByb3Rv
dHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyog
SlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNl
Q29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNE
NTk2RDUgLyogV2FzbVR5cGVEZWZpbml0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxNzcwQzRGMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWlu
RGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBv
cmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ3MjAsNyArNDcyMCw2IEBACiAJCUE1MTNFNUJDMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2Ny
aXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM4MTg1Rjk2
MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzkxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxNEIyQzAx
ODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzI4Nyw3ICs3Mjg2LDYgQEAKIAkJCQk5OTZCNzMwOTFCRDlG
QTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNzBCNzkxOTAxQzAy
NDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIx
ODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8sCi0JCQkJQTUxM0U1QzYx
ODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCiAJCQkJQTE4MTkz
RTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAog
CQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtOTM2Niw2ICs5MzY0LDcgQEAKIAkJCQk4NDkyNUE5
QzIyQjMwQ0M4MDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8s
CiAJCQkJNTM0RDlCRjgyMzYzQzU1RDAwNTQ1MjREIC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmpz
ICovLAogCQkJCTcwMzU1ODdEMUM0MTg0MTkwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8s
CisJCQkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpz
ICovLAogCQkJCTdDRjlCQzYwMUI2NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5q
cyAqLywKIAkJCQk3Q0Y5QkM2MTFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuanMgKi8sCiAJCQkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3Rv
dHlwZS5qcyAqLywKQEAgLTEwNDU1LDcgKzEwNDU0LDYgQEAKIAkJCQlBNTEzRTVCRTE4NUJGQUND
MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEz
RTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTg0MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1OUU5MzIxQkQxODI3OTAw
MUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzkwNUJCNjkxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4QTdCRjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGlu
ZUNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQppbmRleCA2NWRj
MTVjY2FkZjVmMDBhNmYyZjQ5MDEwNzMwMTk3OWE4NmQxNjg3Li41NTg2OWZkNDU3NDM0NTA4ODli
M2NkOTg5NjUzZWE3YmQwZmQ0NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTUyLDYgKzUy
LDcgQEAgZnVuY3Rpb25Jc0FzeW5jUmVnRXhwID0gcmUuY29tcGlsZShyIihhc3luYyk/XHMqZnVu
Y3Rpb24iLCByZS5NVUxUSUxJTkUgfCByZS5ET1QKIGZ1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNv
bXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwp
CiBmdW5jdGlvbk92ZXJyaWRkZW5OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIi4qXkBvdmVycmlk
ZGVuTmFtZT0oXCIuK1wiKSQiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiBmdW5jdGlvblBh
cmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeKD86YXN5bmNccyspP2Z1bmN0aW9uXHMrKD86
XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJ
TElORSB8IHJlLkRPVEFMTCkKK2Z1bmN0aW9uUGFyYW1ldGVyc1NwbGl0dGVyID0gcmUuY29tcGls
ZShyIixccyooPyFbXnt9XSpcfSkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiAKIG11bHRp
bGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJ
TkUgfCByZS5ET1RBTEwpCiBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJc
L1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCkBAIC0xNDUsNyArMTQ2LDcgQEAg
Y2xhc3MgQnVpbHRpbkZ1bmN0aW9uOgogICAgICAgICBpc19uYWtlZF9jb25zdHJ1Y3RvciA9IGZ1
bmN0aW9uTmFrZWRDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbl9zb3VyY2UpICE9IE5v
bmUKICAgICAgICAgaWYgaXNfbmFrZWRfY29uc3RydWN0b3I6CiAgICAgICAgICAgICBpc19jb25z
dHJ1Y3RvciA9IFRydWUKLSAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4g
ZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdLnNwbGl0
KCcsJyldCisgICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9u
UGFyYW1ldGVyc1NwbGl0dGVyLnNwbGl0KGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwo
ZnVuY3Rpb25fc291cmNlKVswXSldCiAgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAw
OgogICAgICAgICAgICAgcGFyYW1ldGVycyA9IFtdCiAKQEAgLTMwMywyMSArMzA0LDU1IEBAIGNs
YXNzIEJ1aWx0aW5zQ29sbGVjdGlvbjoKICAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQogICAg
ICAgICBzdGFydCA9IDAKICAgICAgICAgZW5kID0gMAorCiAgICAgICAgIGZvciBtYXRjaCBpbiBt
YXRjaGVzOgogICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCiAgICAgICAgICAgICBp
ZiBzdGFydCA8IGVuZDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZW5k
ID0gbWF0Y2guZW5kKCkKICAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6Ci0gICAg
ICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCiAgICAg
ICAgICAgICBkZXB0aCA9IDEKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAg
IGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0
YXJ0Q2hhcmFjdGVyID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgotICAgICAg
ICAgICAgICAgIGlmIHRleHRbZW5kXSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgotICAg
ICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgICAgIGVuZCA9
IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQorICAgICAgICAgICAgICAgIGN1cnJl
bnRDaGFyYWN0ZXIgPSB0ZXh0W2VuZF0KKworICAgICAgICAgICAgICAgIGlmIGlzRXNjYXBpbmdD
aGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxz
ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgY3Vy
cmVudENoYXJhY3RlciBpbiAiYCdcIiI6CisgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlcgorICAgICAgICAgICAg
ICAgICAgICBlbGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFj
dGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVy
ID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAg
aWYgY3VycmVudENoYXJhY3RlciA9PSAnXFwnIGFuZCBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIg
PSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAj
IEZJWE1FOiA8d2Via2l0Lm9yZy9iLyMjIyMjIz4gUmVndWxhciBleHByZXNzaW9ucyBjb250YWlu
aW5nIHVuYmFsYW5jZWQgcXVvdGF0aW9uIG1hcmtzIChsaWtlIHRoZSBvbmUKKyAgICAgICAgICAg
ICAgICAjIGZvdW5kIGluIGBTdHJpbmdQcm90b3R5cGUuanNgJ3MgYGNyZWF0ZUhUTUxgKSBjYW4g
Y29uZnVzZSB0aGUgc3RhdGUgb2YgdHJhY2tpbmcgb3VyIGJlaW5nCisgICAgICAgICAgICAgICAg
IyBpbnNpZGUvb3V0c2lkZSBhIHN0cmluZy4gVG8gd29yayBhcm91bmQgdGhpcywganVzdCByZXNl
dCBvdXIgc3RyaW5nIHN0YXRlIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lCisgICAgICAgICAgICAg
ICAgIyAodW5sZXNzIHdlIGFyZSBpbnNpZGUgYSB0ZW1wbGF0ZSBzdHJpbmcpLiBUaGlzIHdpbGwg
d29yayB1bmxlc3MgYSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMKKyAgICAgICAgICAgICAg
ICAjIHVuYmFsYW5jZWQgY3VybHkgYnJhY2tldHMgb3IgYSBjbG9zaW5nIGN1cmx5IGJyYWNrZXQg
d2UgY2FyZSBhYm91dCBpcyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBlYXJsaWVyCisgICAgICAg
ICAgICAgICAgIyByZWd1bGFyIGV4cHJlc3Npb24gd2l0aCBhbiB1bmJhbGFuY2VkIHF1b3RlLgor
ICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xuJyBhbmQgY3VycmVudFN0
cmluZ1N0YXJ0Q2hhcmFjdGVyICE9ICdgJzoKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0
cmluZ1N0YXJ0Q2hhcmFjdGVyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYg
Y3VycmVudENoYXJhY3RlciA9PSAneyc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoICs9IDEK
KyAgICAgICAgICAgICAgICBlbGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ30nOgorICAgICAgICAg
ICAgICAgICAgICBkZXB0aCAtPSAxCisKKyAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAgICAg
ICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQogCiAgICAgICAgIGZ1bmN0aW9u
U3RyaW5ncyA9IFt0ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1
bmN0aW9uQm91bmRzXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA5YjlhYjc1YzZkNzVhYTczZjdlMThkNjlmZTJh
ODg3N2FlZDVhYjQ4Li5hMWQzYzkzYmUyN2EzOGQwYWVlYmQ3NTA3NWQ2NTBjMWY5NjdmYjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAg
ICAgewogICAgICAgICB1bnNpZ25lZCBpID0gcGFyYW1ldGVyc1N0YXJ0ICsgMTsKICAgICAgICAg
dW5zaWduZWQgY29tbWFzID0gMDsKKyAgICAgICAgYm9vbCBpbnNpZGVDdXJseUJyYWNrZXRzID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgc2F3T25lUGFyYW0gPSBmYWxzZTsKICAgICAgICAgYm9vbCBo
YXNSZXN0UGFyYW0gPSBmYWxzZTsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTExMyw3ICsx
MTQsMTMgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgICAgIGlmIChjaGFyYWN0
ZXJzW2ldID09ICcpJykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYg
KGNoYXJhY3RlcnNbaV0gPT0gJywnKQorICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0g
J30nKQorICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJ3snIHx8IGluc2lkZUN1cmx5QnJhY2tl
dHMpIHsKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJywnKQogICAgICAgICAgICAgICAgICsrY29tbWFz
OwogICAgICAgICAgICAgZWxzZSBpZiAoIUxleGVyPExDaGFyPjo6aXNXaGl0ZVNwYWNlKGNoYXJh
Y3RlcnNbaV0pKQogICAgICAgICAgICAgICAgIHNhd09uZVBhcmFtID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA1NDgzZTg3MWU3
NDNhOWExMmIyY2UzMGRkZmMyYTAwYzUyYWViYzVkLi4zM2IxODJjYmRlZWVjMGVjODRiYTVlZWZh
MWRkNWQ4YTgxMmRkZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCkBAIC0xOTIsNiArMTkyLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oaXNSZW1vdGVGdW5jdGlvbikg
XAogICAgIG1hY3JvKGFycmF5U29ydCkgXAorICAgIG1hY3JvKGpzb25QYXJzZSkgXAorICAgIG1h
Y3JvKGpzb25TdHJpbmdpZnkpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBc
CisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAgbWFjcm8oaGFzT3duUHJv
cGVydHkpIFwKKyAgICBtYWNybyhpbmRleE9mKSBcCisgICAgbWFjcm8ocG9wKSBcCiAKIAogbmFt
ZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0l0ZXJhdG9ySGVscGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9J
dGVyYXRvckhlbHBlcnMuanMKaW5kZXggMjYzZTQzYmZjMGU4MzExNjA1MDJhOTg1ZTI0MWFlMDdj
NzdlZTJmNC4uNjViNzhlZjcyNjlmY2U1YmZkYWU2MjI4ODk3NjM2ZGQ1ODMwYWJiYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCkBA
IC01MSwzICs1MSwyNCBAQCBmdW5jdGlvbiBwZXJmb3JtSXRlcmF0aW9uKGl0ZXJhYmxlKQogICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBpbmRleCsrLCBpdGVtLnZhbHVlKTsKICAgICB9
CiB9CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGluSXRlcmFibGUoaXRlcmFibGUp
Cit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIC8vIGZvci1vZiBsb29wcyBsb29rIHVw
IHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5LCB3aGljaCBpcyBvYnNlcnZhYmxlIGlmIHRoZSB1c2Vy
IGRlZmluZWQgYSBnZXR0ZXIgZm9yIEBAaXRlcmF0b3IuCisgICAgLy8gVG8gYXZvaWQgdGhpcywg
Y3JlYXRlIGEgd3JhcHBlciBvYmplY3Qgd2hlcmUgQEBpdGVyYXRvciByZXR1cm5zIHRoZSBhY3R1
YWwgaXRlcmF0b3IuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJsZS5AQGl0ZXJh
dG9yOworICAgIGlmIChAaXNVbmRlZmluZWRPck51bGwoaXRlcmF0b3JGdW5jdGlvbikpCisgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpbkl0ZXJhYmxlIHJlcXVpcmVzIHRoYXQgdGhlIHBy
b3BlcnR5IGBpdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdYCBleGlzdHMuIik7CisKKyAgICBpZiAo
IUBpc0NhbGxhYmxlKGl0ZXJhdG9yRnVuY3Rpb24pKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
ImJ1aWx0aW5JdGVyYWJsZSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBgaXRlcmFibGVbU3lt
Ym9sLml0ZXJhdG9yXWAgYmUgYSBmdW5jdGlvbi4iKTsKKworICAgIGxldCBpdGVyYXRvciA9IGl0
ZXJhdG9yRnVuY3Rpb24uQGNhbGwoaXRlcmFibGUpOworICAgIGxldCB3cmFwcGVyID0ge307Cisg
ICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7IHJldHVybiBpdGVyYXRvcjsgfQor
CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4NjkwOGI5MGY5OWNiMGNl
NzQ2ZjAxOWJkM2VkNzIzLi5iODY1M2U4NjU2OTkzMWZjYmI2ZTJmNGI0MjU0OGM0YjBjNmUxMzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKQEAgLTEyMCw2ICsxMjAsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGNy
ZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1JlbW90ZUZ1bmN0aW9uLCBu
dWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KGpzb25QYXJzZSwg
bnVsbHB0cikgXAorICAgIHYoanNvblN0cmluZ2lmeSwgbnVsbHB0cikgXAorICAgIHYoU3RyaW5n
LCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1l
LCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGNiMDYzNDAyYmYxMjJlYWUxNjk4
ZWJhMmE3YmI3ZjRkNzZlZjk3NzAuLjIyZDFiY2U3ZWFiMGZhZjE1NGUwODc1YjdjMGM3NmRjZGJk
MWMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuY2xl
YXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0ZWRTY3Jp
cHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRp
b24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgaWQpCitFeHBl
Y3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50
IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwog
Ci0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UsIHsgfSk7CiAg
ICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsK
IAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBJbnNw
ZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9ubWVudC5ldmFs
dWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0ZUhhbmRs
ZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25F
eGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byogZnVuY3Rpb25W
YWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50
KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0KSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9u
KCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb25WYWx1ZSk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCkBAIC0xNjYsNyAr
MTU5LDcgQEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3Zl
cmZsb3dlZCgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKGdsb2JhbE9iamVj
dCwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7Ci0gICAg
c2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBt
YWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJldHVybiByZXN1bHQuZ2V0
T2JqZWN0KCk7CiB9CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgIGludCBpZCA9IGluamVj
dGVkU2NyaXB0SWRGb3IoZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNy
ZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGdsb2JhbE9iamVjdCwg
aWQpOworICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoZ2xvYmFs
T2JqZWN0LCBpZCk7CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKICAgICAgICAgYXV0byYgZXJy
b3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJUKGVycm9yKTsKQEAgLTE5
NywxMiArMTkwLDEwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGlmIChzdGFj
ay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4o
bGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNyZWF0aW5n
IGluamVjdGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBX
VEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAo
IWNyZWF0ZVJlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiTWlzc2luZyBp
bmplY3RlZCBzY3JpcHQgb2JqZWN0Iik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGlu
amVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCAxZjc0MGM0MDY4
NDUzNjZhNzU5YmEwYWY0YzhjMzI3Nzc0OTU0OGVhLi5iNTQxMDEyZWY0YmI0YmYyMmU3YWUzODJi
ZmYxNTk4NWFjOTlhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTc1LDggKzc1LDcgQEAgcHJvdGVj
dGVkOgogICAgIEhhc2hNYXA8SlNDOjpKU0dsb2JhbE9iamVjdCosIGludD4gbV9zY3JpcHRTdGF0
ZVRvSWQ7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0g
ICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3Jl
YXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBpbnQgaWQpOworICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBp
bnQgaWQpOwogCiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52aXJvbm1lbnQ7CiAgICAg
UmVmPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEyZWQ2ZmJlODZiODk3NDEyZjQ4ZmQ1ZTlhMTEuLjBiNjc1
ZTg0NDY2OTA2MDIxMjM4N2ZkYjRiYWQ1ZDBhNjU3OGY4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBA
IC03NCwxMyArNzQsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0
ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgaWYgKHN0
YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVt
bihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2FsbGlu
ZyAnaGFzSW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRm
OCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xv
YmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIFdURkxv
Z0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxl
UmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0LnZh
bHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJpbmpl
Y3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQo
KS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChuYW1lKCkpOwotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7Cisg
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZShpbmplY3RNb2R1bGVG
dW5jdGlvbihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsKICAgICAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGluamVjdGVkU2Ny
aXB0Lmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0TW9kdWxlUmVzdWx0ID0g
aW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKICAg
ICAgICAgaWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKQEAgLTkyLDcgKzkxLDYgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAg
ICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7
CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2FsbGluZyAnaW5qZWN0TW9k
dWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9y
LT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4
KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xu
Iiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCmluZGV4IDI3OWJhZTRl
YmFlNGMxODU0NDhjNjk3ZTlhMDNiZWRiNWVhZjg1OGIuLmE0YmVkOTY5MmI3NDU2YTAwNWQ3NmRm
NGZlNDg1MTYxZjk1ZTRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsKIHB1YmxpYzoKICAgICB+
SW5qZWN0ZWRTY3JpcHRNb2R1bGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3Vy
Y2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTRnVuY3Rpb24qIGluamVjdE1vZHVs
ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBK
U0M6OkpTVmFsdWUgaG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCA0OGJhZWQ2
YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li4xOGMyNjJmYTllYzk0ZTJhZGRhNTZj
MWJiYWExMTg3Y2MzY2UwZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTcgKzI3LDEzIEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcwotCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7Ci0KLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJj
ZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVp
bHQtaW5zCi0KLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0BnbG9iYWxQcml2YXRlCitm
dW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdEhvc3Qs
IGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkKK3sKIAogZnVuY3Rpb24g
dG9TdHJpbmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAgICByZXR1cm4gQFN0
cmluZyhvYmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKQEAgLTEx
NSw3ICsxMTEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwg
cmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNh
bGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3Ry
aW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVu
ZGVmaW5lZCwgYXJncyk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTM2LDcgKzEzMiw3IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNl
b2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQ
cm9taXNlKSkgewogICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlz
IG5vdCBhIFByb21pc2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg3
LDcgKzE4Myw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ld
ID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJnc1tpXSk7CiAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5OSw3ICsxOTUsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgICAgICByZXR1cm4gewog
ICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0
OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBv
YmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKKyAgICAgICAg
ICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5AYXBwbHkob2JqZWN0LCBy
ZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJl
dmlldykKICAgICAgICAgICAgIH07CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwpAQCAt
MzA5LDcgKzMwNSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgICAgIGxldCByZXN1bHQgPSBbXTsKICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAgICAg
ICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOworICAgICAgICAgICAgQGFycmF5UHVzaChy
ZXN1bHQsIG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJh
bWUpKTsKICAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAgICAg
IH0gd2hpbGUgKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjYsNyAr
MzIyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB3
cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKICAg
ICB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpT
T04ucGFyc2UoanNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoQGpzb25QYXJzZShqc29uU3RyaW5n
KSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICB9IGNhdGNoIHsK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CkBAIC0zNDgsNyArMzQ0LDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKElu
amVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAiYXJyYXkiKSB7CiAgICAgICAg
ICAgICBjb2x1bW5OYW1lcyA9IFtdOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBj
b2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2godG9T
dHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2goY29sdW1uTmFt
ZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBS
ZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1bW5O
YW1lcyk7CkBAIC00MjksMTEgKzQyNSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9
CiAKLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVs
ZShuYW1lLCBtb2R1bGVGdW5jdGlvbiwgaG9zdCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVs
ZXNbbmFtZV0gPSBmYWxzZTsKIAotICAgICAgICBsZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5
cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRocm93ICJF
cnJvcjogV2ViIEluc3BlY3RvcjogYSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1v
ZHVsZSI7CiAgICAgICAgIG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBD
b21tYW5kTGluZUFQSX0sIGhvc3QpOwpAQCAtNDczLDcgKzQ2OCw3IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsK
ICAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdy
b3VwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAg
ICAgICBAYXJyYXlQdXNoKGdyb3VwLCBpZCk7CiAgICAgICAgICAgICB0aGlzLl9pZFRvT2JqZWN0
R3JvdXBOYW1lW2lkXSA9IG9iamVjdEdyb3VwTmFtZTsKICAgICAgICAgfQogCkBAIC01MTUsNyAr
NTEwLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgIHJldHVybiByZXNvbHZlZEFyZzsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB1
bmRlZmluZWQ7CisgICAgICAgIHJldHVybiBAdW5kZWZpbmVkOwogICAgIH0KIAogICAgIF9jcmVh
dGVUaHJvd25WYWx1ZSh2YWx1ZSwgb2JqZWN0R3JvdXApCkBAIC01NzEsNyArNTY2LDcgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IGNvbW1h
bmRMaW5lQVBJID0gbnVsbDsKICAgICAgICAgaWYgKGluY2x1ZGVDb21tYW5kTGluZUFQSSkKICAg
ICAgICAgICAgIGNvbW1hbmRMaW5lQVBJID0gdGhpcy5jcmVhdGVDb21tYW5kTGluZUFQSU9iamVj
dChpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6IG51bGwpOwotICAgICAgICByZXR1cm4gZXZh
bEZ1bmN0aW9uLmNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CisgICAg
ICAgIHJldHVybiBldmFsRnVuY3Rpb24uQGNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5k
TGluZUFQSSk7CiAgICAgfQogCiAgICAgX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2Fs
bEZyYW1lSWQpCkBAIC02MjIsNyArNjE3LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3Rl
T2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBn
ZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3Ip
CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRl
KGRlc2NyaXB0b3Iuc3ltYm9sLCBvYmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3Jp
cHRvcnMucHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRv
cnMsIGRlc2NyaXB0b3IpOwogCiAgICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50
ICYmIGRlc2NyaXB0b3JzLmxlbmd0aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJf
X3Byb3RvX18iKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0
eUZldGNoQWN0aW9uLlN0b3A7CkBAIC02NDQsNyArNjM5LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0ge25h
bWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07CiAgICAgICAgICAgICBp
ZiAoY29tcGxldGVEZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24g
PSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9yKTsKKyAgICAg
ICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9CkBAIC02NTQsMTAgKzY0OSwxMCBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoSW5q
ZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBTZXQ7CisgICAgICAg
IGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IEBTZXQ7CiAKICAgICAgICAgLy8gSGFuZGxlZCBiZWxv
dyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90
b19fIik7CisgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZCgiX19wcm90b19fIik7CiAKICAgICAg
ICAgZnVuY3Rpb24gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2Ny
aXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKICAgICAg
ICAgewpAQCAtNjc4LDcgKzY3Myw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKICAgICAgICAgICAgICAgICAg
ICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAgICAgICAgICAgICAgIC8vIFNp
bGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25zIGNyZWF0ZWQg
ZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRoaXMgb2JqZWN0
LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIFBy
b21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdl
dHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAgaWYg
KGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgQFByb21pc2UgJiYgSW5qZWN0ZWRTY3Jp
cHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihmYWtlRGVz
Y3JpcHRvci52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnZhbHVl
LmNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZha2VEZXNjcmlw
dG9yOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewpAQCAtNzEwLDE1ICs3MDUsMTUgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBmdW5jdGlv
biBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lLCBpc093blByb3BlcnR5KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5oYXMocHJvcGVydHlOYW1lKSkKKyAg
ICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLkBoYXMocHJvcGVydHlOYW1lKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51
ZTsKIAotICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQocHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZChwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgICAgICBs
ZXQgbmFtZSA9IHRvU3RyaW5nKHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBsZXQgc3ltYm9s
ID0gaXNTeW1ib2wocHJvcGVydHlOYW1lKSA/IHByb3BlcnR5TmFtZSA6IG51bGw7CiAKLSAgICAg
ICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihv
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAT2JqZWN0LkBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlm
ICghZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBCYWQgZGVzY3JpcHRv
ci4gQ2FuIHdlIGdldCBoZXJlPwogICAgICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byB2ZXJ5
IHJlc3RyaWN0aXZlIHNldHRpbmdzLgpAQCAtNzI3LDcgKzcyMiw3IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoU3RyaW5n
KGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3Jp
cHRvci5nZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikgJiYgIWRlc2NyaXB0
b3Iuc2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSkgeworICAgICAgICAg
ICAgICAgIGlmIChAU3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2Rl
XVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5AaGFzT3duUHJvcGVydHko
ImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLkBoYXNPd25Qcm9wZXJ0eSgi
c2V0IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBz
dWNoIGEgZGVzY3JpcHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoKICAgICAgICAgICAg
ICAgICAgICAgLy8gbGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dl
dDp1bmRlZmluZWR9KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCiAg
ICAgICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURl
c2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsK
QEAgLTc0NSwxMCArNzQwLDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAKICAgICAgICAgbGV0IGlzQXJyYXlMaWtlID0gZmFsc2U7CiAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBpc0FycmF5TGlrZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCkg
PT09ICJhcnJheSIgJiYgaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxlbmd0aCA+
IDA7CisgICAgICAgICAgICBpc0FycmF5TGlrZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVj
dCkgPT09ICJhcnJheSIgJiYgQGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5n
dGggPiAwOwogICAgICAgICB9IGNhdGNoIHsgfQogCi0gICAgICAgIGZvciAobGV0IG8gPSBvYmpl
Y3Q7IGlzRGVmaW5lZChvKTsgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKSkgeworICAgICAg
ICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBAT2JqZWN0LkBnZXRQcm90
b3R5cGVPZihvKSkgewogICAgICAgICAgICAgbGV0IGlzT3duUHJvcGVydHkgPSBvID09PSBvYmpl
Y3Q7CiAgICAgICAgICAgICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTsKIApAQCAtNzY0LDcgKzc1
OSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMobyk7CisgICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBA
T2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwogICAgICAgICAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAg
ICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZXNbaV0sIGlz
T3duUHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9
PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtNzc2LDggKzc3
MSw4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
ICAgICBpZiAoc2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7Ci0gICAgICAgICAgICAgICAg
bGV0IHByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7Cisg
ICAgICAgICAgICBpZiAoQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7CisgICAgICAg
ICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5U3lt
Ym9scyhvKTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3lt
Ym9scy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJv
Y2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC04MDUsMTQgKzgwMCwxMyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgbGV0IGVudHJp
ZXMgPSBbXTsKIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBw
YWdlIG92ZXJyaWRlcyBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCi0gICAgICAgIGZv
ciAobGV0IHZhbHVlIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBAYnVp
bHRpbkl0ZXJhYmxlKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkg
ewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHt2YWx1ZX0pOwor
ICAgICAgICAgICAgQGFycmF5UHVzaChlbnRyaWVzLCB7dmFsdWV9KTsKIAogICAgICAgICAgICAg
aWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC04MjUsMTQgKzgxOSwxMyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsK
IAotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJy
aWRlcyBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCi0gICAgICAgIGZvciAobGV0IFtr
ZXksIHZhbHVlXSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9m
IEBidWlsdGluSXRlcmFibGUob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQg
PiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe2tleSwg
dmFsdWV9KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmllcywge2tleSwgdmFsdWV9KTsK
IAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNo
Q291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzg2OSwxMCBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgdGhp
cy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmlu
ZWQgfHwgcmVzdWx0ID09PSBudWxsKQorICAgICAgICBpZiAocmVzdWx0ID09PSBAdW5kZWZpbmVk
IHx8IHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQg
ZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7CisgICAg
ICAgIGxldCBleGlzdGluZ0luZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRzLkBpbmRleE9mKHJlc3Vs
dCk7CiAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgewogICAgICAgICAgICAgdGhp
cy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC05MDEsOCArODk0LDggQEAgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUgPSB7CiB9
OwogCiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uID0gewotICAgIENvbnRpbnVl
OiBTeW1ib2woImNvbnRpbnVlIiksCi0gICAgU3RvcDogU3ltYm9sKCJzdG9wIiksCisgICAgQ29u
dGludWU6IEBjcmVhdGVQcml2YXRlU3ltYm9sKCJjb250aW51ZSIpLAorICAgIFN0b3A6IEBjcmVh
dGVQcml2YXRlU3ltYm9sKCJzdG9wIiksCiB9CiAKIHZhciBpbmplY3RlZFNjcmlwdCA9IG5ldyBJ
bmplY3RlZFNjcmlwdDsKQEAgLTk2Miw3ICs5NTUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2Vu
ZXJhdGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkp
OwogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJh
dGVQcmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAgICAgICAgICAg
ICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgQHVuZGVmaW5l
ZCwgY29sdW1uTmFtZXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05NzcsNyArOTcwLDcgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZShlKTsK
ICAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoZXgubWVz
c2FnZSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJy
b3IoZXgubWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiPGZhaWxlZCB0
byBjb252ZXJ0IGV4Y2VwdGlvbiB0byBzdHJpbmc+IjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KGRlc2NyaXB0aW9uKTsKQEAgLTk4Niw3ICs5Nzks
NyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBzdGF0aWMg
Y3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVt
bk5hbWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmpl
Y3QodmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMp
OworICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVu
ZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwogICAgICAgICBp
ZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVs
ZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBpZiAocmVtb3RlT2Jq
ZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJ
ZCkKQEAgLTEwMTEsNyArMTAwNCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9uLgogICAgICAgICB0
cnkgewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIg
JiYgaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUu
c3BsaWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsgfQogCkBAIC0xMDUw
LDggKzEwNDMsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
ICAgIGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFt
ZTsKIAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBTeW1ib2wudG9TdHJp
bmdUYWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5n
VGFnXTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYgQEB0b1N0cmluZ1Rh
ZyBpbiB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVtAQHRvU3RyaW5nVGFnXTsKIAog
ICAgICAgICAvLyBOb2RlTGlzdCBpbiBKU0MgaXMgYSBmdW5jdGlvbiwgY2hlY2sgZm9yIGFycmF5
IHByaW9yIHRvIHRoaXMuCiAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJmdW5jdGlvbiIp
CkBAIC0xMDY5LDYgKzEwNjIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAKICAgICBzdGF0aWMgbm9kZVByZXZpZXcobm9kZSkKICAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2Vi
Q29yZSBidWlsdC1pbnMuCiAgICAgICAgIGxldCBpc1hNTERvY3VtZW50ID0gbm9kZS5vd25lckRv
Y3VtZW50ICYmICEhbm9kZS5vd25lckRvY3VtZW50LnhtbFZlcnNpb247CiAgICAgICAgIGxldCBu
b2RlTmFtZSA9IGlzWE1MRG9jdW1lbnQgPyBub2RlLm5vZGVOYW1lIDogbm9kZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpOwogCkBAIC0xMTQyLDggKzExMzYsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmly
c3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCiAgICAgICAgIGxldCBw
cm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJv
d3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAg
ICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEw
LCBmaXJzdExldmVsS2V5c0NvdW50KQorICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJv
d3NSZXF1ZXN0ID8gMTAwMCA6ICg1ID4gZmlyc3RMZXZlbEtleXNDb3VudCA/IDUgOiBmaXJzdExl
dmVsS2V5c0NvdW50KSwKKyAgICAgICAgICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/
IDEwMDAgOiAoMTAgPiBmaXJzdExldmVsS2V5c0NvdW50ID8gMTAgOiBmaXJzdExldmVsS2V5c0Nv
dW50KSwKICAgICAgICAgfTsKIAogICAgICAgICB0cnkgewpAQCAtMTE5MCw5ICsxMTg0LDkgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBpZiAobmFtZSA9
PT0gIl9fcHJvdG9fXyIpIHsKICAgICAgICAgICAgIC8vIE5vbiBiYXNpYyBfX3Byb3RvX18gb2Jq
ZWN0cyBtYXkgaGF2ZSBpbnRlcmVzdGluZywgbm9uLWVudW1lcmFibGUsIG1ldGhvZHMgdG8gc2hv
dy4KICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlICYmIGRlc2NyaXB0b3IudmFsdWUu
Y29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVj
dG9yICE9PSBPYmplY3QKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0
cnVjdG9yICE9PSBBcnJheQotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29u
c3RydWN0b3IgIT09IFJlZ0V4cCkKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVl
LmNvbnN0cnVjdG9yICE9PSBAT2JqZWN0CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52
YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQEFycmF5CisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRv
ci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQFJlZ0V4cCkKICAgICAgICAgICAgICAgICBwcmV2aWV3
Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJv
cGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQpAQCAtMTIwOSw3ICsxMjAzLDcg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8vIElm
IHdlIGhhdmUgYSBmaWx0ZXIsIG9ubHkgc2hvdyBwcm9wZXJ0aWVzIGluIHRoZSBmaWx0ZXIuCiAg
ICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhlc2UgZmlsdGVycyBkbyBub3RoaW5nIG9uIHRo
ZSBiYWNrZW5kLgotICAgICAgICBpZiAoZmlyc3RMZXZlbEtleXMgJiYgIWZpcnN0TGV2ZWxLZXlz
LmluY2x1ZGVzKG5hbWUpKQorICAgICAgICBpZiAoZmlyc3RMZXZlbEtleXMgJiYgIWZpcnN0TGV2
ZWxLZXlzLkBpbmNsdWRlcyhuYW1lKSkKICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogCiAgICAgICAgIGZ1bmN0aW9uIGFwcGVu
ZFByZXZpZXcocHJvcGVydHkpIHsKQEAgLTEyMjcsNyArMTIyMSw3IEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZp
ZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJl
dmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCkBAIC0xMzEz
LDcgKzEzMDcsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAg
ICAgICAgICAgZW50cmllcy5wb3AoKTsKKyAgICAgICAgICAgIGVudHJpZXMuQHBvcCgpOwogICAg
ICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMjMsNyArMTMxNyw3IEBAIGxldCBSZW1v
dGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBl
bnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBl
bnRyaWVzLkBtYXAoZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZShlbnRyeS52YWx1ZSwgZW50
cnkudmFsdWUgIT09IG9iamVjdCk7CiAgICAgICAgICAgICB1cGRhdGVNYWluUHJldmlldyhlbnRy
eS52YWx1ZSk7CiAgICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpIHsKQEAgLTEzMzYsOCAr
MTMzMCw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIF9p
c1ByZXZpZXdhYmxlT2JqZWN0KHZhbHVlLCBvYmplY3QpCiAgICAgewotICAgICAgICBsZXQgc2V0
ID0gbmV3IFNldDsKLSAgICAgICAgc2V0LmFkZChvYmplY3QpOworICAgICAgICBsZXQgc2V0ID0g
bmV3IEBTZXQ7CisgICAgICAgIHNldC5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgcmV0dXJuIHRo
aXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsKICAgICB9CkBA
IC0xMzU3LDExICsxMzUxLDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIEN5Y2xpYyBvYmplY3Rz
LgotICAgICAgICBpZiAoa25vd25PYmplY3RzLmhhcyhvYmplY3QpKQorICAgICAgICBpZiAoa25v
d25PYmplY3RzLkBoYXMob2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICArK2RlcHRoOwotICAgICAgICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgICAg
IGtub3duT2JqZWN0cy5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgLy8gQXJyYXlzIGFyZSBzaW1w
bGUgaWYgdGhleSBoYXZlIDUgb3IgbGVzcyBzaW1wbGUgb2JqZWN0cy4KICAgICAgICAgbGV0IHN1
YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOwpAQCAtMTM4MSwxMiArMTM3NSwx
MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gT2JqZWN0cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2
ZSAzIG9yIGxlc3Mgc2ltcGxlIHZhbHVlIHByb3BlcnRpZXMuCi0gICAgICAgIGxldCBvd25Qcm9w
ZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKKyAgICAgICAg
bGV0IG93blByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCk7CiAgICAgICAgIGlmIChvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aCA+IDMpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3duUHJvcGVydHlO
YW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZSA9IG93blBy
b3BlcnR5TmFtZXNbaV07Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IgJiYgISgidmFsdWUi
IGluIGRlc2NyaXB0b3IpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGlmICghdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKG9iamVjdFtwcm9wZXJ0
eU5hbWVdLCBrbm93bk9iamVjdHMsIGRlcHRoKSkKQEAgLTE0MTcsNyArMTQxMSw3IEBAIEluamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQog
ewogICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3Rl
ZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7CiAgICAgdGhpcy5mdW5jdGlvbk5hbWUg
PSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6
IFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwg
Y29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1ufTsKKyAgICB0aGlzLmxvY2F0aW9uID0ge3Nj
cmlwdElkOiBAU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1iZXI6IGNhbGxGcmFt
ZS5saW5lLCBjb2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1bW59OwogICAgIHRoaXMuc2NvcGVD
aGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7CiAgICAgdGhpcy50aGlzID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOwog
ICAgIHRoaXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxldGVkOwpAQCAtMTUw
Niw4ICsxNTAwLDggQEAgQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OwogCiBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzID0ge307CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1
bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmpl
Y3QudmFsdWVzKG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBm
dW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0NvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBA
T2JqZWN0LkB2YWx1ZXMob2JqZWN0KTsgfTsKIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVl
cnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1
ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07CiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJx
dWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1
ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07CkBAIC0xNTQ2LDQgKzE1NDAsNCBAQCBmb3Ig
KGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEku
bWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIg
KyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0
ZWRTY3JpcHQ7Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
YTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1
ODc0YTU4OGEzYmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cGFyc2UoCiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFTU0VS
VChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0g
UGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBp
bGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5saW5l
KCksICIuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRl
eCBmYzc4ODk0NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRh
ZTNkNmE2NWJkZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEFycmEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJv
cGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1
Y3RvcklzQXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVO
YW1lKCksIGFycmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CmluZGV4IDVhM2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZk
N2QzMWUxMzU4MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAg
dm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCks
IGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1
YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW5jbHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9m
UHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pbmRleE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFt
ZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0
ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5w
b3BQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVj
dC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmpl
Y3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0
MzQxOS4uOTlmNGY3OTQxMWJjYWNiMzllYTQwMWQ5MjhiNzc5ZWMxMDAxNDlkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1
LDYgKzI3NSw4IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxB
R19UWVBFKQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rp
b24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVy
dHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJv
bCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3Jl
YXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9
CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvIGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikpOwor
fQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7Cit9
CisKICNpZiBBU1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENh
bGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CiB7CkBAIC0xMDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAg
IG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsK
ICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlz
LCBzdHJpbmdDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJv
bWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMs
IGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQo
dm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJl
LmluaXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXIm
IGluaXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1
Y3RvcjxFcnJvclR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAg
Y2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZl
YXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBK
U09OIGhlbHBlcnMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwg
U3RyaW5nKCksIGpzb25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uU3RyaW5naWZ5
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5naWZ5KSk7Cisg
ICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVu
Y3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
ICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1
bmN0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCBhMGFhZWQzNDc4N2FmNjZhNGVjMjgzMmNiNzg0N2ZhZjI4YTRmYTliLi5lOTQ4
NjAzZTJjZWNhMjk1NWEyZWQyNzE1NGJiM2IwMTQ5NzFhZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBj
bGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNv
dXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VPcmlnaW47CitjbGFzcyBTdHJpbmdDb25zdHJ1Y3RvcjsK
IGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52
aXJvbm1lbnQ7CiBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKQEAgLTMyMCw2ICszMjEsNyBA
QCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rp
b25Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1f
cHJvbWlzZUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yPiBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmll
cjxTdHJpbmdDb25zdHJ1Y3Rvcj4gbV9zdHJpbmdDb25zdHJ1Y3RvcjsKIAogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVj
dHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAppbmRleCA2MDhjZjllMTc4ZmIxYzc3NzM4YWE2NDY1NjYxNGVhYWJkOGFkMTQ3
Li4zNjVhMjcwZWYzM2ZjY2UzNGU4YTIxYzZlOThiOTMzNTRkYTg0ODE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05
OSw3ICs5OSwxNCBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogCiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZXRQcm90b3R5cGVPZlByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0
UHJvdG90eXBlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQ
cml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5U3ltYm9scywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBvYmpl
Y3RDb25zdHJ1Y3RvcktleXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlTmFtZSgp
LCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZh
dGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKICAgICBpZiAoT3B0aW9uczo6dXNl
SGFzT3duKCkpCiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmhhc093biwgb2JqZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmlu
ZGV4IGUyMTM0YTBmZTQ4OTZiMjAxMDQ3YTNiNDI3YjcxODRjMTNhODhlNWQuLjQzZDAwZjNmMjhi
YzYwYmRjY2MzMmEwMzRlZTRjNTBjYzkxYjgyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsOCBAQCB2b2lk
IE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPl9fZGVmaW5lU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmlu
ZVNldHRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPl9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRl
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEp
OwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworCisg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaGFzT3duUHJvcGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RQcm90
b0Z1bmNIYXNPd25Qcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOwogfQogCiBPYmplY3RQcm90b3R5cGUqIE9iamVjdFByb3RvdHlw
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2VjZWJiZTgzZjdkNzI0
NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVhNWM4Y2YzYjIyY2Zj
ZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAgV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2Vi
Q29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygp
CiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9j
b21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGluc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9
L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3Vy
Y2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
bWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUyLDYgKzIzNDAs
NyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9t
L1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNvZGVy
U3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50
ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhM2Q2
OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUzNTYyYmQy
ZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5h
bWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Zh
bHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3Vu
dFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZj
Li5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChOT19TVVBQ
TEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5kZXApCiBl
bmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8jIHNvdXJj
ZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5q
cwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlM
VElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzIFwKICAg
ICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAxYWNhZGUwMDliMGI3YTky
ODA4MzgwY2E1MjJiYzM1Mjk3YzM5ZjQ2Li5jOTA4MDQyMWM4MzhmY2MzZTQyZWE4ZWZhMGNjNzU0
MjJkZGRmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNTcsNiArMjA1Nyw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
M2VkYmIxNDdlNzRlMzZhOTk1NGZmN2MyNjk3ODUxZmU4MzAwNmJhLi43NDkxNWM2YmNkYjBjZDEz
MDgwNTdmNzk5ODEyYzc2MTQxODJhZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUzMDFC
RTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAv
KiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRCQUZC
ODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMg
LyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9OworCQkyRTNB
RUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQUVG
RjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQz
NDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJH
bG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlBNTc4RjQz
RjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAwM0RG
QzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyogU2Vy
dmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50Lmgg
Ki87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhv
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQw
RTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKLQkJ
QTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJ
QTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0
Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRENUFG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3REZEOTEy
REJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01V
UkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwNDEy
REJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVGRjky
ODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTM5NDAsNyArMTM5NDIsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMg
LyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFDMjAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3MTg2
MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI4LDcgKzIwNDI5LDYgQEAK
IAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJE
ODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4
NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1Q0U1
OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwICovLApAQCAtMjM1ODUsNiArMjM1ODUsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVE
MEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5
MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNwcCAq
LywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFCQ0FE
MDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJ
OTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMu
aCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5j
cHAgKi8sCkBAIC0zNDA4Myw3ICszNDA4NSw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAwN0I4
NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzUx
ODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5
cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUwMTY3
NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmY2NmMzNDQ0MmYxMTY3OGQ4MTM1MDcwZjQ4MGFlNzZk
ZjliMjYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpD
b21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1vZHVs
ZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmpl
Y3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdheXMo
IkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFuZExp
bmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1ZSBDb21tYW5k
TGluZUFQSU1vZHVsZTo6aG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlciwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCmluZGV4IDI3
NzE2ZmNhNjdhOWJhOGMyZGViZGVkYWNmN2ZjNmI0MmQyZGY3NGIuLjBhNTBkNGE1ZjMzM2Q0ZjQ4
ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIENvbW1hbmRM
aW5lQVBJTW9kdWxlIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1
bGUgewogcHVibGljOgogICAgIENvbW1hbmRMaW5lQVBJTW9kdWxlKCk7CiAKLSAgICBTdHJpbmcg
c291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1
bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSlND
OjpKU1ZhbHVlIGhvc3QoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBpbmplY3RJ
Zk5lZWRlZChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIGNvbnN0IEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwppbmRleCBmNTFlMzUxOWNjYjE3OTYwOTBj
MzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi5jMWU3ZjRlZDczM2YxZWRlYzg0ZDEwNWRlNTllMWFmNjc0
OTNiZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEyIEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcworLy8gQGludGVybmFsCiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7
UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkgeworZnVu
Y3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29t
bWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7CiAKLS8vIEZJWE1FOiA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlw
dFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRk
ZW4gYnVpbHQtaW5zCisvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNj
cmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogCiBpbmplY3RlZFNjcmlwdC5faW5z
cGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAwKQpAQCAtNzAsMTIgKzcxLDEyIEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvcHki
XSA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGVsc2UgaWYgKGluamVjdGVkU2NyaXB0LmlzUHJp
bWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAg
ZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN5bWJvbCIpCi0gICAgICAgIHN0cmluZyA9IGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcob2JqZWN0KTsKKyAgICAgICAgc3RyaW5nID0gQFN0
cmluZyhvYmplY3QpOwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJmdW5jdGlvbiIp
CiAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgewogICAgICAgICB0cnkg
ewotICAgICAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkpTT04uc3RyaW5n
aWZ5KG9iamVjdCwgbnVsbCwgIiAgIik7CisgICAgICAgICAgICBzdHJpbmcgPSBAanNvblN0cmlu
Z2lmeShvYmplY3QsICIgICIpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHN0cmlu
ZyA9ICIiICsgb2JqZWN0OwogICAgICAgICB9CkBAIC04OSwyMyArOTAsMjggQEAgQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdldCkgewog
fTsKIAogZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykgewotICAgIGlmICh0eXBl
cyA9PT0gdW5kZWZpbmVkKQorICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAg
dHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJs
dXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJv
ciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNo
IiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07CiAgICAgZWxzZSBpZiAodHlwZW9mIHR5
cGVzID09PSAic3RyaW5nIikKICAgICAgICAgdHlwZXMgPSBbdHlwZXNdOwogCi0gICAgbGV0IHJl
c3VsdCA9IFtdOworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBhZGRU
eXBlc1RvUmVzdWx0KHR5cGVzKSB7CisgICAgICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5J
dGVyYWJsZSh0eXBlcykpCisgICAgICAgICAgICByZXN1bHQuQGFkZCh0eXBlKTsKKyAgICB9CisK
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlm
ICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJjbGljayIs
ICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNl
b3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9S
ZXN1bHQoWyJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1v
dXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiXSk7CiAgICAgICAg
IGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJr
ZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOworICAgICAgICAgICAg
YWRkVHlwZXNUb1Jlc3VsdChbImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElu
cHV0Il0pOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAgICAgICAg
ICAgIHJlc3VsdC5wdXNoKCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAi
dG91Y2hzdGFydCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdChbInRvdWNoY2FuY2Vs
IiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Il0pOwogICAgICAgICBlbHNl
IGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImJs
dXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2Vs
ZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KFsi
Ymx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJz
ZWxlY3QiLCAic3VibWl0IiwgInpvb20iXSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
c3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKHR5cGVzW2ldKTsK
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExOCwxOSArMTI0LDE3IEBAIGZ1bmN0
aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibW9uaXRvckV2ZW50
cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFvYmpl
Y3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAg
IG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAg
IGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5JdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5
cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZl
bnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZl
bnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0
b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9iamVjdCB8
fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVz
KTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAgICAgICBv
YmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAg
ICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0
eXBlcykpKQorICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVu
dCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewpAQCAtMTU5LDggKzE2Myw4IEBAIGlmIChpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUp
IHsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rv
ciwgc3RhcnQpIHsKICAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQot
ICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0
LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9t
KHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAgcmV0dXJuIEBBcnJh
eS5AZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChz
ZWxlY3RvcikpOwogICAgIH07CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkeCJdID0g
ZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKQEAgLTE3OCw3ICsxODIsNyBAQCBpZiAoaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7
CiAgICAgICAgIGxldCBub2RlcyA9IFtdOwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7CiAgICAg
ICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAgICBub2Rl
cy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAgICAg
ICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5MCw0IEBAIGlmIChpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUp
IHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5k
TGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVu
Y3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0pCit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYzcyNjczZWRiMThlMTU0N2JhMzM1MDQ2MDAzMzExN2ZhMDY1MTkxZi4uNTczMzlj
ZjBkZjY2NmM0NjJlMTUxZDZjODk4MmRlNWQ5NzA1YTdhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIyLTA0LTI1ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWlu
IHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRt
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0
bWw6CisgICAgICAgIC0gVGhlIEluamVjdGVkIHNjcmlwdCAoYW5kIG1vZHVsZXMpIHdpbGwgbm8g
bG9uZ2VyIGFwcGVhciBhcyBzY3JpcHRzIGluIFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0w
NC0yMyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVggSVRNOiBUYWJsZSByb3cgb2JqZWN0cyBzaG91bGQgcmV0dXJuIGEgbm9uLW51bGwgdW5pZ25v
cmVkIHBhcmVudCBldmVuIHdoZW4gYSB0YWJsZSBvYmplY3QgaXMgbm90IGZvdW5kIGluIGl0cyBh
bmNlc3RyeS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWIxNTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUy
N2RmZDg1YzhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotQ09OU09MRSBN
RVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xl
XQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5k
b3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTog
c3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8g
b3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzLgotCi0KLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0UGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMKLS0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZAot
RVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCi1TVEVQUzogb3ZlciwgaW4s
IGluLCBpbiwgcmVzdW1lCi1QQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ct
cGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAg
NiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdn
ZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAg
Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5n
Iik7Ci0KLUFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0g
ICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygp
IHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAg
ICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotCi1BQ1RJT046IHN0
ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMDo1Ci0gICAgICA2ICAgIGZ1bmN0aW9u
IGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAg
ICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAtPiAgIDkgICAgICAgIHxjb25zb2xlLmxvZyhj
b25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEg
ICAgfQotICAgICAxMgotCi1BQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
ZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUu
bG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAg
MTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIK
LSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0KLUFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50
cnlDb25zb2xlTG9nOjEyOjIKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0g
ICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNv
bGUubG9nKCJzdHJpbmciKTsKLSAtPiAgMTEgICAgfXwKLSAgICAgMTIKLSAgICAgMTMgICAgLy8g
LS0tLS0tLS0tCi0gICAgIDE0Ci0KLUFDVElPTjogcmVzdW1lCi1SRVNVTUVECi1QQVNTOiBTaG91
bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KLQotLS0gUnVubmluZyB0ZXN0IHNldHVwLgotLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJs
ZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQotU1RFUFM6IG92ZXIs
IGluLCBpbiwgaW4sIHJlc3VtZQotUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBB
VCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
bG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAg
ICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRl
YnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAg
ICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0
cmluZyIpOwotCi1BQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6
NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVM
b2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xl
LmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAg
IDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9O
OiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2Ny
aXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAg
ICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAg
ICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xl
LmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBB
VCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBm
dW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAt
PiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29s
ZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0g
ICAgIDExICAgIH0KLQotQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6
OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNv
bGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNv
bGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0g
ICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLQotQUNU
SU9OOiByZXN1bWUKLVJFU1VNRUQKLVBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgot
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTY4YTcyNTRjZTFlZjA0ZDczYTlmYjM1YzZj
YmQ3MzhmYmMzMWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2Ny
aXB0cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rp
b24gZW50cnlDb25zb2xlTG9nKCkgewotICAgIGRlYnVnZ2VyOwotICAgIGNvbnNvbGUubG9nKHdp
bmRvdyk7Ci0gICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOwotfQotCi0vLyAtLS0tLS0tLS0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZUZv
ckludGVybmFsU2NyaXB0cyIpOwotCi0gICAgd2luZG93LmluaXRpYWxpemVTdGVwcGluZ1Rlc3RT
dWl0ZShzdWl0ZSk7Ci0KLSAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAg
ZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9n
IHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAg
ICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKLSAgICAgICAg
Ly8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3Ro
ZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUg
c2V0dGluZy4KLSAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdl
bnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9LAotICAgICAgICBzdGVwczog
WwotICAgICAgICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUu
bG9nKHdpbmRvdykKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xl
KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKCJzdHJpbmciKQotICAgICAg
ICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0KLSAgICB9KTsKLQotICAgIGFkZFN0ZXBwaW5nVGVz
dENhc2UoewotICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3Rl
cCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmpl
Y3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNv
bGVMb2cpIiwKLSAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2lu
Y2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlm
IGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KLSAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsg
cmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0s
Ci0gICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKLSAgICAgICAgc3RlcHM6IFsKLSAg
ICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3
aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29s
ZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lk
ZSBjb25zb2xlLmxvZyh3aW5kb3cpXQotICAgICAgICAgICAgInJlc3VtZSIsCi0gICAgICAgIF0K
LSAgICB9KTsKLQotICAgIGxvYWRNYWluUGFnZUNvbnRlbnQoKS50aGVuKCgpID0+IHsKLSAgICAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci0gICAgfSk7Ci19Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRoZXIg
Y29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUg
dmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdFBhcnNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2Vj
ZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2Vk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0
ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0
LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3Jp
cHQuCiBQQVNTOiBTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIElu
c3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJ
bnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCBy
ZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUw
MDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5kNjc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFi
YTExNDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBh
cnNlZC5odG1sCkBAIC0xOSwxNCArMTksMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAt
IGlubGluZSA8c2NyaXB0PiAodGhpcykgc3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlu
bGluZSBib2R5IG9ubG9hZCBldmVudCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUg
YmVsb3cKICAgICAvLyAgIC0gZXZhbCBzb3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAt
IGluc3BlY3RvciBpbnRlcm5hbCBzY3JpcHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9
IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAg
IGxldCBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAg
ICBsZXQgZm91bmRFdmFsU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3Jp
cHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJj
ZVNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsK
IAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzks
MTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxp
bmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUg
b2YgPGJvZHk+IGJlbG93LgorICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAm
JiBwYXJhbXMuc3RhcnRMaW5lID49IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gaXNFdmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1
cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0gImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9u
IGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBw
YXJhbXMuc291cmNlVVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1z
LnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21t
YW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5z
b3VyY2VVUkwuaW5kZXhPZigiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0g
ICAgfQotCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVi
dWdnZXJEb21haW5BbmRDaGVja0luaXRpYWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKQEAgLTc5LDEwICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBp
c0V2YWxTY3JpcHQocGFyYW1zKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNj
cmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRM
aW5lQVBJU291cmNlU2NyaXB0ICYmIGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1z
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3Jp
cHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNj
cmlwdFNvdXJjZVNjcmlwdCAmJiBpc0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBQcm90b2NvbFRlc3QubG9nKCJVTkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5n
aWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBl
Y3RlZFNjcmlwdCA9IHRydWU7CkBAIC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFn
U2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZl
bnRMaXN0ZW5lclNjcmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlz
dGVuZXIgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0
KGZvdW5kRXZhbFNjcmlwdCwgIlNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VT
Y3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0
LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFu
ZExpbmVBUElTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVB
UElTb3VyY2UgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RU
aGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3JpcHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhw
ZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9y
LWV4cGVjdGVkLnR4dAppbmRleCBkNDQyMTdkMzYyZWE0ZjlhMjUyNjRhMGQ4YzMwYWFmNGFmZTIz
ODE2Li5hZmJkMzJkNTAzN2U1MmFlOTBjMjMzZjIyYjUzOTM5NmVlMWY4YWYxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJy
b3ItZXhwZWN0ZWQudHh0CkBAIC0zMSw3ICszMSw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVs
bDsgdHJ5IHsgW10ueC54OyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAg
IHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIs
Ci0gICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImds
b2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFtu
YXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAg
ICAgIl9lbnRyaWVzIjogbnVsbApAQCAtNzAsNyArNzAsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9
IG51bGw7IHRyeSB7IGV2YWwoImlmKCkiKTsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVy
cm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6
ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFs
IGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3Jh
cENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogImV2YWxAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNv
ZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUXigKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dy
YXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBu
dWxsCkBAIC0xMDQsNyArMTA0LDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikuc3BsaXRUZXh0KDEwMCk7IH0gY2EKICAgICAgIHsK
ICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0g
ICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxu
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIK
KyAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVA
XG5ldmFsdWF0ZVdpdGhT4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBb
bmF0aXZlIGNvZGVdIgogICAgICAgfSwKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogImNvZGUi
LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVt
bi1leHBlY3RlZC50eHQKaW5kZXggYmZjYWM5ODllYWMwZmJkODBlODVhY2M2M2M0ZTdjMjg2Yjg3
YTM4NS4uZjkyNzBmMGZhNDEwNGU0NjQyNzYwMzY5ZjFmNWE0NWQwYThlOWZjNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0
ZWQudHh0CkBAIC02NCw4ICs2NCw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAg
ICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICAgICAibGlu
ZU51bWJlciI6IDE0MiwKLSAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAg
ICAgICAgICJsaW5lTnVtYmVyIjogNDA1LAorICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjog
ODAKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxm
aWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgog
ICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAg
ICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjog
MTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVy
IjogNDA1LAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA4MAogICAgICAgICB9CiAgICAgICBd
LAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFT
UzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAg
ICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0g
ICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3
CisgICAgICAgICAgImxpbmVOdW1iZXIiOiA0MDUsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6
IDgwCiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458460</attachid>
            <date>2022-04-27 12:17:51 -0700</date>
            <delta_ts>2022-04-27 21:18:52 -0700</delta_ts>
            <desc>Patch v1.1 - More @s, more tests</desc>
            <filename>bug-152294-20220427121751.patch</filename>
            <type>text/plain</type>
            <size>135029</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzFmM2VmOWY1Y2E4MTNmMjNiYTJhMDc1YWU0M2UxZTViZTRhYjYyLi42MmRiMTU0MzVkYmY0NGNm
OWNiODE5NmJlMDIxZThhN2M0OTVjMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNC0yNyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIG5ldyB0ZXN0IGNhc2VzIGluIGBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbGAKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBCdWlsZCBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBhIHBsYWluIGhlYWRlciBmaWxl
IGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93a2J1aWx0
aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJp
bmcpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAg
ICAgICAtIEluc3BlY3RvckluamVjdGVkU2NyaXB0IGNvbnRhaW5zIHVuYmFsYW5jZWQgY3VybHkg
YnJhY2tldHMgaW5zaWRlIHF1b3Rlcy4gVGhlIGdlbmVyYXRpb24gb2YgYnVpbHRpbnMgaXMgbm93
CisgICAgICAgIGhhcmRlbmVkIGFnYWluc3QgdGhpcy4gUHJldmlvdXNseSBhbGwgY3VybHkgYnJh
Y2tldHMgd2VyZSBjb3VudGVkLCB3aGljaCBtZWFudCB0aGF0IHRoZSBzb3VyY2UgY29kZSB3b3Vs
ZCBiZSBjdXQKKyAgICAgICAgb2ZmIGVhcmxpZXIgdGhhbiB0aGUgYWN0dWFsIGVuZCBvZiB0aGUg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgor
ICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAg
ICAgICAtIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIHVzZXMgZGVzdHJ1Y3R1cmluZyB0
byBnZXQgdGhlIGBSZW1vdGVPYmplY3RgIGFuZCBgQ29tbWFuZExpbmVBUElgIGNsYXNzZXMgYXQK
KyAgICAgICAgaW5zdGFudGlhdGlvbi4gV2UgbmVlZCB0byB0cmVhdCB0aGlzIGRlc3RydWN0dXJl
IGFzIGEgc2luZ2xlIHBhcmFtZXRlciwgb3RoZXJ3aXNlIGRlYnVnIGFzc2VydGlvbnMgd2lsbCBj
YXRjaAorICAgICAgICB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBwYXJhbWV0ZXIgY291bnRzLgor
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAtIEFkZCBzeW1ib2xzIHRoYXQgd2UgbmVlZCB0
byBoYXZlIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mLCBhbmQgZm9yIHNvbWUgb2YgdGhvc2Ugc3ltYm9s
cyBtYWtlIHRoZW0gbGluay10aW1lIGNvbnN0YW50cy4KKworICAgICAgICAqIGJ1aWx0aW5zL0l0
ZXJhdG9ySGVscGVycy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYnVpbHRpbkl0ZXJhYmxl
LndyYXBwZXIuaXRlcmF0b3IpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5idWlsdGluSXRlcmFi
bGUpOgorICAgICAgICAtIEFkZCBhIHJldXNhYmxlIGhlbHBlciB0aGF0IHRha2VzIHRoZSByZWFs
IGl0ZXJhdG9yIGZvciBhbiBpdGVyYWJsZSwgYW5kIHByb3ZpZGVzIGEgd3JhcHBlciB0aGF0IHVz
ZXMgdGhlIHJlYWwKKyAgICAgICAgaXRlcmF0b3IuIFdoZW4gdXNlZCB3aXRoIGEgZm9yLW9mIGxv
b3AsIHRoaXMgcHJldmVudHMgdGhlIGl0ZXJhdGlvbiBmcm9tIGJlaW5nIG9ic2VydmFibGUvb3Zl
cnJpZGRlbiBieSBzY3JpcHQKKyAgICAgICAgYXV0aG9ycy4KKyAgICAgICAgCisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNv
dXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oOgorICAgICAgICAtIFVzZSB0aGUgbmV3IGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIElu
amVjdGVkIFNjcmlwdCBjcmVhdGlvbiBmdW5jdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmg6CisgICAgICAgIC0gSW5qZWN0ZWQgbW9kdWxlcyBhcmUgbm93IHByb3Zp
ZGVkIGFzIGEgSlNGdW5jdGlvbiwgbm90IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgLSBVc2UgcHJpdmF0ZSBz
eW1ib2xzIHRocm91Z2hvdXQgdG8gZW5zdXJlIHdlIGdldCBub24tb2JzZXJ2YWJsZSwgbm9uLW92
ZXJyaWRkZW4gdmVyc2lvbnMgb2YgZnVuY3Rpb25zIGFuZCB2YWx1ZXMuCisgICAgICAgIC0gSW4g
bWFueSBjYXNlcywgdGhpcyBpcyBhIDE6MSBtYXBwaW5nIHdoZXJlIHRoZSBuZXcgc3ltYm9sIGlz
IGp1c3QgcHJlZml4ZWQgd2l0aCBhbiBgQGAuCisgICAgICAgIC0gRm9yIHB1c2hpbmcgdmFsdWVz
IHRvIGFycmF5cywgdXNlIGBAYXJyYXlQdXNoYCwgdGhlIGJ1aWx0aW4gd2F5IG9mIHB1c2hpbmcg
YSB2YWx1ZSBpbnRvIGFuIGFycmF5LgorICAgICAgICAtIEZvciB0aGUgYFN5bWJvbGAgY29uc3Ry
dWN0b3IsIGp1c3QgdXNlIHRoZSBleGlzdGluZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGluc3Rl
YWQgb2YgZXhwb3NpbmcgYSBwcml2YXRlCisgICAgICAgIHZlcnNpb24gb2YgdGhlIGBTeW1ib2xg
IGNvbnN0cnVjdG9yLgorICAgICAgICAtIEZvciBmb3Itb2YgbG9vcHMsIHdyYXAgdGhlIGl0ZXJh
YmxlIHdpdGggYEBidWlsdGluSXRlcmFibGVgLgorICAgICAgICAtIGBTeW1ib2wudG9TdHJpbmdU
YWdgIGlzIGNvbnZlcnRlZCB0byBgQEB0b1N0cmluZ1RhZ2AsIHRoZSBwcml2YXRlIHZlcnNpb24g
b2YgdGhhdCBzeW1ib2wuCisgICAgICAgIC0gYE1hdGgubWF4YCBpbiBgUmVtb3RlT2JqZWN0LnBy
b3RvdHlwZS5fZ2VuZXJhdGVQcmV2aWV3YCBub3cgdXNlcyBhIGhlbHBlciBmdW5jdGlvbiB0aGF0
IHBlcmZvcm1zIGEgY29tcGFyaXNvbgorICAgICAgICBpbnN0ZWFkIG9mIGV4cG9zaW5nIGJvdGgg
TWF0aCBhbmQgTWF0aC5tYXggYXMgcHJpdmF0ZSBidWlsdGlucy4KKyAgICAgICAgLSBPYmplY3Rz
IGFyZSBub3cgY3JlYXRlZCB1c2luZyBAT2JqZWN0LkBjcmVhdGUgaW5zdGVhZCBvZiB7fSBzeW50
YXguCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgLSBBZGQgdGhlIGxpbmUgbnVtYmVyIHRvIGJ1aWx0aW4gY29tcGlsYXRpb24gbG9n
Z2luZyB0byBoZWxwIGlkZW50aWZ5IHdoZXJlIHNvbWV0aW1lcyBhbWJpZ3VvdXMgZXJyb3JzIG9j
Y3VycmVkLgorCisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgLSBFeHBvc2UgbmVjZXNzYXJ5IGZ1bmN0aW9ucy9jb25zdHJ1Y3RvcnMgdmlh
IHRoZWlyIHByaXZhdGUgbmFtZSBmb3IgdXNlIGluIEluamVjdGVkU2NyaXB0U291cmNlLmpzIGFu
ZAorICAgICAgICBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworCisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIC0gQWRkIGEgbGluay10aW1lIGNv
bnN0YW50IGZvciB0aGUgU3RyaW5nIGNvbnN0cnVjdG9yLgorICAgICAgICAtIEFkZCBoZWxwZXJz
IGZvciBKU09OIHBhcnNpbmcvc2VyaWFsaXphdGlvbi4KKwogMjAyMi0wNC0yMiAgRGllZ28gUGlu
byBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG5vbi11
bmlmaWVkIGJ1aWxkIGZpeGVzIGFmdGVyIHIyOTMyMDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmQxNDE1NzFm
NjJhZmI5YjIxMmYzOGYxZGU1ODdiOTdjZmZmOTMwLi5iZDMzMWE2YjRiYzQ5ZTNhMTQzYTAwNjc2
NWY0ZmVjMWIxNTdmMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDQtMjcg
IFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJh
bnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIEpTQyBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBCdWlsZCBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBhIHBsYWluIGhlYWRlciBmaWxl
IGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9k
dWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21t
YW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAgICAgLSBQcm92aWRlIGEgSlNGdW5j
dGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9mIHJhdyBzb3VyY2UgY29kZS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qczoKKyAgICAg
ICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucwor
ICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0aW5zLgor
ICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1c2UgYSBTZXQgaW5zdGVhZCBvZiBh
biBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNlci1wcm92aWRlZCB0eXBlcyB0aGF0
IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFucyB0aGF0IHdlIG5lZWQgdG8gaXRl
cmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRoZW0gaW4gdGhlIHNldCwgYnV0IHNp
bmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1cHBvcnQgcHVzaGluZyBtdWx0aXBs
ZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5vIG1vcmUgd29yayB0aGFuIHVzaW5n
IGFuIEFycmF5LgorCiAyMDIyLTA0LTIzICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBWCBJVE06IFRhYmxlIHJvdyBvYmplY3RzIHNob3VsZCByZXR1
cm4gYSBub24tbnVsbCB1bmlnbm9yZWQgcGFyZW50IGV2ZW4gd2hlbiBhIHRhYmxlIG9iamVjdCBp
cyBub3QgZm91bmQgaW4gaXRzIGFuY2VzdHJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGMwYTllMmE3ZTgwMmRiOTQ4NTc2NzRmMjliODc5NzZkOWM1NmUyMGQuLjc2Y2Iw
NWVlNDZlZGY1OWFhMjhhMGM5NmM1NGI4MWIwZjk3NjEwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTM2NCw2ICszNjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9UeXBlZEFy
cmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvVHlw
ZWRBcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9X
ZWJBc3NlbWJseS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApAQCAtMTQwNSwxNyAr
MTQwNiw2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAotYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmggJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBNQUlOX0RFUEVOREVO
Q1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5q
cwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NP
TU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcyIgPiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0lu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJM
RX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+ICR7SmF2YVNjcmlw
dENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0g
ICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
Un0veHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzICR7SmF2YVNjcmlwdENvcmVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICR7SmF2YVNjcmlwdENv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAotICAgIFZFUkJB
VElNKQotCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7SmF2YVNjcmlwdENv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCkKLQogaWYgKFdU
Rl9DUFVfWDg2XzY0KQogICAgIGlmIChNU1ZDIEFORCBOT1QgRU5BQkxFX0NfTE9PUCkKICAgICAg
ICAgYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDhkNTQwYmQ1MTkyMTdiNTUy
YmYwNjA5OGM5ZGRjMmEyNzRmMzM0MGIuLmY3YjNkYjdiNjFkMzA2MDdlOGE2ZmI1MTQzYTRjMjRl
YWQyMjg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTIxLDcgKzIxLDYgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRlZFdhc21PcHMuYXNt
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW5pdEJ5dGVjb2Rlcy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0V2FzbS5hc20KLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdFNv
dXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjdmMmM2ODU0ZjhhMWJhMTNjMDk1ZjdlMTU0ZjY4ZTk3
Y2JmMzkxLi4xZmI2MjNjZDZmNmU4ZDg5ODdmOTQ4MDQ1NDRmMGQ0NGU1YjM1ZjA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNjgsNyArNjgsNiBAQCBK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAog
LlBIT05ZIDogYWxsCiBhbGwgOiBcCi0gICAgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBcCiAgICAg
TGV4ZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAgICAgUmVnRXhwSml0VGFibGVz
LmggXApAQCAtMTM4LDYgKzEzNyw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMg
PSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9y
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBl
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9XZWJBc3NlbWJseS5qcyBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIFwK
ICMKIAogIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0aGUgY29udGVudHMg
b2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbwpAQCAtMzY4LDEyICszNjgsNiBA
QCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIDogQ29tYmluZWREb21haW5z
Lmpzb24gJChJTlNQRUNUT1JfR0VORVJBVAogCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9wcmVwcm9jZXNzLnBsIC0taW5wdXQgaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5pbiAtLWRlZmluZXMgIiQoRkVBVFVSRV9BTkRfUExB
VEZPUk1fREVGSU5FUykiIC0tb3V0cHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKIAkkKERFTEVURSkgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5p
bgogCi1JbmplY3RlZFNjcmlwdFNvdXJjZS5oIDogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5ICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAotCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3Rl
ZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAuL0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5w
eSA8ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+
PiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikveHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzIC4vSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UubWluLmpzIEluamVjdGVkU2NyaXB0U291cmNlLmgKLQkkKERFTEVURSkgSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0KIEFJUl9PUENPREVfRklMRVMgPSBcCiAgICAgQWly
T3Bjb2RlLmggXAogICAgIEFpck9wY29kZVV0aWxzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3OWM4ZGNkYjFlZTk2ODM0YTcwOTZhZDYzMjA5MDI4MDEyMDIwMGU1Li4yZmE5
MjdlMmMxZjBiNTU5ZmQ0NTA3ZDMyZWUzMTVjMzc5NWE4ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAKIAkJQTUxM0U1QkUxODVCRkFDQzAwN0U5
NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QjkxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0SG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QkIxODVC
RkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07CiAJCUE1MTNFNUMy
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QkQxODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi87IH07Ci0JCUE1
MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzYxODVGOTQzNjAw
N0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07CiAJCUE1MTNFNUNCMTg1Rjk2
MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTE0QjJDMTE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUyQzk1RkYyMTU5RDQz
MjAwN0Q4QUMwIC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzRDIxNTlENDFFMDBGQ0Q4MjYgLyogSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzc2NCw2ICszNzYzLDcgQEAKIAkJMkFEMkVERkExOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFbnVtZXJhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFEODkz
MjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0xvZ2dpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRjAwRDI4MTcxQUMwMDAzNzFBMjUgLyogU2hh
ZG93UmVhbG1Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTaGFkb3dSZWFsbVBy
b3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdE
ODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0
MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVR5cGVEZWZpbml0aW9uSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTc3MEM0RjI3Qjk0Q0U0MDAzMDgwOTEgLyog
VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NzIwLDcgKzQ3MjAsNiBAQAogCQlBNTEzRTVCQzE4NUJGQUNDMDA3RTk1
QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzMxODVGOTJDOTAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM5MTg1Rjk2MjQwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1MTRCMkMwMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyODcsNyArNzI4Niw2IEBACiAJCQkJ
OTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJ
CTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8s
CiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMuYXNtICovLAot
CQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICov
LAogCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5sdXQuaCAqLywKIAkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDczMUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTkzNjYsNiArOTM2NCw3IEBA
CiAJCQkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmpzICovLAogCQkJCTUzNEQ5QkY4MjM2M0M1NUQwMDU0NTI0RCAvKiBTZXRJdGVyYXRv
clByb3RvdHlwZS5qcyAqLywKIAkJCQk3MDM1NTg3RDFDNDE4NDE5MDA0QkQ3QkYgLyogU2V0UHJv
dG90eXBlLmpzICovLAorCQkJCTJFM0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAvKiBTaGFkb3dSZWFs
bVByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM2MDFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5n
Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNjExQjY1RDlCMTAwOURCMUVGIC8qIFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCUExRTA0NTFCMUMyNUI0QjEwMEJCNjYzQyAv
KiBTdHJpbmdQcm90b3R5cGUuanMgKi8sCkBAIC0xMDQ1NSw3ICsxMDQ1NCw2IEBACiAJCQkJQTUx
M0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjExODdCN0I4NjAwODQzQjEwIC8qIEluamVj
dGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTEzRTVDNzE4NUY5NDQ2MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlF
OTMyMUJEMTgyNzkwMDFBQTQxMyAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQt
c2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTc5MDVCQjY5MUQxMjA1MEUwMDE5RkU1NyAv
KiBJbmxpbmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEE3QkYwMUI4Mjk3NUEwMDJE
OTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwu
cHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0OTAxMDczMDE5NzlhODZkMTY4Ny4uMzg3NGRk
NDJmMjc2MGYzNGU4NmQ4ZGM4MTg2MWE1MmVjODhmZTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5
CkBAIC01Miw2ICs1Miw3IEBAIGZ1bmN0aW9uSXNBc3luY1JlZ0V4cCA9IHJlLmNvbXBpbGUociIo
YXN5bmMpP1xzKmZ1bmN0aW9uIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVS
ZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5F
IHwgcmUuRE9UQUxMKQogZnVuY3Rpb25PdmVycmlkZGVuTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciIuKl5Ab3ZlcnJpZGRlbk5hbWU9KFwiLitcIikkIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxM
KQogZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmFzeW5jXHMrKT9m
dW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMq
XCkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCitmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRl
ciA9IHJlLmNvbXBpbGUociIsXHMqKD8hW157fV0qXH0pIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9U
QUxMKQogCiBtdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwv
IiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSBy
ZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1
LDcgKzE0Niw3IEBAIGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICAgICAgaXNfbmFrZWRfY29u
c3RydWN0b3IgPSBmdW5jdGlvbk5ha2VkQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25f
c291cmNlKSAhPSBOb25lCiAgICAgICAgIGlmIGlzX25ha2VkX2NvbnN0cnVjdG9yOgogICAgICAg
ICAgICAgaXNfY29uc3RydWN0b3IgPSBUcnVlCi0gICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJp
cCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291
cmNlKVswXS5zcGxpdCgnLCcpXQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3Ig
cyBpbiBmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlci5zcGxpdChmdW5jdGlvblBhcmFtZXRlckZp
bmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0pXQogICAgICAgICBpZiBsZW4ocGFyYW1l
dGVyc1swXSkgPT0gMDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEg
KzMwNCw1NSBAQCBjbGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91
bmRzID0gW10KICAgICAgICAgc3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBm
b3IgbWF0Y2ggaW4gbWF0Y2hlczoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQog
ICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAg
ICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0g
IT0gJ3snOgotICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBl
bmQgKz0gMQogICAgICAgICAgICAgZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAx
CisgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1
cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRo
ID4gMDoKLSAgICAgICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAg
ICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRd
ID09ICd9JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAg
ICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAg
ICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBp
ZiBpc0VzY2FwaW5nQ2hhcmFjdGVyOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hh
cmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAg
ICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIK
KyAgICAgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJp
bmdTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmlu
Z1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2Fw
aW5nQ2hhcmFjdGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAgICAgIyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVz
c2lvbnMgY29udGFpbmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25l
CisgICAgICAgICAgICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVh
dGVIVE1MYCkgY2FuIGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAg
ICAgICAgICAgICAgICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRo
aXMsIGp1c3QgcmVzZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQor
ICAgICAgICAgICAgICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5n
KS4gVGhpcyB3aWxsIHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisg
ICAgICAgICAgICAgICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBj
dXJseSBicmFja2V0IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFy
bGllcgorICAgICAgICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxh
bmNlZCBxdW90ZS4KKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicg
YW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAg
ICBkZXB0aCArPSAxCisgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9
JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0g
MQogICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAg
ICAgICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFy
dCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggOWI5YWI3NWM2ZDc1YWE3
M2Y3ZTE4ZDY5ZmUyYTg4NzdhZWQ1YWI0OC4uYTFkM2M5M2JlMjdhMzhkMGFlZWJkNzUwNzVkNjUw
YzFmOTY3ZmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2
bSwgY29uc3QgUwogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IHBhcmFtZXRlcnNTdGFydCAr
IDE7CiAgICAgICAgIHVuc2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJvb2wgaW5zaWRlQ3Vy
bHlCcmFja2V0cyA9IGZhbHNlOwogICAgICAgICBib29sIHNhd09uZVBhcmFtID0gZmFsc2U7CiAg
ICAgICAgIGJvb2wgaGFzUmVzdFBhcmFtID0gZmFsc2U7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7
CkBAIC0xMTMsNyArMTE0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICAg
ICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnKScpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAgICAgIGlmIChjaGFy
YWN0ZXJzW2ldID09ICd9JykKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0g
ZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICd7JyB8fCBpbnNp
ZGVDdXJseUJyYWNrZXRzKSB7CisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9
IHRydWU7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKICAgICAgICAgICAg
ICAgICArK2NvbW1hczsKICAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hp
dGVTcGFjZShjaGFyYWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5k
ZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uZWJhN2FjNmY5NDI4
YjNlZmU3Yjk3MmFiMDhiY2RjNDA0YTI2YWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVt
b3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhfX2RlZmlu
ZUdldHRlcl9fKSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBcCisgICAgbWFjcm8oanNvblN0cmlu
Z2lmeSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAorICAgIG1h
Y3JvKGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCisg
ICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5
U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCisgICAgbWFjcm8oaW5kZXhP
ZikgXAorICAgIG1hY3JvKHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCmluZGV4IDI2
M2U0M2JmYzBlODMxMTYwNTAyYTk4NWUyNDFhZTA3Yzc3ZWUyZjQuLjEwMzllMjE5YTkxYzUyNzgw
MzQ1MGY1YWU0NmYwZThmMTU4YjZhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwpAQCAtNTEsMyArNTEsMjQgQEAgZnVuY3Rpb24g
cGVyZm9ybUl0ZXJhdGlvbihpdGVyYWJsZSkKICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3Vs
dCwgaW5kZXgrKywgaXRlbS52YWx1ZSk7CiAgICAgfQogfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVu
Y3Rpb24gYnVpbHRpbkl0ZXJhYmxlKGl0ZXJhYmxlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAg
ICAKKyAgICAvLyBmb3Itb2YgbG9vcHMgbG9vayB1cCB0aGUgQEBpdGVyYXRvciBwcm9wZXJ0eSwg
d2hpY2ggaXMgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVkIGEgZ2V0dGVyIGZvciBAQGl0
ZXJhdG9yLgorICAgIC8vIFRvIGF2b2lkIHRoaXMsIGNyZWF0ZSBhIHdyYXBwZXIgb2JqZWN0IHdo
ZXJlIEBAaXRlcmF0b3IgcmV0dXJucyB0aGUgYWN0dWFsIGl0ZXJhdG9yLgorICAgIGlmIChAaXNV
bmRlZmluZWRPck51bGwoaXRlcmFibGUpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1aWx0
aW5JdGVyYWJsZSByZXF1aXJlcyB0aGF0IHRoZSBgaXRlcmFibGVgIG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZC4iKTsKKworICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0gaXRlcmFibGUuQEBpdGVy
YXRvcjsKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGl0ZXJhdG9yRnVuY3Rpb24pKQorICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5JdGVyYWJsZSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0
eSBgaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXWAgYmUgYSBmdW5jdGlvbi4iKTsKKworICAgIGxl
dCBpdGVyYXRvciA9IGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoaXRlcmFibGUpOworICAgIGxldCB3
cmFwcGVyID0ge307CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpdGVyYXRvcjsgfQorCisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4
NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi5iODY1M2U4NjU2OTkzMWZjYmI2ZTJmNGI0
MjU0OGM0YjBjNmUxMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOSBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKICAgICB2KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1Jl
bW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAg
ICB2KGpzb25QYXJzZSwgbnVsbHB0cikgXAorICAgIHYoanNvblN0cmluZ2lmeSwgbnVsbHB0cikg
XAorICAgIHYoU3RyaW5nLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElN
RV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGNiMDYz
NDAyYmYxMjJlYWUxNjk4ZWJhMmE3YmI3ZjRkNzZlZjk3NzAuLjIyZDFiY2U3ZWFiMGZhZjE1NGUw
ODc1YjdjMGM3NmRjZGJkMWMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dFNvdXJjZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5l
cy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5q
ZWN0ZWRTY3JpcHQuY2xlYXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Z0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXpl
b2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBO
YWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQgaWQpCitFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShz
b3VyY2UsIHsgfSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFRoaXMoKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2Vw
dGlvbjsKLSAgICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9l
bnZpcm9ubWVudC5ldmFsdWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUg
PSBldmFsdWF0ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFs
dWUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAg
YXV0byogZnVuY3Rpb25WYWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5s
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVk
U2NyaXB0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQo
c2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVu
Y3Rpb25WYWx1ZSk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCkBAIC0xNjYsNyArMTU5LDcgQEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNl
cHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1
ZSwgYXJncyk7Ci0gICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJl
dHVybiByZXN1bHQuZ2V0T2JqZWN0KCk7CiB9CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAg
IGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRGb3IoZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIGNy
ZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCks
IGdsb2JhbE9iamVjdCwgaWQpOworICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoZ2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKICAg
ICAgICAgYXV0byYgZXJyb3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJU
KGVycm9yKTsKQEAgLTE5NywxMiArMTkwLDEwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAg
ICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0
ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciB3aGVuIGNyZWF0aW5nIGluamVjdGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgZXJyb3ItPnZh
bHVlKCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1
bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KICAgICBpZiAoIWNyZWF0ZVJlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fs
d2F5cygiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgb2JqZWN0Iik7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApp
bmRleCAxZjc0MGM0MDY4NDUzNjZhNzU5YmEwYWY0YzhjMzI3Nzc0OTU0OGVhLi5iNTQxMDEyZWY0
YmI0YmYyMmU3YWUzODJiZmYxNTk4NWFjOTlhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTc1LDgg
Kzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hNYXA8SlNDOjpKU0dsb2JhbE9iamVjdCosIGlu
dD4gbV9zY3JpcHRTdGF0ZVRvSWQ7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGluamVjdGVkU2Ny
aXB0U291cmNlKCk7Ci0gICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBpbnQgaWQpOworICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3Qq
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBpbnQgaWQpOwogCiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52
aXJvbm1lbnQ7CiAgICAgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhv
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEyZWQ2ZmJlODZiODk3NDEyZjQ4
ZmQ1ZTlhMTEuLjBiNjc1ZTg0NDY2OTA2MDIxMjM4N2ZkYjRiYWQ1ZDBhNjU3OGY4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwCkBAIC03NCwxMyArNzQsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVs
ZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0K
ICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVy
cm9yIHdoZW4gY2FsbGluZyAnaGFzSW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQp
XG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7
Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWhh
c0luamVjdGVkTW9kdWxlUmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVk
TW9kdWxlUmVzdWx0LnZhbHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJpbmplY3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVj
dG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChzb3VyY2UoKSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1
ZShpbmplY3RNb2R1bGVGdW5jdGlvbihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsK
ICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0
TW9kdWxlUmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KGZ1bmN0aW9uKTsKICAgICAgICAgaWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKQEAgLTkyLDcg
KzkxLDYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgICAgIGlmIChzdGFjay5z
aXplKCkgPiAwKQogICAgICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1u
KGxpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2Fs
bGluZyAnaW5qZWN0TW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2Jh
bE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5o
CmluZGV4IDI3OWJhZTRlYmFlNGMxODU0NDhjNjk3ZTlhMDNiZWRiNWVhZjg1OGIuLmE0YmVkOTY5
MmI3NDU2YTAwNWQ3NmRmNGZlNDg1MTYxZjk1ZTRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsK
IHB1YmxpYzoKICAgICB+SW5qZWN0ZWRTY3JpcHRNb2R1bGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTRnVuY3Rp
b24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgaG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5q
cwppbmRleCA0OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li45NzJjMDgy
MDk2MWRhZDUxNDY1ZmQxMDA5OGM1Njg1ZThkZjYwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTcgKzI3
LDEzIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlw
dF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwotCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9z
dCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7Ci0KLS8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRkZW4gYnVpbHQtaW5zCi0KLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0Bn
bG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmpl
Y3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkK
K3sKIAogZnVuY3Rpb24gdG9TdHJpbmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsK
KyAgICByZXR1cm4gQFN0cmluZyhvYmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0
aW9uKG9iaikKQEAgLTk0LDYgKzkwLDEwIEBAIGZ1bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFs
dWUpCiAgICAgfQogfQogCitmdW5jdGlvbiBtYXgoYSwgYikgeworICAgIHJldHVybiBhID4gYiA/
IGEgOiBiOworfQorCiAvLyAtLS0tLS0tCiAKIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2xhc3RCb3VuZE9iamVjdElkID0gMTsKLSAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmpl
Y3QgPSB7fTsKLSAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IHt9OwotICAgICAg
ICB0aGlzLl9vYmplY3RHcm91cHMgPSB7fTsKLSAgICAgICAgdGhpcy5fbW9kdWxlcyA9IHt9Owor
ICAgICAgICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsK
KyAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IEBPYmplY3QuQGNyZWF0ZShudWxs
KTsKKyAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0gQE9iamVjdC5AY3JlYXRlKG51bGwpOwor
ICAgICAgICB0aGlzLl9tb2R1bGVzID0gQE9iamVjdC5AY3JlYXRlKG51bGwpOwogICAgICAgICB0
aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0
cyA9IFtdOworICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBuZXcgQEFycmF5OwogICAgIH0K
IAogICAgIC8vIEluamVjdGVkU2NyaXB0IEMrKyBBUEkKQEAgLTExNSw3ICsxMTUsNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2Vu
ZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBpc0V2
YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRl
T24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3Rl
ZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxG
cmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7CiAg
ICAgICAgIH0pOwogICAgIH0KIApAQCAtMTM2LDE2ICsxMzYsMTUgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlKSkgewor
ICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgQFByb21pc2UpKSB7CiAgICAg
ICAgICAgICBjYWxsYmFjaygiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgaXMgbm90IGEgUHJvbWlzZSIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IHJlc29sdmUg
PSAodmFsdWUpID0+IHsKLSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAg
ICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90
ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFs
dWUsIGdlbmVyYXRlUHJldmlldyksCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IHJl
dHVybk9iamVjdCA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICAgICAgICAgIHJldHVybk9i
amVjdC53YXNUaHJvd24gPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybk9iamVjdC5yZXN1bHQg
PSBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1
cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpOwogCiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3Vs
dCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5
LDcgKzE1OCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0
aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsK
ICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7
CisgICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAK
ICAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCwxNCArMTc5LDE0IEBAIGxldCBJ
bmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZp
bmVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3
aXRoIGdpdmVuIGlkIjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107CisgICAgICAg
IGxldCByZXNvbHZlZEFyZ3MgPSBuZXcgQEFycmF5OwogICAgICAgICBpZiAoYXJncykgewogICAg
ICAgICAgICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3Mp
OwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJn
c1tpXSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTksNyArMTk4LDcgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICAgICAgcmV0dXJu
IHsKICAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJl
c3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdz
KSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCisgICAg
ICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVj
dCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcpCiAgICAgICAgICAgICB9OwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1lKTsK
QEAgLTI4MCwxMiArMjc5LDEyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0IGVudHJpZXMgPSB0aGlz
Ll9lbnRyaWVzKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSwgZmV0
Y2hTdGFydCwgZmV0Y2hDb3VudCk7Ci0gICAgICAgIHJldHVybiBlbnRyaWVzLm1hcChmdW5jdGlv
bihlbnRyeSkgeworICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBAYnVpbHRpbkl0ZXJhYmxlKGVu
dHJpZXMpKSB7CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUo
ZW50cnkudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAg
aWYgKCJrZXkiIGluIGVudHJ5KQogICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9i
amVjdC5jcmVhdGUoZW50cnkua2V5LCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGVudHJpZXM7CiAgICAgfQogCiAgICAgc2F2ZVJlc3VsdChjYWxsQXJndW1lbnRKU09O
KQpAQCAtMzA2LDEwICszMDUsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3
IEBBcnJheTsKICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyss
IGNhbGxGcmFtZSkpOworICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsIG5ldyBJbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKICAgICAgICAgICAg
IGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAgICAgIH0gd2hpbGUgKGNhbGxGcmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjYsNyArMzI1LDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB3cmFwSlNPTlN0cmluZyhqc29u
U3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNvblN0cmlu
ZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLndyYXBPYmplY3QoQGpzb25QYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVl
LCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICB9CkBAIC0zNDYsOSArMzQ1LDkgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGNvbHVtbnMgPSBbY29sdW1uc107
CiAKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAi
YXJyYXkiKSB7Ci0gICAgICAgICAgICBjb2x1bW5OYW1lcyA9IFtdOworICAgICAgICAgICAgY29s
dW1uTmFtZXMgPSBuZXcgQEFycmF5OwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBj
b2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2godG9T
dHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2goY29sdW1uTmFt
ZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBS
ZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1bW5O
YW1lcyk7CkBAIC0zOTYsNyArMzk1LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUiKSB7
CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsKICAgICAgICAgICAgIHRoaXMu
X25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0
cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gbmV3IEBBcnJheTsKICAg
ICAgICAgfQogCiAgICAgICAgIGxldCBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RH
cm91cE5hbWVdOwpAQCAtNDI5LDExICs0MjgsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgcmV0dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CiAg
ICAgfQogCi0gICAgaW5qZWN0TW9kdWxlKG5hbWUsIHNvdXJjZSwgaG9zdCkKKyAgICBpbmplY3RN
b2R1bGUobmFtZSwgbW9kdWxlRnVuY3Rpb24sIGhvc3QpCiAgICAgewogICAgICAgICB0aGlzLl9t
b2R1bGVzW25hbWVdID0gZmFsc2U7CiAKLSAgICAgICAgbGV0IG1vZHVsZUZ1bmN0aW9uID0gSW5q
ZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIHNvdXJjZSArICIpIik7CiAgICAgICAgIGlm
ICh0eXBlb2YgbW9kdWxlRnVuY3Rpb24gIT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aHJv
dyAiRXJyb3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVuY3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmpl
Y3RNb2R1bGUiOwogICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGlu
c3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVj
dCwgQ29tbWFuZExpbmVBUEl9LCBob3N0KTsKQEAgLTQ3MCwxMCArNDY4LDEwIEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91
cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmpl
Y3RHcm91cE5hbWVdOwogICAgICAgICAgICAgaWYgKCFncm91cCkgewotICAgICAgICAgICAgICAg
IGdyb3VwID0gW107CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBuZXcgQEFycmF5OwogICAgICAg
ICAgICAgICAgIHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0gZ3JvdXA7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBncm91cC5wdXNoKGlkKTsKKyAgICAgICAgICAgIEBh
cnJheVB1c2goZ3JvdXAsIGlkKTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5h
bWVbaWRdID0gb2JqZWN0R3JvdXBOYW1lOwogICAgICAgICB9CiAKQEAgLTQ4OCw3ICs0ODYsNyBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgX2ZhbGxi
YWNrV3JhcHBlcihvYmplY3QpCiAgICAgewotICAgICAgICBsZXQgcmVzdWx0ID0ge307CisgICAg
ICAgIGxldCByZXN1bHQgPSBAT2JqZWN0LkBjcmVhdGUobnVsbCk7CiAgICAgICAgIHJlc3VsdC50
eXBlID0gdHlwZW9mIG9iamVjdDsKICAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0
KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9iamVjdDsKQEAgLTUxNSw3ICs1MTMsNyBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAg
cmV0dXJuIHJlc29sdmVkQXJnOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKKyAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93
blZhbHVlKHZhbHVlLCBvYmplY3RHcm91cCkKQEAgLTU3MSw3ICs1NjksNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgY29tbWFuZExpbmVB
UEkgPSBudWxsOwogICAgICAgICBpZiAoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKQogICAgICAgICAg
ICAgY29tbWFuZExpbmVBUEkgPSB0aGlzLmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KGlzRXZh
bE9uQ2FsbEZyYW1lID8gb2JqZWN0IDogbnVsbCk7Ci0gICAgICAgIHJldHVybiBldmFsRnVuY3Rp
b24uY2FsbChvYmplY3QsIGV4cHJlc3Npb24sIGNvbW1hbmRMaW5lQVBJKTsKKyAgICAgICAgcmV0
dXJuIGV2YWxGdW5jdGlvbi5AY2FsbChvYmplY3QsIGV4cHJlc3Npb24sIGNvbW1hbmRMaW5lQVBJ
KTsKICAgICB9CiAKICAgICBfY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJ
ZCkKQEAgLTYwNyw3ICs2MDUsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICAvLyBBbHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwg
YnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRjaC4KICAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9
ICFzdGFydDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRl
c2NyaXB0b3JzID0gbmV3IEBBcnJheTsKICAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVz
Y3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAg
ICAgICAgaWYgKHN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIC0tc3RhcnQ7CkBAIC02MjIs
NyArNjIwLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNj
cmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwog
ICAgICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3Iuc3ltYm9s
LCBvYmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlw
dG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwog
CiAgICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRlc2NyaXB0b3JzLmxl
bmd0aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3RvX18iKQogICAgICAg
ICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7
CkBAIC02MzgsMTMgKzYzNiwxMyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICBpZiAoIWludGVybmFsUHJvcGVydGllcykKICAgICAgICAgICAgIHJl
dHVybiBudWxsOwogCi0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQg
ZGVzY3JpcHRvcnMgPSBuZXcgQEFycmF5OwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlu
dGVybmFsUHJvcGVydGllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgbGV0IHByb3BlcnR5
ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ldOwogICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSB7
bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZhbHVlfTsKICAgICAgICAgICAg
IGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5pc093
biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOworICAg
ICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KQEAgLTY1NCwxMCArNjUyLDEwIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChJ
bmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09PSAicHJveHkiKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IFNldDsKKyAgICAg
ICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAogICAgICAgICAvLyBIYW5kbGVkIGJl
bG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKCJfX3By
b3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsKIAogICAg
ICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVz
Y3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVyKQogICAg
ICAgICB7CkBAIC02NzgsOCArNjc2LDggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAgICAgICAgICAg
ICAgICBmYWtlRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAgICAgICAgLy8g
U2lsZW5jZSBhbnkgcG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlvbnMgY3JlYXRl
ZCBmcm9tIGFjY2Vzc2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3JvbmcgdGhpcyBvYmpl
Y3QuCi0gICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2Yg
UHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZl
R2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKLSAgICAgICAgICAgICAgICAg
ICAgZmFrZURlc2NyaXB0b3IudmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKKyAgICAgICAgICAg
ICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlzZSAmJiBJbmpl
Y3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9y
KGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0
b3IudmFsdWUuQGNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
a2VEZXNjcmlwdG9yOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAg
IGxldCBlcnJvckRlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IGUsIHdhc1Rocm93bjogdHJ1ZX07
CkBAIC03MTAsMTUgKzcwOCwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogCiAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5h
bWUsIGlzT3duUHJvcGVydHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vz
c2VkLmhhcyhwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhh
cyhwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2Vk
LmFkZChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3Bl
cnR5TmFtZSk7CiAKICAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1l
KTsKICAgICAgICAgICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJv
cGVydHlOYW1lIDogbnVsbDsKIAotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBs
ZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAg
ICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03Mjcs
NyArNzI1LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewot
ICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0
aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blBy
b3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9w
ZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAgICAgICAgaWYgKEBTdHJpbmcoZGVzY3JpcHRvci5n
ZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYg
ZGVzY3JpcHRvci5AaGFzT3duUHJvcGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBk
ZXNjcmlwdG9yLkBoYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIERldmVsb3BlcnMgbWF5IGNyZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ugc2hvdWxk
IGJlIHJlc2lsaWVudDoKICAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsgT2JqZWN0
LmRlZmluZVByb3BlcnR5KHgsICJwIiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih4LCAicCIpCiAgICAgICAgICAgICAgICAgICAgIGxldCBmYWtlRGVz
Y3JpcHRvciA9IGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlw
dG9yLCBpc093blByb3BlcnR5LCB0cnVlKTsKQEAgLTc0NSwxMCArNzQzLDEwIEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGlzQXJyYXlM
aWtlID0gZmFsc2U7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpc0FycmF5TGlrZSA9IFJl
bW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJhcnJheSIgJiYgaXNGaW5pdGUob2JqZWN0
Lmxlbmd0aCkgJiYgb2JqZWN0Lmxlbmd0aCA+IDA7CisgICAgICAgICAgICBpc0FycmF5TGlrZSA9
IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJhcnJheSIgJiYgQGlzRmluaXRlKG9i
amVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5ndGggPiAwOwogICAgICAgICB9IGNhdGNoIHsgfQog
Ci0gICAgICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IE9iamVjdC5n
ZXRQcm90b3R5cGVPZihvKSkgeworICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmlu
ZWQobyk7IG8gPSBAT2JqZWN0LkBnZXRQcm90b3R5cGVPZihvKSkgewogICAgICAgICAgICAgbGV0
IGlzT3duUHJvcGVydHkgPSBvID09PSBvYmplY3Q7CiAgICAgICAgICAgICBsZXQgc2hvdWxkQnJl
YWsgPSBmYWxzZTsKIApAQCAtNzY0LDcgKzc2Miw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBw
cm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobyk7CisgICAgICAgICAg
ICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG8p
OwogICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3Bl
cnR5KG8sIHByb3BlcnR5TmFtZXNbaV0sIGlzT3duUHJvcGVydHkpOwogICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRj
aEFjdGlvbi5TdG9wOwpAQCAtNzc2LDggKzc3NCw4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7CisgICAgICAgICAgICBpZiAoQE9iamVjdC5AZ2V0T3du
UHJvcGVydHlTeW1ib2xzKSB7CisgICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9
IEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9scyhvKTsKICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9scy5sZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9s
c1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0g
cmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC04
MDMsMTYgKzgwMSwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogCiAgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQog
ICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBu
ZXcgQEFycmF5OwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhl
IHBhZ2Ugb3ZlcnJpZGVzIFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAg
Zm9yIChsZXQgdmFsdWUgb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBi
dWlsdGluSXRlcmFibGUob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAw
KSB7CiAgICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7
CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIHt2YWx1ZX0pOwogCiAgICAgICAgICAg
ICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0Y2hDb3VudCkKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTgyMywxNiArODIwLDE1IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZ2V0TWFwRW50cmllcyhvYmplY3QsIGZl
dGNoU3RhcnQsIGZldGNoQ291bnQpCiAgICAgewotICAgICAgICBsZXQgZW50cmllcyA9IFtdOwor
ICAgICAgICBsZXQgZW50cmllcyA9IG5ldyBAQXJyYXk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1i
b2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7
CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRpbkl0ZXJhYmxlKG9iamVj
dCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAg
IGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBA
YXJyYXlQdXNoKGVudHJpZXMsIHtrZXksIHZhbHVlfSk7CiAKICAgICAgICAgICAgIGlmIChmZXRj
aENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtODc2LDEwICs4NzIsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7
CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkK
KyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9z
YXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9
IHRoaXMuX3NhdmVkUmVzdWx0cy5AaW5kZXhPZihyZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3Rp
bmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBl
eGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTAxLDggKzg5Nyw4IEBAIElu
amVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewogfTsKIAogSW5qZWN0ZWRTY3JpcHQuUHJv
cGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAot
ICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAorICAgIENvbnRpbnVlOiBAY3JlYXRlUHJpdmF0ZVN5
bWJvbCgiY29udGludWUiKSwKKyAgICBTdG9wOiBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgic3RvcCIp
LAogfQogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CkBAIC05NjIs
NyArOTU4LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAg
ICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNj
cmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAgICAgICAgICAgICAgICB0aGlz
LnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVm
aW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMu
X2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtOTc3LDcgKzk3Myw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChl
eCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAg
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8g
c3RyaW5nPiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9i
amVjdChkZXNjcmlwdGlvbik7CkBAIC05ODYsNyArOTgyLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGljIGNyZWF0ZU9iamVjdFByZXZpZXdGb3JW
YWx1ZSh2YWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcykKICAgICB7Ci0gICAgICAg
IGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCB1bmRlZmluZWQsIGZh
bHNlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKTsKKyAgICAgICAgbGV0IHJlbW90ZU9i
amVjdCA9IG5ldyBSZW1vdGVPYmplY3QodmFsdWUsIEB1bmRlZmluZWQsIGZhbHNlLCBnZW5lcmF0
ZVByZXZpZXcsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5vYmplY3RJ
ZCkKICAgICAgICAgICAgIGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3QocmVtb3RlT2JqZWN0
Lm9iamVjdElkKTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZSAmJiBy
ZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5cGUub2JqZWN0SWQpCkBAIC0xMDExLDcgKzEwMDcsNyBA
QCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgLy8gRmly
ZUJ1ZydzIGFycmF5IGRldGVjdGlvbi4KICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICh0
eXBlb2YgdmFsdWUuc3BsaWNlID09PSAiZnVuY3Rpb24iICYmIGlzRmluaXRlKHZhbHVlLmxlbmd0
aCkpCisgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAm
JiBAaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gImFycmF5
IjsKICAgICAgICAgfSBjYXRjaCB7IH0KIApAQCAtMTA1MCw4ICsxMDQ2LDggQEAgbGV0IFJlbW90
ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBpZiAoc3VidHlwZSA9PT0gImFy
cmF5IikKICAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWU7CiAKLSAgICAgICAgaWYgKHN1YnR5
cGUgPT09ICJpdGVyYXRvciIgJiYgU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ107CisgICAgICAgIGlmIChzdWJ0
eXBlID09PSAiaXRlcmF0b3IiICYmIEBAdG9TdHJpbmdUYWcgaW4gdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gdmFsdWUuQEB0b1N0cmluZ1RhZzsKIAogICAgICAgICAvLyBOb2RlTGlzdCBpbiBK
U0MgaXMgYSBmdW5jdGlvbiwgY2hlY2sgZm9yIGFycmF5IHByaW9yIHRvIHRoaXMuCiAgICAgICAg
IGlmICh0eXBlb2YgdmFsdWUgPT09ICJmdW5jdGlvbiIpCkBAIC0xMDY5LDYgKzEwNjUsNyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBzdGF0aWMgbm9kZVBy
ZXZpZXcobm9kZSkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3
ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAgICAgICAg
IGxldCBpc1hNTERvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50ICYmICEhbm9kZS5vd25lckRv
Y3VtZW50LnhtbFZlcnNpb247CiAgICAgICAgIGxldCBub2RlTmFtZSA9IGlzWE1MRG9jdW1lbnQg
PyBub2RlLm5vZGVOYW1lIDogbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogCkBAIC0xMTQx
LDE3ICsxMTM4LDE2IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8
fCBzZWNvbmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmly
c3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCi0gICAgICAgIGxldCBw
cm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJv
d3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAg
ICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEw
LCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9OworICAgICAgICBsZXQgcHJvcGVydGll
c1RocmVzaG9sZCA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICAgICAgcHJvcGVydGllc1Ro
cmVzaG9sZC5wcm9wZXJ0aWVzID0gaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBm
aXJzdExldmVsS2V5c0NvdW50KTsKKyAgICAgICAgcHJvcGVydGllc1RocmVzaG9sZC5pbmRleGVz
ID0gaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3Vu
dCk7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVy
YXRvcnMgaGF2ZSBlbnRyaWVzLgogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1h
cCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFw
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVy
YXRvciIpCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3Qs
IHByZXZpZXcpOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAg
ICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IG5ldyBAQXJyYXk7CiAKICAgICAgICAgICAgIC8v
IEludGVybmFsIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURl
c2NyaXB0b3JzID0gaW5qZWN0ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhv
YmplY3QsIHRydWUpOwpAQCAtMTE3Nyw3ICsxMTczLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICB9CiAKLSAgICBf
YXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVy
dGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFs
fSA9IHt9KQorICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNj
cmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxL
ZXlzLCB7aW50ZXJuYWx9ID0gQE9iamVjdC5AY3JlYXRlKG51bGwpKQogICAgIHsKICAgICAgICAg
Ly8gRXJyb3IgaW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3du
KSB7CkBAIC0xMTkwLDkgKzExODYsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAgICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAgICAgICAg
Ly8gTm9uIGJhc2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5nLCBub24t
ZW51bWVyYWJsZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
dmFsdWUgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICYm
IGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAgICAgICAg
ICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAgICAgICAg
ICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAgICAgICAg
ICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QKKyAgICAg
ICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJyYXkKKyAg
ICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAUmVnRXhw
KQogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogICAg
ICAgICB9CkBAIC0xMjA5LDcgKzEyMDUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBzaG93IHBy
b3BlcnRpZXMgaW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGVz
ZSBmaWx0ZXJzIGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChmaXJzdExl
dmVsS2V5cyAmJiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAgIGlmIChm
aXJzdExldmVsS2V5cyAmJiAhZmlyc3RMZXZlbEtleXMuQGluY2x1ZGVzKG5hbWUpKQogICAgICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7
CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kUHJldmlldyhwcm9wZXJ0eSkgewpAQCAtMTIyNyw3
ICsxMjIzLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAg
ICAgICAgaWYgKGludGVybmFsKQogICAgICAgICAgICAgICAgIHByb3BlcnR5LmludGVybmFsID0g
dHJ1ZTsKIAotICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpOwor
ICAgICAgICAgICAgQGFycmF5UHVzaChwcmV2aWV3LnByb3BlcnRpZXMsIHByb3BlcnR5KTsKICAg
ICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRp
bnVlOwogICAgICAgICB9CiAKQEAgLTEyNzIsNyArMTI2OCw5IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9iamVjdC4KLSAg
ICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OworICAgICAgICBsZXQgcHJvcGVydHkg
PSBAT2JqZWN0LkBjcmVhdGUobnVsbCk7CisgICAgICAgIHByb3BlcnR5Lm5hbWUgPSBuYW1lOwor
ICAgICAgICBwcm9wZXJ0eS50eXBlID0gdHlwZTsKICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1v
dGVPYmplY3Quc3VidHlwZSh2YWx1ZSk7CiAgICAgICAgIGlmIChzdWJ0eXBlKQogICAgICAgICAg
ICAgcHJvcGVydHkuc3VidHlwZSA9IHN1YnR5cGU7CkBAIC0xMzEzLDcgKzEzMTEsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAgICAgICAgICAgZW50cmllcy5w
b3AoKTsKKyAgICAgICAgICAgIGVudHJpZXMuQHBvcCgpOwogICAgICAgICAgICAgcHJldmlldy5v
dmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTEzMjMsNyArMTMyMSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAg
ICAgICAgIH0KIAotICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlv
bihlbnRyeSkgeworICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLkBtYXAoZnVuY3Rp
b24oZW50cnkpIHsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0
ZU9iamVjdFByZXZpZXdGb3JWYWx1ZShlbnRyeS52YWx1ZSwgZW50cnkudmFsdWUgIT09IG9iamVj
dCk7CiAgICAgICAgICAgICB1cGRhdGVNYWluUHJldmlldyhlbnRyeS52YWx1ZSk7CiAgICAgICAg
ICAgICBpZiAoImtleSIgaW4gZW50cnkpIHsKQEAgLTEzMzYsOCArMTMzNCw4IEBAIGxldCBSZW1v
dGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIF9pc1ByZXZpZXdhYmxlT2JqZWN0
KHZhbHVlLCBvYmplY3QpCiAgICAgewotICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKLSAgICAg
ICAgc2V0LmFkZChvYmplY3QpOworICAgICAgICBsZXQgc2V0ID0gbmV3IEBTZXQ7CisgICAgICAg
IHNldC5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJldmlld2FibGVP
YmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0LCAxKTsKICAgICB9CkBAIC0xMzU3LDExICsxMzU1LDEx
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgICAgIC8vIEN5Y2xpYyBvYmplY3RzLgotICAgICAgICBpZiAoa25v
d25PYmplY3RzLmhhcyhvYmplY3QpKQorICAgICAgICBpZiAoa25vd25PYmplY3RzLkBoYXMob2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICArK2RlcHRoOwotICAg
ICAgICBrbm93bk9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgICAgIGtub3duT2JqZWN0cy5AYWRk
KG9iamVjdCk7CiAKICAgICAgICAgLy8gQXJyYXlzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDUg
b3IgbGVzcyBzaW1wbGUgb2JqZWN0cy4KICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmpl
Y3Quc3VidHlwZShvYmplY3QpOwpAQCAtMTM4MSwxMiArMTM3OSwxMiBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAgICAgLy8gT2JqZWN0cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSAzIG9yIGxlc3Mgc2ltcGxl
IHZhbHVlIHByb3BlcnRpZXMuCi0gICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKKyAgICAgICAgbGV0IG93blByb3BlcnR5TmFt
ZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7CiAgICAgICAgIGlmIChv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aCA+IDMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3duUHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZSA9IG93blByb3BlcnR5TmFtZXNbaV07Ci0g
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBA
T2JqZWN0LkBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IgJiYgISgidmFsdWUiIGluIGRlc2NyaXB0b3IpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghdGhpcy5faXNQ
cmV2aWV3YWJsZU9iamVjdEludGVybmFsKG9iamVjdFtwcm9wZXJ0eU5hbWVdLCBrbm93bk9iamVj
dHMsIGRlcHRoKSkKQEAgLTE0MDQsNjYgKzE0MDIsNjkgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICBpZiAobWlkZGxlKSB7CiAgICAgICAgICAgICBsZXQg
bGVmdEhhbGYgPSBtYXhMZW5ndGggPj4gMTsKICAgICAgICAgICAgIGxldCByaWdodEhhbGYgPSBt
YXhMZW5ndGggLSBsZWZ0SGFsZiAtIDE7Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0
cigwLCBsZWZ0SGFsZikgKyAiXHUyMDI2IiArIHN0cmluZy5zdWJzdHIoc3RyaW5nLmxlbmd0aCAt
IHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcuQHN1YnN0
cigwLCBsZWZ0SGFsZikgKyAiXHUyMDI2IiArIHN0cmluZy5Ac3Vic3RyKHN0cmluZy5sZW5ndGgg
LSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gc3Ry
aW5nLnN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1MjAyNiI7CisgICAgICAgIHJldHVybiBzdHJp
bmcuQHN1YnN0cigwLCBtYXhMZW5ndGgpICsgIlx1MjAyNiI7CiAgICAgfQogfTsKIAogLy8gLS0t
LS0tLQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGZ1bmN0aW9uKG9yZGluYWws
IGNhbGxGcmFtZSkKLXsKLSAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRp
bmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOwotICAgIHRoaXMu
ZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKLSAgICB0aGlzLmxvY2F0aW9u
ID0ge3NjcmlwdElkOiBTdHJpbmcoY2FsbEZyYW1lLnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2Fs
bEZyYW1lLmxpbmUsIGNvbHVtbk51bWJlcjogY2FsbEZyYW1lLmNvbHVtbn07Ci0gICAgdGhpcy5z
Y29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKLSAgICB0aGlzLnRo
aXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNl
Iik7Ci0gICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7Ci19
OworSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBjbGFzcyBDYWxsRnJhbWVQcm94eSB7
CisgICAgY29uc3RydWN0b3Iob3JkaW5hbCwgY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgdGhp
cy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQi
OiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKKyAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBjYWxs
RnJhbWUuZnVuY3Rpb25OYW1lOworCisgICAgICAgIHRoaXMubG9jYXRpb24gPSBAT2JqZWN0LkBj
cmVhdGUobnVsbCk7CisgICAgICAgIHRoaXMubG9jYXRpb24uc2NyaXB0SWQgPSBAU3RyaW5nKGNh
bGxGcmFtZS5zb3VyY2VJRCk7CisgICAgICAgIHRoaXMubG9jYXRpb24ubGluZU51bWJlciA9IGNh
bGxGcmFtZS5saW5lOworICAgICAgICB0aGlzLmxvY2F0aW9uLmNvbHVtbk51bWJlciA9IGNhbGxG
cmFtZS5jb2x1bW47CisKKyAgICAgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3Bl
Q2hhaW4oY2FsbEZyYW1lKTsKKyAgICAgICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0
ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOworICAgICAgICB0aGlzLmlzVGFp
bERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKKyAgICB9CiAKLUluamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICBfd3JhcFNjb3BlQ2hhaW4oY2Fs
bEZyYW1lKQogICAgIHsKICAgICAgICAgbGV0IHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVD
aGFpbjsKICAgICAgICAgbGV0IHNjb3BlRGVzY3JpcHRpb25zID0gY2FsbEZyYW1lLnNjb3BlRGVz
Y3JpcHRpb25zKCk7CiAKLSAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IFtdOworICAgICAg
ICBsZXQgc2NvcGVDaGFpblByb3h5ID0gbmV3IEBBcnJheTsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2NvcGVDaGFpblBy
b3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihz
Y29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwogICAgICAg
ICByZXR1cm4gc2NvcGVDaGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xP
QkFMX1NDT1BFCi0gICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUi
LCAvLyBDTE9TVVJFX1NDT1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0
OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQot
ICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07CisgICAg
c3RhdGljIF9jcmVhdGVTY29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9jYXRpb259LCBn
cm91cElkKQorICAgIHsKKyAgICAgICAgbGV0IHNjb3BlID0gQE9iamVjdC5AY3JlYXRlKG51bGwp
OworICAgICAgICBzY29wZS5vYmplY3QgPSBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3Jv
dXBJZCk7CisgICAgICAgIHNjb3BlLnR5cGUgPSBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94
eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV07CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5
Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlv
bn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAgICAgICBvYmplY3Q6IFJlbW90
ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAgICAgdHlwZTogSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAotICAgIH07CisgICAg
ICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CiAKLSAgICBpZiAo
bmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisgICAgICAgIGlmIChsb2NhdGlvbikK
KyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CiAKLSAgICBpZiAobG9jYXRp
b24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIGlmIChpc0Vt
cHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7CiAKLSAg
ICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7
CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9OwogCi0gICAgcmV0dXJuIHNjb3BlOwot
fQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gQE9iamVj
dC5AY3JlYXRlKG51bGwpOworSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlw
ZU5hbWVzWzBdID0gImdsb2JhbCI7IC8vIEdMT0JBTF9TQ09QRQorSW5qZWN0ZWRTY3JpcHQuQ2Fs
bEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzWzFdID0gIndpdGgiOyAvLyBXSVRIX1NDT1BFCitJ
bmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbMl0gPSAiY2xvc3Vy
ZSI7IC8vIENMT1NVUkVfU0NPUEUKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29w
ZVR5cGVOYW1lc1szXSA9ICJjYXRjaCI7IC8vIENBVENIX1NDT1BFCitJbmplY3RlZFNjcmlwdC5D
YWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbNF0gPSAiZnVuY3Rpb25OYW1lIjsgLy8gRlVO
Q1RJT05fTkFNRV9TQ09QRQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlw
ZU5hbWVzWzVdID0gImdsb2JhbExleGljYWxFbnZpcm9ubWVudCI7IC8vIEdMT0JBTF9MRVhJQ0FM
X0VOVklST05NRU5UX1NDT1BFCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVU
eXBlTmFtZXNbNl0gPSAibmVzdGVkTGV4aWNhbCI7IC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCiAK
IC8vIC0tLS0tLS0KIApAQCAtMTQ3Nyw5ICsxNDc4LDkgQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVB
UEkoY2FsbEZyYW1lKQogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG9y
aWdpbmFsVmFsdWU7IH07CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVy
X18oIiQiICsga2V5LCB2YWx1ZSk7CisgICAgICAgIHRoaXMuQF9fZGVmaW5lR2V0dGVyX18oIiQi
ICsga2V5LCB2YWx1ZSk7CiAgICAgICAgIGlmIChzYXZlZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVz
dWx0QWxpYXMgIT09ICIkIikKLSAgICAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZl
ZFJlc3VsdEFsaWFzICsga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICB0aGlzLkBfX2RlZmluZUdl
dHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZhbHVlKTsKICAgICB9OwogCiAgICAgaWYg
KCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCkBAIC0xNTAyLDQ4ICsxNTAzLDQ4IEBA
IGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkKICAgICAgICAgdGhpc1tuYW1lXSA9
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV07CiB9CiAKLUNvbW1hbmRMaW5lQVBJLmdldHRl
cnMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSBAT2JqZWN0LkBjcmVhdGUobnVsbCk7
CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHMg
PSBAT2JqZWN0LkBjcmVhdGUobnVsbCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMi
XSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVy
biBPYmplY3QudmFsdWVzKG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlz
Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJl
dHVybiBAT2JqZWN0LkB2YWx1ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sicXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0LnF1ZXJ5SG9sZGVycyguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sicXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLkBidWlsdGluSXRlcmFibGUo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5A
YnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OwogCiBDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIGluamVjdGVkU2NyaXB0Lmlu
c3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siYXNzZXJ0
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmFz
c2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY2xlYXIiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY2xlYXIo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50Il0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50KC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudFJlc2V0Il0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50UmVzZXQo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRlYnVnIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRlYnVnKC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXIiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyeG1sKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvciguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29sbGFwc2VkKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVuZCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cEVuZCguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZvKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90KC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtlSGVhcFNuYXBzaG90KC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWUoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUVuZCguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lTG9nKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZVN0YW1wKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFjZSguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5AYnVpbHRpbkl0ZXJh
YmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQoLi4u
QGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuY291bnRSZXNldCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uQGJ1aWx0aW5JdGVy
YWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwo
Li4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLmVycm9yKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQo
Li4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmdyb3VwRW5kKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVu
dHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uQGJ1aWx0aW5JdGVyYWJs
ZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSgu
Li5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5wcm9maWxlRW5kKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLkBidWlsdGluSXRlcmFibGUo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5k
KC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLkBidWlsdGluSXRlcmFibGUo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRh
a2VIZWFwU25hcHNob3QoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLkBidWlsdGluSXRl
cmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVM
b2coLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLkBidWlsdGluSXRlcmFibGUo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uQGJ1aWx0
aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKIAogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcg
PSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5k
IExpbmUgQVBJXSB9IjsgfTsKIAogcmV0dXJuIGluamVjdGVkU2NyaXB0OwotfSkKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNm
ZjZmOTc2YzdlMzlkOTk5NTguLmJjMjM3YTFmNGY0MGI2NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZh
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIyMSw3ICsyMjIx
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgpICE9IFBhcnNlckVycm9yOjpTdGFja092ZXJm
bG93KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29t
cGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3Iu
bWVzc2FnZSgpLCAiIG9uIGxpbmUgIiwgZXJyb3IubGluZSgpLCAiLiIpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5
NWM0NTRkOTllZTE5ZjEzZTc5Yy4uZmZjOWM5YzIzMzFkYWUzZDZhNjViZGVmYWM1MGJiMWEwM2Yz
NjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9y
LmgiCiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1l
cy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgog
CkBAIC01Nyw2ICs1OCw4IEBAIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQ
cm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJl
Y3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
ciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZUdlbmVyYXRv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZyb21Qcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9y
RnJvbUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA1YTNhYWE5MWU2MjcyOGMy
Y2E5ZmFlZjU2MWQyZmFiZWRlNzA1OTVlLi41MTVjODVmZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdm
OGY2YWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDExIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZv
ckVhY2hQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmZvckVhY2hQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5h
bWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNs
dWRlc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhPZlByaXZhdGVOYW1lKCksIGdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhPZlB1YmxpY05hbWUo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0
ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5t
YXBQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHVibGljTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS52YWx1ZXNQcml2YXRlTmFtZSgpLCBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5j
dGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSk7CiAKICAgICBKU09iamVjdCogdW5zY29wYWJsZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2
bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGQx
NDQxMjQ4ZjZlMmYyNmZlYzgzYzk1ZmM2NzE2YmMwZDIxNDM0MTkuLjk5ZjRmNzk0MTFiY2FjYjM5
ZWE0MDFkOTI4Yjc3OWVjMTAwMTQ5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9M
QVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oanNvblBhcnNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzb25TdHJpbmdpZnkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5h
YmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2Fi
bGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1
ZUpvYik7CkBAIC0zNjEsNiArMzYzLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjcmVh
dGVQcml2YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbElt
cGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNvblBhcnNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBqc29uID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb24pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzb25TdHJpbmdpZnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhc3NlcnRDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTA3NCw5ICsxMDkzLDEx
IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3Ig
PSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAg
ICBtX3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOwog
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvcik7Ci0gICAgCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6U3RyaW5nKV0uc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1
Y3Rvcik7CisKICAgICBtX2V2YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBp
bml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJy
b3I+KGluaXQpOwpAQCAtMTU1Myw2ICsxNTc0LDE0IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRl
U3ltYm9sKSk7CiAgICAgICAgIH0pOwogCisgICAgLy8gSlNPTiBoZWxwZXJzCisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNv
blBhcnNlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBqc29uUGFyc2UpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6anNvblN0cmluZ2lmeSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lmeSkpOworICAgICAgICB9KTsKKwogICAgIC8vIFNo
YWRvd1JlYWxtcwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVJlbW90ZUZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDAsIFN0cmluZygpLCBjcmVhdGVSZW1vdGVGdW5jdGlvbikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3ODdh
ZjY2YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uZTk0ODYwM2UyY2VjYTI5NTVhMmVkMjcxNTRi
YjNiMDE0OTcxYWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90b3R5
cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNl
T3JpZ2luOworY2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFjdGl2
YXRpb25TdGFja05vZGU7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHVibGljOgogICAgIFdyaXRlQmFy
cmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1f
c3RyaW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIElu
dGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5
ZTE3OGZiMWM3NzczOGFhNjQ2NTY2MTRlYWFiZDhhZDE0Ny4uMzY1YTI3MGVmMzNmY2NlMzRlOGEy
MWM2ZTk4YjkzMzU0ZGE4NDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtOTksNyArOTksMTQgQEAgdm9pZCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBPYmoKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOwogCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQ
cml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRP
d25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0
ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JDcmVh
dGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAy
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvclZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworCiAgICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQogICAgICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNP
d24sIG9iamVjdENvbnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBlMjEzNGEwZmU0ODk2YjIwMTA0
N2EzYjQyN2I3MTg0YzEzYTg4ZTVkLi42MjM3NzE1MzkxMzhmODkyMWQyYjVmZWVkMTExOTFlNGU5
YmY1MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDkgQEAgdm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2Rl
ZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cEdl
dHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5fX2xvb2t1cFNldHRlcl9f
LCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093
blByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5fX2RlZmluZUdldHRlcl9fUHJpdmF0ZU5hbWUoKSwgb2JqZWN0UHJv
dG9GdW5jRGVmaW5lR2V0dGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMik7CiB9CiAKIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBl
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCmluZGV4IDUwNjcyMzJjZDY2Zjk5MTNiOTUzMmYwOWY2ODAzMWJlZWQwNGNm
OTMuLjMxYThmOWU3ZDdiYmQzMjY1MGMwY2IyOTgyNjlhOTM1ZWQwY2NjZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTY0
LDYgKzE2NCw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJv
bC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJzdHJQcml2
YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbmRz
V2l0aFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAvLyBUaGUg
Y29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3RydWN0b3Ig
aGFzIGJlZW4gYnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0YjdlY2ViYmU4
M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi43OTJhNjcwMTYyN2MxZWEzYzg5YmRlYTVjOGNm
M2IyMmNmY2RkZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEyOSw2IEBA
IFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09SS19ERUNM
QVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9F
WElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLWFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5D
WSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBFTkRTICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQ
RVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAtMjM1Miw2
ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9E
SVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0
RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uZjU2NzdlMmU0NTI1
MzU2MmJkMmYwYzkwMmQ1NjI3NmU2MGY3MzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCw4IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24rUHJv
cGVydHlOYW1lcy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01DbGllbnRJc29TdWJzcGFjZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYxZmM2ZmE0
MjE2ZTQ2Yy4uYjEyM2FiZjkzZTI3NThkMjExNDhjMTAxYzlkMTczNGQwNDk2ZjlhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAgaWZuZXEgKCQo
Tk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1ZGUgJChKU19ET01fSEVBREVSUzouaD0u
ZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggOiAkKFdl
YkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotCWVjaG8gIi8v
IyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cyIgPiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKFdlYkNvcmUpL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5t
aW4uanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCSQoREVMRVRFKSBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIFdlYkNv
cmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKQEAgLTIyNTIsNiArMjI0Miw3IEBAIFdlYkNvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RGVjb2RlclN0cmVhbS5q
cyBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMgXAogICAgICQoV2Vi
Q29yZSkvYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAgICAkKFdlYkNv
cmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBcCiAjCiAKIEJVSUxU
SU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMWFjYWRlMDA5
YjBiN2E5MjgwODM4MGNhNTIyYmMzNTI5N2MzOWY0Ni4uYzkwODA0MjFjODM4ZmNjM2U0MmVhOGVm
YTBjYzc1NDIyZGRkZjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMDU3LDYgKzIwNTcsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5oCiAgICAgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0NTU1ZhbHVlS2V5d29yZHMuaAorICAgICR7V2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICAg
ICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRJbnRlcmZhY2VzLmgKICAgICAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgKICAg
ICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSFRNTEVsZW1lbnRUeXBlSGVscGVycy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjNlZGJiMTQ3ZTc0ZTM2YTk5NTRmZjdjMjY5Nzg1MWZlODMwMDZiYS4uNzQ5MTVjNmJj
ZGIwY2QxMzA4MDU3Zjc5OTgxMmM3NjE0MTgyYWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk5LDYgKzg5OSw3IEBACiAJ
CTJFMzAxQkU4Mjc0NTk0NzIwMEMwNTY0RiAvKiBDb21waWxlZFNlbGVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ1MTA3NzIwMkM3RTAxMDA2
NTdEMzMgLyogQ29tcGlsZWRTZWxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdERkQ4
MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCAqLzsgfTsKIAkJMkUzN0UwMDYxMkRCQzVBNDAw
QTZCMjMzIC8qIEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLzsgfTsK
KwkJMkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1
aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xv
YmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNDM0NjM3MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjRCMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwpAQCAtMzUxNyw3ICszNTE4LDYgQEAKIAkJ
QTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDNFMURFMEI2
MkIwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4MUVEMTMxRkIyODhDRjAwQ0VENEVD
IC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU4MUVEMTAxRkIyODhDODAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJB
Z2VudC5oICovOyB9OwogCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87
IH07Ci0JCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4
NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi87
IH07CiAJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkEx
ODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi87IH07CiAJCUE1ODRG
RTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2NENCODQw
MDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKIAkJQTU4NEZFMzUx
ODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMzIxODY0RDVBRjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwpAQCAtODIwNCw2ICs4MjA0LDggQEAKIAkJMkUz
N0RGRDkxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRE9NVVJMLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDMxMkRC
QzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUz
N0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
M0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0
aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzOTQwLDcgKzEzOTQyLDYgQEAKIAkJQTU4MUVEMTIxRkIyODhDOTAw
Q0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTg0MEUyMjE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluamVjdGVk
U2NyaXB0SG9zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIzMTg3
QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0
RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMjkxODYzODcw
RjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5l
QVBJTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQyOCw3ICsyMDQy
OSw2IEBACiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1ODRGRTI1MTg2MzdEQUIw
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUE1ODRGRTM5
MTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCiAJCQkJQTU4
NEZFM0ExODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmggKi8sCiAJCQkJ
OTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCAqLywKQEAgLTIzNTg1LDYgKzIzNTg1LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FD
RkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywK
IAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0
YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEy
NSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIw
RjYxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICov
LAogCQkJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zLmggKi8sCiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5
TmFtZXMuY3BwICovLApAQCAtMzQwODMsNyArMzQwODUsNyBAQAogCQkJCTI2RTk0NEQ5MUFDNEIy
REQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZGQjI4MDlG
MTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzOUM2OUQwMjgxMEQxMUQwMEU2OUJBRCAvKiBDb21tb25BdG9tU3Ry
aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAwNzY1NTM2IC8qIENv
bW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAppbmRleCBkNzdjNzNkOGFl
NDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5kNDFmY2QzNWNhOWUzZjUwM2NkNDczODk0
NWI0OWI3OWZkZWEzMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogCi0jaW5jbHVkZSAiQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0NywxNCBAQCBDb21tYW5kTGluZUFQSU1v
ZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQogewogfQogCi1TdHJpbmcgQ29tbWFuZExpbmVB
UElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVs
ZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENv
cHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMsIHNpemVvZihDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9n
QWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENv
bW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
SlNWYWx1ZSBDb21tYW5kTGluZUFQSU1vZHVsZTo6aG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oCmluZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGViZGVkYWNmN2ZjNmI0MmQyZGY3NGIuLjBh
NTBkNGE1ZjMzM2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCkBAIC0zMyw3ICszMyw3IEBA
IGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAgIENvbW1hbmRMaW5lQVBJTW9kdWxlKCk7
CiAKLSAgICBTdHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpKU0Z1bmN0
aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0
aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcios
IGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwppbmRleCBmNTFl
MzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi5jMWU3ZjRlZDczM2YxZWRlYzg0
ZDEwNWRlNTllMWFmNjc0OTNiZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEyIEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcworLy8gQGludGVybmFsCiAKLShmdW5jdGlvbiAoSW5qZWN0
ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGlu
amVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5l
QVBJSG9zdCkgeworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9zdCwgaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1Jl
bW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7CiAKLS8v
IEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJz
ZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5v
bi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCisvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3
NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogCiBpbmpl
Y3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNzAsMTIgKzcxLDEyIEBAIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGVsc2UgaWYgKGluamVj
dGVkU2NyaXB0LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgc3RyaW5nID0gIiIg
KyBvYmplY3Q7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN5bWJvbCIpCi0gICAg
ICAgIHN0cmluZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcob2JqZWN0KTsKKyAgICAg
ICAgc3RyaW5nID0gQFN0cmluZyhvYmplY3QpOwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3Qg
PT09ICJmdW5jdGlvbiIpCiAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2Ug
ewogICAgICAgICB0cnkgewotICAgICAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LkpTT04uc3RyaW5naWZ5KG9iamVjdCwgbnVsbCwgIiAgIik7CisgICAgICAgICAgICBzdHJp
bmcgPSBAanNvblN0cmluZ2lmeShvYmplY3QsICIgICIpOwogICAgICAgICB9IGNhdGNoIHsKICAg
ICAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgICAgICB9CkBAIC04OSwyMyArOTAs
MjggQEAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0
aW9uKHRhcmdldCkgewogfTsKIAogZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykg
ewotICAgIGlmICh0eXBlcyA9PT0gdW5kZWZpbmVkKQorICAgIGlmICh0eXBlcyA9PT0gQHVuZGVm
aW5lZCkKICAgICAgICAgdHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9s
IiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2Vvcmll
bnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJz
Y3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07CiAgICAgZWxz
ZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKICAgICAgICAgdHlwZXMgPSBbdHlwZXNd
OwogCi0gICAgbGV0IHJlc3VsdCA9IFtdOworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAg
ICBmdW5jdGlvbiBhZGRUeXBlc1RvUmVzdWx0KHR5cGVzKSB7CisgICAgICAgIGZvciAobGV0IHR5
cGUgb2YgQGJ1aWx0aW5JdGVyYWJsZSh0eXBlcykpCisgICAgICAgICAgICByZXN1bHQuQGFkZCh0
eXBlKTsKKyAgICB9CisKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsr
KSB7CiAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKCJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1v
dXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAg
ICAgIGFkZFR5cGVzVG9SZXN1bHQoWyJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAi
bW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hl
ZWwiXSk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikKLSAgICAgICAgICAg
IHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIp
OworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdChbImtleWRvd24iLCAia2V5cHJlc3MiLCAi
a2V5dXAiLCAidGV4dElucHV0Il0pOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRv
dWNoIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIs
ICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3Vs
dChbInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Il0p
OwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAg
cmVzdWx0LnB1c2goImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIs
ICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRU
eXBlc1RvUmVzdWx0KFsiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXpl
IiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iXSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAgIHJlc3VsdC5A
YWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExOCwxOSAr
MTI0LDE3IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAgIGlmICgh
b2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50
TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlw
ZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBm
YWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVu
dCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5JdGVyYWJsZShub3JtYWxp
emVFdmVudFR5cGVzKHR5cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAg
ICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1v
dmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVF
dmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsg
KytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZl
bnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmFibGUobm9ybWFs
aXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5l
cih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3BlY3RlZEdsb2JhbE9iamVj
dC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewpAQCAtMTU5LDggKzE2
Myw4IEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0Lk5vZGUpIHsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBm
dW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKICAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JP
bk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5B
cnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKLSAgICAgICAgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEdsb2JhbE9iamVj
dC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgICAgICByZXR1
cm4gQEFycmF5LkBmcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAg
ICAgcmV0dXJuIEBBcnJheS5AZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwogICAgIH07CiAKICAgICBDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKQEAgLTE3OCw3ICsxODIs
NyBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5Ob2RlKSB7CiAgICAgICAgIGxldCBub2RlcyA9IFtdOwogICAgICAgICBsZXQgbm9k
ZSA9IG51bGw7CiAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0g
ICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rl
cywgbm9kZSk7CiAgICAgICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5
MCw0IEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0Lk5vZGUpIHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9k
cykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24o
KSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0g
fSI7IH07CiAKLX0pCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzcyNjczZWRiMThlMTU0N2JhMzM1MDQ2MDAzMzExN2Zh
MDY1MTkxZi4uZDEwMjNiN2VjYWMzNWQ1M2Y1ZWM4NGEyNTYzMTVjNzg4NGQzODViMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTI3ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJj
ZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0Mg
YnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWw6CisgICAg
ICAgIC0gQWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVycmlkaW5nIGZ1bmN0aW9u
cyBhbmQgZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOgorICAgICAgICAtIENo
YW5nZWQgdG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25pcHBldCBzaW5jZSB0aGUg
aW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGluLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAtIFRoZSBpbnNw
ZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBubyBsb25nZXIgYXBwZWFy
IGFzIHNjcmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2Rl
bC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAtIEluc3BlY3RvciBp
bmplY3RlZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiByZWxlYXNl
IGFuZCBkZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDQtMjMgIEFu
ZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEFYIElUTTog
VGFibGUgcm93IG9iamVjdHMgc2hvdWxkIHJldHVybiBhIG5vbi1udWxsIHVuaWdub3JlZCBwYXJl
bnQgZXZlbiB3aGVuIGEgdGFibGUgb2JqZWN0IGlzIG5vdCBmb3VuZCBpbiBpdHMgYW5jZXN0cnku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAppbmRleCAxZWIxNTM5
ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi41OTM3ZmFlOTdmODk1ODg0N2Y4OGZm
NDY3ZWJlMTViODFlMjg3ZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBl
Y3RlZC50eHQKQEAgLTEsNjYgKzEsNjAgQEAKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5k
b3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTog
c3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ2hlY2tpbmcgd2hl
dGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy4KK0NoZWNr
aW5nIHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBzdGVwcGVkIGlu
dG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0
UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KIC0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxl
ZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBz
ZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwg
cmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29s
ZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9j
YXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5j
dGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAg
ICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5s
b2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQQVVT
RSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAgICAyMworICAg
ICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAg
fGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAg
MjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25z
b2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRy
eUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAg
IHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29s
ZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0K
K1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAgICAyNCAgICBm
dW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7
CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjEwOjUKLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewot
ICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotIC0+ICAgOSAgICAgICAgfGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAg
ICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCitQQVVTRSBB
VCBlbnRyeUludGVybmFsT2JqZWN0OjI4OjUKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRl
cm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAtPiAgMjcgICAgICAgIHxpbnRlcm5hbE9iamVjdC50
ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkg
ICAgfQorICAgICAzMAogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
ZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUu
bG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAg
MTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIK
LSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI5
OjUKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgLT4g
IDI4ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQorICAgICAz
MAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6MTI6MgotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsK
LSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29u
c29sZS5sb2coInN0cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAgICAxMgotICAgICAxMyAgICAv
LyAtLS0tLS0tLS0KLSAgICAgMTQKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MzA6Mgor
ICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDMpOworIC0+ICAyOSAgICB9fAorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KKyAg
ICAgMzIKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTY4LDU3ICs2Miw1NyBAQCBQQVNT
OiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0IHNldHVwLgog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQUkVT
U0lPTjogc2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGluLCBp
biwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRy
eUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBh
dXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2Vy
OwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAgICAg
MjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAgMjUg
ICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7
CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rp
b24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4
ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9n
KGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAx
MSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAgICAg
MjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRl
YnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1
bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xl
LmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAg
ICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMwor
ICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAg
ICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAg
ICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1
ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQK
KyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAg
ICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHJl
c3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAppbmRleCBkMTY4YTcyNTRj
ZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi5lNWIwZDljOGI3MThlMWIyNTZlYWVmNjc4
MjI2YjYyNzBlNzFiMzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbApAQCAtNCwxMSAr
NCwyOSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xv
Zy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZnVuY3Rpb24gZW50cnlD
b25zb2xlTG9nKCkgeworCitsZXQgaW50ZXJuYWxPYmplY3QgPSB7IHRlc3Q6IGZ1bmN0aW9uKCkg
e30gfTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbE9iamVjdCA9IHdp
bmRvdy5pbnRlcm5hbHMuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oInRlc3RQYXVz
ZUZvckludGVybmFsU2NyaXB0cyIsIGAKKyAgICAgICAgLy8jIHNvdXJjZVVSTD1fX0luamVjdGVk
U2NyaXB0X1Rlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cy5qcworICAgICAgICBsZXQgSW50ZXJu
YWxPYmplY3QgPSBjbGFzcyBJbnRlcm5hbE9iamVjdCB7CisgICAgICAgICAgICB0ZXN0KGludm9j
YXRpb25OdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9IDY7CisgICAgICAgICAgICAg
ICAgbGV0IGIgPSA3OworICAgICAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBhICogYjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBuZXcgSW50ZXJuYWxPYmplY3Q7CisgICAg
YCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CiAgICAgZGVidWdnZXI7
Ci0gICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiB9
CiAKIC8vIC0tLS0tLS0tLQpAQCAtMjEsMzEgKzM5LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAg
ICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBjb25zb2xlLmxvZyBzdGF0ZW1lbnRzIHdoaWNo
IHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhwcmVzc2lvbjog
InNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5h
bCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVu
dHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhl
IGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1h
bmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFz
eW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92ZXIiLAotICAg
ICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIsIC8v
IGNvbnNvbGUubG9nKCJzdHJpbmciKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFs
T2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgzKQog
ICAgICAgICAgICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9KTsKIAogICAgIGFkZFN0ZXBw
aW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUg
dG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5h
bCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRy
eUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBz
dGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0ZWQgc2NyaXB0cy4i
LAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KSIs
CiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5kIHNpbmNlIHRoZXJl
IGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3VsdCBpZiBjaGFuZ2lu
ZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB7IHJldHVybiBE
ZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKHRydWUpOyB9LAogICAgICAg
ICB0ZWFyZG93bjogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZv
ckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAg
ICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQot
ICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9nKHdp
bmRvdyldCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29s
ZS5sb2cod2luZG93KV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgaW50ZXJu
YWxPYmplY3QudGVzdCgxKV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGlu
c2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQogICAgICAgICAgICAgInJlc3VtZSIsCiAgICAg
ICAgIF0KICAgICB9KTsKQEAgLTU3LDYgKzc1LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRo
ZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0
aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgorPHA+
Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBw
ZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4
dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTVi
NzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAt
OSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hv
dWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5s
aW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBF
dmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNv
dXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElT
b3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNj
cmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJz
ZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5k
Njc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTks
MTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykg
c3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBs
aXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBz
b3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3Jp
cHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
CiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElu
bGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0g
ZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsK
LSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxl
dCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJu
YWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0
KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJh
bXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAg
ICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5
OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNF
dmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0g
ImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VT
Y3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dp
dGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpz
Iik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChw
YXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVz
dENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRp
YWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2
OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxp
bmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlz
Q29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0lu
amVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJV
TkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05
Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5s
aW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3Vs
ZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3Vs
ZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBl
Y3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNw
ZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJT
aG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAg
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3Jp
cHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CmluZGV4IDg4
MzNhOGZkMmE2NWNjMmM4NDUyY2MzMDYwYmU2ODY0MmNiMDNhYjcuLjQ2YTUzZjFlYzljZTI5OWVl
ZDVjMDc5NzRmZmMzMTUzNDU0YmRjZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDggQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0K
K0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgT2JqZWN0XQogVGVzdCB0aGF0IGNlcnRhaW4gSW5qZWN0ZWRTY3JpcHRTb3VyY2Ugb3BlcmF0
aW9ucyBhcmUgbm90IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgogCiAKQEAgLTgsMyArMTIsMjMg
QEAgUEFTUzogUGF1c2VkLgogUEFTUzogUmVzdW1lZC4KIFBBU1M6IEFycmF5LnByb3RvdHlwZVtT
eW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCiAKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0
ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IFNldC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVz
aAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsi
cHVzaCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQu
CitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBz
aG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2Vy
dmFibGU6U3RyaW5nCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5n
IGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3
MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4uYTM0NDAzMDQyMzIwZjRhY2Y2MzIzODUwNDk5NmZk
ZGJhOTJiOGFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNj
cmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVk
LXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAgLTMsMzEgKzMsNDggQEAKIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotLy8gTk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUg
dGVzdGVkIGFuZCBhZGRyZXNzZWQgYnk6Ci0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0
PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWlu
IHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rp
b24gdHJpZ2dlckl0ZXJhdGlvbigpIHsKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBl
UHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVu
Y3Rpb24pIHsKICAgICBsZXQgY2FsbENvdW50ID0gMDsKLQotICAgIGNvbnN0IG9yaWdpbmFsSXRl
cmF0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFycmF5LnByb3RvdHlwZSwg
U3ltYm9sLml0ZXJhdG9yKTsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90
eXBlLCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICAKKyAgICBsZXQgb3JpZ2luYWxQcm9wZXJ0eURl
c2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvdHlwZSwgcHJv
cGVydHkpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCB7
CiAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICsrY2FsbENvdW50OwotICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsSXRlcmF0b3IudmFsdWU7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2lu
YWxQcm9wZXJ0eURlc2NyaXB0b3IudmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxl
dCBhcnJheSA9IFtdOworICAgIGRlYnVnZ2VyOworCisgICAgLy8gUHJldmlldyBhbiBvYmplY3Qu
CisgICAgY29uc29sZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7CisKKyAgICBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbigpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3Rv
dHlwZSwgcHJvcGVydHksIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yKTsKKworICAgIHJldHVy
biBjYWxsQ291bnQ7Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0T2JqZWN0KG9iamVjdFN0
cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uKSB7CisgICAgbGV0IGNhbGxDb3Vu
dCA9IDA7CisgICAgCisgICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0gZXZhbChvYmplY3RTdHJpbmcp
OworICAgIGV2YWwoYAorICAgICAgICAke29iamVjdFN0cmluZ30gPSAoKSA9PiB7CisgICAgICAg
ICAgICArK2NhbGxDb3VudDsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9iamVjdCguLi5h
cmd1bWVudHMpOworICAgICAgICB9OworICAgIGApOwogCiAgICAgZGVidWdnZXI7CiAKICAgICAv
LyBQcmV2aWV3IGFuIG9iamVjdC4KICAgICBjb25zb2xlLmxvZyh7YToxLCBiOjIsIGM6e319KTsK
IAotICAgIC8vIFVzZSBBcnJheSBJdGVyYXRvciBhdCBsZWFzdCBvbmNlLgotICAgIGZvciAobGV0
IHggb2YgYXJyYXkpIHsgfQorICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbigpOwog
Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJh
dG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAgICBldmFsKGAke29iamVjdFN0cmluZ30gPSBvcmln
aW5hbE9iamVjdDtgKTsKIAogICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CkBAIC0zNiwyMyArNTMs
OTkgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcsIGlu
dm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkoJHtw
cm90b3R5cGVTdHJpbmd9LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVuUHJv
cGVydHlGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke3By
b3RvdHlwZVN0cmluZ31bJHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJlIDEu
YCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5n
bGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1l
ZC4iKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlv
biwgb2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7CisgICAg
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RPYmpl
Y3QoIiR7b2JqZWN0U3RyaW5nfSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uLnRv
U3RyaW5nKCl9KTtgLCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBjYWxs
IGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1
c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCku
Y2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2Vy
LkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RD
YXNlKHsKICAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJv
dG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5IGl0
ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwKLSAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9PiB7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsICJB
cnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLiIp
OwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
KyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0
IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJB
cnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRv
ciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7Cisg
ICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2YgYXJy
YXkpIHsgfQorICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5w
cm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0IGl0
ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisg
ICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0
eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9w
ZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKKyAg
ICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0KKyAgICAgICAgfSwKKyAgICB9KTsKKwor
ICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNl
cnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIkFycmF5LnByb3RvdHlwZSIsCisg
ICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAorICAgICAgICBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107
CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAg
IGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRT
Y3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIs
CisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9w
ZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7CisgICAgICAg
ICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZE9iamVjdFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5n
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmplY3RTdHJpbmc6ICJTdHJpbmciLAor
ICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb246ICgpID0+IHsKKyAgICAgICAg
ICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAgICB9LAogICAgIH0pOwogCiAgICAg
c3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKaW5k
ZXggZDQ0MjE3ZDM2MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUyMzgxNi4uYWZiZDMyZDUwMzdl
NTJhZTkwYzIzM2YyMmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dApA
QCAtMzEsNyArMzEsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IFtdLngueDsg
fSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFt
ZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVl
IjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2Rl
XVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3Jh
cENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51
bGwKQEAgLTcwLDcgKzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBldmFs
KCJpZigpIik7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAg
ICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAg
ICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAg
Il92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRo
U2NvcGVF4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNv
ZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtMTA0LDcgKzEw
NCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIiIpLnNwbGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6
ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjog
InNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUi
OiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU+KA
pnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAg
ICAgIH0sCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2RlIiwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0Cmlu
ZGV4IGJmY2FjOTg5ZWFjMGZiZDgwZTg1YWNjNjNjNGU3YzI4NmI4N2EzODUuLjEyMzNlYjM5NDgx
NzNiNDA3NmQzMzA5YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjQsOCAr
NjQsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAgICAgImZ1bmN0aW9u
TmFtZSI6ICIiLAogICAgICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgICAgICJzY3Jp
cHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0g
ICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICAgICAibGluZU51bWJl
ciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVy
ZWQ+IgogICAgICAgICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAgICAgImZyYW1lSWQiOiAi
PGZpbHRlcmVkPiIsCkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQu
CiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIi
OiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1i
ZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+
IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBA
IC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1
bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0
SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAg
ICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVk
PiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAg
ICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmluZGV4IDY3MmIzNTMzODAwY2Jl
MjU5ZWU4ODg3YWJlMTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0ZTQ1NWQ4NjkzYzhkYWJlNDI5
NTY0MzFkOTUxMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9s
aW5lLWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5l
LWNvbHVtbi5odG1sCkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAv
LyBUbyBhdm9pZCBmbGFraW5lc3MgcHJpbnQgb25seSBldmVudHMgdGhhdCB3ZSBhbHdheXMgZXhw
ZWN0LgogICAgIGNvbnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNldChbIlJlbmRlcmluZ0ZyYW1l
IiwgIkNvbnNvbGVQcm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAiRnVuY3Rpb25DYWxsIl0pOwor
CisgICAgLy8gVGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgY2FsbCBmcmFtZShzKSBoYXZl
IGRpZmZlcmVudCBsaW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMu
IFdlIG9ubHkKKyAgICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2YWx1ZXMgZm9yIHRob3NlIHNw
ZWNpZmljIGNhbGwgZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBvdGhlciBsaW5lL2NvbHVtbiBu
dW1iZXJzIHJlbWFpbiBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9uTmFtZUxlbmd0aCA9IDA7Cisg
ICAgbGV0IHVybExlbmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVl
KSB7CisgICAgICAgIGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUiKSB7CisgICAgICAgICAgICBm
dW5jdGlvbk5hbWVMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChrZXkgPT09ICJjaGlsZHJlbiIg
JiYgdGhpcy5zdGFydFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGUgPT4g
ZXZlbnRBbGxvd2xpc3QuaGFzKGUudHlwZSkpOwogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRU
aW1lIiB8fCBrZXkgPT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09
PSAiZnJhbWVJZCIpCiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworICAgICAgICBp
ZiAoKGtleSA9PT0gImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNvbHVtbk51bWJlciIpICYmICFm
dW5jdGlvbk5hbWVMZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAiPGZp
bHRlcmVkPiI7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInVybCIpCisgICAgICAgICAgICB1cmxM
ZW5ndGggPSB2YWx1ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiIHx8IGtleSA9
PT0gInNjcmlwdE5hbWUiKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL14uK0xh
eW91dFRlc3RzXC9pbnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458489</attachid>
            <date>2022-04-27 21:18:56 -0700</date>
            <delta_ts>2022-04-27 21:19:58 -0700</delta_ts>
            <desc>Patch v1.2</desc>
            <filename>bug-152294-20220427211855.patch</filename>
            <type>text/plain</type>
            <size>146548</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDY3MjU1MTQ2ZmU1NjlmZjNjNjQ1MGIwNzI1MGU1ZmRjOWI2ZTcyLi42YWI0NDNkOTc3NzdjZmNk
YmJiZWI4MzY4NTRlNTM2MTliNTQ0OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNC0yNyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIG5ldyB0ZXN0IGNhc2VzIGluIGBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbGAKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBCdWlsZCBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBhIHBsYWluIGhlYWRlciBmaWxl
IGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93a2J1aWx0
aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJp
bmcpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAg
ICAgICAtIEluc3BlY3RvckluamVjdGVkU2NyaXB0IGNvbnRhaW5zIHVuYmFsYW5jZWQgY3VybHkg
YnJhY2tldHMgaW5zaWRlIHF1b3Rlcy4gVGhlIGdlbmVyYXRpb24gb2YgYnVpbHRpbnMgaXMgbm93
CisgICAgICAgIGhhcmRlbmVkIGFnYWluc3QgdGhpcy4gUHJldmlvdXNseSBhbGwgY3VybHkgYnJh
Y2tldHMgd2VyZSBjb3VudGVkLCB3aGljaCBtZWFudCB0aGF0IHRoZSBzb3VyY2UgY29kZSB3b3Vs
ZCBiZSBjdXQKKyAgICAgICAgb2ZmIGVhcmxpZXIgdGhhbiB0aGUgYWN0dWFsIGVuZCBvZiB0aGUg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgor
ICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAg
ICAgICAtIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIHVzZXMgZGVzdHJ1Y3R1cmluZyB0
byBnZXQgdGhlIGBSZW1vdGVPYmplY3RgIGFuZCBgQ29tbWFuZExpbmVBUElgIGNsYXNzZXMgYXQK
KyAgICAgICAgaW5zdGFudGlhdGlvbi4gV2UgbmVlZCB0byB0cmVhdCB0aGlzIGRlc3RydWN0dXJl
IGFzIGEgc2luZ2xlIHBhcmFtZXRlciwgb3RoZXJ3aXNlIGRlYnVnIGFzc2VydGlvbnMgd2lsbCBj
YXRjaAorICAgICAgICB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBwYXJhbWV0ZXIgY291bnRzLgor
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAtIEFkZCBzeW1ib2xzIHRoYXQgd2UgbmVlZCB0
byBoYXZlIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mLCBhbmQgZm9yIHNvbWUgb2YgdGhvc2Ugc3ltYm9s
cyBtYWtlIHRoZW0gbGluay10aW1lIGNvbnN0YW50cy4KKworICAgICAgICAqIGJ1aWx0aW5zL0l0
ZXJhdG9ySGVscGVycy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYnVpbHRpbkl0ZXJhYmxl
LndyYXBwZXIuaXRlcmF0b3IpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5idWlsdGluSXRlcmFi
bGUpOgorICAgICAgICAtIEFkZCBhIHJldXNhYmxlIGhlbHBlciB0aGF0IHRha2VzIHRoZSByZWFs
IGl0ZXJhdG9yIGZvciBhbiBpdGVyYWJsZSwgYW5kIHByb3ZpZGVzIGEgd3JhcHBlciB0aGF0IHVz
ZXMgdGhlIHJlYWwKKyAgICAgICAgaXRlcmF0b3IuIFdoZW4gdXNlZCB3aXRoIGEgZm9yLW9mIGxv
b3AsIHRoaXMgcHJldmVudHMgdGhlIGl0ZXJhdGlvbiBmcm9tIGJlaW5nIG9ic2VydmFibGUvb3Zl
cnJpZGRlbiBieSBzY3JpcHQKKyAgICAgICAgYXV0aG9ycy4KKyAgICAgICAgCisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNv
dXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oOgorICAgICAgICAtIFVzZSB0aGUgbmV3IGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIElu
amVjdGVkIFNjcmlwdCBjcmVhdGlvbiBmdW5jdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmg6CisgICAgICAgIC0gSW5qZWN0ZWQgbW9kdWxlcyBhcmUgbm93IHByb3Zp
ZGVkIGFzIGEgSlNGdW5jdGlvbiwgbm90IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgLSBVc2UgcHJpdmF0ZSBz
eW1ib2xzIHRocm91Z2hvdXQgdG8gZW5zdXJlIHdlIGdldCBub24tb2JzZXJ2YWJsZSwgbm9uLW92
ZXJyaWRkZW4gdmVyc2lvbnMgb2YgZnVuY3Rpb25zIGFuZCB2YWx1ZXMuCisgICAgICAgIC0gSW4g
bWFueSBjYXNlcywgdGhpcyBpcyBhIDE6MSBtYXBwaW5nIHdoZXJlIHRoZSBuZXcgc3ltYm9sIGlz
IGp1c3QgcHJlZml4ZWQgd2l0aCBhbiBgQGAuCisgICAgICAgIC0gRm9yIHB1c2hpbmcgdmFsdWVz
IHRvIGFycmF5cywgdXNlIGBAYXJyYXlQdXNoYCwgdGhlIGJ1aWx0aW4gd2F5IG9mIHB1c2hpbmcg
YSB2YWx1ZSBpbnRvIGFuIGFycmF5LgorICAgICAgICAtIEZvciB0aGUgYFN5bWJvbGAgY29uc3Ry
dWN0b3IsIGp1c3QgdXNlIHRoZSBleGlzdGluZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGluc3Rl
YWQgb2YgZXhwb3NpbmcgYSBwcml2YXRlCisgICAgICAgIHZlcnNpb24gb2YgdGhlIGBTeW1ib2xg
IGNvbnN0cnVjdG9yLgorICAgICAgICAtIEZvciBmb3Itb2YgbG9vcHMsIHdyYXAgdGhlIGl0ZXJh
YmxlIHdpdGggYEBidWlsdGluSXRlcmFibGVgLgorICAgICAgICAtIGBTeW1ib2wudG9TdHJpbmdU
YWdgIGlzIGNvbnZlcnRlZCB0byBgQEB0b1N0cmluZ1RhZ2AsIHRoZSBwcml2YXRlIHZlcnNpb24g
b2YgdGhhdCBzeW1ib2wuCisgICAgICAgIC0gYE1hdGgubWF4YCBpbiBgUmVtb3RlT2JqZWN0LnBy
b3RvdHlwZS5fZ2VuZXJhdGVQcmV2aWV3YCBub3cgdXNlcyBhIGhlbHBlciBmdW5jdGlvbiB0aGF0
IHBlcmZvcm1zIGEgY29tcGFyaXNvbgorICAgICAgICBpbnN0ZWFkIG9mIGV4cG9zaW5nIGJvdGgg
TWF0aCBhbmQgTWF0aC5tYXggYXMgcHJpdmF0ZSBidWlsdGlucy4KKyAgICAgICAgLSBPYmplY3Rz
IGFyZSBub3cgY3JlYXRlZCB1c2luZyBAT2JqZWN0LkBjcmVhdGUgaW5zdGVhZCBvZiB7fSBzeW50
YXguCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgLSBBZGQgdGhlIGxpbmUgbnVtYmVyIHRvIGJ1aWx0aW4gY29tcGlsYXRpb24gbG9n
Z2luZyB0byBoZWxwIGlkZW50aWZ5IHdoZXJlIHNvbWV0aW1lcyBhbWJpZ3VvdXMgZXJyb3JzIG9j
Y3VycmVkLgorCisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgLSBFeHBvc2UgbmVjZXNzYXJ5IGZ1bmN0aW9ucy9jb25zdHJ1Y3RvcnMgdmlh
IHRoZWlyIHByaXZhdGUgbmFtZSBmb3IgdXNlIGluIEluamVjdGVkU2NyaXB0U291cmNlLmpzIGFu
ZAorICAgICAgICBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworCisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIC0gQWRkIGEgbGluay10aW1lIGNv
bnN0YW50IGZvciB0aGUgU3RyaW5nIGNvbnN0cnVjdG9yLgorICAgICAgICAtIEFkZCBoZWxwZXJz
IGZvciBKU09OIHBhcnNpbmcvc2VyaWFsaXphdGlvbi4KKwogMjAyMi0wNC0yNyAgRG1pdHJ5IEJl
emhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLUdDXSBJ
bnRyb2R1Y2UgcnR0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4YzVlOTkwN2M3Y2RlYjdjMTUzZDNj
OGY4MzUzNGZmNTQ5ZmE3ZS4uMmYxNjljN2JjYWE0MGI4MDgyZGE1NWNiYWQ1ZTQ0ZTU1ODVlM2Y5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTA0LTI3ICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBjb250YWluaW5nIGl0
cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9k
dWxlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1
bGU6OnNvdXJjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmg6CisgICAgICAgIC0gUHJvdmlkZSBhIEpTRnVuY3Rpb24gZm9yIG1vZHVs
ZSBpbmplY3Rpb24gaW5zdGVhZCBvZiByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM6CisgICAgICAgIC0gU2ltaWxhciB0
byBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMsIHVzZSBw
cml2YXRlIG5hbWVzIGZvciBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMKKyAgICAgICAgdGhyb3Vn
aG91dCB0byBnZXQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdGlucy4KKyAgICAgICAgLSBJbiBg
bm9ybWFsaXplRXZlbnRUeXBlc2AgdXNlIGEgU2V0IGluc3RlYWQgb2YgYW4gYXJyYXksIHNpbmNl
IHdlIGFyZSBwcm9jZXNzaW5nIHVzZXItcHJvdmlkZWQgdHlwZXMgdGhhdCBtYXkKKyAgICAgICAg
YmUgcmVwZWF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBhbGwg
dGhlIHR5cGVzIHRvIGluc2VydCB0aGVtIGluIHRoZSBzZXQsIGJ1dCBzaW5jZQorICAgICAgICBg
QGFycmF5UHVzaGAgZG9lc24ndCBzdXBwb3J0IHB1c2hpbmcgbXVsdGlwbGUgdmFsdWVzIGF0IHRo
ZSBzYW1lIHRpbWUgdGhpcyBpcyBubyBtb3JlIHdvcmsgdGhhbiB1c2luZyBhbiBBcnJheS4KKwog
MjAyMi0wNC0yNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gVHJhY2sgaGFuZGxpbmcgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBjMGE5ZTJhN2U4MDJkYjk0ODU3Njc0ZjI5Yjg3OTc2ZDljNTZlMjBk
Li43NmNiMDVlZTQ2ZWRmNTlhYTI4YTBjOTZjNTRiODFiMGY5NzYxMGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
VHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTE0
MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NCdWlsdGlucy5oCiApCiAK
LWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2YVNjcmlwdENvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgTUFJTl9E
RVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5w
bCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5IDwgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+PiAke0ph
dmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAke0phdmFTY3JpcHRDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgKLSAg
ICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgpCi0K
IGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9UIEVOQUJMRV9DX0xPT1Ap
CiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA4ZDU0MGJkNTE5
MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYxZDMwNjA3ZThhNmZiNTE0
M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsyMSw2IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0ZWRXYXNt
T3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNtCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdFdhc20uYXNtCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4YTFiYTEzYzA5NWY3ZTE1
NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0ZjBkNDRlNWIzNWYwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY4LDcgKzY4
LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFTY3JpcHRDb3JlKS9TY3Jp
cHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVkU2NyaXB0U291cmNlLmgg
XAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIFJlZ0V4cEpp
dFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25z
dHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvV2ViQXNzZW1ibHku
anMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNv
bnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywgc28KQEAgLTM2OCwxMiAr
MzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyA6IENvbWJpbmVk
RG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwpICQoSmF2YVNjcmlwdENv
cmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5wbCAtLWlucHV0IGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSAkKEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIvLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gLi9JbmplY3RlZFNjcmlw
dFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
anNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0lu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0JJChERUxF
VEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BDT0RFX0ZJTEVTID0gXAog
ICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNzljOGRjZGIxZWU5NjgzNGE3MDk2YWQ2MzIwOTAyODAxMjAyMDBl
NS4uMmZhOTI3ZTJjMWYwYjU1OWZkNDUwN2QzMmVlMzE1YzM3OTVhODg2YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJCUE1MTNFNUJFMTg1QkZB
Q0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhv
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNF
NUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwogCQlB
NTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJE
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovOyB9
OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM2MTg1
Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovOyB9OwogCQlBNTEzRTVD
QjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDOTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAwRjNDN0NCIC8qIEluamVj
dGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkM5NUZG
MjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0QyMTU5RDQxRTAwRkNEODI2
IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NjQsNiArMzc2Myw3IEBACiAJCTJBRDJFREZBMTk3OTlF
MzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1
IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVE
RjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBlRGVmaW5pdGlvbklubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBDNEYyN0I5NENFNDAwMzA4
MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDcyMCw3ICs0NzIwLDYgQEAKIAkJQTUxM0U1QkMxODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QkQxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291
cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEzRTVDNjE4NUY5NDM2MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDOTE4NUY5NjI0
MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg3LDcgKzcyODYsNiBA
QAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAq
LywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFz
bSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCkBAIC05MzY2LDYgKzkz
NjQsNyBAQAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVEMDA1NDUyNEQgLyogU2V0
SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8q
IFNldFByb3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMwMDAzNzFBMjUgLyogU2hh
ZG93UmVhbG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1RDlCMTAwOURCMUVGIC8q
IFN0cmluZ0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2NUQ5QjEwMDlEQjFFRiAv
KiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUwNDUxQjFDMjVCNEIxMDBC
QjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTUsNyArMTA0NTQsNiBAQAog
CQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3QjdCODYwMDg0M0IxMCAv
KiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUxM0U1QzcxODVG
OTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVl
dHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1QkI2OTFEMTIwNTBFMDAx
OUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDhBN0JGMDFCODI5
NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9k
ZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5z
X21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRmNWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcu
LjM4NzRkZDQyZjI3NjBmMzRlODZkOGRjODE4NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19t
b2RlbC5weQpAQCAtNTIsNiArNTIsNyBAQCBmdW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21w
aWxlKHIiKGFzeW5jKT9ccypmdW5jdGlvbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rp
b25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1V
TFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5j
b21waWxlKHIiLipeQG92ZXJyaWRkZW5OYW1lPShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3lu
Y1xzKyk/ZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcr
KSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJz
U3BsaXR0ZXIgPSByZS5jb21waWxlKHIiLFxzKig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8
IHJlLkRPVEFMTCkKIAogbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wq
Lio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVn
RXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkK
QEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBCdWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25h
a2VkX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25OYWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1
bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQogICAgICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoK
ICAgICAgICAgICAgIGlzX2NvbnN0cnVjdG9yID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0g
W3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0
aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlw
KCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJh
bWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVu
KHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAt
MzAzLDIxICszMDQsNTUgQEAgY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5j
dGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAg
ICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0
YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4
dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0g
ZW5kICsgMQorICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAg
ICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGls
ZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAgICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAg
ICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRl
eHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0g
ICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisg
ICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAg
ICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2Nh
cGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hh
cmFjdGVyCisgICAgICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJy
ZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJl
bnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
aXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgICMgRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFy
IGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5iYWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2Ug
dGhlIG9uZQorICAgICAgICAgICAgICAgICMgZm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2An
cyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNlIHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVp
bmcKKyAgICAgICAgICAgICAgICAjIGluc2lkZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFy
b3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBzdHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNo
IGxpbmUKKyAgICAgICAgICAgICAgICAjICh1bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRl
IHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVubGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250
YWlucworICAgICAgICAgICAgICAgICMgdW5iYWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNs
b3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJlIGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMg
dGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFu
IHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9
PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAg
ICAgICAgICAgZGVwdGggKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3Rl
ciA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAg
ZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkp
CiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZv
ciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDliOWFiNzVj
NmQ3NWFhNzNmN2UxOGQ2OWZlMmE4ODc3YWVkNWFiNDguLmExZDNjOTNiZTI3YTM4ZDBhZWViZDc1
MDc1ZDY1MGMxZjk2N2ZiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFMKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJz
U3RhcnQgKyAxOwogICAgICAgICB1bnNpZ25lZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGlu
c2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsKICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZh
bHNlOwogICAgICAgICBib29sIGhhc1Jlc3RQYXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewpAQCAtMTEzLDcgKzExNCwxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBp
ZiAoY2hhcmFjdGVyc1tpXSA9PSAnfScpCisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFj
a2V0cyA9IGZhbHNlOworICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycg
fHwgaW5zaWRlQ3VybHlCcmFja2V0cykgeworICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJh
Y2tldHMgPSB0cnVlOworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAg
ICAgICAgICAgICAgKytjb21tYXM7CiAgICAgICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+
Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tpXSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFy
YW0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCmluZGV4IDU0ODNlODcxZTc0M2E5YTEyYjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFm
YTJkNWIyZmIxYTE3NTdlMWUxMDVjZWMzMWI5NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oY3JlYXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNy
byhpc1JlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8o
anNvblBhcnNlKSBcCisgICAgbWFjcm8oanNvblN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmlu
ZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAorICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFj
cm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlO
YW1lcykgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhh
c093bikgXAorICAgIG1hY3JvKGluZGV4T2YpIFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1l
c3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0
ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNlNDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3
N2VlMmY0Li4xMDM5ZTIxOWE5MWM1Mjc4MDM0NTBmNWFlNDZmMGU4ZjE1OGI2YWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAg
LTUxLDMgKzUxLDI0IEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAg
ICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0K
IH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5JdGVyYWJsZShpdGVyYWJsZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgCisgICAgLy8gZm9yLW9mIGxvb3BzIGxvb2sgdXAg
dGhlIEBAaXRlcmF0b3IgcHJvcGVydHksIHdoaWNoIGlzIG9ic2VydmFibGUgaWYgdGhlIHVzZXIg
ZGVmaW5lZCBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4KKyAgICAvLyBUbyBhdm9pZCB0aGlzLCBj
cmVhdGUgYSB3cmFwcGVyIG9iamVjdCB3aGVyZSBAQGl0ZXJhdG9yIHJldHVybnMgdGhlIGFjdHVh
bCBpdGVyYXRvci4KKyAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKGl0ZXJhYmxlKSkKKyAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluSXRlcmFibGUgcmVxdWlyZXMgdGhhdCB0aGUgYGl0
ZXJhYmxlYCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7CisKKyAgICBsZXQgaXRlcmF0b3JG
dW5jdGlvbiA9IGl0ZXJhYmxlLkBAaXRlcmF0b3I7CisgICAgaWYgKCFAaXNDYWxsYWJsZShpdGVy
YXRvckZ1bmN0aW9uKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluSXRlcmFibGUg
cmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgYGl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl1gIGJl
IGEgZnVuY3Rpb24uIik7CisKKyAgICBsZXQgaXRlcmF0b3IgPSBpdGVyYXRvckZ1bmN0aW9uLkBj
YWxsKGl0ZXJhYmxlKTsKKyAgICBsZXQgd3JhcHBlciA9IHt9OworICAgIHdyYXBwZXIuQEBpdGVy
YXRvciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKworICAgIHJldHVybiB3cmFw
cGVyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtU
aW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMy4u
Yjg2NTNlODY1Njk5MzFmY2JiNmUyZjRiNDI1NDhjNGIwYzZlMTM3MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMjAsNiAr
MTIwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlv
biwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
YXJyYXlTb3J0LCBudWxscHRyKSBcCisgICAgdihqc29uUGFyc2UsIG51bGxwdHIpIFwKKyAgICB2
KGpzb25TdHJpbmdpZnksIG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAK
ICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5
NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
ICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
Ci0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBA
IC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNl
cHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUo
KTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmpl
Y3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19
Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBO
YWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUg
c291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFs
VGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5k
bGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0g
ICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwg
c291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2
YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFm
dW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERh
dGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50
eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVk
PEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpj
cmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUs
IGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2Nv
cGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBA
IC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlw
dChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNy
ZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAg
IGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0
LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJ
bmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAg
ICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6
ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCku
dXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xu
IiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFs
dWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9i
amVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJj
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4
YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFw
PEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRl
OgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6
SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAg
ICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVh
dGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAogICAgIElu
c3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlw
dEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2
ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdm
ZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQog
ICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9k
dWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9y
LT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4
KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBz
b3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlz
Qm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigp
KSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFu
ZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3Qo
KSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0
TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
CiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBzdGFj
a1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICclcyc6ICVz
ICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0
cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwg
Y29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5
YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0Zjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFu
YWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVi
bGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9k
dWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3Qo
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJm
MWViNzFiOGM0OTI1ZjZjNC4uNTYwODMyODE1NTEwNzMyNzk1OTBlYTVhZjQwNmJlNWRiZjE3OWEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMg
c291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLQotKGZ1
bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0
ZWRTY3JpcHRJZCkgewotCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4g
V2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0
byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwotCi12YXIgT2Jq
ZWN0ID0ge30uY29uc3RydWN0b3I7CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5z
cGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsK
LSAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAgcmV0dXJuIEBTdHJpbmcob2JqKTsKIH0KIAog
ZnVuY3Rpb24gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmopCkBAIC05NCw2ICs5MCwyOCBAQCBmdW5j
dGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQogICAgIH0KIH0KIAorZnVuY3Rpb24gY3JlYXRl
T2JqZWN0KC8qIGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUyLCAuLi4qLykgeworICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiYGNy
ZWF0ZU9iamVjdGAgcmVxdWlyZXMgdGhhdCBlYWNoIGtleSBhcmd1bWVudCBiZSBmb2xsb3dlZCBi
eSBhIHZhbHVlLCByZXN1bHRpbmcgaW4gYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpOwor
CisgICAgbGV0IG9iamVjdCA9IG5ldyBAT2JqZWN0OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
YXJndW1lbnRzLmxlbmd0aDsgaSArPSAyKQorICAgICAgICBvYmplY3RbYXJndW1lbnRzW2ldXSA9
IGFyZ3VtZW50c1tpICsgMV07CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitmdW5jdGlvbiBn
ZXRPd25Qcm9wZXJ0eShvYmplY3QsIGtleSkgeworICAgIGlmICghQE9iamVjdC5AaGFzT3duKQor
ICAgICAgICByZXR1cm4gb2JqZWN0W2tleV07CisKKyAgICByZXR1cm4gQE9iamVjdC5AaGFzT3du
KG9iamVjdCwga2V5KSA/IG9iamVjdFtrZXldIDogQHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24g
bWF4KGEsIGIpIHsKKyAgICByZXR1cm4gYSA+IGIgPyBhIDogYjsKK30KKwogLy8gLS0tLS0tLQog
CiBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdApAQCAtMTAxLDEyICsx
MTksMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICBj
b25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7
Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lk
VG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307
Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKKyAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRP
YmplY3QgPSBjcmVhdGVPYmplY3QoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFt
ZSA9IGNyZWF0ZU9iamVjdCgpOworICAgICAgICB0aGlzLl9vYmplY3RHcm91cHMgPSBjcmVhdGVP
YmplY3QoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IGNyZWF0ZU9iamVjdCgpOwogICAgICAg
ICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0cyA9IFtdOworICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBuZXcgQEFycmF5OwogICAg
IH0KIAogICAgIC8vIEluamVjdGVkU2NyaXB0IEMrKyBBUEkKQEAgLTExNSw3ICsxMzMsNyBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBp
c0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1
YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmpl
Y3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNh
bGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7
CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTM2LDE2ICsxNTQsMTYgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlKSkg
eworICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgQFByb21pc2UpKSB7CiAg
ICAgICAgICAgICBjYWxsYmFjaygiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgaXMgbm90IGEgUHJvbWlz
ZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IHJlc29s
dmUgPSAodmFsdWUpID0+IHsKLSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAg
ICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJl
bW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5
VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IGNyZWF0ZU9iamVjdCgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3du
IiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUo
dmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJl
dmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCkgewog
ICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5LDcgKzE3
Nyw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9j
cmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKICAgICAg
ICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAg
ICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAKICAgICBl
dmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24s
IG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCwxNCArMTk4LDE0IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZpbmVkKG9i
amVjdCkpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdp
dmVuIGlkIjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107CisgICAgICAgIGxldCBy
ZXNvbHZlZEFyZ3MgPSBuZXcgQEFycmF5OwogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAg
ICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwogICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9
IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIxNSwxMSBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVvZiBm
dW5jICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVz
c2lvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAg
IHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRB
cmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0g
ICAgICAgICAgICB9OworICAgICAgICAgICAgLy8gTUFSSzogT2JqZWN0CisgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlT2JqZWN0KAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwK
KyAgICAgICAgICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBs
eShvYmplY3QsIHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91
cE5hbWUpOwogICAgICAgICB9CkBAIC0yMzMsMTMgKzI1MiwxMyBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93
blByb3BlcnRpZXMsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAg
ICB7CiAgICAgICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3Rl
ZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29s
bGVjdGlvbk1vZGUuQWxsUHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3Bl
cnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwg
Z2VuZXJhdGVQcmV2aWV3fSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9i
amVjdElkLCBjb2xsZWN0aW9uTW9kZSwgY3JlYXRlT2JqZWN0KCJmZXRjaFN0YXJ0IiwgZmV0Y2hT
dGFydCwgImZldGNoQ291bnQiLCBmZXRjaENvdW50LCAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJh
dGVQcmV2aWV3KSk7CiAgICAgfQogCiAgICAgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKG9iamVj
dElkLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAg
ICAgICBsZXQgY29sbGVjdGlvbk1vZGUgPSBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5P
d25Qcm9wZXJ0aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuTmF0aXZlR2V0dGVy
UHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQs
IGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3
LCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dl
dFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCBjcmVhdGVPYmplY3QoImZldGNo
U3RhcnQiLCBmZXRjaFN0YXJ0LCAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQsICJnZW5lcmF0ZVBy
ZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlKSk7
CiAgICAgfQogCiAgICAgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKG9iamVjdElkLCBnZW5lcmF0ZVBy
ZXZpZXcpCkBAIC0yNTYsNyArMjc1LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSB0aGlzLl9pbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsKICAgICAgICAgaWYgKCFkZXNjcmlwdG9ycykKLSAg
ICAgICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQEFycmF5OwogCiAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnNbaV07CkBAIC0yODAsMTIgKzI5
OSwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBlbnRyaWVzID0gdGhpcy5fZW50cmllcyhvYmpl
Y3QsIEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCksIGZldGNoU3RhcnQsIGZldGNo
Q291bnQpOwotICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAg
ICAgICAgZm9yIChsZXQgZW50cnkgb2YgQGJ1aWx0aW5JdGVyYWJsZShlbnRyaWVzKSkgewogICAg
ICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5LnZhbHVlLCBv
YmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBl
bnRyeSkKICAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVu
dHJ5LmtleSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1
cm4gZW50cnk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBlbnRyaWVz
OwogICAgIH0KIAogICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNPTikKQEAgLTMwNiwxMCAr
MzI1LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAg
ICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBAQXJyYXk7CiAgICAg
ICAgIGxldCBkZXB0aCA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNo
KG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsK
KyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZy
YW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBj
YWxsRnJhbWUuY2FsbGVyOwogICAgICAgICB9IHdoaWxlIChjYWxsRnJhbWUpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMzI2LDcgKzM0NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgd3JhcEpTT05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBO
YW1lLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICB0cnkgewotICAgICAgICAgICAg
cmV0dXJuIHRoaXMud3JhcE9iamVjdChKU09OLnBhcnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUs
IHRydWUsIGdlbmVyYXRlUHJldmlldyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2Jq
ZWN0KEBqc29uUGFyc2UoanNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2
aWV3KTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
ICAgfQpAQCAtMzQzLDEyICszNjIsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOwogICAgICAgICBp
ZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtj
b2x1bW5zXTsKKyAgICAgICAgICAgIGNvbHVtbnMgPSBuZXcgQEFycmF5KGNvbHVtbnMpOwogCiAg
ICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFycmF5
IikgewotICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVtbk5h
bWVzID0gbmV3IEBBcnJheTsKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1u
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKHRvU3RyaW5n
KGNvbHVtbnNbaV0pKTsKKyAgICAgICAgICAgICAgICBAYXJyYXlQdXNoKGNvbHVtbk5hbWVzLCB0
b1N0cmluZyhjb2x1bW5zW2ldKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gUmVtb3Rl
T2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBmYWxzZSwgdHJ1ZSwgY29sdW1uTmFtZXMp
OwpAQCAtMzk2LDcgKzQxNSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUgPT09ICJjb25zb2xlIikgewogICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RSZXN1bHQ7CiAgICAgICAgICAgICB0aGlzLl9uZXh0
U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBb
XTsKKyAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IG5ldyBAQXJyYXk7CiAgICAgICAg
IH0KIAogICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBO
YW1lXTsKQEAgLTQyOSwxNCArNDQ4LDEzIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgIHJldHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAgIH0K
IAotICAgIGluamVjdE1vZHVsZShuYW1lLCBzb3VyY2UsIGhvc3QpCisgICAgaW5qZWN0TW9kdWxl
KG5hbWUsIG1vZHVsZUZ1bmN0aW9uLCBob3N0KQogICAgIHsKICAgICAgICAgdGhpcy5fbW9kdWxl
c1tuYW1lXSA9IGZhbHNlOwogCi0gICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVk
U2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwogICAgICAgICBpZiAodHlw
ZW9mIG1vZHVsZUZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhyb3cgIkVy
cm9yOiBXZWIgSW5zcGVjdG9yOiBhIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9k
dWxlIjsKLSAgICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENv
bW1hbmRMaW5lQVBJfSwgaG9zdCk7CisgICAgICAgIG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2Ny
aXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCBj
cmVhdGVPYmplY3QoIlJlbW90ZU9iamVjdCIsIFJlbW90ZU9iamVjdCwgIkNvbW1hbmRMaW5lQVBJ
IiwgQ29tbWFuZExpbmVBUEkpLCBob3N0KTsKIAogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVd
ID0gdHJ1ZTsKICAgICB9CkBAIC00NzAsMTAgKzQ4OCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lKSB7CiAg
ICAgICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1l
XTsKICAgICAgICAgICAgIGlmICghZ3JvdXApIHsKLSAgICAgICAgICAgICAgICBncm91cCA9IFtd
OworICAgICAgICAgICAgICAgIGdyb3VwID0gbmV3IEBBcnJheTsKICAgICAgICAgICAgICAgICB0
aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGdy
b3VwLCBpZCk7CiAgICAgICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9i
amVjdEdyb3VwTmFtZTsKICAgICAgICAgfQogCkBAIC00ODgsOCArNTA2LDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9mYWxsYmFja1dyYXBwZXIo
b2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwotICAgICAgICByZXN1bHQu
dHlwZSA9IHR5cGVvZiBvYmplY3Q7CisgICAgICAgIGxldCByZXN1bHQgPSBjcmVhdGVPYmplY3Qo
InR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFsdWUob2Jq
ZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9iamVjdDsKICAgICAgICAgZWxzZQpA
QCAtNTE1LDcgKzUzMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAgICAgIH0KIAotICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAgICB9CiAK
ICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQpAQCAtNTI0LDEwICs1
NDEsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRvU3RyaW5n
RGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNoIHsgfQotICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAgICAgICAgICAgcmVzdWx0OiByZW1v
dGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdCgKKyAgICAg
ICAgICAgICJ3YXNUaHJvd24iLCB0cnVlLAorICAgICAgICAgICAgInJlc3VsdCIsIHJlbW90ZU9i
amVjdCwKKyAgICAgICAgKTsKICAgICB9CiAKICAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5j
dGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUs
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBz
YXZlUmVzdWx0KQpAQCAtNTUyLDEwICs1NjksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVk
UmVzdWx0SW5kZXggPSAwOwogCi0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAg
ICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBS
ZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMoKSwgb2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdl
bmVyYXRlUHJldmlldykKLSAgICAgICAgICAgIH07CisgICAgICAgICAgICBsZXQgcmV0dXJuT2Jq
ZWN0ID0gY3JlYXRlT2JqZWN0KAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwK
KyAgICAgICAgICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9i
amVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAg
KTsKIAogICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRl
eCkKICAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMu
X3NhdmVkUmVzdWx0SW5kZXg7CkBAIC01NzEsNyArNTg4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IGNvbW1hbmRMaW5lQVBJID0gbnVs
bDsKICAgICAgICAgaWYgKGluY2x1ZGVDb21tYW5kTGluZUFQSSkKICAgICAgICAgICAgIGNvbW1h
bmRMaW5lQVBJID0gdGhpcy5jcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChpc0V2YWxPbkNhbGxG
cmFtZSA/IG9iamVjdCA6IG51bGwpOwotICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLmNhbGwo
b2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CisgICAgICAgIHJldHVybiBldmFs
RnVuY3Rpb24uQGNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CiAgICAg
fQogCiAgICAgX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCkBAIC01
ODQsOCArNjAxLDEzIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgICAgIHJldHVybiBjYWxsRnJhbWU7CiAgICAgfQogCi0gICAgX2dldFByb3BlcnRpZXMo
b2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJh
dGVQcmV2aWV3LCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXN9KQorICAgIF9nZXRQcm9wZXJ0aWVzKG9i
amVjdElkLCBjb2xsZWN0aW9uTW9kZSwgb3B0aW9ucyA9IGNyZWF0ZU9iamVjdCgpKQogICAgIHsK
KyAgICAgICAgbGV0IGZldGNoU3RhcnQgPSBnZXRPd25Qcm9wZXJ0eShvcHRpb25zLCAiZmV0Y2hT
dGFydCIpOworICAgICAgICBsZXQgZmV0Y2hDb3VudCA9IGdldE93blByb3BlcnR5KG9wdGlvbnMs
ICJmZXRjaENvdW50Iik7CisgICAgICAgIGxldCBnZW5lcmF0ZVByZXZpZXcgPSBnZXRPd25Qcm9w
ZXJ0eShvcHRpb25zLCAiZ2VuZXJhdGVQcmV2aWV3Iik7CisgICAgICAgIGxldCBuYXRpdmVHZXR0
ZXJzQXNWYWx1ZXMgPSBnZXRPd25Qcm9wZXJ0eShvcHRpb25zLCAibmF0aXZlR2V0dGVyc0FzVmFs
dWVzIik7CisKICAgICAgICAgbGV0IHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJ
ZChvYmplY3RJZCk7CiAgICAgICAgIGxldCBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJz
ZWRPYmplY3RJZCk7CiAgICAgICAgIGxldCBvYmplY3RHcm91cE5hbWUgPSB0aGlzLl9pZFRvT2Jq
ZWN0R3JvdXBOYW1lW3BhcnNlZE9iamVjdElkLmlkXTsKQEAgLTYwNyw3ICs2MjksNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAvLyBBbHdheXMg
aW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRj
aC4KICAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9ICFzdGFydDsKIAotICAgICAgICBsZXQgZGVz
Y3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gbmV3IEBBcnJheTsKICAg
ICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25N
b2RlLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgewogICAg
ICAgICAgICAgICAgIC0tc3RhcnQ7CkBAIC02MjIsMTMgKzY0NCwxMyBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iu
dmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9iamVjdEdyb3Vw
TmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICBpZiAoInN5bWJvbCIg
aW4gZGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnN5bWJvbCA9IFJlbW90
ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci5zeW1ib2wsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAg
ICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5
UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRl
UHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0
b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKIAogICAgICAgICAgICAgcmV0dXJuIChj
b3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJv
cGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlv
bi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVBy
b3RvfSk7CisgICAgICAgIH0sIGNyZWF0ZU9iamVjdCgibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwg
bmF0aXZlR2V0dGVyc0FzVmFsdWVzLCAiaW5jbHVkZVByb3RvIiwgaW5jbHVkZVByb3RvKSk7CiAg
ICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9CiAKQEAgLTYzOCwzMSArNjYwLDM0IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICgh
aW50ZXJuYWxQcm9wZXJ0aWVzKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAg
bGV0IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IG5ldyBAQXJy
YXk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0aWVzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHkgPSBpbnRlcm5hbFByb3BlcnRpZXNb
aV07Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IHtuYW1lOiBwcm9wZXJ0eS5uYW1lLCB2
YWx1ZTogcHJvcGVydHkudmFsdWV9OworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBjcmVh
dGVPYmplY3QoIm5hbWUiLCBwcm9wZXJ0eS5uYW1lLCAidmFsdWUiLCBwcm9wZXJ0eS52YWx1ZSk7
CiAgICAgICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIGRl
c2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNj
cmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3Ip
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9CiAKLSAgICBf
Zm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCBjYWxsYmFj
aywge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSkKKyAgICBfZm9yRWFjaFBy
b3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCBjYWxsYmFjaywgb3B0aW9u
cyA9IGNyZWF0ZU9iamVjdCgpKQogICAgIHsKKyAgICAgICAgbGV0IG5hdGl2ZUdldHRlcnNBc1Zh
bHVlcyA9IGdldE93blByb3BlcnR5KG9wdGlvbnMsICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiKTsK
KyAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9IGdldE93blByb3BlcnR5KG9wdGlvbnMsICJpbmNs
dWRlUHJvdG8iKTsKKwogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gInByb3h5IikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgbmFt
ZVByb2Nlc3NlZCA9IG5ldyBTZXQ7CisgICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IEBT
ZXQ7CiAKICAgICAgICAgLy8gSGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAg
ICAgICBuYW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90b19fIik7CisgICAgICAgIG5hbWVQcm9jZXNz
ZWQuQGFkZCgiX19wcm90b19fIik7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlRmFrZVZhbHVl
RGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3Np
YmxlTmF0aXZlQmluZGluZ0dldHRlcikKICAgICAgICAgewogICAgICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IG9iamVjdFtu
YW1lXX07CisgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlT2JqZWN0
KCJuYW1lIiwgbmFtZSwgInZhbHVlIiwgb2JqZWN0W25hbWVdKTsKICAgICAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0
YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLndyaXRhYmxlID0g
dHJ1ZTsKQEAgLTY3OCwxMSArNzAzLDExIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKICAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAgICAgICAgICAgICAgIC8v
IFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25zIGNyZWF0
ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRoaXMgb2Jq
ZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9m
IFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CisgICAgICAgICAg
ICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgQFByb21pc2UgJiYgSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJv
cihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3YXNUaHJvd246IHRydWV9
OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBjcmVhdGVPYmplY3QoIm5h
bWUiLCBuYW1lLCAidmFsdWUiLCBlLCAid2FzVGhyb3duIiwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzT3duUHJvcGVydHkpCiAgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRv
ci5pc093biA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKQEAgLTcxMCwxNSAr
NzM1LDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAg
ICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9w
ZXJ0eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3Bl
cnR5TmFtZSkpCisgICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5TmFt
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uQ29udGludWU7CiAKLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKIAog
ICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBu
dWxsOwogCi0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9y
ID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
QmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQgaGVyZT8KICAgICAgICAgICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBzZXR0aW5ncy4KQEAgLTcyNyw3ICs3NTIsNyBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAobmF0aXZlR2V0dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0i
KSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIp
ICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoQFN0cmluZyhkZXNjcmlwdG9yLmdldCkuQGVuZHNXaXRo
KCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBAT2JqZWN0LkBoYXNP
d24oZGVzY3JpcHRvciwgImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBAT2JqZWN0LkBoYXNP
d24oZGVzY3JpcHRvciwgInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9w
ZXJzIG1heSBjcmVhdGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGll
bnQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh4LCAicCIsIHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoeCwgInAiKQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBj
cmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Q
cm9wZXJ0eSwgdHJ1ZSk7CkBAIC03NDUsMTAgKzc3MCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNl
OwogICAgICAgICB0cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYm
IG9iamVjdC5sZW5ndGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmpl
Y3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3Ro
KSAmJiBvYmplY3QubGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBm
b3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2YobykpIHsKKyAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0g
QE9iamVjdC5AZ2V0UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBpc093blByb3Bl
cnR5ID0gbyA9PT0gb2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7
CiAKQEAgLTc2NCw3ICs3ODksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1l
cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBw
cm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9w
ZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cDsKQEAgLTc3Niw4ICs4MDEsOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewot
ICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG8pOworICAgICAgICAgICAgaWYgKEBPYmplY3QuQGdldE93blByb3BlcnR5U3lt
Ym9scykgeworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBAT2JqZWN0LkBn
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBwcm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3du
UHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0g
SW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtNzk2LDIzICs4MjEs
MjIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAg
aWYgKGluY2x1ZGVQcm90bykgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBp
ZiAob2JqZWN0Ll9fcHJvdG9fXykKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soe25hbWU6
ICJfX3Byb3RvX18iLCB2YWx1ZTogb2JqZWN0Ll9fcHJvdG9fXywgd3JpdGFibGU6IHRydWUsIGNv
bmZpZ3VyYWJsZTogdHJ1ZSwgaXNPd246IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soY3JlYXRlT2JqZWN0KCJuYW1lIiwgIl9fcHJvdG9fXyIsICJ2YWx1ZSIsIG9iamVjdC5f
X3Byb3RvX18sICJ3cml0YWJsZSIsIHRydWUsICJjb25maWd1cmFibGUiLCB0cnVlLCAiaXNPd24i
LCB0cnVlKSk7CiAgICAgICAgICAgICB9IGNhdGNoIHsgfQogICAgICAgICB9CiAgICAgfQogCiAg
ICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsK
LSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBuZXcgQEFy
cmF5OwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ug
b3ZlcnJpZGVzIFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChs
ZXQgdmFsdWUgb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGlu
SXRlcmFibGUob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAg
ICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAg
ICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIGNyZWF0ZU9iamVjdCgidmFsdWUiLCB2YWx1ZSkp
OwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0
Y2hDb3VudCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgyMywxNiArODQ3LDE1IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZ2V0TWFwRW50
cmllcyhvYmplY3QsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpCiAgICAgewotICAgICAgICBsZXQg
ZW50cmllcyA9IFtdOworICAgICAgICBsZXQgZW50cmllcyA9IG5ldyBAQXJyYXk7CiAKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFw
LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1
ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRp
bkl0ZXJhYmxlKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewog
ICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7
CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIGNyZWF0ZU9iamVjdCgia2V5Iiwga2V5
LCAidmFsdWUiLCB2YWx1ZSkpOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRy
aWVzLmxlbmd0aCA9PT0gZmV0Y2hDb3VudCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg3
NiwxMCArODk5LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgewogICAgICAgICB0aGlzLl9sYXN0UmVzdWx0ID0gcmVzdWx0OwogCi0gICAgICAgIGlm
IChyZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCisgICAgICAgIGlmIChy
ZXN1bHQgPT09IEB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBudWxsKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGxldCBleGlzdGluZ0luZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRzLmlu
ZGV4T2YocmVzdWx0KTsKKyAgICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJl
c3VsdHMuQGluZGV4T2YocmVzdWx0KTsKICAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0x
KSB7CiAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gZXhpc3RpbmdJbmRleDsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTg5NCwxNiArOTE3LDE2IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgfQogfTsKIAotSW5qZWN0ZWRTY3JpcHQu
Q29sbGVjdGlvbk1vZGUgPSB7Ci0gICAgT3duUHJvcGVydGllczogMSA8PCAwLCAgICAgICAgICAv
LyBvd24gcHJvcGVydGllcy4KLSAgICBOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzOiAxIDw8IDEsIC8v
IG5hdGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgotICAgIEFs
bFByb3BlcnRpZXM6IDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRpZXMgaW4gdGhlIHBy
b3RvdHlwZSBjaGFpbi4KLX07CitJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZSA9IGNyZWF0
ZU9iamVjdCgKKyAgICAiT3duUHJvcGVydGllcyIsIDEgPDwgMCwgICAgICAgICAgLy8gb3duIHBy
b3BlcnRpZXMuCisgICAgIk5hdGl2ZUdldHRlclByb3BlcnRpZXMiLCAxIDw8IDEsIC8vIG5hdGl2
ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorICAgICJBbGxQcm9w
ZXJ0aWVzIiwgMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90
eXBlIGNoYWluLgorKTsKIAotSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsK
LSAgICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3Rv
cCIpLAotfQorSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IGNyZWF0ZU9iamVj
dCgKKyAgICAiQ29udGludWUiLCBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAg
ICAiU3RvcCIsIEBjcmVhdGVQcml2YXRlU3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0
ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTk2Miw3ICs5ODUsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5w
cmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRh
cmdldFZhbHVlKG9iamVjdCkpOwogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVz
cyA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2
aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1l
cyk7CisgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3
KG9iamVjdCwgQHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC05NzcsNyArMTAwMCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBSZW1vdGVP
YmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChleCkgewotICAgICAgICAg
ICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlv
bik7CkBAIC05ODYsNyArMTAwOSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKIAogICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdl
bmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2Jq
ZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQ
cmV2aWV3LCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVt
b3RlT2JqZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1
bW5OYW1lcyk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAg
ICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAg
ICAgICAgIGlmIChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNs
YXNzUHJvdG90eXBlLm9iamVjdElkKQpAQCAtMTAxMSw3ICsxMDM0LDcgQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBk
ZXRlY3Rpb24uCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNw
bGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAg
ICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZh
bHVlLmxlbmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0g
Y2F0Y2ggeyB9CiAKQEAgLTEwNTAsOCArMTA3Myw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpCiAgICAgICAg
ICAgICByZXR1cm4gY2xhc3NOYW1lOwogCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0
b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJh
dG9yIiAmJiBAQHRvU3RyaW5nVGFnIGluIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LkBAdG9TdHJpbmdUYWc7CiAKICAgICAgICAgLy8gTm9kZUxpc3QgaW4gSlNDIGlzIGEgZnVuY3Rp
b24sIGNoZWNrIGZvciBhcnJheSBwcmlvciB0byB0aGlzLgogICAgICAgICBpZiAodHlwZW9mIHZh
bHVlID09PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMDkyLDcgQEAgbGV0IFJlbW90ZU9iamVj
dCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGljIG5vZGVQcmV2aWV3KG5vZGUpCiAg
ICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNj
cmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1
bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCAmJiAhIW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJz
aW9uOwogICAgICAgICBsZXQgbm9kZU5hbWUgPSBpc1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFt
ZSA6IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKIApAQCAtMTEwMCwxNyArMTEyNCwxNyBA
QCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaW5pdGlhbFBy
ZXZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHByZXZpZXcgPSB7Ci0gICAgICAgICAgICB0eXBl
OiB0aGlzLnR5cGUsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbiB8
fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKLSAgICAgICAgICAgIGxvc3NsZXNzOiB0cnVlLAotICAg
ICAgICB9OworICAgICAgICBsZXQgcHJldmlldyA9IGNyZWF0ZU9iamVjdCgKKyAgICAgICAgICAg
ICJ0eXBlIiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwgdGhpcy5kZXNj
cmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJsb3NzbGVzcyIs
IHRydWUsCisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkgewogICAgICAg
ICAgICAgcHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAgICAgaWYgKHRo
aXMuc3VidHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxv
dyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAg
ICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IG5ldyBAQXJyYXk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApAQCAtMTEyNiw3ICsxMTUwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAi
IHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIg
fHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3NldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0
b3IiKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5zaXplKSB7Ci0gICAgICAgICAgICAgICAgcHJl
dmlldy5lbnRyaWVzID0gW107CisgICAgICAgICAgICAgICAgcHJldmlldy5lbnRyaWVzID0gbmV3
IEBBcnJheTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0x
MTQxLDIzICsxMTY1LDIzIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVs
bCB8fCBzZWNvbmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0g
Zmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCi0gICAgICAgIGxl
dCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAot
ICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4
KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9OworICAgICAgICBsZXQgcHJvcGVy
dGllc1RocmVzaG9sZCA9IGNyZWF0ZU9iamVjdCgKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiwg
aXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwK
KyAgICAgICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgx
MCwgZmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRyaWVzLgogICAg
ICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAi
c2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3
ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAgICAgICAgICAg
dGhpcy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0gICAgICAgICAg
ICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGll
cyA9IG5ldyBAQXJyYXk7CiAKICAgICAgICAgICAgIC8vIEludGVybmFsIFByb3BlcnRpZXMuCiAg
ICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzID0gaW5qZWN0ZWRTY3Jp
cHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycykgewogICAgICAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0
eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0s
IHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtp
bnRlcm5hbDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5f
YXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgaW50ZXJuYWxQcm9wZXJ0eURl
c2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25k
TGV2ZWxLZXlzLCBjcmVhdGVPYmplY3QoImludGVybmFsIiwgdHJ1ZSkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9u
LlN0b3ApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICAgICAg
ICAgICAgICB9CkBAIC0xMTY5LDcgKzExOTMsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3Mg
UmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAvLyBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgaW5q
ZWN0ZWRTY3JpcHQuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBJbmplY3RlZFNj
cmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzLCAoZGVzY3JpcHRvcikgPT4gewogICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBw
cmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywg
c2Vjb25kTGV2ZWxLZXlzKTsKLSAgICAgICAgICAgIH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6
IHRydWUsIGluY2x1ZGVQcm90bzogdHJ1ZX0pCisgICAgICAgICAgICB9LCBjcmVhdGVPYmplY3Qo
Im5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsICJpbmNsdWRlUHJvdG8iLCB0cnVlKSk7CiAg
ICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICB9CkBAIC0xMTc3LDggKzEyMDEsMTAgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICB9CiAKLSAgICBfYXBw
ZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGll
c1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9
IHt9KQorICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlw
dG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlz
LCBvcHRpb25zID0gY3JlYXRlT2JqZWN0KCkpCiAgICAgeworICAgICAgICBsZXQgaW50ZXJuYWwg
PSBnZXRPd25Qcm9wZXJ0eShvcHRpb25zLCAiaW50ZXJuYWwiKTsKKwogICAgICAgICAvLyBFcnJv
ciBpbiBkZXNjcmlwdG9yLgogICAgICAgICBpZiAoZGVzY3JpcHRvci53YXNUaHJvd24pIHsKICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKQEAgLTExOTAsOSArMTIxNiw5IEBA
IGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG5hbWUg
PT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90b19fIG9i
amVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2RzIHRvIHNo
b3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVl
LmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1
Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25z
dHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNv
bnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1
ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3Iu
dmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0
b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAgcHJldmll
dy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyArMTIzNSw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgog
ICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0
aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5
cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExl
dmVsS2V5cy5AaW5jbHVkZXMobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBl
bmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3LDIwICsxMjUzLDIwIEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHBy
ZXZpZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2go
cHJldmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEdldHRlci9zZXR0ZXIuCiAgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRv
cikpIHsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAg
IHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhjcmVhdGVPYmplY3QoIm5hbWUiLCBuYW1lLCAidHlw
ZSIsICJhY2Nlc3NvciIpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE51bGwgdmFsdWUuCiAg
ICAgICAgIGxldCB2YWx1ZSA9IGRlc2NyaXB0b3IudmFsdWU7CiAgICAgICAgIGlmICh2YWx1ZSA9
PT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAi
b2JqZWN0Iiwgc3VidHlwZTogIm51bGwiLCB2YWx1ZTogIm51bGwifSk7CisgICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kUHJldmlldyhjcmVhdGVPYmplY3QoIm5hbWUiLCBuYW1lLCAidHlwZSIsICJv
YmplY3QiLCAic3VidHlwZSIsICJudWxsIiwgInZhbHVlIiwgIm51bGwiKSk7CiAKICAgICAgICAg
Ly8gSWdub3JlIG5vbi1lbnVtZXJhYmxlIGZ1bmN0aW9ucy4KICAgICAgICAgbGV0IHR5cGUgPSB0
eXBlb2YgdmFsdWU7CkBAIC0xMjU4LDcgKzEyODQsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRl
U3RyaW5nKHZhbHVlLCBtYXhMZW5ndGgsIHRydWUpOwogICAgICAgICAgICAgICAgIHByZXZpZXcu
bG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcHBl
bmRQcmV2aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9
KTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KGNyZWF0ZU9iamVjdCgibmFtZSIs
IG5hbWUsICJ0eXBlIiwgdHlwZSwgInZhbHVlIiwgdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSkp
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFN5bWJvbC4KQEAgLTEyNjgsMTEgKzEyOTQsMTEg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAg
IHN5bWJvbFN0cmluZyA9IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcoc3ltYm9sU3RyaW5nLCBtYXhM
ZW5ndGgsIHRydWUpOwogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0
eXBlLCB2YWx1ZTogc3ltYm9sU3RyaW5nfSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyhjcmVhdGVPYmplY3QoIm5hbWUiLCBuYW1lLCAidHlwZSIsIHR5cGUsICJ2YWx1ZSIsIHN5
bWJvbFN0cmluZykpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gT2JqZWN0LgotICAgICAgICBs
ZXQgcHJvcGVydHkgPSB7bmFtZSwgdHlwZX07CisgICAgICAgIGxldCBwcm9wZXJ0eSA9IGNyZWF0
ZU9iamVjdCgibmFtZSIsIG5hbWUsICJ0eXBlIiwgdHlwZSk7CiAgICAgICAgIGxldCBzdWJ0eXBl
ID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUodmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAg
ICAgICAgICAgIHByb3BlcnR5LnN1YnR5cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzM5LDcg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVu
dHJpZXMucG9wKCk7CisgICAgICAgICAgICBlbnRyaWVzLkBwb3AoKTsKICAgICAgICAgICAgIHBy
ZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZh
bHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzEzNDksNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZh
bHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmllcy5tYXAo
ZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmllcy5AbWFw
KGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVj
dC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkudmFsdWUsIGVudHJ5LnZhbHVlICE9
PSBvYmplY3QpOwogICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkudmFsdWUpOwog
ICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KSB7CkBAIC0xMzM2LDggKzEzNjIsOCBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaXNQcmV2aWV3YWJs
ZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7
Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAgICAgICAgbGV0IHNldCA9IG5ldyBAU2V0Owor
ICAgICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9pc1ByZXZp
ZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNldCwgMSk7CiAgICAgfQpAQCAtMTM1NywxMSAr
MTM4MywxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KLSAgICAgICAg
aWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5A
aGFzKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgKytkZXB0
aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOworICAgICAgICBrbm93bk9iamVj
dHMuQGFkZChvYmplY3QpOwogCiAgICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkg
aGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVt
b3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAgLTEzODEsMTIgKzE0MDcsMTIgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNz
IHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7CisgICAgICAgIGxldCBvd25Qcm9w
ZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOwogICAgICAg
ICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVz
W2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlw
dG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlw
dG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRo
aXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25v
d25PYmplY3RzLCBkZXB0aCkpCkBAIC0xNDA0LDY2ICsxNDMwLDc1IEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG1pZGRsZSkgewogICAgICAgICAg
ICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7CiAgICAgICAgICAgICBsZXQgcmlnaHRI
YWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0cmlu
Zy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5s
ZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5n
LkBzdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuQHN1YnN0cihzdHJpbmcu
bGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0
dXJuIHN0cmluZy5zdWJzdHIoMCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOworICAgICAgICByZXR1
cm4gc3RyaW5nLkBzdWJzdHIoMCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOwogICAgIH0KIH07CiAK
IC8vIC0tLS0tLS0KIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihv
cmRpbmFsLCBjYWxsRnJhbWUpCi17Ci0gICAgdGhpcy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwi
OiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQiOiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKLSAg
ICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7Ci0gICAgdGhpcy5s
b2NhdGlvbiA9IHtzY3JpcHRJZDogU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1i
ZXI6IGNhbGxGcmFtZS5saW5lLCBjb2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1bW59OwotICAg
IHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAg
dGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJh
Y2t0cmFjZSIpOwotICAgIHRoaXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxl
dGVkOwotfTsKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gY2xhc3MgQ2FsbEZyYW1l
UHJveHkgeworICAgIGNvbnN0cnVjdG9yKG9yZGluYWwsIGNhbGxGcmFtZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNj
cmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7CisgICAgICAgIHRoaXMuZnVuY3Rpb25OYW1l
ID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKKworICAgICAgICB0aGlzLmxvY2F0aW9uID0gY3Jl
YXRlT2JqZWN0KAorICAgICAgICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291
cmNlSUQpLAorICAgICAgICAgICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAg
ICAgICAgICJjb2x1bW5OdW1iZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAgICApOworCisg
ICAgICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7
CisgICAgICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNP
YmplY3QsICJiYWNrdHJhY2UiKTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZy
YW1lLmlzVGFpbERlbGV0ZWQ7CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94
eS5wcm90b3R5cGUgPSB7CiAgICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAg
ICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxl
dCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0g
ICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Q
cm94eSA9IG5ldyBAQXJyYXk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NvcGVDaGFp
bi5sZW5ndGg7IGkrKykKICAgICAgICAgICAgIHNjb3BlQ2hhaW5Qcm94eVtpXSA9IEluamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24oc2NvcGVDaGFpbltpXSwgc2Nv
cGVEZXNjcmlwdGlvbnNbaV0sICJiYWNrdHJhY2UiKTsKICAgICAgICAgcmV0dXJuIHNjb3BlQ2hh
aW5Qcm94eTsKICAgICB9Ci19OwogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2Nv
cGVUeXBlTmFtZXMgPSB7Ci0gICAgMDogImdsb2JhbCIsIC8vIEdMT0JBTF9TQ09QRQotICAgIDE6
ICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQotICAgIDI6ICJjbG9zdXJlIiwgLy8gQ0xPU1VSRV9TQ09Q
RQotICAgIDM6ICJjYXRjaCIsIC8vIENBVENIX1NDT1BFCi0gICAgNDogImZ1bmN0aW9uTmFtZSIs
IC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKLSAgICA1OiAiZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlRfU0NPUEUKLSAgICA2OiAibmVzdGVkTGV4
aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCi19OworICAgIHN0YXRpYyBfY3JlYXRlU2Nv
cGVKc29uKG9iamVjdCwgc2NvcGVEZXNjcmlwdGlvbiwgZ3JvdXBJZCkKKyAgICB7CisgICAgICAg
IGxldCBuYW1lID0gZ2V0T3duUHJvcGVydHkoc2NvcGVEZXNjcmlwdGlvbiwgIm5hbWUiKTsKKyAg
ICAgICAgbGV0IHR5cGUgPSBnZXRPd25Qcm9wZXJ0eShzY29wZURlc2NyaXB0aW9uLCAidHlwZSIp
OworICAgICAgICBsZXQgbG9jYXRpb24gPSBnZXRPd25Qcm9wZXJ0eShzY29wZURlc2NyaXB0aW9u
LCAibG9jYXRpb24iKTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNj
b3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwge25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJ
ZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0gICAgICAgIG9iamVjdDogUmVtb3RlT2JqZWN0LmNy
ZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAgICAgICB0eXBlOiBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCi0gICAgfTsKKyAgICAgICAgbGV0IHNj
b3BlID0gY3JlYXRlT2JqZWN0KAorICAgICAgICAgICAgIm9iamVjdCIsIFJlbW90ZU9iamVjdC5j
cmVhdGUob2JqZWN0LCBncm91cElkKSwKKyAgICAgICAgICAgICJ0eXBlIiwgSW5qZWN0ZWRTY3Jp
cHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAorICAgICAgICApOwogCi0g
ICAgaWYgKG5hbWUpCi0gICAgICAgIHNjb3BlLm5hbWUgPSBuYW1lOworICAgICAgICBpZiAobmFt
ZSkKKyAgICAgICAgICAgIHNjb3BlLm5hbWUgPSBuYW1lOwogCi0gICAgaWYgKGxvY2F0aW9uKQot
ICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICBpZiAobG9jYXRpb24p
CisgICAgICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0aW9uOwogCi0gICAgaWYgKGlzRW1w
dHlPYmplY3Qob2JqZWN0KSkKLSAgICAgICAgc2NvcGUuZW1wdHkgPSB0cnVlOworICAgICAgICBp
ZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQorICAgICAgICAgICAgc2NvcGUuZW1wdHkgPSB0cnVl
OwogCi0gICAgcmV0dXJuIHNjb3BlOwotfQorICAgICAgICByZXR1cm4gc2NvcGU7CisgICAgfQor
fTsKKworSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gY3Jl
YXRlT2JqZWN0KCk7CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFt
ZXNbMF0gPSAiZ2xvYmFsIjsgLy8gR0xPQkFMX1NDT1BFCitJbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbMV0gPSAid2l0aCI7IC8vIFdJVEhfU0NPUEUKK0luamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1syXSA9ICJjbG9zdXJlIjsg
Ly8gQ0xPU1VSRV9TQ09QRQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlw
ZU5hbWVzWzNdID0gImNhdGNoIjsgLy8gQ0FUQ0hfU0NPUEUKK0luamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1s0XSA9ICJmdW5jdGlvbk5hbWUiOyAvLyBGVU5DVElP
Tl9OQU1FX1NDT1BFCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFt
ZXNbNV0gPSAiZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50IjsgLy8gR0xPQkFMX0xFWElDQUxfRU5W
SVJPTk1FTlRfU0NPUEUKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVO
YW1lc1s2XSA9ICJuZXN0ZWRMZXhpY2FsIjsgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKIAogLy8g
LS0tLS0tLQogCkBAIC0xNDc3LDkgKzE1MTIsOSBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShj
YWxsRnJhbWUpCiAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2lu
YWxWYWx1ZTsgfTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygi
JCIgKyBrZXksIHZhbHVlKTsKKyAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywg
IiQiICsga2V5LCBjcmVhdGVPYmplY3QoImdldCIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChzYXZl
ZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVzdWx0QWxpYXMgIT09ICIkIikKLSAgICAgICAgICAgIHRo
aXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3VsdEFsaWFzICsga2V5LCB2YWx1ZSk7CisgICAg
ICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBzYXZlZFJlc3VsdEFsaWFzICsg
a2V5LCBjcmVhdGVPYmplY3QoImdldCIsIHZhbHVlKSk7CiAgICAgfTsKIAogICAgIGlmICgiX2xh
c3RSZXN1bHQiIGluIGluamVjdGVkU2NyaXB0KQpAQCAtMTUwMiw0OCArMTUzNyw0OCBAQCBmdW5j
dGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUpCiAgICAgICAgIHRoaXNbbmFtZV0gPSBDb21t
YW5kTGluZUFQSS5tZXRob2RzW25hbWVdOwogfQogCi1Db21tYW5kTGluZUFQSS5nZXR0ZXJzID0g
e307CitDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0gY3JlYXRlT2JqZWN0KCk7CiAKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSBjcmVhdGVPYmpl
Y3QoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0
KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2Jq
ZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVl
cyhvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4u
LmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMo
Li4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QucXVlcnlJbnN0YW5jZXMoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLkBidWlsdGluSXRlcmFibGUoYXJn
dW1lbnRzKSk7IH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0
aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3Qp
OyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3Jv
dXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2Zp
bGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
cHJvZmlsZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmls
ZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJy
ZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNv
cmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJz
Y3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0
YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5t
ZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFz
c2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5hc3NlcnQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmNsZWFyKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0
KC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5kZWJ1ZyguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5AYnVpbHRpbkl0ZXJhYmxl
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uQGJ1
aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdy
b3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5AYnVpbHRpbkl0ZXJhYmxl
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQo
Li4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuaW5mbyguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmxvZyguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLkBidWlsdGluSXRlcmFibGUo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVF
bmQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5yZWNvcmQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uQGJ1aWx0aW5JdGVyYWJs
ZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVu
c2hvdCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGFibGUoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5A
YnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
dGltZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS50aW1lKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5AYnVpbHRpbkl0ZXJh
YmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVT
dGFtcCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudHJhY2UoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50
cykpOyB9OwogCiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAg
Q29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9Owog
CiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4u
YmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEzYmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAg
ICAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChl
cnJvci50eXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwg
ZXJyb3IubWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVj
dGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGlu
ZSAiLCBlcnJvci5saW5lKCksICIuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzlj
Li5mZmM5YzljMjMzMWRhZTNkNmE2NWJkZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFy
cmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAg
dm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEFycmEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3Bl
Y2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJh
eSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZnJvbVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDVhM2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3
MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEz
MCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmll
c1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCks
IGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1
YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJp
dmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5rZXlzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5wb3BQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1l
KCksIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0
KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51
bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNj
OTVmYzY3MTZiYzBkMjE0MzQxOS4uOTlmNGY3OTQxMWJjYWNiMzllYTQwMWQ5MjhiNzc5ZWMxMDAx
NDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENI
RUNLX0ZFQVRVUkVfRkxBR19UWVBFKQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
bWFrZUJvdW5kRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFz
T3duTGVuZ3RoUHJvcGVydHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3Jl
YXRlUHJpdmF0ZVN5bWJvbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29u
UGFyc2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICsz
NjMsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJv
bCgpLmdldCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9i
amVjdCwganNvbikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lm
eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBK
U09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZy
YW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2
bSwgcmVzdWx0KSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGFzc2VydENhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0xMDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlz
ZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0
b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNl
dCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2Up
XS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZh
bEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVy
ZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFs
aXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUz
LDYgKzE1NzQsMTQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAg
fSk7CiAKKyAgICAvLyBKU09OIGhlbHBlcnMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGpzb25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29u
U3RyaW5naWZ5KSk7CisgICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhMGFhZWQzNDc4N2FmNjZhNGVjMjgzMmNiNzg0N2Zh
ZjI4YTRmYTliLi5lOTQ4NjAzZTJjZWNhMjk1NWEyZWQyNzE1NGJiM2IwMTQ5NzFhZjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEy
NCw2ICsxMjQsNyBAQCBjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFByb3Rv
dHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VPcmlnaW47CitjbGFzcyBTdHJp
bmdDb25zdHJ1Y3RvcjsKIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNs
YXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKQEAg
LTMyMCw2ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3Ry
dWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNl
Q29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU0lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yPiBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yOwor
ICAgIFdyaXRlQmFycmllcjxTdHJpbmdDb25zdHJ1Y3Rvcj4gbV9zdHJpbmdDb25zdHJ1Y3RvcjsK
IAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1
bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9jb2xsYXRvclN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA2MDhjZjllMTc4ZmIxYzc3NzM4YWE2NDY1
NjYxNGVhYWJkOGFkMTQ3Li5iYjZhZjI1NGY0OTY3OWY1MTdhMzk4NzA0MTVlZWYzN2NiZTFjZTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCkBAIC05OSw5ICs5OSwxOSBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgb2JqZWN0UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcm90b3R5cGVPZlByaXZhdGVOYW1lKCksIG9iamVj
dENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5TmFtZXNQcml2
YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2
YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvcktleXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5kZWZp
bmVQcm9wZXJ0eVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAzKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rv
ckNyZWF0ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDIpOwotICAgIGlmIChPcHRpb25zOjp1c2VIYXNPd24oKSkKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS52YWx1ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworCisgICAgaWYg
KE9wdGlvbnM6OnVzZUhhc093bigpKSB7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhc093biwgb2JqZWN0Q29uc3RydWN0
b3JIYXNPd24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAyKTsKKyAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT3duUHJpdmF0ZU5hbWUoKSwgb2Jq
ZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICB9CiB9CiAKIC8vIEVTIDE5LjEuMS4xIE9iamVjdChb
dmFsdWVdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKaW5kZXggNTA2NzIzMmNkNjZmOTkxM2I5NTMyZjA5ZjY4MDMxYmVlZDA0Y2Y5My4u
MzFhOGY5ZTdkN2JiZDMyNjUwYzBjYjI5ODI2OWE5MzVlZDBjY2NmZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNjQsNiAr
MTY0LDkgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLml0
ZXJhdG9yXSJfcywgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN1YnN0clByaXZhdGVO
YW1lKCksIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVuZHNXaXRo
UHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKwogICAgIC8vIFRoZSBjb25z
dHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMg
YmVlbiBidWlsdAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2VjZWJiZTgzZjdk
NzI0NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVhNWM4Y2YzYjIy
Y2ZjZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAgV0VC
S0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUo
V2ViQ29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNU
UygpCiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3Rv
bV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGlu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBz
b3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIg
PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxf
RVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUyLDYgKzIz
NDAsNyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0v
ZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNv
ZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5kaW5n
SW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBh
M2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUzNTYy
YmQyZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0
eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NT
U1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZl
NDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChOT19T
VVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5kZXAp
CiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8jIHNv
dXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5q
cyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9C
VUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlMVElO
U19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3Jl
KS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJTlNf
R0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMDYwYWQ5ZjMxYWQy
ZTYxNDgzNzk1MjM3MGJhNTAwMTE5ZDBhYWM0Li41NzgyMGI3NzNmMDQ5MDE2NDlhNzdiOThiMGQ1
YzNjZGIwNTRiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2OCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAgICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAgICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5YmExYjgyMDM1MmMxNGQ5NjA2NjMzZjMwMWY5ZDQ1MzcyOGUyZTI1Li5kM2Y4ZDU0NTQ0NTA0
OTFjNWNkNzIwZDBiMzM2NmIzODc2YThkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUz
MDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0Qz
MyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRC
QUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIy
MzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9OworCQky
RTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUz
QUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0
MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlBNTc4
RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAw
M0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyog
U2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50
LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlw
dEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsK
LQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUy
NTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsK
IAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4
NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAx
ODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQz
QjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRE
NUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29t
bWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3REZE
OTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBE
T01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0
MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAw
NDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVG
RjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM5NDEsNyArMTM5NDMsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0
RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFD
MjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3
MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4
NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElN
b2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI5LDcgKzIwNDMwLDYg
QEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0
RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUz
QTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1
Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwICovLApAQCAtMjM1ODcsNiArMjM1ODcsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUw
MEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJ
CTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNw
cCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFC
Q0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJ
CQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1l
cy5jcHAgKi8sCkBAIC0zNDA4NSw3ICszNDA4Nyw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAw
N0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZF
MzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQw
MDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9u
Q3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUw
MTY3NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1YjQ5
Yjc5ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxl
OjpDb21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1v
ZHVsZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpp
bmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdh
eXMoIkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFu
ZExpbmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1Zh
bHVlIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxl
LmgKaW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1MGQ0
YTVmMzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgQ29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsKIAot
ICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rpb24q
IGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlk
ZTsKICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdl
ciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2
b2lkIGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgY29u
c3QgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUzNTE5
Y2NiMTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLjcyYWZiZjE5MDY5MmI5MzkwYmFkOWFk
ZGVkMmQzYTdjZTg2MDA5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3RlZFNj
cmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0
ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElI
b3N0KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3Rl
T2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sKIAotLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIElu
amVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVz
ZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4g
SW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAKIGluamVjdGVk
U2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExpbmVBUEkubWV0
aG9kc1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRT
Y3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9i
amVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAgICAg
c3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOworICAgICAgICBz
dHJpbmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0g
ImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7CiAg
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
SlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0cmluZyA9
IEBqc29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAg
ICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5MCwyOCBA
QCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVuY3Rpb24o
dGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7Ci0g
ICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3VzZSIsICJr
ZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZp
Y2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIs
ICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0
IiwgInVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdHlw
ZXMgPSBuZXcgQEFycmF5KCJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9y
dCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24i
LCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwg
InNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCIpOwogICAgIGVsc2UgaWYgKHR5
cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgIHR5cGVzID0gW3R5cGVzXTsKKyAgICAg
ICAgdHlwZXMgPSBuZXcgQEFycmF5KHR5cGVzKTsKKworICAgIGxldCByZXN1bHQgPSBuZXcgQFNl
dDsKKyAgICBmdW5jdGlvbiBhZGRUeXBlc1RvUmVzdWx0KCkgeworICAgICAgICBmb3IgKGxldCB0
eXBlIG9mIEBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSkKKyAgICAgICAgICAgIHJlc3VsdC5A
YWRkKHR5cGUpOworICAgIH0KIAotICAgIGxldCByZXN1bHQgPSBbXTsKICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0g
Im1vdXNlIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJjbGljayIsICJkYmxjbGljayIsICJt
b3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVw
IiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImNsaWNrIiwg
ImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2Vv
dmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tp
XSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgia2V5ZG93biIsICJrZXlwcmVz
cyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQo
ImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElucHV0Iik7CiAgICAgICAgIGVs
c2UgaWYgKHR5cGVzW2ldID09PSAidG91Y2giKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goInRv
dWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CisgICAg
ICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3Vj
aG1vdmUiLCAidG91Y2hzdGFydCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNv
bnRyb2wiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImJsdXIiLCAiY2hhbmdlIiwgImZvY3Vz
IiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29t
Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJibHVyIiwgImNoYW5nZSIsICJmb2N1
cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9v
bSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7Cisg
ICAgICAgICAgICByZXN1bHQuQGFkZCh0eXBlc1tpXSk7CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0xMTgsMTkgKzEyNCwxNyBAQCBmdW5jdGlvbiBsb2dFdmVudChldmVudCkKIENv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbIm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwg
dHlwZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwg
IW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMg
PSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5
cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5
cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5l
cih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWls
dGluSXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKSB7CisgICAgICAgIG9iamVj
dC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9i
amVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiAgICAgfQogfTsK
IAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidW5tb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihv
YmplY3QsIHR5cGVzKSB7CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3Rl
bmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAg
IHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7
IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVp
bHRpbkl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkKKyAgICAgICAgb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKIH07CiAKIGlmIChp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5v
ZGUpIHsKQEAgLTE1OSw4ICsxNjMsOCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3Vt
ZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAKICAgICBDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyIkJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CiAgICAgICAgIGlm
IChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVj
dG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcikp
OworICAgICAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxs
KHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICB9OwogCiAg
ICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJHgiXSA9IGZ1bmN0aW9uKHhwYXRoLCBjb250ZXh0
KSB7CkBAIC0xNzUsMTAgKzE3OSwxMCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3Vt
ZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0LmJvb2xlYW5WYWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBub2RlcyA9IFtd
OworICAgICAgICBsZXQgbm9kZXMgPSBuZXcgQEFycmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51
bGw7CiAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAg
ICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9k
ZSk7CiAgICAgICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5MCw0IEBA
IGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0Lk5vZGUpIHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAg
ICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJl
dHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07
CiAKLX0pCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMjliNTExYTIzNzVkOTI2NTMzMmM4M2U2Njg1YWViOGZiNjU3MmZk
Ni4uZDZjNWIwNDAwMGUyNDU4MzJiMTJjYTY2ZmQ3NWNkNjQ2NjFmZDI4ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDIyLTA0LTI3ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBh
IGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQt
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIy
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWw6CisgICAgICAgIC0g
QWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVycmlkaW5nIGZ1bmN0aW9ucyBhbmQg
ZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOgorICAgICAgICAtIENoYW5nZWQg
dG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25pcHBldCBzaW5jZSB0aGUgaW5zcGVj
dG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGluLgorCisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAtIFRoZSBpbnNwZWN0b3Ig
aW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBubyBsb25nZXIgYXBwZWFyIGFzIHNj
cmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAtIEluc3Bl
Y3RvciBpbmplY3RlZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiBy
ZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDQt
MjcgIEthcmwgUmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mg
RGVidWcgd2syIF0gZmFzdC9jc3MvdmFyaWFibGVzL3Rlc3Qtc3VpdGUvMTY4Lmh0bWwgaXMgYSBm
bGFreSBpbWFnZSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVk
LnR4dAppbmRleCAxZWIxNTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi41OTM3
ZmFlOTdmODk1ODg0N2Y4OGZmNDY3ZWJlMTViODFlMjg3ZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50
ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKQEAgLTEsNjYgKzEsNjAgQEAKLUNPTlNPTEUgTUVT
U0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0K
LUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93
XQotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0
cmluZwotQ2hlY2tpbmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9y
IG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVy
bmFsU2NyaXB0cy4KK0NoZWNraW5nIHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRz
IGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJ
LnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKIC0tIFJ1bm5pbmcgdGVz
dCBzZXR1cC4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVy
bmFsU2NyaXB0cy5EaXNhYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVM
b2cpCitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzog
b3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBB
VVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0
PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAg
ICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAg
OSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxv
Zygic3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIg
ICAgfQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkg
eworIC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAg
IDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3Zlcgot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAg
NiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dl
cjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAg
Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5n
Iik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAg
ICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAy
NSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgx
KTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1p
bgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEwOjUKLSAgICAgIDYgICAgZnVuY3Rpb24gZW50
cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAg
ICBjb25zb2xlLmxvZyh3aW5kb3cpOwotIC0+ICAgOSAgICAgICAgfGNvbnNvbGUubG9nKGNvbnNv
bGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9
Ci0gICAgIDEyCitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI4OjUKKyAgICAgMjQgICAg
ZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2Vy
OworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAtPiAgMjcgICAgICAg
IHxpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdCgzKTsKKyAgICAgMjkgICAgfQorICAgICAzMAogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAg
IDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAtPiAgMTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAg
IDExICAgIH0KLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCitQQVVTRSBBVCBlbnRy
eUludGVybmFsT2JqZWN0OjI5OjUKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMik7CisgLT4gIDI4ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAg
ICAgMjkgICAgfQorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KIAogQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTI6MgotICAgICAgOCAgICAgICAgY29u
c29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwot
ICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAg
ICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KLSAgICAgMTQKK1BBVVNFIEFUIGVudHJ5SW50
ZXJuYWxPYmplY3Q6MzA6MgorICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsK
KyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBp
bnRlcm5hbE9iamVjdC50ZXN0KDMpOworIC0+ICAyOSAgICB9fAorICAgICAzMAorICAgICAzMSAg
ICAvLyAtLS0tLS0tLS0KKyAgICAgMzIKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTY4
LDU3ICs2Miw1NyBAQCBQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVu
bmluZyB0ZXN0IHNldHVwLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNl
Rm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlD
b25zb2xlTG9nKQorRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KQog
U1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1l
bnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAg
PHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAg
NyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsK
LSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29u
c29sZS5sb2coInN0cmluZyIpOworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1Cisg
ICAgIDIyICAgIH0KKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9i
amVjdCgpIHsKKyAtPiAgMjUgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVy
bmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIp
OworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVw
LW92ZXIKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4K
LSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAg
ZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkg
ICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2co
InN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3
OjUKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsK
KyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0
LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAy
OCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046
IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3Jp
cHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAg
ICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAg
ICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUu
bG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVj
dDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0
KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7Cisg
ICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFD
VElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAg
PHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAg
NyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsK
LSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29u
c29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFs
T2JqZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxP
YmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVy
bmFsT2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgy
KTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0K
IAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAg
NSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0g
ICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50
ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRl
cm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkg
ICAgfQogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRt
bAppbmRleCBkMTY4YTcyNTRjZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi5lNWIwZDlj
OGI3MThlMWIyNTZlYWVmNjc4MjI2YjYyNzBlNzFiMzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlw
dHMuaHRtbApAQCAtNCwxMSArNCwyOSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgotZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgeworCitsZXQgaW50ZXJuYWxPYmplY3QgPSB7
IHRlc3Q6IGZ1bmN0aW9uKCkge30gfTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBp
bnRlcm5hbE9iamVjdCA9IHdpbmRvdy5pbnRlcm5hbHMuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdF
eGNlcHRpb24oInRlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cyIsIGAKKyAgICAgICAgLy8jIHNv
dXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X1Rlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cy5qcwor
ICAgICAgICBsZXQgSW50ZXJuYWxPYmplY3QgPSBjbGFzcyBJbnRlcm5hbE9iamVjdCB7CisgICAg
ICAgICAgICB0ZXN0KGludm9jYXRpb25OdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9
IDY7CisgICAgICAgICAgICAgICAgbGV0IGIgPSA3OworICAgICAgICAgICAgICAgIGxldCBhbnN3
ZXIgPSBhICogYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBuZXcgSW50
ZXJuYWxPYmplY3Q7CisgICAgYCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3Qo
KSB7CiAgICAgZGVidWdnZXI7Ci0gICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xl
LmxvZyhjb25zb2xlKTsKLSAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CisgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgxKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgIGludGVybmFs
T2JqZWN0LnRlc3QoMyk7CiB9CiAKIC8vIC0tLS0tLS0tLQpAQCAtMjEsMzEgKzM5LDMxIEBAIGZ1
bmN0aW9uIHRlc3QoKQogCiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6
ICJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZCIsCi0gICAgICAg
IGRlc2NyaXB0aW9uOiAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBjb25zb2xlLmxv
ZyBzdGF0ZW1lbnRzIHdoaWNoIHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAg
ICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRz
IHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Np
b246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBv
dXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRv
IHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4K
ICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAg
ICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRv
dykKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAg
ICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKCJzdHJpbmciKQorICAgICAgICAgICAgICAg
ICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAv
LyBpbnRlcm5hbE9iamVjdC50ZXN0KDIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJu
YWxPYmplY3QudGVzdCgzKQogICAgICAgICAgICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9
KTsKIAogICAgIGFkZFN0ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIu
c2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9u
OiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hp
Y2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9u
OiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJT
aG91bGQgYmUgYWJsZSB0byBzdGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwg
aW5qZWN0ZWQgc2NyaXB0cy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRy
eUludGVybmFsT2JqZWN0KSIsCiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBi
YWNrZW5kIHNpbmNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5k
IHJlc3VsdCBpZiBjaGFuZ2luZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3lu
YyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
KHRydWUpOyB9LAogICAgICAgICB0ZWFyZG93bjogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdn
ZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0
ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29u
c29sZS5sb2cod2luZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5z
aWRlIGNvbnNvbGUubG9nKHdpbmRvdyldCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3
aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KKyAgICAgICAgICAgICAgICAiaW4iLCAv
LyBpbnRlcm5hbE9iamVjdC50ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3
aGVyZSBpbnNpZGUgaW50ZXJuYWxPYmplY3QudGVzdCgxKV0KKyAgICAgICAgICAgICAgICAiaW4i
LCAvLyBbU29tZXdoZXJlIGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQogICAgICAgICAg
ICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9KTsKQEAgLTU3LDYgKzc1LDYgQEAgZnVuY3Rp
b24gdGVzdCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
LTxwPkNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBu
b3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMuPC9wPgorPHA+Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNj
cmlwdHMgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUg
b2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBh
cnNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
UGFyc2VkLWV4cGVjdGVkLnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNk
YmZmOWYwMTg4Li42M2E2ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2Vk
LWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwg
U2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFT
UzogU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQ
QVNTOiBTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3Rv
ciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0
b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZl
IGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVh
NmJhMWQxMzU0OWQ5YTVmLi5kNjc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2Vk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5o
dG1sCkBAIC0xOSwxNCArMTksMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGlu
ZSA8c2NyaXB0PiAodGhpcykgc3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBi
b2R5IG9ubG9hZCBldmVudCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cK
ICAgICAvLyAgIC0gZXZhbCBzb3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3Bl
Y3RvciBpbnRlcm5hbCBzY3JpcHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmpzCiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNl
OwogICAgIGxldCBmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBm
b3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQg
Zm91bmRFdmFsU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2VTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlw
dCA9IGZhbHNlOwogICAgIGxldCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAg
IGZ1bmN0aW9uIGlzRXh0ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3Jp
cHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJv
ZHk+IGJlbG93LgorICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJh
bXMuc3RhcnRMaW5lID49IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQog
CiAgICAgZnVuY3Rpb24gaXNFdmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFy
YW1zLnNvdXJjZVVSTCA9PT0gImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5q
ZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMu
c291cmNlVVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJj
ZVVSTC5lbmRzV2l0aCgiLmpzIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGlu
ZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VV
UkwuaW5kZXhPZigiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQot
CiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJE
b21haW5BbmRDaGVja0luaXRpYWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKQEAgLTc5LDEwICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxT
Y3JpcHQocGFyYW1zKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJ
U291cmNlU2NyaXB0ICYmIGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNv
dXJjZVNjcmlwdCAmJiBpc0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQ
cm90b2NvbFRlc3QubG9nKCJVTkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1l
c3NhZ2VPYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNj
cmlwdCA9IHRydWU7CkBAIC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0
LCAiU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAg
ICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0
ZW5lclNjcmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIg
U2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5k
RXZhbFNjcmlwdCwgIlNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQs
ICJTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwot
ICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVB
UElTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3Vy
Y2UgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFm
b3VuZFVuZXhwZWN0ZWRTY3JpcHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQg
c2NyaXB0cy4iKTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDg4MzNhOGZkMmE2NWNjMmM4NDUyY2MzMDYwYmU2ODY0MmNiMDNhYjcu
LjQ2YTUzZjFlYzljZTI5OWVlZDVjMDc5NzRmZmMzMTUzNDU0YmRjZjcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxl
LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBP
YmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05T
T0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQogVGVzdCB0aGF0IGNlcnRhaW4gSW5qZWN0ZWRT
Y3JpcHRTb3VyY2Ugb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgog
CiAKQEAgLTgsMyArMTIsMjMgQEAgUEFTUzogUGF1c2VkLgogUEFTUzogUmVzdW1lZC4KIFBBU1M6
IEFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEu
CiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5w
cm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4K
K1BBU1M6IFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBi
ZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpB
cnJheS5wcm90b3R5cGUucHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6
IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUu
YWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVsi
YWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IElu
amVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1
bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKaW5k
ZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4uYTM0NDAzMDQyMzIw
ZjRhY2Y2MzIzODUwNDk5NmZkZGJhOTJiOGFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAgLTMsMzEgKzMsNDgg
QEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotLy8gTk9URTogTW9y
ZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBhZGRyZXNzZWQgYnk6Ci0vLyA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNv
dXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBi
dWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0ZXJhdGlvbigpIHsKK2Z1bmN0aW9uIHJlcGxh
Y2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgaW52b2tlT3Zl
cnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKICAgICBsZXQgY2FsbENvdW50ID0gMDsKLQotICAg
IGNvbnN0IG9yaWdpbmFsSXRlcmF0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yKTsKLSAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICAKKyAgICBsZXQg
b3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHByb3RvdHlwZSwgcHJvcGVydHkpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90
b3R5cGUsIHByb3BlcnR5LCB7CiAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICsrY2FsbENv
dW50OwotICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsSXRlcmF0b3IudmFsdWU7CisgICAgICAg
ICAgICByZXR1cm4gb3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IudmFsdWU7CiAgICAgICAgIH0K
ICAgICB9KTsKIAotICAgIGxldCBhcnJheSA9IFtdOworICAgIGRlYnVnZ2VyOworCisgICAgLy8g
UHJldmlldyBhbiBvYmplY3QuCisgICAgY29uc29sZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7CisK
KyAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbigpOworCisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlw
dG9yKTsKKworICAgIHJldHVybiBjYWxsQ291bnQ7Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VBbmRU
ZXN0T2JqZWN0KG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uKSB7
CisgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgCisgICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0g
ZXZhbChvYmplY3RTdHJpbmcpOworICAgIGV2YWwoYAorICAgICAgICAke29iamVjdFN0cmluZ30g
PSAoKSA9PiB7CisgICAgICAgICAgICArK2NhbGxDb3VudDsKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW5hbE9iamVjdCguLi5hcmd1bWVudHMpOworICAgICAgICB9OworICAgIGApOwogCiAgICAg
ZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFuIG9iamVjdC4KICAgICBjb25zb2xlLmxvZyh7
YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVzZSBBcnJheSBJdGVyYXRvciBhdCBsZWFzdCBv
bmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAgIGludm9rZU92ZXJyaWRkZW5P
YmplY3RGdW5jdGlvbigpOwogCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3Rv
dHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAgICBldmFsKGAke29i
amVjdFN0cmluZ30gPSBvcmlnaW5hbE9iamVjdDtgKTsKIAogICAgIHJldHVybiBjYWxsQ291bnQ7
CiB9CkBAIC0zNiwyMyArNTMsOTkgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJJbmplY3RlZFNjcmlwdC5PYnNlcnZh
YmxlIik7CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgZnVuY3Rpb24gYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3RvdHlwZVN0cmluZywg
cHJvcGVydHlTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9ufSkgeworICAg
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJv
dG90eXBlUHJvcGVydHkoJHtwcm90b3R5cGVTdHJpbmd9LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCBy
ZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChyZXN1bHQsIDEsIGAke3Byb3RvdHlwZVN0cmluZ31bJHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwg
Y291bnQgc2hvdWxkIGJlIDEuYCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVz
ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5j
YXRjaChyZWplY3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QucGFzcygiUmVzdW1lZC4iKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNl
KHtuYW1lLCBkZXNjcmlwdGlvbiwgb2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0
RnVuY3Rpb259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5h
bWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShg
cmVwbGFjZUFuZFRlc3RPYmplY3QoIiR7b2JqZWN0U3RyaW5nfSIsICR7aW52b2tlT3ZlcnJpZGRl
bk9iamVjdEZ1bmN0aW9uLnRvU3RyaW5nKCl9KTtgLCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7
b2JqZWN0U3RyaW5nfSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRQcm90
b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9i
c2VydmFibGU6QXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAotICAgICAgICBkZXNj
cmlwdGlvbjogIkFycmF5IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBi
ZSBvYnNlcnZhYmxlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJJdGVyYXRpb24oKWAsIChl
cnJvciwgcmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChyZXN1bHQsIDEsICJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLiIpOwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7Ci0gICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24g
aW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBw
cm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmlu
ZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1
bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAg
IGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRk
UHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlw
dC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBi
ZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUi
LAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGlu
dm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQg
c2V0ID0gbmV3IFNldDsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0KKyAgICAg
ICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVz
aCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3JpcHQg
c2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIkFy
cmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAorICAg
ICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAg
ICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAgICAg
fSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5v
dCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5
cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZva2VP
dmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9
IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsK
KworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0
Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4gSW5q
ZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmplY3RT
dHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb246
ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAgICB9
LAogICAgIH0pOwogCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJv
ci1leHBlY3RlZC50eHQKaW5kZXggZDQ0MjE3ZDM2MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUy
MzgxNi4uYWZiZDMyZDUwMzdlNTJhZTkwYzIzM2YyMmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vy
cm9yLWV4cGVjdGVkLnR4dApAQCAtMzEsNyArMzEsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51
bGw7IHRyeSB7IFtdLngueDsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAg
ICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmci
LAotICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJn
bG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBb
bmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAog
ICAgICJfZW50cmllcyI6IG51bGwKQEAgLTcwLDcgKzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3Ig
PSBudWxsOyB0cnkgeyBldmFsKCJpZigpIik7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBl
cnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUi
OiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2Jh
bCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dy
YXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBj
b2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVF4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93
cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjog
bnVsbApAQCAtMTA0LDcgKzEwNCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLnNwbGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7
CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAot
ICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBc
bmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAi
CisgICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2Rl
QFxuZXZhbHVhdGVXaXRoU+KApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxA
W25hdGl2ZSBjb2RlXSIKICAgICAgIH0sCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2Rl
IiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVt
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1
bW4tZXhwZWN0ZWQudHh0CmluZGV4IGJmY2FjOTg5ZWFjMGZiZDgwZTg1YWNjNjNjNGU3YzI4NmI4
N2EzODUuLjEyMzNlYjM5NDgxNzNiNDA3NmQzMzA5YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVj
dGVkLnR4dApAQCAtNjQsOCArNjQsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAg
ICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICAgICAidXJsIjogIiIsCiAg
ICAgICAgICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxp
bmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAg
ICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVt
bk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICAgICAgfQogICAgICAgICAgIF0sCiAgICAg
ICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzog
Q2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAg
ICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAg
ICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3Cisg
ICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51
bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQi
OiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0
ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwK
ICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1i
ZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVO
dW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVy
ZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIs
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4u
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmlu
ZGV4IDY3MmIzNTMzODAwY2JlMjU5ZWU4ODg3YWJlMTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0
ZTQ1NWQ4NjkzYzhkYWJlNDI5NTY0MzFkOTUxMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAvLyBUbyBhdm9pZCBmbGFraW5lc3MgcHJpbnQgb25seSBldmVudHMg
dGhhdCB3ZSBhbHdheXMgZXhwZWN0LgogICAgIGNvbnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNl
dChbIlJlbmRlcmluZ0ZyYW1lIiwgIkNvbnNvbGVQcm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAi
RnVuY3Rpb25DYWxsIl0pOworCisgICAgLy8gVGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQg
Y2FsbCBmcmFtZShzKSBoYXZlIGRpZmZlcmVudCBsaW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNl
IGFuZCBkZWJ1ZyBidWlsZHMuIFdlIG9ubHkKKyAgICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2
YWx1ZXMgZm9yIHRob3NlIHNwZWNpZmljIGNhbGwgZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBv
dGhlciBsaW5lL2NvbHVtbiBudW1iZXJzIHJlbWFpbiBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9u
TmFtZUxlbmd0aCA9IDA7CisgICAgbGV0IHVybExlbmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiBy
ZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAgIGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUi
KSB7CisgICAgICAgICAgICBmdW5jdGlvbk5hbWVMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAg
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChr
ZXkgPT09ICJjaGlsZHJlbiIgJiYgdGhpcy5zdGFydFRpbWUpCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWUuZmlsdGVyKGUgPT4gZXZlbnRBbGxvd2xpc3QuaGFzKGUudHlwZSkpOwogICAgICAgICBp
ZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBrZXkgPT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJz
Y3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJZCIpCiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0
ZXJlZD4iOworICAgICAgICBpZiAoKGtleSA9PT0gImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNv
bHVtbk51bWJlciIpICYmICFmdW5jdGlvbk5hbWVMZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiAiPGZpbHRlcmVkPiI7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInVybCIp
CisgICAgICAgICAgICB1cmxMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkg
PT09ICJ1cmwiIHx8IGtleSA9PT0gInNjcmlwdE5hbWUiKQogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlLnJlcGxhY2UoL14uK0xheW91dFRlc3RzXC9pbnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAg
cmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRl
eCAyNWY5MzBlMjkyMWY4ODljMTY0NzdmYmZhMTAyYTJkMWM3Njc3NjgwLi41NmQxODQwOGJkZGU5
YTdiMDcwMjM5NmI5NGY5Nzk3NmNmM2JkYWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1u
LWV4cGVjdGVkLnR4dApAQCAtNjAsOCArNjAsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4K
ICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgInVybCI6ICIiLAogICAg
ICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAibGluZU51bWJlciI6
IDE0MiwKLSAgICAgICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAibGluZU51bWJl
ciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4i
CiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAg
LTExMyw4ICsxMTMsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlv
bk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVy
ZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3
CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIi
OiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApA
QCAtMTY1LDggKzE2NSw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgImZ1bmN0
aW9uTmFtZSI6ICIiLAogICAgICAgInVybCI6ICIiLAogICAgICAgInNjcmlwdElkIjogIjxmaWx0
ZXJlZD4iLAotICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAiY29sdW1uTnVtYmVyIjog
OTcKKyAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgImNvbHVtbk51bWJl
ciI6ICI8ZmlsdGVyZWQ+IgogICAgIH0KICAgXSwKICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIs
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458490</attachid>
            <date>2022-04-27 21:20:02 -0700</date>
            <delta_ts>2022-05-03 13:30:03 -0700</delta_ts>
            <desc>Patch v1.2</desc>
            <filename>bug-152294-20220427212001.patch</filename>
            <type>text/plain</type>
            <size>146518</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDY3MjU1MTQ2ZmU1NjlmZjNjNjQ1MGIwNzI1MGU1ZmRjOWI2ZTcyLi42YWI0NDNkOTc3NzdjZmNk
YmJiZWI4MzY4NTRlNTM2MTliNTQ0OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNC0yNyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIG5ldyB0ZXN0IGNhc2VzIGluIGBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbGAKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBCdWlsZCBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBhIHBsYWluIGhlYWRlciBmaWxl
IGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93a2J1aWx0
aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJp
bmcpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAg
ICAgICAtIEluc3BlY3RvckluamVjdGVkU2NyaXB0IGNvbnRhaW5zIHVuYmFsYW5jZWQgY3VybHkg
YnJhY2tldHMgaW5zaWRlIHF1b3Rlcy4gVGhlIGdlbmVyYXRpb24gb2YgYnVpbHRpbnMgaXMgbm93
CisgICAgICAgIGhhcmRlbmVkIGFnYWluc3QgdGhpcy4gUHJldmlvdXNseSBhbGwgY3VybHkgYnJh
Y2tldHMgd2VyZSBjb3VudGVkLCB3aGljaCBtZWFudCB0aGF0IHRoZSBzb3VyY2UgY29kZSB3b3Vs
ZCBiZSBjdXQKKyAgICAgICAgb2ZmIGVhcmxpZXIgdGhhbiB0aGUgYWN0dWFsIGVuZCBvZiB0aGUg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgor
ICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAg
ICAgICAtIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIHVzZXMgZGVzdHJ1Y3R1cmluZyB0
byBnZXQgdGhlIGBSZW1vdGVPYmplY3RgIGFuZCBgQ29tbWFuZExpbmVBUElgIGNsYXNzZXMgYXQK
KyAgICAgICAgaW5zdGFudGlhdGlvbi4gV2UgbmVlZCB0byB0cmVhdCB0aGlzIGRlc3RydWN0dXJl
IGFzIGEgc2luZ2xlIHBhcmFtZXRlciwgb3RoZXJ3aXNlIGRlYnVnIGFzc2VydGlvbnMgd2lsbCBj
YXRjaAorICAgICAgICB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBwYXJhbWV0ZXIgY291bnRzLgor
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAtIEFkZCBzeW1ib2xzIHRoYXQgd2UgbmVlZCB0
byBoYXZlIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mLCBhbmQgZm9yIHNvbWUgb2YgdGhvc2Ugc3ltYm9s
cyBtYWtlIHRoZW0gbGluay10aW1lIGNvbnN0YW50cy4KKworICAgICAgICAqIGJ1aWx0aW5zL0l0
ZXJhdG9ySGVscGVycy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYnVpbHRpbkl0ZXJhYmxl
LndyYXBwZXIuaXRlcmF0b3IpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5idWlsdGluSXRlcmFi
bGUpOgorICAgICAgICAtIEFkZCBhIHJldXNhYmxlIGhlbHBlciB0aGF0IHRha2VzIHRoZSByZWFs
IGl0ZXJhdG9yIGZvciBhbiBpdGVyYWJsZSwgYW5kIHByb3ZpZGVzIGEgd3JhcHBlciB0aGF0IHVz
ZXMgdGhlIHJlYWwKKyAgICAgICAgaXRlcmF0b3IuIFdoZW4gdXNlZCB3aXRoIGEgZm9yLW9mIGxv
b3AsIHRoaXMgcHJldmVudHMgdGhlIGl0ZXJhdGlvbiBmcm9tIGJlaW5nIG9ic2VydmFibGUvb3Zl
cnJpZGRlbiBieSBzY3JpcHQKKyAgICAgICAgYXV0aG9ycy4KKyAgICAgICAgCisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNv
dXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oOgorICAgICAgICAtIFVzZSB0aGUgbmV3IGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIElu
amVjdGVkIFNjcmlwdCBjcmVhdGlvbiBmdW5jdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmg6CisgICAgICAgIC0gSW5qZWN0ZWQgbW9kdWxlcyBhcmUgbm93IHByb3Zp
ZGVkIGFzIGEgSlNGdW5jdGlvbiwgbm90IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgLSBVc2UgcHJpdmF0ZSBz
eW1ib2xzIHRocm91Z2hvdXQgdG8gZW5zdXJlIHdlIGdldCBub24tb2JzZXJ2YWJsZSwgbm9uLW92
ZXJyaWRkZW4gdmVyc2lvbnMgb2YgZnVuY3Rpb25zIGFuZCB2YWx1ZXMuCisgICAgICAgIC0gSW4g
bWFueSBjYXNlcywgdGhpcyBpcyBhIDE6MSBtYXBwaW5nIHdoZXJlIHRoZSBuZXcgc3ltYm9sIGlz
IGp1c3QgcHJlZml4ZWQgd2l0aCBhbiBgQGAuCisgICAgICAgIC0gRm9yIHB1c2hpbmcgdmFsdWVz
IHRvIGFycmF5cywgdXNlIGBAYXJyYXlQdXNoYCwgdGhlIGJ1aWx0aW4gd2F5IG9mIHB1c2hpbmcg
YSB2YWx1ZSBpbnRvIGFuIGFycmF5LgorICAgICAgICAtIEZvciB0aGUgYFN5bWJvbGAgY29uc3Ry
dWN0b3IsIGp1c3QgdXNlIHRoZSBleGlzdGluZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGluc3Rl
YWQgb2YgZXhwb3NpbmcgYSBwcml2YXRlCisgICAgICAgIHZlcnNpb24gb2YgdGhlIGBTeW1ib2xg
IGNvbnN0cnVjdG9yLgorICAgICAgICAtIEZvciBmb3Itb2YgbG9vcHMsIHdyYXAgdGhlIGl0ZXJh
YmxlIHdpdGggYEBidWlsdGluSXRlcmFibGVgLgorICAgICAgICAtIGBTeW1ib2wudG9TdHJpbmdU
YWdgIGlzIGNvbnZlcnRlZCB0byBgQEB0b1N0cmluZ1RhZ2AsIHRoZSBwcml2YXRlIHZlcnNpb24g
b2YgdGhhdCBzeW1ib2wuCisgICAgICAgIC0gYE1hdGgubWF4YCBpbiBgUmVtb3RlT2JqZWN0LnBy
b3RvdHlwZS5fZ2VuZXJhdGVQcmV2aWV3YCBub3cgdXNlcyBhIGhlbHBlciBmdW5jdGlvbiB0aGF0
IHBlcmZvcm1zIGEgY29tcGFyaXNvbgorICAgICAgICBpbnN0ZWFkIG9mIGV4cG9zaW5nIGJvdGgg
TWF0aCBhbmQgTWF0aC5tYXggYXMgcHJpdmF0ZSBidWlsdGlucy4KKyAgICAgICAgLSBPYmplY3Rz
IGFyZSBub3cgY3JlYXRlZCB1c2luZyBAT2JqZWN0LkBjcmVhdGUgaW5zdGVhZCBvZiB7fSBzeW50
YXguCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgLSBBZGQgdGhlIGxpbmUgbnVtYmVyIHRvIGJ1aWx0aW4gY29tcGlsYXRpb24gbG9n
Z2luZyB0byBoZWxwIGlkZW50aWZ5IHdoZXJlIHNvbWV0aW1lcyBhbWJpZ3VvdXMgZXJyb3JzIG9j
Y3VycmVkLgorCisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgLSBFeHBvc2UgbmVjZXNzYXJ5IGZ1bmN0aW9ucy9jb25zdHJ1Y3RvcnMgdmlh
IHRoZWlyIHByaXZhdGUgbmFtZSBmb3IgdXNlIGluIEluamVjdGVkU2NyaXB0U291cmNlLmpzIGFu
ZAorICAgICAgICBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworCisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIC0gQWRkIGEgbGluay10aW1lIGNv
bnN0YW50IGZvciB0aGUgU3RyaW5nIGNvbnN0cnVjdG9yLgorICAgICAgICAtIEFkZCBoZWxwZXJz
IGZvciBKU09OIHBhcnNpbmcvc2VyaWFsaXphdGlvbi4KKwogMjAyMi0wNC0yNyAgRG1pdHJ5IEJl
emhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLUdDXSBJ
bnRyb2R1Y2UgcnR0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4YzVlOTkwN2M3Y2RlYjdjMTUzZDNj
OGY4MzUzNGZmNTQ5ZmE3ZS4uMmYxNjljN2JjYWE0MGI4MDgyZGE1NWNiYWQ1ZTQ0ZTU1ODVlM2Y5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTA0LTI3ICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBjb250YWluaW5nIGl0
cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9k
dWxlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1
bGU6OnNvdXJjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmg6CisgICAgICAgIC0gUHJvdmlkZSBhIEpTRnVuY3Rpb24gZm9yIG1vZHVs
ZSBpbmplY3Rpb24gaW5zdGVhZCBvZiByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM6CisgICAgICAgIC0gU2ltaWxhciB0
byBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMsIHVzZSBw
cml2YXRlIG5hbWVzIGZvciBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMKKyAgICAgICAgdGhyb3Vn
aG91dCB0byBnZXQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdGlucy4KKyAgICAgICAgLSBJbiBg
bm9ybWFsaXplRXZlbnRUeXBlc2AgdXNlIGEgU2V0IGluc3RlYWQgb2YgYW4gYXJyYXksIHNpbmNl
IHdlIGFyZSBwcm9jZXNzaW5nIHVzZXItcHJvdmlkZWQgdHlwZXMgdGhhdCBtYXkKKyAgICAgICAg
YmUgcmVwZWF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBhbGwg
dGhlIHR5cGVzIHRvIGluc2VydCB0aGVtIGluIHRoZSBzZXQsIGJ1dCBzaW5jZQorICAgICAgICBg
QGFycmF5UHVzaGAgZG9lc24ndCBzdXBwb3J0IHB1c2hpbmcgbXVsdGlwbGUgdmFsdWVzIGF0IHRo
ZSBzYW1lIHRpbWUgdGhpcyBpcyBubyBtb3JlIHdvcmsgdGhhbiB1c2luZyBhbiBBcnJheS4KKwog
MjAyMi0wNC0yNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gVHJhY2sgaGFuZGxpbmcgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBjMGE5ZTJhN2U4MDJkYjk0ODU3Njc0ZjI5Yjg3OTc2ZDljNTZlMjBk
Li43NmNiMDVlZTQ2ZWRmNTlhYTI4YTBjOTZjNTRiODFiMGY5NzYxMGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
VHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVp
bHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTE0
MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NCdWlsdGlucy5oCiApCiAK
LWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2YVNjcmlwdENvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgTUFJTl9E
RVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5w
bCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5IDwgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+PiAke0ph
dmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAke0phdmFTY3JpcHRDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgKLSAg
ICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0phdmFT
Y3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgpCi0K
IGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9UIEVOQUJMRV9DX0xPT1Ap
CiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA4ZDU0MGJkNTE5
MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYxZDMwNjA3ZThhNmZiNTE0
M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsyMSw2IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0ZWRXYXNt
T3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNtCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdFdhc20uYXNtCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4YTFiYTEzYzA5NWY3ZTE1
NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0ZjBkNDRlNWIzNWYwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY4LDcgKzY4
LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFTY3JpcHRDb3JlKS9TY3Jp
cHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVkU2NyaXB0U291cmNlLmgg
XAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIFJlZ0V4cEpp
dFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25z
dHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvV2ViQXNzZW1ibHku
anMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNv
bnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywgc28KQEAgLTM2OCwxMiAr
MzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyA6IENvbWJpbmVk
RG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwpICQoSmF2YVNjcmlwdENv
cmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5wbCAtLWlucHV0IGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZpbmVzICIkKEZFQVRVUkVf
QU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSAkKEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIvLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gLi9JbmplY3RlZFNjcmlw
dFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
anNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0lu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0JJChERUxF
VEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BDT0RFX0ZJTEVTID0gXAog
ICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNzljOGRjZGIxZWU5NjgzNGE3MDk2YWQ2MzIwOTAyODAxMjAyMDBl
NS4uMmZhOTI3ZTJjMWYwYjU1OWZkNDUwN2QzMmVlMzE1YzM3OTVhODg2YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJCUE1MTNFNUJFMTg1QkZB
Q0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhv
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNF
NUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwogCQlB
NTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJE
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovOyB9
OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM2MTg1
Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovOyB9OwogCQlBNTEzRTVD
QjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDOTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAwRjNDN0NCIC8qIEluamVj
dGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkM5NUZG
MjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0QyMTU5RDQxRTAwRkNEODI2
IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NjQsNiArMzc2Myw3IEBACiAJCTJBRDJFREZBMTk3OTlF
MzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1
IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU2hhZG93
UmVhbG1Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVE
RjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBlRGVmaW5pdGlvbklubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBDNEYyN0I5NENFNDAwMzA4
MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDcyMCw3ICs0NzIwLDYgQEAKIAkJQTUxM0U1QkMxODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QkQxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291
cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEzRTVDNjE4NUY5NDM2MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDOTE4NUY5NjI0
MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg3LDcgKzcyODYsNiBA
QAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAq
LywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFz
bSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCkBAIC05MzY2LDYgKzkz
NjQsNyBAQAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVEMDA1NDUyNEQgLyogU2V0
SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8q
IFNldFByb3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMwMDAzNzFBMjUgLyogU2hh
ZG93UmVhbG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1RDlCMTAwOURCMUVGIC8q
IFN0cmluZ0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2NUQ5QjEwMDlEQjFFRiAv
KiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUwNDUxQjFDMjVCNEIxMDBC
QjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTUsNyArMTA0NTQsNiBAQAog
CQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3QjdCODYwMDg0M0IxMCAv
KiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUxM0U1QzcxODVG
OTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVl
dHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1QkI2OTFEMTIwNTBFMDAx
OUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDhBN0JGMDFCODI5
NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9k
ZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5z
X21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRmNWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcu
LjM4NzRkZDQyZjI3NjBmMzRlODZkOGRjODE4NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19t
b2RlbC5weQpAQCAtNTIsNiArNTIsNyBAQCBmdW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21w
aWxlKHIiKGFzeW5jKT9ccypmdW5jdGlvbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rp
b25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1V
TFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5j
b21waWxlKHIiLipeQG92ZXJyaWRkZW5OYW1lPShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3lu
Y1xzKyk/ZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcr
KSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJz
U3BsaXR0ZXIgPSByZS5jb21waWxlKHIiLFxzKig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8
IHJlLkRPVEFMTCkKIAogbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wq
Lio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVn
RXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkK
QEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBCdWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25h
a2VkX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25OYWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1
bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQogICAgICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoK
ICAgICAgICAgICAgIGlzX2NvbnN0cnVjdG9yID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0g
W3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0
aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlw
KCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJh
bWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVu
KHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAt
MzAzLDIxICszMDQsNTUgQEAgY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5j
dGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAg
ICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0
YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4
dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0g
ZW5kICsgMQorICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAg
ICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGls
ZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAgICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAg
ICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRl
eHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0g
ICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisg
ICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAg
ICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2Nh
cGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hh
cmFjdGVyCisgICAgICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJy
ZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJl
bnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
aXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgICMgRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFy
IGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5iYWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2Ug
dGhlIG9uZQorICAgICAgICAgICAgICAgICMgZm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2An
cyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNlIHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVp
bmcKKyAgICAgICAgICAgICAgICAjIGluc2lkZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFy
b3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBzdHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNo
IGxpbmUKKyAgICAgICAgICAgICAgICAjICh1bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRl
IHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVubGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250
YWlucworICAgICAgICAgICAgICAgICMgdW5iYWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNs
b3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJlIGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMg
dGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFu
IHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9
PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAg
ICAgICAgICAgZGVwdGggKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3Rl
ciA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAg
ZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkp
CiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZv
ciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDliOWFiNzVj
NmQ3NWFhNzNmN2UxOGQ2OWZlMmE4ODc3YWVkNWFiNDguLmExZDNjOTNiZTI3YTM4ZDBhZWViZDc1
MDc1ZDY1MGMxZjk2N2ZiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFMKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJz
U3RhcnQgKyAxOwogICAgICAgICB1bnNpZ25lZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGlu
c2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsKICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZh
bHNlOwogICAgICAgICBib29sIGhhc1Jlc3RQYXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewpAQCAtMTEzLDcgKzExNCwxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBp
ZiAoY2hhcmFjdGVyc1tpXSA9PSAnfScpCisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFj
a2V0cyA9IGZhbHNlOworICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycg
fHwgaW5zaWRlQ3VybHlCcmFja2V0cykgeworICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJh
Y2tldHMgPSB0cnVlOworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAg
ICAgICAgICAgICAgKytjb21tYXM7CiAgICAgICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+
Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tpXSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFy
YW0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCmluZGV4IDU0ODNlODcxZTc0M2E5YTEyYjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFm
YTJkNWIyZmIxYTE3NTdlMWUxMDVjZWMzMWI5NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oY3JlYXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNy
byhpc1JlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8o
anNvblBhcnNlKSBcCisgICAgbWFjcm8oanNvblN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmlu
ZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAorICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFj
cm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlO
YW1lcykgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhh
c093bikgXAorICAgIG1hY3JvKGluZGV4T2YpIFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1l
c3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0
ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNlNDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3
N2VlMmY0Li4xMDM5ZTIxOWE5MWM1Mjc4MDM0NTBmNWFlNDZmMGU4ZjE1OGI2YWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAg
LTUxLDMgKzUxLDI0IEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAg
ICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0K
IH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5JdGVyYWJsZShpdGVyYWJsZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgCisgICAgLy8gZm9yLW9mIGxvb3BzIGxvb2sgdXAg
dGhlIEBAaXRlcmF0b3IgcHJvcGVydHksIHdoaWNoIGlzIG9ic2VydmFibGUgaWYgdGhlIHVzZXIg
ZGVmaW5lZCBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4KKyAgICAvLyBUbyBhdm9pZCB0aGlzLCBj
cmVhdGUgYSB3cmFwcGVyIG9iamVjdCB3aGVyZSBAQGl0ZXJhdG9yIHJldHVybnMgdGhlIGFjdHVh
bCBpdGVyYXRvci4KKyAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKGl0ZXJhYmxlKSkKKyAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluSXRlcmFibGUgcmVxdWlyZXMgdGhhdCB0aGUgYGl0
ZXJhYmxlYCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7CisKKyAgICBsZXQgaXRlcmF0b3JG
dW5jdGlvbiA9IGl0ZXJhYmxlLkBAaXRlcmF0b3I7CisgICAgaWYgKCFAaXNDYWxsYWJsZShpdGVy
YXRvckZ1bmN0aW9uKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluSXRlcmFibGUg
cmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgYGl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl1gIGJl
IGEgZnVuY3Rpb24uIik7CisKKyAgICBsZXQgaXRlcmF0b3IgPSBpdGVyYXRvckZ1bmN0aW9uLkBj
YWxsKGl0ZXJhYmxlKTsKKyAgICBsZXQgd3JhcHBlciA9IHt9OworICAgIHdyYXBwZXIuQEBpdGVy
YXRvciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKworICAgIHJldHVybiB3cmFw
cGVyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtU
aW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMy4u
Yjg2NTNlODY1Njk5MzFmY2JiNmUyZjRiNDI1NDhjNGIwYzZlMTM3MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMjAsNiAr
MTIwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlv
biwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
YXJyYXlTb3J0LCBudWxscHRyKSBcCisgICAgdihqc29uUGFyc2UsIG51bGxwdHIpIFwKKyAgICB2
KGpzb25TdHJpbmdpZnksIG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAK
ICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5
NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
ICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0Lmgi
Ci0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBA
IC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNl
cHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUo
KTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmpl
Y3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19
Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBO
YWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUg
c291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFs
VGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5k
bGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0g
ICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwg
c291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2
YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFm
dW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERh
dGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50
eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVk
PEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpj
cmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUs
IGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2Nv
cGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBA
IC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGds
b2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlw
dChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNy
ZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAg
IGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0
LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJ
bmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAg
ICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6
ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCku
dXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xu
IiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFs
dWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9i
amVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJj
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4
YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFw
PEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRl
OgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6
SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAg
ICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVh
dGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAogICAgIElu
c3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlw
dEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2
ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdm
ZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQog
ICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9k
dWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9y
LT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4
KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBz
b3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlz
Qm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigp
KSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFu
ZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3Qo
KSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0
TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
CiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBzdGFj
a1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICclcyc6ICVz
ICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0
cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwg
Y29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5
YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0Zjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFu
YWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVi
bGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9k
dWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3Qo
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJm
MWViNzFiOGM0OTI1ZjZjNC4uYjI3OTlhY2Y1ZmEzYzJkYjA3YjI3YmZlZGQ5NjExNmMzMTM5MTEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMg
c291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLQotKGZ1
bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0
ZWRTY3JpcHRJZCkgewotCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4g
V2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0
byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwotCi12YXIgT2Jq
ZWN0ID0ge30uY29uc3RydWN0b3I7CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5z
cGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsK
LSAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAgcmV0dXJuIEBTdHJpbmcob2JqKTsKIH0KIAog
ZnVuY3Rpb24gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmopCkBAIC05NCw2ICs5MCwyOCBAQCBmdW5j
dGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQogICAgIH0KIH0KIAorZnVuY3Rpb24gY3JlYXRl
T2JqZWN0KC8qIGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUyLCAuLi4qLykgeworICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiYGNy
ZWF0ZU9iamVjdGAgcmVxdWlyZXMgdGhhdCBlYWNoIGtleSBhcmd1bWVudCBiZSBmb2xsb3dlZCBi
eSBhIHZhbHVlLCByZXN1bHRpbmcgaW4gYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpOwor
CisgICAgbGV0IG9iamVjdCA9IG5ldyBAT2JqZWN0OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
YXJndW1lbnRzLmxlbmd0aDsgaSArPSAyKQorICAgICAgICBvYmplY3RbYXJndW1lbnRzW2ldXSA9
IGFyZ3VtZW50c1tpICsgMV07CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitmdW5jdGlvbiBn
ZXRPd25Qcm9wZXJ0eShvYmplY3QsIGtleSkgeworICAgIGlmICghQE9iamVjdC5AaGFzT3duKQor
ICAgICAgICByZXR1cm4gb2JqZWN0W2tleV07CisKKyAgICByZXR1cm4gQE9iamVjdC5AaGFzT3du
KG9iamVjdCwga2V5KSA/IG9iamVjdFtrZXldIDogQHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24g
bWF4KGEsIGIpIHsKKyAgICByZXR1cm4gYSA+IGIgPyBhIDogYjsKK30KKwogLy8gLS0tLS0tLQog
CiBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdApAQCAtMTAxLDEyICsx
MTksMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICBj
b25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7
Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lk
VG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307
Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKKyAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRP
YmplY3QgPSBjcmVhdGVPYmplY3QoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFt
ZSA9IGNyZWF0ZU9iamVjdCgpOworICAgICAgICB0aGlzLl9vYmplY3RHcm91cHMgPSBjcmVhdGVP
YmplY3QoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IGNyZWF0ZU9iamVjdCgpOwogICAgICAg
ICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0cyA9IFtdOworICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBuZXcgQEFycmF5OwogICAg
IH0KIAogICAgIC8vIEluamVjdGVkU2NyaXB0IEMrKyBBUEkKQEAgLTExNSw3ICsxMzMsNyBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBp
c0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1
YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmpl
Y3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNh
bGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7
CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTM2LDE2ICsxNTQsMTYgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlKSkg
eworICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgQFByb21pc2UpKSB7CiAg
ICAgICAgICAgICBjYWxsYmFjaygiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgaXMgbm90IGEgUHJvbWlz
ZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IHJlc29s
dmUgPSAodmFsdWUpID0+IHsKLSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAg
ICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJl
bW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5
VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IGNyZWF0ZU9iamVjdCgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3du
IiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUo
dmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJl
dmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCkgewog
ICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5LDcgKzE3
Nyw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9j
cmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKICAgICAg
ICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAg
ICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAKICAgICBl
dmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24s
IG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCwxNCArMTk4LDE0IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZpbmVkKG9i
amVjdCkpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdp
dmVuIGlkIjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107CisgICAgICAgIGxldCBy
ZXNvbHZlZEFyZ3MgPSBuZXcgQEFycmF5OwogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAg
ICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwogICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9
IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIxNSwxMCBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVvZiBm
dW5jICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVz
c2lvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAg
IHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRB
cmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0g
ICAgICAgICAgICB9OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdCgKKyAgICAgICAg
ICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJl
bW90ZU9iamVjdC5jcmVhdGUoZnVuYy5AYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmpl
Y3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAg
ICApOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3Jl
YXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICAgICAgfQpAQCAtMjMzLDEz
ICsyNTEsMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICBnZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBvd25Qcm9wZXJ0aWVzLCBmZXRjaFN0YXJ0LCBmZXRj
aENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICBsZXQgY29sbGVjdGlvbk1v
ZGUgPSBvd25Qcm9wZXJ0aWVzID8gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJv
cGVydGllcyA6IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3BlcnRpZXM7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9k
ZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlld30pOworICAgICAgICBy
ZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIGNyZWF0
ZU9iamVjdCgiZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsICJmZXRjaENvdW50IiwgZmV0Y2hDb3Vu
dCwgImdlbmVyYXRlUHJldmlldyIsIGdlbmVyYXRlUHJldmlldykpOwogICAgIH0KIAogICAgIGdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyhvYmplY3RJZCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwg
Z2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0gSW5q
ZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcyB8IEluamVjdGVkU2NyaXB0
LkNvbGxlY3Rpb25Nb2RlLk5hdGl2ZUdldHRlclByb3BlcnRpZXM7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQs
IGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldywgbmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVl
fSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0
aW9uTW9kZSwgY3JlYXRlT2JqZWN0KCJmZXRjaFN0YXJ0IiwgZmV0Y2hTdGFydCwgImZldGNoQ291
bnQiLCBmZXRjaENvdW50LCAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LCAibmF0
aXZlR2V0dGVyc0FzVmFsdWVzIiwgdHJ1ZSkpOwogICAgIH0KIAogICAgIGdldEludGVybmFsUHJv
cGVydGllcyhvYmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3KQpAQCAtMjU2LDcgKzI3NCw3IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGRl
c2NyaXB0b3JzID0gdGhpcy5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CiAg
ICAgICAgIGlmICghZGVzY3JpcHRvcnMpCi0gICAgICAgICAgICByZXR1cm4gW107CisgICAgICAg
ICAgICByZXR1cm4gbmV3IEBBcnJheTsKIAogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRl
c2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IGRl
c2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICsyOTgsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQg
ZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlw
ZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgcmV0dXJuIGVudHJp
ZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIEBidWls
dGluSXRlcmFibGUoZW50cmllcykpIHsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3Rl
T2JqZWN0LmNyZWF0ZShlbnRyeS52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7
CiAgICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnku
a2V5ID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFs
c2UsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNh
bGxBcmd1bWVudEpTT04pCkBAIC0zMDYsMTAgKzMyNCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxl
dCByZXN1bHQgPSBuZXcgQEFycmF5OwogICAgICAgICBsZXQgZGVwdGggPSAwOwogICAgICAgICBk
byB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1l
UHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJlc3Vs
dCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkp
OwogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAgfSB3
aGlsZSAoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNiw3ICszNDQs
NyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHdyYXBK
U09OU3RyaW5nKGpzb25TdHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsK
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoSlNPTi5w
YXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChAanNvblBhcnNlKGpzb25TdHJpbmcpLCBn
cm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIH0gY2F0Y2ggewogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KQEAgLTM0MywxMiArMzYxLDEyIEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGNv
bHVtbk5hbWVzID0gbnVsbDsKICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5zID09PSAic3RyaW5n
IikKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbY29sdW1uc107CisgICAgICAgICAgICBjb2x1bW5z
ID0gbmV3IEBBcnJheShjb2x1bW5zKTsKIAogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0
LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAgIGNvbHVtbk5hbWVz
ID0gW107CisgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IG5ldyBAQXJyYXk7CiAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAg
ICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7CisgICAgICAgICAgICAg
ICAgQGFycmF5UHVzaChjb2x1bW5OYW1lcywgdG9TdHJpbmcoY29sdW1uc1tpXSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUodGFibGUsICJjb25zb2xl
IiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKQEAgLTM5Niw3ICs0MTQsNyBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAob2JqZWN0R3Jv
dXBOYW1lID09PSAiY29uc29sZSIpIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVz
dWx0OwogICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAg
ICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgICAgICB0aGlzLl9zYXZlZFJl
c3VsdHMgPSBuZXcgQEFycmF5OwogICAgICAgICB9CiAKICAgICAgICAgbGV0IGdyb3VwID0gdGhp
cy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00MjksMTQgKzQ0NywxMyBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4g
dGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291
cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVGdW5jdGlvbiwgaG9zdCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxzZTsKIAotICAgICAgICBs
ZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291
cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3BlY3RvcjogYSBmdW5jdGlv
biB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAgIG1vZHVsZUZ1bmN0aW9u
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIGhvc3QpOworICAgICAg
ICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVj
dCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgY3JlYXRlT2JqZWN0KCJSZW1vdGVPYmplY3QiLCBS
ZW1vdGVPYmplY3QsICJDb21tYW5kTGluZUFQSSIsIENvbW1hbmRMaW5lQVBJKSwgaG9zdCk7CiAK
ICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7CiAgICAgfQpAQCAtNDcwLDEwICs0
ODcsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgewogICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5f
b2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CiAgICAgICAgICAgICBpZiAoIWdyb3VwKSB7
Ci0gICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAgICAgICBncm91cCA9IG5l
dyBAQXJyYXk7CiAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3Vw
TmFtZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2goaWQp
OworICAgICAgICAgICAgQGFycmF5UHVzaChncm91cCwgaWQpOwogICAgICAgICAgICAgdGhpcy5f
aWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5hbWU7CiAgICAgICAgIH0KIApA
QCAtNDg4LDggKzUwNSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAKICAgICBfZmFsbGJhY2tXcmFwcGVyKG9iamVjdCkKICAgICB7Ci0gICAgICAgIGxldCBy
ZXN1bHQgPSB7fTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAg
ICBsZXQgcmVzdWx0ID0gY3JlYXRlT2JqZWN0KCJ0eXBlIiwgdHlwZW9mIG9iamVjdCk7CiAgICAg
ICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCiAgICAgICAgICAgICByZXN1bHQudmFs
dWUgPSBvYmplY3Q7CiAgICAgICAgIGVsc2UKQEAgLTUxNSw3ICs1MzEsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuIHJlc29s
dmVkQXJnOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAg
cmV0dXJuIEB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93blZhbHVlKHZhbHVl
LCBvYmplY3RHcm91cCkKQEAgLTUyNCwxMCArNTQwLDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICByZW1vdGVP
YmplY3QuZGVzY3JpcHRpb24gPSB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKTsKICAgICAgICAg
fSBjYXRjaCB7IH0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHdhc1Rocm93bjogdHJ1
ZSwKLSAgICAgICAgICAgIHJlc3VsdDogcmVtb3RlT2JqZWN0Ci0gICAgICAgIH07CisgICAgICAg
IHJldHVybiBjcmVhdGVPYmplY3QoCisgICAgICAgICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAg
ICAgICAgICAgICJyZXN1bHQiLCByZW1vdGVPYmplY3QsCisgICAgICAgICk7CiAgICAgfQogCiAg
ICAgX2V2YWx1YXRlQW5kV3JhcChldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgb2Jq
ZWN0R3JvdXAsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVy
bkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTU1MiwxMCArNTY4LDEw
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKIAotICAgICAgICAg
ICAgbGV0IHJldHVybk9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNl
LAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9i
amVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9
OworICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IGNyZWF0ZU9iamVjdCgKKyAgICAgICAg
ICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJl
bW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2Vu
ZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAKICAgICAgICAgICAgIGlmIChzYXZlUmVz
dWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgpCiAgICAgICAgICAgICAgICAgcmV0dXJuT2Jq
ZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4OwpAQCAtNTcxLDcg
KzU4Nyw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAg
ICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7CiAgICAgICAgIGlmIChpbmNsdWRlQ29tbWFu
ZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFu
ZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBudWxsKTsKLSAgICAg
ICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExp
bmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLkBjYWxsKG9iamVjdCwgZXhwcmVz
c2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0KIAogICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BD
YWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNTg0LDggKzYwMCwxMyBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4gY2FsbEZyYW1lOwog
ICAgIH0KIAotICAgIF9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwge2Zl
dGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldywgbmF0aXZlR2V0dGVyc0FzVmFs
dWVzfSkKKyAgICBfZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIG9wdGlv
bnMgPSBjcmVhdGVPYmplY3QoKSkKICAgICB7CisgICAgICAgIGxldCBmZXRjaFN0YXJ0ID0gZ2V0
T3duUHJvcGVydHkob3B0aW9ucywgImZldGNoU3RhcnQiKTsKKyAgICAgICAgbGV0IGZldGNoQ291
bnQgPSBnZXRPd25Qcm9wZXJ0eShvcHRpb25zLCAiZmV0Y2hDb3VudCIpOworICAgICAgICBsZXQg
Z2VuZXJhdGVQcmV2aWV3ID0gZ2V0T3duUHJvcGVydHkob3B0aW9ucywgImdlbmVyYXRlUHJldmll
dyIpOworICAgICAgICBsZXQgbmF0aXZlR2V0dGVyc0FzVmFsdWVzID0gZ2V0T3duUHJvcGVydHko
b3B0aW9ucywgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIpOworCiAgICAgICAgIGxldCBwYXJzZWRP
YmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQpOwogICAgICAgICBsZXQgb2Jq
ZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQpOwogICAgICAgICBsZXQgb2Jq
ZWN0R3JvdXBOYW1lID0gdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5p
ZF07CkBAIC02MDcsNyArNjI4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgX19wcm90b19fIGF0IHRoZSBlbmQs
IGJ1dCBvbmx5IGZvciB0aGUgZmlyc3QgZmV0Y2guCiAgICAgICAgIGxldCBpbmNsdWRlUHJvdG8g
PSAhc3RhcnQ7CiAKLSAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxldCBk
ZXNjcmlwdG9ycyA9IG5ldyBAQXJyYXk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQcm9wZXJ0eURl
c2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+IHsKICAgICAg
ICAgICAgIGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0OwpAQCAtNjIy
LDEzICs2NDMsMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShk
ZXNjcmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcp
OwogICAgICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAgICAgICAgICAg
ICAgZGVzY3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3Iuc3lt
Ym9sLCBvYmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNj
cmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3Ip
OwogCiAgICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRlc2NyaXB0b3Jz
Lmxlbmd0aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3RvX18iKQogICAg
ICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0
b3A7CiAKICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49
IGNvdW50KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcCA6IEluamVj
dGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAgIH0sIHtuYXRp
dmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBjcmVhdGVPYmpl
Y3QoIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlcywgImluY2x1
ZGVQcm90byIsIGluY2x1ZGVQcm90bykpOwogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAg
ICAgfQogCkBAIC02MzgsMzEgKzY1OSwzNCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWludGVybmFsUHJvcGVydGllcykKICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAg
ICBsZXQgZGVzY3JpcHRvcnMgPSBuZXcgQEFycmF5OwogICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgbGV0IHBy
b3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0
b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZhbHVlfTsKKyAgICAg
ICAgICAgIGxldCBkZXNjcmlwdG9yID0gY3JlYXRlT2JqZWN0KCJuYW1lIiwgcHJvcGVydHkubmFt
ZSwgInZhbHVlIiwgcHJvcGVydHkudmFsdWUpOwogICAgICAgICAgICAgaWYgKGNvbXBsZXRlRGVz
Y3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
ZGVzY3JpcHRvcnM7CiAgICAgfQogCi0gICAgX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2Jq
ZWN0LCBjb2xsZWN0aW9uTW9kZSwgY2FsbGJhY2ssIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGlu
Y2x1ZGVQcm90b30pCisgICAgX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xs
ZWN0aW9uTW9kZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSBjcmVhdGVPYmplY3QoKSkKICAgICB7Cisg
ICAgICAgIGxldCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMgPSBnZXRPd25Qcm9wZXJ0eShvcHRpb25z
LCAibmF0aXZlR2V0dGVyc0FzVmFsdWVzIik7CisgICAgICAgIGxldCBpbmNsdWRlUHJvdG8gPSBn
ZXRPd25Qcm9wZXJ0eShvcHRpb25zLCAiaW5jbHVkZVByb3RvIik7CisKICAgICAgICAgaWYgKElu
amVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJwcm94eSIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgU2V0OworICAgICAg
ICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0OwogCiAgICAgICAgIC8vIEhhbmRsZWQgYmVs
b3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQoIl9fcHJv
dG9fXyIpOworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQoIl9fcHJvdG9fXyIpOwogCiAgICAg
ICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNj
cmlwdG9yLCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5hdGl2ZUJpbmRpbmdHZXR0ZXIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlw
dG9yID0ge25hbWUsIHZhbHVlOiBvYmplY3RbbmFtZV19OworICAgICAgICAgICAgICAgIGxldCBm
YWtlRGVzY3JpcHRvciA9IGNyZWF0ZU9iamVjdCgibmFtZSIsIG5hbWUsICJ2YWx1ZSIsIG9iamVj
dFtuYW1lXSk7CiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWtlRGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7CkBAIC02NzgsMTEgKzcwMiwxMSBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAg
IGlmIChzeW1ib2wpCiAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9
IHN5bWJvbDsKICAgICAgICAgICAgICAgICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRs
ZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBjcmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFj
Y2Vzc29yIHdpdGggYSB3cm9uZyB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFr
ZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9z
dC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0
b3IudmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRj
aChmdW5jdGlvbigpe30pOworICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1
ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWpl
Y3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAg
ICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5AY2F0Y2goZnVuY3Rpb24oKXt9
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFrZURlc2NyaXB0b3I7CiAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IHtuYW1l
LCB2YWx1ZTogZSwgd2FzVGhyb3duOiB0cnVlfTsKKyAgICAgICAgICAgICAgICBsZXQgZXJyb3JE
ZXNjcmlwdG9yID0gY3JlYXRlT2JqZWN0KCJuYW1lIiwgbmFtZSwgInZhbHVlIiwgZSwgIndhc1Ro
cm93biIsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5KQogICAgICAg
ICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUgKzczNCwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0
eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKG5h
bWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbmFtZVByb2Nl
c3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJp
bmcocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9w
ZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAotICAgICAgICAgICAgbGV0IGRlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7
CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhl
cmU/CiAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0
dGluZ3MuCkBAIC03MjcsNyArNzUxLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRl
cnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQp
LmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNj
cmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3Jp
cHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAgICAgICAgaWYgKEBTdHJp
bmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVz
Y3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3IsICJnZXQiKSAmJiAhZGVz
Y3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3IsICJzZXQiKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxvcGVycyBtYXkgY3JlYXRlIHN1Y2ggYSBkZXNjcmlw
dG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxpZW50OgogICAgICAgICAgICAgICAgICAgICAvLyBs
ZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwgInAiLCB7Z2V0OnVuZGVmaW5lZH0p
OyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHgsICJwIikKICAgICAgICAgICAgICAg
ICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1l
LCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHRydWUpOwpAQCAtNzQ1LDEwICs3
NjksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAg
ICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAm
JiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAg
ICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5
IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxlbmd0aCA+IDA7CiAgICAg
ICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVk
KG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKSB7CisgICAgICAgIGZvciAobGV0IG8g
PSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IEBPYmplY3QuQGdldFByb3RvdHlwZU9mKG8pKSB7
CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09IG9iamVjdDsKICAgICAgICAg
ICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNlOwogCkBAIC03NjQsNyArNzg4LDcgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyhvKTsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93
blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBw
cm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lc1tpXSwgaXNPd25Qcm9wZXJ0eSk7
CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNj
cmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC03NzYsOCArODAwLDggQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGlmIChzaG91
bGRCcmVhaykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYgKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlT
eW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvKTsKKyAgICAgICAgICAgIGlm
IChAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQg
cHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8pOwogICAg
ICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHko
bywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uU3RvcDsKQEAgLTc5NiwyMyArODIwLDIyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8pIHsKICAgICAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5fX3Byb3RvX18pCi0gICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHtuYW1lOiAiX19wcm90b19fIiwgdmFsdWU6IG9iamVjdC5f
X3Byb3RvX18sIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGlzT3duOiB0cnVl
fSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNyZWF0ZU9iamVjdCgibmFtZSIsICJf
X3Byb3RvX18iLCAidmFsdWUiLCBvYmplY3QuX19wcm90b19fLCAid3JpdGFibGUiLCB0cnVlLCAi
Y29uZmlndXJhYmxlIiwgdHJ1ZSwgImlzT3duIiwgdHJ1ZSkpOwogICAgICAgICAgICAgfSBjYXRj
aCB7IH0KICAgICAgICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwgZmV0
Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107Cisg
ICAgICAgIGxldCBlbnRyaWVzID0gbmV3IEBBcnJheTsKIAotICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBTZXQucHJvdG90eXBlW1N5bWJv
bC5pdGVyYXRvcl0uCi0gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIG9iamVjdCkgeworICAgICAg
ICBmb3IgKGxldCB2YWx1ZSBvZiBAYnVpbHRpbkl0ZXJhYmxlKG9iamVjdCkpIHsKICAgICAgICAg
ICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ZW50cmllcy5wdXNoKHt2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5UHVzaChlbnRyaWVzLCBj
cmVhdGVPYmplY3QoInZhbHVlIiwgdmFsdWUpKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291
bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC04MjMsMTYgKzg0NiwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogCiAgICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRj
aENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVu
dHJpZXMgPSBuZXcgQEFycmF5OwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFi
bGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4K
LSAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAgICBmb3Ig
KGxldCBba2V5LCB2YWx1ZV0gb2YgQGJ1aWx0aW5JdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAg
ICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGVudHJpZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5UHVzaChlbnRy
aWVzLCBjcmVhdGVPYmplY3QoImtleSIsIGtleSwgInZhbHVlIiwgdmFsdWUpKTsKIAogICAgICAg
ICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzg5OCwxMCBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgdGhpcy5fbGFzdFJl
c3VsdCA9IHJlc3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVz
dWx0ID09PSBudWxsKQorICAgICAgICBpZiAocmVzdWx0ID09PSBAdW5kZWZpbmVkIHx8IHJlc3Vs
dCA9PT0gbnVsbCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgZXhpc3RpbmdJ
bmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7CisgICAgICAgIGxldCBl
eGlzdGluZ0luZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRzLkBpbmRleE9mKHJlc3VsdCk7CiAgICAg
ICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRS
ZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04OTQs
MTYgKzkxNiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgIH0KIH07CiAKLUluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAgIE93blBy
b3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAgTmF0aXZl
R2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAg
IC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OworSW5qZWN0ZWRT
Y3JpcHQuQ29sbGVjdGlvbk1vZGUgPSBjcmVhdGVPYmplY3QoCisgICAgIk93blByb3BlcnRpZXMi
LCAxIDw8IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0ZXJQ
cm9wZXJ0aWVzIiwgMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHBy
b3RvdHlwZSBjaGFpbi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAgLy8g
YWxsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29udGlu
dWUiKSwKLSAgICBTdG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24gPSBjcmVhdGVPYmplY3QoCisgICAgIkNvbnRpbnVlIiwgQGNyZWF0ZVBy
aXZhdGVTeW1ib2woImNvbnRpbnVlIiksCisgICAgIlN0b3AiLCBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgic3RvcCIpLAorKTsKIAogdmFyIGluamVjdGVkU2NyaXB0ID0gbmV3IEluamVjdGVkU2NyaXB0
OwogCkBAIC05NjIsNyArOTg0LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmll
dyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAgICAgICAg
ICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhv
YmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRoaXMucHJl
dmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5h
bWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcgKzk5OSw3IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAg
ICB9IGNhdGNoIChleCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAg
ICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBl
eGNlcHRpb24gdG8gc3RyaW5nPiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
bmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlvbik7CkBAIC05ODYsNyArMTAwOCw3IEBAIGxldCBS
ZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBjcmVhdGVPYmpl
Y3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAg
ICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwg
dW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CisgICAgICAg
IGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBm
YWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlmIChyZW1vdGVP
YmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0
KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3QuY2xhc3NQ
cm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKQpAQCAtMTAx
MSw3ICsxMDMzLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAg
ICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0
ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09
ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAgLTEwNTAsOCArMTA3Miw4
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKHN1
YnR5cGUgPT09ICJhcnJheSIpCiAgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwogCi0gICAg
ICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworICAg
ICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBAQHRvU3RyaW5nVGFnIGluIHZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLkBAdG9TdHJpbmdUYWc7CiAKICAgICAgICAgLy8g
Tm9kZUxpc3QgaW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNoZWNrIGZvciBhcnJheSBwcmlvciB0byB0
aGlzLgogICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2
ICsxMDkxLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAg
c3RhdGljIG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtp
dC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQt
aW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCAmJiAh
IW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAgICBsZXQgbm9kZU5hbWUgPSBp
c1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTsKIApAQCAtMTEwMCwxNyArMTEyMywxNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAKICAgICBfaW5pdGlhbFByZXZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHBy
ZXZpZXcgPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsCi0gICAgICAgICAgICBkZXNj
cmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKLSAgICAg
ICAgICAgIGxvc3NsZXNzOiB0cnVlLAotICAgICAgICB9OworICAgICAgICBsZXQgcHJldmlldyA9
IGNyZWF0ZU9iamVjdCgKKyAgICAgICAgICAgICJ0eXBlIiwgdGhpcy50eXBlLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIiwgdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVl
KSwKKyAgICAgICAgICAgICJsb3NzbGVzcyIsIHRydWUsCisgICAgICAgICk7CiAKICAgICAgICAg
aWYgKHRoaXMuc3VidHlwZSkgewogICAgICAgICAgICAgcHJldmlldy5zdWJ0eXBlID0gdGhpcy5z
dWJ0eXBlOwogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSAhPT0gIm51bGwiKSB7CiAgICAg
ICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBy
ZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGll
cyA9IG5ldyBAQXJyYXk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTEyNiw3ICsx
MTQ5LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAg
IGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIgfHwg
dGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3NldCIg
fHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0b3IiKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5z
aXplKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5lbnRyaWVzID0gW107CisgICAgICAgICAg
ICAgICAgcHJldmlldy5lbnRyaWVzID0gbmV3IEBBcnJheTsKICAgICAgICAgICAgICAgICBwcmV2
aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9
IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMTQxLDIzICsxMTY0LDIzIEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVz
dCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZlbEtleXM7CiAgICAgICAg
IGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5
cy5sZW5ndGggOiAwOwogCi0gICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAg
ICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4
KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJv
d3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAg
ICAgICB9OworICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IGNyZWF0ZU9iamVjdCgK
KyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1h
eCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAgICAgICAgICJpbmRleGVzIiwgaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCksCisgICAg
ICAgICk7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJ
dGVyYXRvcnMgaGF2ZSBlbnRyaWVzLgogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0g
Im1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFr
bWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJp
dGVyYXRvciIpCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmpl
Y3QsIHByZXZpZXcpOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAg
ICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IG5ldyBAQXJyYXk7CiAKICAgICAgICAgICAg
IC8vIEludGVybmFsIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3JzID0gaW5qZWN0ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
cyhvYmplY3QsIHRydWUpOwogICAgICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9ycykgewogICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2
ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbDogdHJ1ZX0pOworICAgICAgICAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwg
cHJldmlldywgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNo
b2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCBjcmVhdGVPYmplY3QoImludGVy
bmFsIiwgdHJ1ZSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBJbmplY3Rl
ZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcHJldmlldzsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTY5LDcgKzExOTIsNyBA
QCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAvLyBQ
cm9wZXJ0aWVzLgogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuX2ZvckVhY2hQcm9wZXJ0eURl
c2NyaXB0b3Iob2JqZWN0LCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0
aWVzLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hcHBl
bmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVz
VGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzKTsKLSAgICAgICAgICAg
IH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6IHRydWUsIGluY2x1ZGVQcm90bzogdHJ1ZX0pCisg
ICAgICAgICAgICB9LCBjcmVhdGVPYmplY3QoIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUs
ICJpbmNsdWRlUHJvdG8iLCB0cnVlKSk7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAg
cHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMTc3LDggKzEyMDAsMTAg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICByZXR1cm4g
cHJldmlldzsKICAgICB9CiAKLSAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJl
dmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNl
Y29uZExldmVsS2V5cywge2ludGVybmFsfSA9IHt9KQorICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZp
ZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJz
dExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCBvcHRpb25zID0gY3JlYXRlT2JqZWN0KCkpCiAg
ICAgeworICAgICAgICBsZXQgaW50ZXJuYWwgPSBnZXRPd25Qcm9wZXJ0eShvcHRpb25zLCAiaW50
ZXJuYWwiKTsKKwogICAgICAgICAvLyBFcnJvciBpbiBkZXNjcmlwdG9yLgogICAgICAgICBpZiAo
ZGVzY3JpcHRvci53YXNUaHJvd24pIHsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBm
YWxzZTsKQEAgLTExOTAsOSArMTIxNSw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgaWYgKG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAg
ICAvLyBOb24gYmFzaWMgX19wcm90b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5v
bi1lbnVtZXJhYmxlLCBtZXRob2RzIHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRv
ci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAg
JiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAg
ICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAg
ICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAg
ICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQor
ICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdF
eHApCiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAg
ICAgICAgIH0KQEAgLTEyMDksNyArMTIzNCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cg
cHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRo
ZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0
TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYg
KGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5AaW5jbHVkZXMobmFtZSkpCiAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51
ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3
LDIwICsxMjUyLDIwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5h
bCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJldmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7
CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5D
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdldHRlci9zZXR0ZXIuCiAgICAgICAg
IGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKICAgICAgICAgICAgIHByZXZpZXcubG9z
c2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0
eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhjcmVh
dGVPYmplY3QoIm5hbWUiLCBuYW1lLCAidHlwZSIsICJhY2Nlc3NvciIpKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIE51bGwgdmFsdWUuCiAgICAgICAgIGxldCB2YWx1ZSA9IGRlc2NyaXB0b3Iu
dmFsdWU7CiAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkKLSAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAib2JqZWN0Iiwgc3VidHlwZTogIm51bGwiLCB2YWx1
ZTogIm51bGwifSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhjcmVhdGVPYmpl
Y3QoIm5hbWUiLCBuYW1lLCAidHlwZSIsICJvYmplY3QiLCAic3VidHlwZSIsICJudWxsIiwgInZh
bHVlIiwgIm51bGwiKSk7CiAKICAgICAgICAgLy8gSWdub3JlIG5vbi1lbnVtZXJhYmxlIGZ1bmN0
aW9ucy4KICAgICAgICAgbGV0IHR5cGUgPSB0eXBlb2YgdmFsdWU7CkBAIC0xMjU4LDcgKzEyODMs
NyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAg
ICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVlLCBtYXhMZW5ndGgsIHRydWUp
OwogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTog
dG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQ
cmV2aWV3KGNyZWF0ZU9iamVjdCgibmFtZSIsIG5hbWUsICJ0eXBlIiwgdHlwZSwgInZhbHVlIiwg
dG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSkpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFN5
bWJvbC4KQEAgLTEyNjgsMTEgKzEyOTMsMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHN5bWJvbFN0cmluZyA9IHRoaXMuX2FiYnJldmlh
dGVTdHJpbmcoc3ltYm9sU3RyaW5nLCBtYXhMZW5ndGgsIHRydWUpOwogICAgICAgICAgICAgICAg
IHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTogc3ltYm9sU3RyaW5nfSk7Cisg
ICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhjcmVhdGVPYmplY3QoIm5hbWUiLCBuYW1l
LCAidHlwZSIsIHR5cGUsICJ2YWx1ZSIsIHN5bWJvbFN0cmluZykpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gT2JqZWN0LgotICAgICAgICBsZXQgcHJvcGVydHkgPSB7bmFtZSwgdHlwZX07Cisg
ICAgICAgIGxldCBwcm9wZXJ0eSA9IGNyZWF0ZU9iamVjdCgibmFtZSIsIG5hbWUsICJ0eXBlIiwg
dHlwZSk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUodmFsdWUp
OwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAgIHByb3BlcnR5LnN1YnR5cGUgPSBz
dWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzM4LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRyaWVzLmxl
bmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAgICBlbnRy
aWVzLkBwb3AoKTsKICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAg
ICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzEz
NDgsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAg
ICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJl
dmlldy5lbnRyaWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJl
dmlldy5lbnRyaWVzID0gZW50cmllcy5AbWFwKGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAg
ICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUo
ZW50cnkudmFsdWUsIGVudHJ5LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAgICAgdXBkYXRl
TWFpblByZXZpZXcoZW50cnkudmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5
KSB7CkBAIC0xMzM2LDggKzEzNjEsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAKICAgICBfaXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsK
LSAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAg
ICAgICAgbGV0IHNldCA9IG5ldyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAg
ICAgICAgIHJldHVybiB0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNl
dCwgMSk7CiAgICAgfQpAQCAtMTM1NywxMSArMTM4MiwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAv
LyBDeWNsaWMgb2JqZWN0cy4KLSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkK
KyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChv
YmplY3QpOworICAgICAgICBrbm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAgICAgICAgIC8v
IEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMu
CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAg
LTEzODEsMTIgKzE0MDYsMTIgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNp
bXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAg
ICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCk7CisgICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QpOwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGgg
PiAzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBwcm9w
ZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChkZXNjcmlw
dG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5h
bChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCkBAIC0xNDA0LDY2
ICsxNDI5LDc1IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAg
ICAgaWYgKG1pZGRsZSkgewogICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+
IDE7CiAgICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAx
OwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAy
NiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7
CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAy
NiIgKyBzdHJpbmcuQHN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYp
OwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbWF4TGVuZ3Ro
KSArICJcdTIwMjYiOworICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbWF4TGVuZ3Ro
KSArICJcdTIwMjYiOwogICAgIH0KIH07CiAKIC8vIC0tLS0tLS0KIAotSW5qZWN0ZWRTY3JpcHQu
Q2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCi17Ci0gICAgdGhp
cy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQi
OiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKLSAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFt
ZS5mdW5jdGlvbk5hbWU7Ci0gICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJZDogU3RyaW5nKGNh
bGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5lLCBjb2x1bW5OdW1i
ZXI6IGNhbGxGcmFtZS5jb2x1bW59OwotICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBT
Y29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0
ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOwotICAgIHRoaXMuaXNUYWlsRGVs
ZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxldGVkOwotfTsKK0luamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5ID0gY2xhc3MgQ2FsbEZyYW1lUHJveHkgeworICAgIGNvbnN0cnVjdG9yKG9yZGlu
YWwsIGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRp
bmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7
CisgICAgICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKKwor
ICAgICAgICB0aGlzLmxvY2F0aW9uID0gY3JlYXRlT2JqZWN0KAorICAgICAgICAgICAgInNjcmlw
dElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLAorICAgICAgICAgICAgImxpbmVOdW1i
ZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiLCBjYWxsRnJh
bWUuY29sdW1uLAorICAgICAgICApOworCisgICAgICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMu
X3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7CisgICAgICAgIHRoaXMudGhpcyA9IFJlbW90ZU9i
amVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKKyAgICAgICAg
dGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7CisgICAgfQogCi1J
bmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgX3dyYXBTY29w
ZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZy
YW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFt
ZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0gICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBb
XTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IG5ldyBAQXJyYXk7CiAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7IGkrKykKICAgICAgICAgICAgIHNj
b3BlQ2hhaW5Qcm94eVtpXSA9IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVT
Y29wZUpzb24oc2NvcGVDaGFpbltpXSwgc2NvcGVEZXNjcmlwdGlvbnNbaV0sICJiYWNrdHJhY2Ui
KTsKICAgICAgICAgcmV0dXJuIHNjb3BlQ2hhaW5Qcm94eTsKICAgICB9Ci19OwogCi1JbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXMgPSB7Ci0gICAgMDogImdsb2Jh
bCIsIC8vIEdMT0JBTF9TQ09QRQotICAgIDE6ICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQotICAgIDI6
ICJjbG9zdXJlIiwgLy8gQ0xPU1VSRV9TQ09QRQotICAgIDM6ICJjYXRjaCIsIC8vIENBVENIX1ND
T1BFCi0gICAgNDogImZ1bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKLSAgICA1
OiAiZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1F
TlRfU0NPUEUKLSAgICA2OiAibmVzdGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BF
Ci19OworICAgIHN0YXRpYyBfY3JlYXRlU2NvcGVKc29uKG9iamVjdCwgc2NvcGVEZXNjcmlwdGlv
biwgZ3JvdXBJZCkKKyAgICB7CisgICAgICAgIGxldCBuYW1lID0gZ2V0T3duUHJvcGVydHkoc2Nv
cGVEZXNjcmlwdGlvbiwgIm5hbWUiKTsKKyAgICAgICAgbGV0IHR5cGUgPSBnZXRPd25Qcm9wZXJ0
eShzY29wZURlc2NyaXB0aW9uLCAidHlwZSIpOworICAgICAgICBsZXQgbG9jYXRpb24gPSBnZXRP
d25Qcm9wZXJ0eShzY29wZURlc2NyaXB0aW9uLCAibG9jYXRpb24iKTsKIAotSW5qZWN0ZWRTY3Jp
cHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwge25h
bWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0gICAg
ICAgIG9iamVjdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAgICAg
ICB0eXBlOiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlw
ZV0sCi0gICAgfTsKKyAgICAgICAgbGV0IHNjb3BlID0gY3JlYXRlT2JqZWN0KAorICAgICAgICAg
ICAgIm9iamVjdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKKyAgICAg
ICAgICAgICJ0eXBlIiwgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5h
bWVzW3R5cGVdLAorICAgICAgICApOwogCi0gICAgaWYgKG5hbWUpCi0gICAgICAgIHNjb3BlLm5h
bWUgPSBuYW1lOworICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgIHNjb3BlLm5hbWUgPSBu
YW1lOwogCi0gICAgaWYgKGxvY2F0aW9uKQotICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0
aW9uOworICAgICAgICBpZiAobG9jYXRpb24pCisgICAgICAgICAgICBzY29wZS5sb2NhdGlvbiA9
IGxvY2F0aW9uOwogCi0gICAgaWYgKGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKLSAgICAgICAgc2Nv
cGUuZW1wdHkgPSB0cnVlOworICAgICAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQorICAg
ICAgICAgICAgc2NvcGUuZW1wdHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIHNjb3BlOwotfQorICAg
ICAgICByZXR1cm4gc2NvcGU7CisgICAgfQorfTsKKworSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1l
UHJveHkuX3Njb3BlVHlwZU5hbWVzID0gY3JlYXRlT2JqZWN0KCk7CitJbmplY3RlZFNjcmlwdC5D
YWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbMF0gPSAiZ2xvYmFsIjsgLy8gR0xPQkFMX1ND
T1BFCitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbMV0gPSAi
d2l0aCI7IC8vIFdJVEhfU0NPUEUKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29w
ZVR5cGVOYW1lc1syXSA9ICJjbG9zdXJlIjsgLy8gQ0xPU1VSRV9TQ09QRQorSW5qZWN0ZWRTY3Jp
cHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzWzNdID0gImNhdGNoIjsgLy8gQ0FUQ0hf
U0NPUEUKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1s0XSA9
ICJmdW5jdGlvbk5hbWUiOyAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCitJbmplY3RlZFNjcmlwdC5D
YWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbNV0gPSAiZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50IjsgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlRfU0NPUEUKK0luamVjdGVkU2NyaXB0
LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1s2XSA9ICJuZXN0ZWRMZXhpY2FsIjsgLy8g
TkVTVEVEX0xFWElDQUxfU0NPUEUKIAogLy8gLS0tLS0tLQogCkBAIC0xNDc3LDkgKzE1MTEsOSBA
QCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUpCiAgICAgICAgICAgICB2YWx1ZSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2luYWxWYWx1ZTsgfTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBrZXksIHZhbHVlKTsKKyAgICAgICAgQE9i
amVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywgIiQiICsga2V5LCBjcmVhdGVPYmplY3QoImdldCIs
IHZhbHVlKSk7CiAgICAgICAgIGlmIChzYXZlZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVzdWx0QWxp
YXMgIT09ICIkIikKLSAgICAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3Vs
dEFsaWFzICsga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0
eSh0aGlzLCBzYXZlZFJlc3VsdEFsaWFzICsga2V5LCBjcmVhdGVPYmplY3QoImdldCIsIHZhbHVl
KSk7CiAgICAgfTsKIAogICAgIGlmICgiX2xhc3RSZXN1bHQiIGluIGluamVjdGVkU2NyaXB0KQpA
QCAtMTUwMiw0OCArMTUzNiw0OCBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUp
CiAgICAgICAgIHRoaXNbbmFtZV0gPSBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdOwogfQog
Ci1Db21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CitDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0g
Y3JlYXRlT2JqZWN0KCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSB7fTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHMgPSBjcmVhdGVPYmplY3QoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3Qp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3Qp
IHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmpl
Y3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uQGJ1aWx0aW5J
dGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9s
ZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xk
ZXJzKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CiAKIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJj
bGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWci
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVi
dWcoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3Qo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5hc3NlcnQoLi4uQGJ1aWx0aW5JdGVyYWJsZShh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNsZWFyKC4uLkBidWls
dGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3Vu
dCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5j
b3VudCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siY291bnRSZXNldCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0KC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1ZyguLi5AYnVpbHRpbkl0ZXJh
YmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5AYnVp
bHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGly
eG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmRpcnhtbCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLkBidWlsdGluSXRlcmFibGUoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENv
bGxhcHNlZCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5AYnVpbHRpbkl0ZXJhYmxl
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5AYnVpbHRp
bkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmls
ZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5w
cm9maWxlKC4uLkBidWlsdGluSXRlcmFibGUoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVu
dHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uQGJ1aWx0aW5J
dGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVu
ZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5y
ZWNvcmRFbmQoLi4uQGJ1aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3Vt
ZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uQGJ1aWx0aW5J
dGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFw
U25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLkBidWlsdGluSXRlcmFibGUoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uQGJ1
aWx0aW5JdGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRp
bWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUudGltZUxvZyguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3Vt
ZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uQGJ1aWx0aW5J
dGVyYWJsZShhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2Fybigu
Li5AYnVpbHRpbkl0ZXJhYmxlKGFyZ3VtZW50cykpOyB9OwogCiBmb3IgKGxldCBuYW1lIGluIENv
bW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50
b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsg
W0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19KQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5NGY5
M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEzYmY0ODkw
NDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjIx
LDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAg
ICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlk
KCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN0
YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBl
cnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAi
LCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5saW5lKCksICIuIik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0NjUxZTlk
NzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJkZWZhYzUw
YmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29u
c3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2Jq
ZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAg
IHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6
OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlDb2Rl
R2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFycmF5Q29u
c3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVhM2FhYTkx
ZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4MGMwZThh
NTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJheVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQ
cml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5hbWUoKSwg
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHVi
bGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5t
YXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwgZ2V0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNOYW1lKCkp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uOTlmNGY3OTQx
MWJjYWNiMzllYTQwMWQ5MjhiNzc5ZWMxMDAxNDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4IEBAIEZP
Ul9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRl
U3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIGpz
b24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7Cit9CisKICNpZiBBU1NFUlRf
RU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENhbGwsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0xMDc0LDkg
KzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1
Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9y
KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0cmlu
Z0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigKICAg
ICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKICAgICAg
ICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6
OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0
ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09OIGhlbHBlcnMKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGpzb25Q
YXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5naWZ5KSk7CisgICAgICAgIH0pOworCiAg
ICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhMGFh
ZWQzNDc4N2FmNjZhNGVjMjgzMmNiNzg0N2ZhZjI4YTRmYTliLi5lOTQ4NjAzZTJjZWNhMjk1NWEy
ZWQyNzE1NGJiM2IwMTQ5NzFhZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBTZXRJdGVyYXRv
clByb3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFz
cyBTb3VyY2VPcmlnaW47CitjbGFzcyBTdHJpbmdDb25zdHJ1Y3RvcjsKIGNsYXNzIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBzdHJ1
Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKQEAgLTMyMCw2ICszMjEsNyBAQCBwdWJsaWM6CiAgICAg
V3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVj
dG9yOwogICAgIFdyaXRlQmFycmllcjxKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yPiBtX2lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxTdHJpbmdDb25zdHJ1
Y3Rvcj4gbV9zdHJpbmdDb25zdHJ1Y3RvcjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRl
eCA2MDhjZjllMTc4ZmIxYzc3NzM4YWE2NDY1NjYxNGVhYWJkOGFkMTQ3Li5iYjZhZjI1NGY0OTY3
OWY1MTdhMzk4NzA0MTVlZWYzN2NiZTFjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05OSw5ICs5OSwxOSBAQCB2
b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE9iagogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcm90
b3R5cGVPZlByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFtZSgpLCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdldE93blByb3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvcktl
eXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5kZWZpbmVQcm9wZXJ0eVByaXZhdGVOYW1lKCksIG9iamVj
dENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAzKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2
YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwotICAgIGlmIChPcHRpb25zOjp1c2VI
YXNPd24oKSkKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RD
b25zdHJ1Y3RvclZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDEpOworCisgICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKSB7CiAgICAg
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmhhc093biwgb2JqZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuaGFzT3duUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICB9CiB9
CiAKIC8vIEVTIDE5LjEuMS4xIE9iamVjdChbdmFsdWVdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNTA2NzIzMmNkNjZmOTkx
M2I5NTMyZjA5ZjY4MDMxYmVlZDA0Y2Y5My4uMzFhOGY5ZTdkN2JiZDMyNjUwYzBjYjI5ODI2OWE5
MzVlZDBjY2NmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCkBAIC0xNjQsNiArMTY0LDkgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLml0ZXJhdG9yXSJfcywgc3RyaW5nUHJvdG9GdW5jSXRl
cmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAorICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnN1YnN0clByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmVuZHNXaXRoUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5j
RW5kc1dpdGgsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAyKTsKKwogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBh
ZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGZhMDRiN2VjZWJiZTgzZjdkNzI0NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2
NzAxNjI3YzFlYTNjODliZGVhNWM4Y2YzYjIyY2ZjZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAgV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUp
CiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2ViQ29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lO
Q0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWlu
LmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBs
ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NN
QUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhP
Tl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7
V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
bWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMg
JHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBN
QUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xv
ckRhdGEuY3BwKQogCkBAIC0yMzUyLDYgKzIzNDAsNyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19T
T1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAg
JHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJ
Un0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiApCiAKIHNldChCVUlM
VElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4
NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUzNTYyYmQyZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
OCw3ICs4LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAK
LSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElz
b1N1YnNwYWNlcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4
NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFj
OWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTks
MTYgKzIyMTksNiBAQCBpZm5lcSAoJChOT19TVVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVk
ZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5kZXApCiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZh
Y2VzCi0KLWFsbCA6IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaCA6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCi0JZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8
ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
Ci0JJChERUxFVEUpIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNv
cmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2
ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkv
ZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2Rl
clN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRl
cm5hbHMuanMgXAorICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzIFwKICMKIAogQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCBkMDYwYWQ5ZjMxYWQyZTYxNDgzNzk1MjM3MGJhNTAwMTE5ZDBhYWM0Li41
NzgyMGI3NzNmMDQ5MDE2NDlhNzdiOThiMGQ1YzNjZGIwNTRiMTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTIwNjgsNiArMjA2OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKIAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5h
bWVzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jk
cy5oCisgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9F
dmVudEludGVyZmFjZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVu
dFRhcmdldEludGVyZmFjZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9I
VE1MRWxlbWVudFR5cGVIZWxwZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YmExYjgyMDM1MmMxNGQ5NjA2NjMzZjMwMWY5
ZDQ1MzcyOGUyZTI1Li5kM2Y4ZDU0NTQ0NTA0OTFjNWNkNzIwZDBiMzM2NmIzODc2YThkYjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBp
bGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRC
QUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9
OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oICovOyB9OworCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQz
NDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0
NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBA
IC0zNTE3LDcgKzM1MTgsNiBAQAogCQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0
ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNr
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBD
RUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIw
MDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJ
bmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElI
b3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04
MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5z
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYz
NDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3Jr
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5NDEsNyArMTM5NDMsNiBA
QAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0Ix
MCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0
SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlw
dEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElN
b2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNDI5LDcgKzIwNDMwLDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4
IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVB
UElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5k
TGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovLApAQCAtMjM1ODcsNiArMjM1ODcs
OCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgz
MDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAz
NzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJ
MkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5n
U3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8q
IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRC
MDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgKi8sCkBAIC0zNDA4NSw3ICszNDA4Nyw3
IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5
MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAw
RTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRG
QzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUwMTY3NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0
MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1YjQ5Yjc5ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxl
LmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUg
IkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3
LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpDb21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9
CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rp
b24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIHJldHVybiBTdHJp
bmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9q
cywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8q
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxP
YmplY3QpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5j
dGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rp
b24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1v
ZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFuZExpbmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9N
R2xvYmFsT2JqZWN0YC4iKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiBKU1ZhbHVlIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0
KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKaW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJk
ZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1MGQ0YTVmMzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdi
OTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJ
TW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgQ29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAg
Q29tbWFuZExpbmVBUElNb2R1bGUoKTsKIAotICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lkIGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgY29uc3QgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCmluZGV4IGY1MWUzNTE5Y2NiMTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUz
ZWEuLjcyYWZiZjE5MDY5MmI5MzkwYmFkOWFkZGVkMmQzYTdjZTg2MDA5MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiwxMSArMjYsMTIgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1f
X0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJu
YWwKIAotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVj
dCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1h
bmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUo
SW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0
SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1h
bmRMaW5lQVBJSG9zdCkKK3sKIAotLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIy
OTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQt
aW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2Vi
Q29yZSBidWlsdC1pbnMuCiAKIGluamVjdGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rp
b24ob2JqZWN0KSB7CiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiAr
NzEsMTIgQEAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0
KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRTY3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3Qp
KQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2Jq
ZWN0ID09PSAic3ltYm9sIikKLSAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LlN0cmluZyhvYmplY3QpOworICAgICAgICBzdHJpbmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAg
ZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0g
IiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJp
bmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAi
ICAiKTsKKyAgICAgICAgICAgIHN0cmluZyA9IEBqc29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7
CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAg
ICAgICAgIH0KQEAgLTg5LDIzICs5MCwyOCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRF
dmVudExpc3RlbmVycyJdID0gZnVuY3Rpb24odGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3Jt
YWxpemVFdmVudFR5cGVzKHR5cGVzKSB7Ci0gICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0g
ICAgICAgIHR5cGVzID0gWyJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9y
dCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24i
LCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwg
InNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCJdOworICAgIGlmICh0eXBlcyA9
PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMgPSBuZXcgQEFycmF5KCJtb3VzZSIsICJrZXki
LCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vt
b3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJy
ZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0Iiwg
InVubG9hZCIpOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAg
ICAgIHR5cGVzID0gW3R5cGVzXTsKKyAgICAgICAgdHlwZXMgPSBuZXcgQEFycmF5KHR5cGVzKTsK
KworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBhZGRUeXBlc1RvUmVz
dWx0KCkgeworICAgICAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmFibGUoYXJndW1l
bnRzKSkKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKHR5cGUpOworICAgIH0KIAotICAgIGxldCBy
ZXN1bHQgPSBbXTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgIHJlc3VsdC5w
dXNoKCJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNl
b3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgICAg
IGFkZFR5cGVzVG9SZXN1bHQoImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3Vz
ZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIp
OwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1
bHQucHVzaCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKKyAg
ICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAi
LCAidGV4dElucHV0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAidG91Y2giKQot
ICAgICAgICAgICAgcmVzdWx0LnB1c2goInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNo
bW92ZSIsICJ0b3VjaHN0YXJ0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJ0b3Vj
aGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOwogICAgICAg
ICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAgcmVzdWx0LnB1
c2goImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwi
LCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVz
dWx0KCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xs
IiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXN1bHQucHVzaCh0eXBlc1tpXSk7CisgICAgICAgICAgICByZXN1bHQuQGFkZCh0eXBlc1tp
XSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTgsMTkgKzEyNCwxNyBAQCBm
dW5jdGlvbiBsb2dFdmVudChldmVudCkKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIm1vbml0b3JF
dmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAh
b2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQog
ICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIG9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOwotICAg
ICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsK
KyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluSXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBl
cyh0eXBlcykpKSB7CisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxv
Z0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxv
Z0V2ZW50LCBmYWxzZSk7CiAgICAgfQogfTsKIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidW5t
b25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7CiAgICAgaWYgKCFvYmpl
Y3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0
eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7
CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRpbkl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlw
ZXModHlwZXMpKSkKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9n
RXZlbnQsIGZhbHNlKTsKIH07CiAKIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQg
JiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKQEAgLTE1OSw4ICsxNjMsOCBAQCBpZiAo
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlKSB7CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkJCJdID0gZnVuY3Rpb24oc2Vs
ZWN0b3IsIHN0YXJ0KSB7CiAgICAgICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0
KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShz
dGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEBBcnJheS5A
ZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBA
QXJyYXkuQGZyb20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3IpKTsKICAgICB9OwogCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJHgi
XSA9IGZ1bmN0aW9uKHhwYXRoLCBjb250ZXh0KSB7CkBAIC0xNzUsMTAgKzE3OSwxMCBAQCBpZiAo
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlKSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKICAgICAgICAg
fQogCi0gICAgICAgIGxldCBub2RlcyA9IFtdOworICAgICAgICBsZXQgbm9kZXMgPSBuZXcgQEFy
cmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7CiAgICAgICAgIHdoaWxlIChub2RlID0gcmVz
dWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAg
ICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAgICAgICAgIHJldHVybiBub2RlczsKICAg
ICB9OwogfQpAQCAtMTg2LDQgKzE5MCw0IEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9j
dW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKIGZvciAobGV0IG5hbWUgaW4g
Q29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVd
LnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkg
eyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0pCit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjliNTExYTIzNzVk
OTI2NTMzMmM4M2U2Njg1YWViOGZiNjU3MmZkNi4uZDZjNWIwNDAwMGUyNDU4MzJiMTJjYTY2ZmQ3
NWNkNjQ2NjFmZDI4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTI3ICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJz
ZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5v
bi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2
YWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9v
YnNlcnZhYmxlLmh0bWw6CisgICAgICAgIC0gQWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZv
ciBvdmVycmlkaW5nIGZ1bmN0aW9ucyBhbmQgZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0
cy5odG1sOgorICAgICAgICAtIENoYW5nZWQgdG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3Jp
cHQgc25pcHBldCBzaW5jZSB0aGUgaW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBi
dWlsdGluLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1s
OgorICAgICAgICAtIFRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykg
d2lsbCBubyBsb25nZXIgYXBwZWFyIGFzIHNjcmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAg
ICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAtIEluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgbGluZSBudW1i
ZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMsIHNvIGZp
bHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDQtMjcgIEthcmwgUmFja2xlciAgPHJhY2tsZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgRGVidWcgd2syIF0gZmFzdC9jc3MvdmFyaWFibGVz
L3Rlc3Qtc3VpdGUvMTY4Lmh0bWwgaXMgYSBmbGFreSBpbWFnZSBmYWlsdXJlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlw
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZv
ci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAppbmRleCAxZWIxNTM5ODgyNDA2YmE5ZmY0
ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi41OTM3ZmFlOTdmODk1ODg0N2Y4OGZmNDY3ZWJlMTViODFl
Mjg3ZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2Ut
Zm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKQEAg
LTEsNjYgKzEsNjAgQEAKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DT05T
T0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IGNv
bnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ2hlY2tpbmcgd2hldGhlciBjb25zb2xl
LmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBv
ZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy4KK0NoZWNraW5nIHdoZXRoZXIg
aW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBk
ZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3Jp
cHRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRl
cm5hbFNjcmlwdHMKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZAotRVhQUkVTU0lP
Tjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVu
dHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVT
RUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAg
ICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwv
c2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNv
bnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBj
b25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7
Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUlu
dGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAgICAyMworICAgICAyNCAgICBmdW5j
dGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOwor
ICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQot
ICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2co
KSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxv
Zyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEw
ICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVu
dHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRy
eUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAg
ICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAg
ICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEw
OjUKLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAg
ICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotIC0+ICAg
OSAgICAgICAgfGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5s
b2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCitQQVVTRSBBVCBlbnRyeUludGVy
bmFsT2JqZWN0OjI4OjUKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgp
IHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgxKTsKKyAtPiAgMjcgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAg
ICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQorICAgICAz
MAogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMTo1Ci0gICAg
ICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7
Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAgMTAgICAgICAgIHxj
b25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKLSAgICAgMTMgICAg
Ly8gLS0tLS0tLS0tCitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI5OjUKKyAgICAgMjUg
ICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsK
KyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgLT4gIDI4ICAgICAgICB8
aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQorICAgICAzMAorICAgICAzMSAg
ICAvLyAtLS0tLS0tLS0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVM
b2c6MTI6MgotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAg
ICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0
cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0K
LSAgICAgMTQKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MzA6MgorICAgICAyNiAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworIC0+ICAy
OSAgICB9fAorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KKyAgICAgMzIKIAogQUNU
SU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTY4LDU3ICs2Miw1NyBAQCBQQVNTOiBTaG91bGQgaGF2
ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0IHNldHVwLgogLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQKLUVY
UFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQUkVTU0lPTjogc2V0VGlt
ZW91dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3Vt
ZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6
ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9u
LmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24g
ZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAg
ICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNv
bnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOworUEFVU0UgQVQg
ZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAgICAgMjMKKyAgICAgMjQg
ICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAgMjUgICAgICAgIHxkZWJ1
Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
Zzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25z
b2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICB8Y29u
c29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwot
ICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVT
RSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rp
b24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+
ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgz
KTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29s
ZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5
Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAg
Y29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xl
KTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQor
UEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBm
dW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7
CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24g
ZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAg
ICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNv
bnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAg
ICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0
ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1
Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5j
dGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAg
IDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5s
b2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAg
IDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAg
ICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAg
IGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAg
IDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJu
YWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1F
RApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1p
bnRlcm5hbC1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAppbmRleCBkMTY4YTcyNTRjZTFlZjA0ZDczYTlm
YjM1YzZjYmQ3MzhmYmMzMWUzLi5lNWIwZDljOGI3MThlMWIyNTZlYWVmNjc4MjI2YjYyNzBlNzFi
MzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbApAQCAtNCwxMSArNCwyOSBAQAogPHNj
cmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2Nh
dGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkg
eworCitsZXQgaW50ZXJuYWxPYmplY3QgPSB7IHRlc3Q6IGZ1bmN0aW9uKCkge30gfTsKKworaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbE9iamVjdCA9IHdpbmRvdy5pbnRlcm5h
bHMuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oInRlc3RQYXVzZUZvckludGVybmFs
U2NyaXB0cyIsIGAKKyAgICAgICAgLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X1Rlc3RQ
YXVzZUZvckludGVybmFsU2NyaXB0cy5qcworICAgICAgICBsZXQgSW50ZXJuYWxPYmplY3QgPSBj
bGFzcyBJbnRlcm5hbE9iamVjdCB7CisgICAgICAgICAgICB0ZXN0KGludm9jYXRpb25OdW1iZXIp
IHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9IDY7CisgICAgICAgICAgICAgICAgbGV0IGIgPSA3
OworICAgICAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBhICogYjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBuZXcgSW50ZXJuYWxPYmplY3Q7CisgICAgYCk7Cit9CisKK2Z1
bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CiAgICAgZGVidWdnZXI7Ci0gICAgY29uc29s
ZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICBjb25zb2xlLmxv
Zygic3RyaW5nIik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICBpbnRlcm5hbE9i
amVjdC50ZXN0KDIpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiB9CiAKIC8vIC0tLS0t
LS0tLQpAQCAtMjEsMzEgKzM5LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgYWRkU3RlcHBp
bmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFs
U2NyaXB0cy5EaXNhYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIG5vdCBiZSBh
YmxlIHRvIHN0ZXAgaW50byBjb25zb2xlLmxvZyBzdGF0ZW1lbnRzIHdoaWNoIHVzZSB0aGUgSW50
ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQo
ZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIG5vdCBiZSBh
YmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBz
Y3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxP
YmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2lu
Y2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlm
IGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsg
cmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9
LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAg
ICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBj
b25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9n
KCJzdHJpbmciKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3Qo
MSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0KDIpCisgICAg
ICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgzKQogICAgICAgICAgICAg
InJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9KTsKIAogICAgIGFkZFN0ZXBwaW5nVGVzdENhc2Uo
ewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5h
YmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBvdmVy
IGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNj
cmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cp
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIGludG8gc3Rh
dGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0ZWQgc2NyaXB0cy4iLAorICAgICAgICBl
eHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KSIsCiAgICAgICAgIC8v
IENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5kIHNpbmNlIHRoZXJlIGlzIG5vIG90aGVy
IHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3VsdCBpZiBjaGFuZ2luZyB2aWEgdGhlIHNl
dHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50
LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKHRydWUpOyB9LAogICAgICAgICB0ZWFyZG93bjog
YXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2Ny
aXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIsCi0g
ICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAgICAgICAg
ICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9nKHdpbmRvdyldCi0gICAg
ICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93
KV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0KDEpCisgICAg
ICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgaW50ZXJuYWxPYmplY3QudGVz
dCgxKV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpXQogICAgICAgICAgICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9
KTsKQEAgLTU3LDYgKzc1LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5s
b2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2Yg
V0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgorPHA+Q2hlY2tpbmcgd2hl
dGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBu
b3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAppbmRleCA1ZGVl
OTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTViNzQ4NGI4Njg5Yzdk
MTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDUgQEAg
UEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5s
aW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0
ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4K
LVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQu
Ci1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0
LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAppbmRl
eCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5kNjc3YmEyZGVkZGYx
ZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTksMTEgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykgc3RhcnRpbmcgb24g
bGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBsaXN0ZW5lciBhdHRy
aWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBzb3VyY2UgYWJvdmUg
b24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3JpcHRzIEluamVjdGVk
U2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAKICAgICBsZXQg
Zm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZVNjcmlwdFRh
Z1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0gZmFsc2U7Ci0gICAg
bGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91
bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZFVuZXhw
ZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxTY3JpcHQocGFy
YW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0KHBhcmFtcykgewot
ICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5l
ID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAgICByZXR1cm4gaXNJ
bmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5OyAvLyBFc3RpbWF0
ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNFdmFsU2NyaXB0KHBh
cmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0gImV2YWwuanMiOwog
ICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1z
KSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0
ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAg
ICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAg
ICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRpYWxTY3JpcHRzIiwK
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2OCw2IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxpbmVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
IWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlzQ29tbWFuZExpbmVB
UElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ29t
bWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0luamVjdGVkU2NyaXB0
U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEluamVj
dGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJVTkVYUEVDVEVEIFND
UklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05Myw4ICs3OCw2IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0
KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBU
YWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZv
dW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3VsZCBmaW5kIElubGlu
ZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3VsZCBmaW5kIEV2YWwg
U2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5k
SW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0
ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJ
bnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3JpcHQsICJTaG91bGQg
bm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1z
Y3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5q
ZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CmluZGV4IDg4MzNhOGZkMmE2NWNj
MmM4NDUyY2MzMDYwYmU2ODY0MmNiMDNhYjcuLjQ2YTUzZjFlYzljZTI5OWVlZDVjMDc5NzRmZmMz
MTUzNDU0YmRjZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1z
Y3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAK
IENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVT
U0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQog
VGVzdCB0aGF0IGNlcnRhaW4gSW5qZWN0ZWRTY3JpcHRTb3VyY2Ugb3BlcmF0aW9ucyBhcmUgbm90
IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgogCiAKQEAgLTgsMyArMTIsMjMgQEAgUEFTUzogUGF1
c2VkLgogUEFTUzogUmVzdW1lZC4KIFBBU1M6IEFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0
b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmpl
Y3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFT
UzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IFNldC5wcm90b3R5cGVbU3ltYm9sLml0
ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
SW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaAorUEFTUzogUGF1
c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNhbGwg
Y291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlw
dC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1
bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5n
CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291bnQg
c2hvdWxkIGJlIDEuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3Rl
ZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVk
LXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4
ZDlkOTNjODQ3ZDY5NS4uYTM0NDAzMDQyMzIwZjRhY2Y2MzIzODUwNDk5NmZkZGJhOTJiOGFjYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZh
YmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNl
cnZhYmxlLmh0bWwKQEAgLTMsMzEgKzMsNDggQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgotLy8gTk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBh
ZGRyZXNzZWQgYnk6Ci0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVj
dG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFy
YW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0
ZXJhdGlvbigpIHsKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJv
dG90eXBlLCBwcm9wZXJ0eSwgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKICAg
ICBsZXQgY2FsbENvdW50ID0gMDsKLQotICAgIGNvbnN0IG9yaWdpbmFsSXRlcmF0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJh
dG9yKTsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wu
aXRlcmF0b3IsIHsKKyAgICAKKyAgICBsZXQgb3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvdHlwZSwgcHJvcGVydHkpOworICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCB7CiAgICAgICAgIGdl
dCgpIHsKICAgICAgICAgICAgICsrY2FsbENvdW50OwotICAgICAgICAgICAgcmV0dXJuIG9yaWdp
bmFsSXRlcmF0b3IudmFsdWU7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxQcm9wZXJ0eURl
c2NyaXB0b3IudmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCBhcnJheSA9IFtd
OworICAgIGRlYnVnZ2VyOworCisgICAgLy8gUHJldmlldyBhbiBvYmplY3QuCisgICAgY29uc29s
ZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7CisKKyAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbigpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVy
dHksIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yKTsKKworICAgIHJldHVybiBjYWxsQ291bnQ7
Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0T2JqZWN0KG9iamVjdFN0cmluZywgaW52b2tl
T3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uKSB7CisgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAg
CisgICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0gZXZhbChvYmplY3RTdHJpbmcpOworICAgIGV2YWwo
YAorICAgICAgICAke29iamVjdFN0cmluZ30gPSAoKSA9PiB7CisgICAgICAgICAgICArK2NhbGxD
b3VudDsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9iamVjdCguLi5hcmd1bWVudHMpOwor
ICAgICAgICB9OworICAgIGApOwogCiAgICAgZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFu
IG9iamVjdC4KICAgICBjb25zb2xlLmxvZyh7YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVz
ZSBBcnJheSBJdGVyYXRvciBhdCBsZWFzdCBvbmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkp
IHsgfQorICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbigpOwogCi0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5h
bEl0ZXJhdG9yKTsKKyAgICBldmFsKGAke29iamVjdFN0cmluZ30gPSBvcmlnaW5hbE9iamVjdDtg
KTsKIAogICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CkBAIC0zNiwyMyArNTMsOTkgQEAgZnVuY3Rp
b24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7bmFtZSwgZGVz
Y3JpcHRpb24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcsIGludm9rZU92ZXJyaWRk
ZW5Qcm9wZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkoJHtwcm90b3R5cGVTdHJp
bmd9LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlv
bi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke3Byb3RvdHlwZVN0cmlu
Z31bJHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuYCk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAgICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgb2JqZWN0U3Ry
aW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7CisgICAgICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RPYmplY3QoIiR7b2JqZWN0
U3RyaW5nfSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uLnRvU3RyaW5nKCl9KTtg
LCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBjYWxsIGNvdW50IHNob3Vs
ZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2
ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAg
ICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3Vt
ZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3Mo
IlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKICAgICAg
ICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlW1N5bWJv
bC5pdGVyYXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5IGl0ZXJhdGlvbiBpbiBJ
bmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwKLSAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoYHRyaWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsICJBcnJheS5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLiIpOwotICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5w
YXNzKCJQYXVzZWQuIik7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3Vt
ZSgpLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5w
YXNzKCJSZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVz
Y3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3Qg
YmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5
cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAg
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBs
ZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAg
ICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3lt
Ym9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlvbiBpbiBJ
bmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3Rv
dHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5
bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9u
OiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKKyAgICAgICAgICAgIGZv
ciAobGV0IHggb2Ygc2V0KSB7IH0KKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3Rv
dHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2Jz
ZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJy
YXkucHVzaCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisg
ICAgICAgIHByb3RvdHlwZVN0cmluZzogIkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3Bl
cnR5U3RyaW5nOiAiXCJwdXNoXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAg
ICBhcnJheS5wdXNoKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlw
ZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2
YWJsZTpTZXQucHJvdG90eXBlLmFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBp
biBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHBy
b3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzog
IlwiYWRkXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkg
PT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRk
KDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJTdHJpbmcgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2Jz
ZXJ2YWJsZS4iLAorICAgICAgICBvYmplY3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZv
a2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3
ZXIgPSBTdHJpbmcoNDIpOworICAgICAgICB9LAogICAgIH0pOwogCiAgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9k
ZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZDQ0MjE3ZDM2
MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUyMzgxNi4uYWZiZDMyZDUwMzdlNTJhZTkwYzIzM2Yy
MmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMzEsNyArMzEs
NyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IFtdLngueDsgfSBjYXRjaCAoZSkg
eyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIs
CiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBj
b2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBD
YWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2
ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTcwLDcg
KzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBldmFsKCJpZigpIik7IH0g
Y2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUi
OiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6
ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJl
dmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVF4oCmdGl2
ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAg
fQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtMTA0LDcgKzEwNCw3IEBAIEVYUFJF
U1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLnNw
bGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAg
ICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtu
YXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0
QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU+KApnRpdmUgY29kZV1c
bkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0sCiAgICAg
ICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2RlIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CmluZGV4IGJmY2FjOTg5
ZWFjMGZiZDgwZTg1YWNjNjNjNGU3YzI4NmI4N2EzODUuLjEyMzNlYjM5NDgxNzNiNDA3NmQzMzA5
YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjQsOCArNjQsOCBAQCBQQVNT
OiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAog
ICAgICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgICAgICJzY3JpcHRJZCI6ICI8Zmls
dGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAg
ICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIs
CkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAg
ImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2Ny
aXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAg
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9
CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3
LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6
ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRl
cmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51
bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAg
ICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAg
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmluZGV4IDY3MmIzNTMzODAwY2JlMjU5ZWU4ODg3YWJl
MTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0ZTQ1NWQ4NjkzYzhkYWJlNDI5NTY0MzFkOTUxMzgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1s
CkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAvLyBUbyBhdm9pZCBm
bGFraW5lc3MgcHJpbnQgb25seSBldmVudHMgdGhhdCB3ZSBhbHdheXMgZXhwZWN0LgogICAgIGNv
bnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNldChbIlJlbmRlcmluZ0ZyYW1lIiwgIkNvbnNvbGVQ
cm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAiRnVuY3Rpb25DYWxsIl0pOworCisgICAgLy8gVGhl
IGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgY2FsbCBmcmFtZShzKSBoYXZlIGRpZmZlcmVudCBs
aW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMuIFdlIG9ubHkKKyAg
ICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2YWx1ZXMgZm9yIHRob3NlIHNwZWNpZmljIGNhbGwg
ZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBvdGhlciBsaW5lL2NvbHVtbiBudW1iZXJzIHJlbWFp
biBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9uTmFtZUxlbmd0aCA9IDA7CisgICAgbGV0IHVybExl
bmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAg
IGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUiKSB7CisgICAgICAgICAgICBmdW5jdGlvbk5hbWVM
ZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGlmIChrZXkgPT09ICJjaGlsZHJlbiIgJiYgdGhpcy5zdGFy
dFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGUgPT4gZXZlbnRBbGxvd2xp
c3QuaGFzKGUudHlwZSkpOwogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBrZXkg
PT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJZCIp
CiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworICAgICAgICBpZiAoKGtleSA9PT0g
ImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNvbHVtbk51bWJlciIpICYmICFmdW5jdGlvbk5hbWVM
ZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRlcmVkPiI7CisK
KyAgICAgICAgaWYgKGtleSA9PT0gInVybCIpCisgICAgICAgICAgICB1cmxMZW5ndGggPSB2YWx1
ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiIHx8IGtleSA9PT0gInNjcmlwdE5h
bWUiKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL14uK0xheW91dFRlc3RzXC9p
bnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCAyNWY5MzBlMjkyMWY4ODljMTY0NzdmYmZhMTAy
YTJkMWM3Njc3NjgwLi41NmQxODQwOGJkZGU5YTdiMDcwMjM5NmI5NGY5Nzk3NmNmM2JkYWVkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjAsOCArNjAsOCBA
QCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIs
CiAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+
IiwKLSAgICAgICAgICAibGluZU51bWJlciI6IDE0MiwKLSAgICAgICAgICAiY29sdW1uTnVtYmVy
IjogOTcKKyAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAi
Y29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAi
ZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTExMyw4ICsxMTMsOCBAQCBQQVNTOiBDYXB0dXJp
bmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwK
ICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQy
LAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTY1LDggKzE2NSw4IEBAIFBBU1M6IENhcHR1
cmluZyBzdGFydGVkLgogICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgInVybCI6ICIi
LAogICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgImxpbmVOdW1iZXIiOiAx
NDIsCi0gICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0
ZXJlZD4iLAorICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgIH0KICAgXSwK
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458754</attachid>
            <date>2022-05-03 13:30:07 -0700</date>
            <delta_ts>2022-05-03 19:02:50 -0700</delta_ts>
            <desc>Patch v1.3</desc>
            <filename>bug-152294-20220503133006.patch</filename>
            <type>text/plain</type>
            <size>153758</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NzUyYjY1OGM4ZjVhMmJjZmQ3NTQyOTQ0MTYxMGU5ZTQxNTQwMzQ0Li4xZWI5NjdkYzBkZGE1ZjQ5
YjE0YTY4MzFiNTZiN2JmYjk2YzI0Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgYW5kIG5ldyB0ZXN0IGNhc2VzIGluIGBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbGAKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBCdWlsZCBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBhIHBsYWluIGhlYWRlciBmaWxl
IGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93a2J1aWx0
aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJp
bmcpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAg
ICAgICAtIEluc3BlY3RvckluamVjdGVkU2NyaXB0IGNvbnRhaW5zIHVuYmFsYW5jZWQgY3VybHkg
YnJhY2tldHMgaW5zaWRlIHF1b3Rlcy4gVGhlIGdlbmVyYXRpb24gb2YgYnVpbHRpbnMgaXMgbm93
CisgICAgICAgIGhhcmRlbmVkIGFnYWluc3QgdGhpcy4gUHJldmlvdXNseSBhbGwgY3VybHkgYnJh
Y2tldHMgd2VyZSBjb3VudGVkLCB3aGljaCBtZWFudCB0aGF0IHRoZSBzb3VyY2UgY29kZSB3b3Vs
ZCBiZSBjdXQKKyAgICAgICAgb2ZmIGVhcmxpZXIgdGhhbiB0aGUgYWN0dWFsIGVuZCBvZiB0aGUg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgor
ICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAg
ICAgICAtIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIHVzZXMgZGVzdHJ1Y3R1cmluZyB0
byBnZXQgdGhlIGBSZW1vdGVPYmplY3RgIGFuZCBgQ29tbWFuZExpbmVBUElgIGNsYXNzZXMgYXQK
KyAgICAgICAgaW5zdGFudGlhdGlvbi4gV2UgbmVlZCB0byB0cmVhdCB0aGlzIGRlc3RydWN0dXJl
IGFzIGEgc2luZ2xlIHBhcmFtZXRlciwgb3RoZXJ3aXNlIGRlYnVnIGFzc2VydGlvbnMgd2lsbCBj
YXRjaAorICAgICAgICB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBwYXJhbWV0ZXIgY291bnRzLgor
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAtIEFkZCBzeW1ib2xzIHRoYXQgd2UgbmVlZCB0
byBoYXZlIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mLCBhbmQgZm9yIHNvbWUgb2YgdGhvc2Ugc3ltYm9s
cyBtYWtlIHRoZW0gbGluay10aW1lIGNvbnN0YW50cy4KKworICAgICAgICAqIGJ1aWx0aW5zL0l0
ZXJhdG9ySGVscGVycy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYnVpbHRpblNldEl0ZXJh
YmxlKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYnVpbHRpbk1hcEl0ZXJhYmxlKToKKyAgICAg
ICAgLSBBZGQgcmV1c2FibGUgaGVscGVycyBmb3IgZ2V0dGluZyBidWlsdGluIGl0ZXJhdG9ycyBm
b3IgTWFwcyBhbmQgU2V0cy4gVGhpcyBpcyBkb25lIHdpdGggcHJpdmF0ZSBzeW1ib2xzIHRoYXQK
KyAgICAgICAgcmVwcmVzZW50IHRoZSBzYW1lIGZ1bmN0aW9uIHRoYXQgdGhlIGl0ZXJhdG9yIHdv
dWxkIGhhdmUgcmV0dXJuZWQuIFdlIGNyZWF0ZSBhIG5ldyB3cmFwcGVyIG9iamVjdCB0byBhbGxv
dyB1c2FnZQorICAgICAgICB0byBmb2xsb3cgdGhlIHNhbWUgcGF0dGVybiBhdCBkZWFsaW5nIHdp
dGggYW4gdW53cmFwcGVkIGl0ZXJhYmxlIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgICogaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5o
OgorICAgICAgICAtIFVzZSB0aGUgbmV3IGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIEluamVj
dGVkIFNjcmlwdCBjcmVhdGlvbiBmdW5jdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TW9kdWxlOjplbnN1cmVJbmplY3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmg6CisgICAgICAgIC0gSW5qZWN0ZWQgbW9kdWxlcyBhcmUgbm93IHByb3ZpZGVk
IGFzIGEgSlNGdW5jdGlvbiwgbm90IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgLSBVc2UgcHJpdmF0ZSBzeW1i
b2xzIHRocm91Z2hvdXQgdG8gZW5zdXJlIHdlIGdldCBub24tb2JzZXJ2YWJsZSwgbm9uLW92ZXJy
aWRkZW4gdmVyc2lvbnMgb2YgZnVuY3Rpb25zIGFuZCB2YWx1ZXMuCisgICAgICAgIC0gSW4gbWFu
eSBjYXNlcywgdGhpcyBpcyBhIDE6MSBtYXBwaW5nIHdoZXJlIHRoZSBuZXcgc3ltYm9sIGlzIGp1
c3QgcHJlZml4ZWQgd2l0aCBhbiBgQGAuCisgICAgICAgIC0gRm9yIHB1c2hpbmcgdmFsdWVzIHRv
IGFycmF5cywgdXNlIGBAYXJyYXlQdXNoYCwgdGhlIGJ1aWx0aW4gd2F5IG9mIHB1c2hpbmcgYSB2
YWx1ZSBpbnRvIGFuIGFycmF5LgorICAgICAgICAtIEZvciB0aGUgYFN5bWJvbGAgY29uc3RydWN0
b3IsIGp1c3QgdXNlIHRoZSBleGlzdGluZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGluc3RlYWQg
b2YgZXhwb3NpbmcgYSBwcml2YXRlCisgICAgICAgIHZlcnNpb24gb2YgdGhlIGBTeW1ib2xgIGNv
bnN0cnVjdG9yLi4KKyAgICAgICAgLSBgU3ltYm9sLnRvU3RyaW5nVGFnYCBpcyBjb252ZXJ0ZWQg
dG8gYEBAdG9TdHJpbmdUYWdgLCB0aGUgcHJpdmF0ZSB2ZXJzaW9uIG9mIHRoYXQgc3ltYm9sLgor
ICAgICAgICAtIGBNYXRoLm1heGAgaW4gYFJlbW90ZU9iamVjdC5wcm90b3R5cGUuX2dlbmVyYXRl
UHJldmlld2Agbm93IHVzZXMgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIGNvbXBh
cmlzb24KKyAgICAgICAgaW5zdGVhZCBvZiBleHBvc2luZyBib3RoIE1hdGggYW5kIE1hdGgubWF4
IGFzIHByaXZhdGUgYnVpbHRpbnMuCisgICAgICAgIC0gQ3JlYXRlIG9iamVjdHMgYXMgcHJvdG90
eXBlLWxlc3MgdXNpbmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVz
c09iamVjdCwgd2hpY2ggY2FuIGFsc28gdGFrZQorICAgICAgICBhcmd1bWVudHMgdGhhdCBhcmUg
a2V5IHZhbHVlIHBhaXJzIGZvciBuZWFyLXBhcml0eSB3aXRoIG5vcm1hbCBPYmplY3QgY3JlYXRp
b24gdmlhIGB7fWAuCisgICAgICAgIC0gQ3JlYXRlIGFycmF5cyBhcyBwcm90b3R5cGUtbGVzcyB1
c2luZyB0aGUgbmV3IGJ1aWx0aW4gaGVscGVyIEBjcmVhdGVQcm90b3R5cGVsZXNzQXJyYXksIHdo
aWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHdoaWNoIGFyZSBlbnRyaWVzIHRv
IHB1dCBpbnRvIHRoZSBhcnJheS4KKyAgICAgICAgLSBGb3Igc3ByZWFkaW5nIGFyZ3VtZW50cyAo
Zm9yIHRoZSBjb25zb2xlIGNvbW1hbmRsaW5lIGZ1bmN0aW9ucykgd2Ugc2hvdWxkIGNyZWF0ZSBh
IG5ldyBwcm90b3R5cGVsZXNzIGFycmF5IHRvCisgICAgICAgIHNwcmVhZCBpbnN0ZWFkIG9mIHNw
cmVhZGluZyB0aGUgcmF3IGFyZ3VtZW50cyB0byBhdm9pZCBpbnRlcmFjdGluZyB3aXRoIGEgcG90
ZW50aWFsbHkgbW9kaWZpZWQgaXRlcmF0b3IuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgLSBBZGQgdGhlIGxpbmUgbnVtYmVyIHRv
IGJ1aWx0aW4gY29tcGlsYXRpb24gbG9nZ2luZyB0byBoZWxwIGlkZW50aWZ5IHdoZXJlIHNvbWV0
aW1lcyBhbWJpZ3VvdXMgZXJyb3JzIG9jY3VycmVkLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgLSBFeHBv
c2UgbmVjZXNzYXJ5IGZ1bmN0aW9ucy9jb25zdHJ1Y3RvcnMgdmlhIHRoZWlyIHByaXZhdGUgbmFt
ZSBmb3IgdXNlIGluIEluamVjdGVkU2NyaXB0U291cmNlLmpzIGFuZAorICAgICAgICBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcworCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIC0gQWRkIGEgbGluay10aW1lIGNvbnN0YW50IGZvciB0aGUgU3Ry
aW5nIGNvbnN0cnVjdG9yLgorICAgICAgICAtIEFkZCBoZWxwZXJzIGZvciBKU09OIHBhcnNpbmcv
c2VyaWFsaXphdGlvbi4KKwogMjAyMi0wNS0wMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+IGFuZCBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4g
YW5kIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbV0sy
XSBBZGQgQVBJIHRvIGFsbG93IGVtYmVkZGVyIHRvIHNldCBhIHRpbWV6b25lIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggM2U4M2JiMzVmODU5OTJkZjA2MmY1MzY1YTc0NzY3NGM1OGZhMDJkYy4uODc4
YWE2ZTU5MDZiZGNiOWM5YzUxM2RlNmI3ODEzODEwZWY5YWFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDIyLTA1LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBh
IGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQt
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIy
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IC0gQnVpbGQgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3Qg
YXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBjb250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAg
ICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmg6CisgICAg
ICAgIC0gUHJvdmlkZSBhIEpTRnVuY3Rpb24gZm9yIG1vZHVsZSBpbmplY3Rpb24gaW5zdGVhZCBv
ZiByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanM6CisgICAgICAgIC0gU2ltaWxhciB0byBKYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMsIHVzZSBwcml2YXRlIG5hbWVzIGZvciBwcm9w
ZXJ0aWVzIGFuZCBmdW5jdGlvbnMKKyAgICAgICAgdGhyb3VnaG91dCB0byBnZXQgbm9uLXVzZXIt
b3ZlcnJpZGRlbiBidWlsdGlucy4KKyAgICAgICAgLSBJbiBgbm9ybWFsaXplRXZlbnRUeXBlc2Ag
dXNlIGEgU2V0IGluc3RlYWQgb2YgYW4gYXJyYXksIHNpbmNlIHdlIGFyZSBwcm9jZXNzaW5nIHVz
ZXItcHJvdmlkZWQgdHlwZXMgdGhhdCBtYXkKKyAgICAgICAgYmUgcmVwZWF0ZWQuIFRoaXMgbWVh
bnMgdGhhdCB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHR5cGVzIHRvIGluc2VydCB0
aGVtIGluIHRoZSBzZXQsIGJ1dCBzaW5jZQorICAgICAgICBgQGFycmF5UHVzaGAgZG9lc24ndCBz
dXBwb3J0IHB1c2hpbmcgbXVsdGlwbGUgdmFsdWVzIGF0IHRoZSBzYW1lIHRpbWUgdGhpcyBpcyBu
byBtb3JlIHdvcmsgdGhhbiB1c2luZyBhbiBBcnJheS4KKwogMjAyMi0wNS0wMyAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yYWdlTWFwOjpyZW1vdmVJdGVt
IG1heSBmYWlsIHRvIHJlbW92ZSBpdGVtIGZyb20gbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJhYzEwNTI2ZWFiODZkMjQxYzUxYWQ4OS4u
ZTZlZDdlZDQwNjM3YmE1MmYxMjUyMDg3Y2JmOTZhMjg4ZjViNGNmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5
cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdFNvdXJjZS5qcwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBAIC0xNDA1
LDE3ICsxNDA2LDYgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCi1h
ZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQ
RU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwg
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01NQU5EICR7Q01B
S0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVj
dGVkU2NyaXB0U291cmNlLmpzIiA+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVD
VVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7SkFWQVND
UklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gJHtKYXZh
U2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4u
anMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0gICAg
VkVSQkFUSU0pCi0KLWxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oKQotCiBp
ZiAoV1RGX0NQVV9YODZfNjQpCiAgICAgaWYgKE1TVkMgQU5EIE5PVCBFTkFCTEVfQ19MT09QKQog
ICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGQ1NDBiZDUxOTIx
N2I1NTJiZjA2MDk4YzlkZGMyYTI3NGYzMzQwYi4uZjdiM2RiN2I2MWQzMDYwN2U4YTZmYjUxNDNh
NGMyNGVhZDIyODg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjEsNyArMjEsNiBAQCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvR2VuZXJhdGVkV2FzbU9w
cy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9HZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0Qnl0ZWNvZGVzLmFzbQogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRXYXNtLmFzbQotJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0U291cmNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclByb3RvdHlwZS5s
dXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2N2YyYzY4NTRmOGExYmExM2MwOTVmN2UxNTRm
NjhlOTdjYmYzOTEuLjFmYjYyM2NkNmY2ZThkODk4N2Y5NDgwNDU0NGYwZDQ0ZTViMzVmMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02OCw3ICs2OCw2
IEBAIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0gJChKYXZhU2NyaXB0Q29yZSkvU2NyaXB0
cwogCiAuUEhPTlkgOiBhbGwKIGFsbCA6IFwKLSAgICBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIFwK
ICAgICBMZXhlci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBSZWdFeHBKaXRU
YWJsZXMuaCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09V
UkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3Ry
dWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90
b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1dlYkFzc2VtYmx5Lmpz
IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMgXAogIwogCiAjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9uIHRoZSBjb250
ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCkBAIC0zNjgsMTIgKzM2
OCw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgOiBDb21iaW5lZERv
bWFpbnMuanNvbiAkKElOU1BFQ1RPUl9HRU5FUkFUCiAJJChQRVJMKSAkKEphdmFTY3JpcHRDb3Jl
KS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL3ByZXByb2Nlc3MucGwgLS1pbnB1dCBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FO
RF9QTEFURk9STV9ERUZJTkVTKSIgLS1vdXRwdXQgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcwogCSQoREVMRVRFKSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzLmluCiAKLUluamVjdGVkU2NyaXB0U291cmNlLmggOiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCi0JZWNobyAiLy8jIHNvdXJjZVVSTD1fX0lu
amVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+IC4vSW5qZWN0ZWRTY3JpcHRT
b3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pz
bWluLnB5IDwgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzID4+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgLi9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAotCSQoREVMRVRF
KSBJbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQogQUlSX09QQ09ERV9GSUxFUyA9IFwKICAg
ICBBaXJPcGNvZGUuaCBcCiAgICAgQWlyT3Bjb2RlVXRpbHMuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTkyNzFjZmZkMTcu
LjI0ZDRiZTg2YjljMTVmZGM2ZDI3ZDczYmE5MGVmYTg5OTAzNGQyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNDQ1LDcgKzE0NDUsNiBAQAogCQlBNTEzRTVCRTE4NUJGQUND
MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCOTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVC
QjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKIAkJQTUx
M0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCRDE4
NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLzsgfTsK
LQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDNjE4NUY5
NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLzsgfTsKIAkJQTUxM0U1Q0Ix
ODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzkxODVGOTYyNDAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3Rl
ZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTJDOTVGRjIx
NTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAv
KiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zNzUxLDYgKzM3NTAsNyBAQAogCQkyQUQyRURGQTE5Nzk5RTM4
MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVudW1lcmF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
QUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5n
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDTG9nZ2luZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAv
KiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFNoYWRvd1Jl
YWxtUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1REYx
QUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVR5cGVEZWZpbml0aW9uSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtVHlwZURlZmluaXRpb25JbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNzcwQzRGMjdCOTRDRTQwMDMwODA5
MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MDcsNyArNDcwNyw2IEBACiAJCUE1MTNFNUJDMTg1QkZBQ0Mw
MDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVB
RCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5
NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzkxODVGOTYyNDAw
N0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdEJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4NCw3ICs3MjgzLDYgQEAK
IAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUubHV0LmggKi8s
CiAJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQu
aCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20g
Ki8sCi0JCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNl
LmggKi8sCiAJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmx1dC5oICovLAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtOTM2Myw2ICs5MzYx
LDcgQEAKIAkJCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNTM0RDlCRjgyMzYzQzU1RDAwNTQ1MjREIC8qIFNldEl0
ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTcwMzU1ODdEMUM0MTg0MTkwMDRCRDdCRiAvKiBT
ZXRQcm90b3R5cGUuanMgKi8sCisJCQkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRv
d1JlYWxtUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzYwMUI2NUQ5QjEwMDlEQjFFRiAvKiBT
dHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM2MTFCNjVEOUIxMDA5REIxRUYgLyog
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2
NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKQEAgLTEwNDUyLDcgKzEwNDUxLDYgQEAKIAkJ
CQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyog
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MTNFNUM3MTg1Rjk0
NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk1OUU5MzIxQkQxODI3OTAwMUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRz
LWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwNUJCNjkxRDEyMDUwRTAwMTlG
RTU3IC8qIElubGluZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4QTdCRjAxQjgyOTc1
QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjM4MCw3
ICsxMjM3OCw2IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMkMxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMx
MTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQwOSw3ICsxMjQw
Niw2IEBACiAJCQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZp
ZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZB
NTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0Iy
ODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAog
CQkJCTUzMEE2NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNl
MTM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyArMTI0MTYsNiBA
QAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291
cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAv
KiBVbmlmaWVkU291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEzNUM5MjgxQjVC
MDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4
RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQyNSw5IEBACiAJCQkJ
NTM4RjE1RUEyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZEIC8qIFdhc21B
aXJJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4MUI1QjAwMDBD
MUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUNB
MjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3VyY2VzICovLAor
CQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3dr
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRmNWYwMGE2ZjJm
NDkwMTA3MzAxOTc5YTg2ZDE2ODcuLjM4NzRkZDQyZjI3NjBmMzRlODZkOGRjODE4NjFhNTJlYzg4
ZmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRp
bnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
d2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAtNTIsNiArNTIsNyBAQCBmdW5jdGlvbklz
QXN5bmNSZWdFeHAgPSByZS5jb21waWxlKHIiKGFzeW5jKT9ccypmdW5jdGlvbiIsIHJlLk1VTFRJ
TElORSB8IHJlLkRPVAogZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9u
XHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uT3ZlcnJp
ZGRlbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiLipeQG92ZXJyaWRkZW5OYW1lPShcIi4rXCIp
JCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0g
cmUuY29tcGlsZShyIl4oPzphc3luY1xzKyk/ZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMq
XHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxM
KQorZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIgPSByZS5jb21waWxlKHIiLFxzKig/IVtee31d
Klx9KSIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIAogbXVsdGlsaW5lQ29tbWVudFJlZ0V4
cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkK
IHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1V
TFRJTElORSB8IHJlLkRPVEFMTCkKQEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBCdWlsdGluRnVu
Y3Rpb246CiAgICAgICAgIGlzX25ha2VkX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25OYWtlZENvbnN0
cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQogICAgICAgICBpZiBp
c19uYWtlZF9jb25zdHJ1Y3RvcjoKICAgICAgICAgICAgIGlzX2NvbnN0cnVjdG9yID0gVHJ1ZQot
ICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRl
ckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAg
cGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0
ZXIuc3BsaXQoZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2Up
WzBdKV0KICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAgICAgICAgICBw
YXJhbWV0ZXJzID0gW10KIApAQCAtMzAzLDIxICszMDQsNTUgQEAgY2xhc3MgQnVpbHRpbnNDb2xs
ZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0YXJ0ID0gMAog
ICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CiAgICAgICAg
ICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQog
ICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGRlcHRoID0g
MQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJh
Y3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBO
b25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAgICAgaWYgdGV4
dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKLSAg
ICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAgICAgICAgICAg
IGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAg
ICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9IHRl
eHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3RlcjoKKyAgICAg
ICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyIGlu
ICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFj
dGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRD
aGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIGVsaWYgY3Vy
cmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFj
dGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgRklYTUU6IDx3ZWJraXQu
b3JnL2IvMjM5ODE3PiBSZWd1bGFyIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5iYWxhbmNlZCBx
dW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAgICAgICAgICAgICAgICMgZm91bmQgaW4g
YFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNlIHRoZSBzdGF0
ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAgICAgICAgICAjIGluc2lkZS9vdXRzaWRl
IGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBzdHJpbmcgc3Rh
dGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAgICAgICAgICAgICAjICh1bmxlc3Mgd2Ug
YXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVubGVzcyBhIHJl
Z3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAgICAgICAgICAgICMgdW5iYWxhbmNlZCBj
dXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJlIGFib3V0IGlz
IG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAgICAjIHJlZ3Vs
YXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAgICAgICAgICAg
aWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0
ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0
ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVy
ID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAgICAgICAgICAg
IGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRo
IC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0aW9uQm91bmRz
LmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0gW3RleHRb
c3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCmluZGV4IDliOWFiNzVjNmQ3NWFhNzNmN2UxOGQ2OWZlMmE4ODc3YWVkNWFiNDguLmEx
ZDNjOTNiZTI3YTM4ZDBhZWViZDc1MDc1ZDY1MGMxZjk2N2ZiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0x
MDYsNiArMTA2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRh
Ymxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIGkgPSBwYXJhbWV0ZXJzU3RhcnQgKyAxOwogICAgICAgICB1bnNpZ25lZCBjb21tYXMg
PSAwOworICAgICAgICBib29sIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsKICAgICAgICAg
Ym9vbCBzYXdPbmVQYXJhbSA9IGZhbHNlOwogICAgICAgICBib29sIGhhc1Jlc3RQYXJhbSA9IGZh
bHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTEzLDcgKzExNCwxMyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxl
KFZNJiB2bSwgY29uc3QgUwogICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJyknKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9
PSAnLCcpCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnfScpCisgICAgICAgICAg
ICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOworICAgICAgICAgICAgZWxzZSBpZiAo
Y2hhcmFjdGVyc1tpXSA9PSAneycgfHwgaW5zaWRlQ3VybHlCcmFja2V0cykgeworICAgICAgICAg
ICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSB0cnVlOworICAgICAgICAgICAgICAgICsraTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnLCcpCiAgICAgICAgICAgICAgICAgKytjb21tYXM7CiAgICAgICAgICAgICBl
bHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tpXSkpCiAgICAg
ICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0ODNlODcxZTc0M2E5YTEyYjJjZTMwZGRm
YzJhMDBjNTJhZWJjNWQuLjcyOTFmYTJkNWIyZmIxYTE3NTdlMWUxMDVjZWMzMWI5NGNhNGRkOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAg
LTE5Miw2ICsxOTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oY3JlYXRlUmVtb3Rl
RnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oYXJy
YXlTb3J0KSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBcCisgICAgbWFjcm8oanNvblN0cmluZ2lm
eSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAorICAgIG1hY3Jv
KGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCisgICAg
bWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5U3lt
Ym9scykgXAorICAgIG1hY3JvKGhhc093bikgXAorICAgIG1hY3JvKGluZGV4T2YpIFwKKyAgICBt
YWNybyhwb3ApIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNlNDNiZmMwZTgz
MTE2MDUwMmE5ODVlMjQxYWUwN2M3N2VlMmY0Li4zYTgxOTdmMjA1NGNhY2YwOTg1Nzg2ZGUzZWZl
MWE4ZWYwYWE3MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
SXRlcmF0b3JIZWxwZXJzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9J
dGVyYXRvckhlbHBlcnMuanMKQEAgLTUxLDMgKzUxLDQzIEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVy
YXRpb24oaXRlcmFibGUpCiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGluZGV4Kyss
IGl0ZW0udmFsdWUpOwogICAgIH0KIH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIHdyYXBw
ZWRJdGVyYXRvcihpdGVyYXRvcikKK3sKKyAgICBsZXQgd3JhcHBlciA9IHt9OworICAgIHdyYXBw
ZXIuQEBpdGVyYXRvciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKyAgICByZXR1
cm4gd3JhcHBlcjsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5TZXRJdGVy
YWJsZShzZXQpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIGlmICghQGlzU2V0KHNl
dCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpblNldEl0ZXJhYmxlIGNhbGxlZCB3
aXRoIG5vbi1TZXQgb2JqZWN0LiIpOworCisgICAgLy8gVXNpbmcgdGhlIHByaXZhdGUgQEBpdGVy
YXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9sIGl0c2VsZiBoYXMgbm90IGJlZW4g
bW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAgLy8gYWdhaW5zdCB0aGUgaXRlcmF0
b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3IgU2V0cywgYEB2YWx1ZXNgIGhhcyBh
IGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdpbmFsbHkKKyAgICAvLyBwbGFjZWQgYXQgYFN5bWJv
bC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBzZXQuQHZhbHVlczsKKyAg
ICAKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKHNl
dCkpOworfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gYnVpbHRpbk1hcEl0ZXJhYmxlKG1h
cCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgCisgICAgaWYgKCFAaXNNYXAobWFwKSkKKyAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluTWFwSXRlcmFibGUgY2FsbGVkIHdpdGggbm9u
LU1hcCBvYmplY3QuIik7CisKKyAgICAvLyBVc2luZyB0aGUgcHJpdmF0ZSBAQGl0ZXJhdG9yIG9u
bHkgZ3VhcmFudGVlcyB0aGF0IHRoZSBzeW1ib2wgaXRzZWxmIGhhcyBub3QgYmVlbiBtb2RpZmll
ZCwgYnV0IGRvZXMgbm90IHByb3RlY3QKKyAgICAvLyBhZ2FpbnN0IHRoZSBpdGVyYXRvciBpdHNl
bGYgaGF2aW5nIGJlZW4gcmVwbGFjZWQuIEZvciBNYXBzLCBgQGVudHJpZXNgIGhhcyBhIGNvcHkg
b2YgdGhlIGZ1bmN0aW9uIG9yaWdpbmFsbHkKKyAgICAvLyBwbGFjZWQgYXQgYFN5bWJvbC5pdGVy
YXRvcmAuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBtYXAuQGVudHJpZXM7CisKKyAgICBy
ZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKG1hcCkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgK
aW5kZXggMWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMy4uYjg2NTNlODY1
Njk5MzFmY2JiNmUyZjRiNDI1NDhjNGIwYzZlMTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMjAsNiArMTIwLDkgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlvbiwgbnVsbHB0
cikgXAogICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoYXJyYXlTb3J0
LCBudWxscHRyKSBcCisgICAgdihqc29uUGFyc2UsIG51bGxwdHIpIFwKKyAgICB2KGpzb25TdHJp
bmdpZnksIG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAKICNkZWZpbmUg
REVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAppbmRleCBjYjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5NzcwLi4yMmQx
YmNlN2VhYjBmYWYxNTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRl
ICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0xMzUsMjUg
KzEzNSwxOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNlcHRpb25WYWx1
ZSgpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIH0KIAot
U3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewot
ICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmplY3RlZFNjcmlw
dFNvdXJjZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLUV4cGVj
dGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxF
eGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29k
ZSA9IG1ha2VTb3VyY2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVl
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1
YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0gICAgSlNWYWx1
ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwgc291cmNlQ29k
ZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBpZiAoZXZhbHVh
dGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2YWx1YXRpb25F
eGNlcHRpb24pOworICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGdsb2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVJ
bnNwZWN0b3JJbmplY3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFmdW5jdGlvblZh
bHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6
OmdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENh
bGxEYXRhOjpUeXBlOjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVkPEpTT2JqZWN0
KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmpl
Y3RlZFNjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRh
LCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0
aW9uKCkpKTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBAIC0xODMsNyAr
MTc2LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNj
cmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3Rl
ZFNjcmlwdFNvdXJjZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3Vs
dCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAgIGlmICghY3Jl
YXRlUmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0LmVycm9yKCk7
CiAgICAgICAgIEFTU0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJbmplY3RlZFNj
cmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAg
IHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDol
ZClcbiIsIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkudXRmOCgpLmRh
dGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0
ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFsdWUoKSkgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9iamVjdCIpOwot
ICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4YzMyNzc3NDk1
NDhlYS4uYjU0MTAxMmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oCkBAIC03NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRlOgotICAgIFN0
cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3Qq
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAgICBFeHBlY3Rl
ZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAogICAgIEluc3BlY3RvckVu
dmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1f
aW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVk
NmZiZTg2Yjg5NzQxMmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdmZGI0YmFkNWQw
YTY1NzhmODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAg
ICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3Ig
JyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1ZSgp
LnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0YSgp
LCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigp
IHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7CiAgICAg
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
ICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChKU0M6OkpTVmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuZ2xv
YmFsT2JqZWN0KCkpKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpOwogICAg
ICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVz
dWx0KSB7CkBAIC05Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3Vy
ZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAg
ICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBzdGFja1swXS5jb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCJFcnJvciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClc
biIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmpl
Y3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsK
LSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5YTAzYmVkYjVl
YWY4NThiLi5hNGJlZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0ZjkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1v
ZHVsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVibGljIEluamVj
dGVkU2NyaXB0QmFzZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9kdWxlKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJmMWViNzFiOGM0
OTI1ZjZjNC4uNTIzZjc0YzM5YWRlOGRiN2QyNmIzYzNhNWE5OWNjMWE0OGQwNmE4MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAx
NC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTI3LDE3ICsyNywzOCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJM
PV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKK0BnbG9iYWxQcml2YXRl
CitmdW5jdGlvbiBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KC8qIGtleTEsIHZhbHVlMSwga2V5
MiwgdmFsdWUyLCAuLi4gKi8pCit7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJSAyICE9PSAw
KQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJgY3JlYXRlUHJvdG90eXBlbGVzc09iamVjdGAg
cmVxdWlyZXMgdGhhdCBlYWNoIGtleSBhcmd1bWVudCBiZSBmb2xsb3dlZCBieSBhIHZhbHVlLCBy
ZXN1bHRpbmcgaW4gYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpOwogCi0oZnVuY3Rpb24g
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkKSB7CisgICAgbGV0IG9iamVjdCA9IEBPYmplY3QuQGNyZWF0ZShudWxsKQorICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAyKQorICAgICAgICBvYmplY3Rb
YXJndW1lbnRzW2ldXSA9IGFyZ3VtZW50c1tpICsgMV07CiAKLS8vIEZJWE1FOiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNv
dXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4g
YnVpbHQtaW5zCisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotdmFyIE9iamVjdCA9IHt9LmNvbnN0
cnVjdG9yOworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZVByb3RvdHlwZWxlc3NBcnJh
eSgvKiB2YWx1ZTEsIHZhbHVlMiwgLi4uICovKQoreworICAgIGxldCBhcnJheSA9IG5ldyBAQXJy
YXkoKTsKKyAgICBhcnJheS5wcm90b3R5cGUgPSBudWxsOworICAgIAorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICBAYXJyYXlQdXNoKGFycmF5
LCBhcmd1bWVudHNbaV0pOworICAgIAorICAgIHJldHVybiBhcnJheTsKK30KKworQGdsb2JhbFBy
aXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0KEluamVjdGVkU2Ny
aXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKQorewogCiBm
dW5jdGlvbiB0b1N0cmluZyhvYmopCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhvYmopOworICAgIHJl
dHVybiBAU3RyaW5nKG9iaik7CiB9CiAKIGZ1bmN0aW9uIHRvU3RyaW5nRGVzY3JpcHRpb24ob2Jq
KQpAQCAtOTMsNiArMTE0LDE4IEBAIGZ1bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CisgICAgCitmdW5jdGlvbiBjcmVhdGVQcm90
b3R5cGVsZXNzQXJyYXlGcm9tQXJndW1lbnRzKGFyZ3VtZW50c09iamVjdCkgeworICAgIGxldCBh
cnJheSA9IEBjcmVhdGVQcm90b3R5cGVsZXNzQXJyYXkoKTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGFyZ3VtZW50c09iamVjdC5sZW5ndGg7ICsraSkKKyAgICAgICAgQGFycmF5UHVzaChhcnJh
eSwgYXJndW1lbnRzT2JqZWN0W2ldKTsKKyAgICAKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1
bmN0aW9uIG1heChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7Cit9CiAKIC8vIC0t
LS0tLS0KIApAQCAtMTAxLDEyICsxMzQsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9s
YXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0g
e307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhp
cy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKKyAgICAg
ICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRlUHJvdG90eXBlbGVzc09iamVjdCgp
OworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0gQGNyZWF0ZVByb3RvdHlwZWxl
c3NPYmplY3QoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0gQGNyZWF0ZVByb3RvdHlw
ZWxlc3NPYmplY3QoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IEBjcmVhdGVQcm90b3R5cGVs
ZXNzT2JqZWN0KCk7CiAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAg
ICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0
cyA9IEBjcmVhdGVQcm90b3R5cGVsZXNzQXJyYXkoKTsKICAgICB9CiAKICAgICAvLyBJbmplY3Rl
ZFNjcmlwdCBDKysgQVBJCkBAIC0xMTUsNyArMTQ4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cmFwQW5k
U2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2
ZVJlc3VsdCwgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUgPSBm
YWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0
SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5j
dGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuYXBw
bHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9u
KEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRT
Y3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21t
YW5kTGluZUFQSSkuQGFwcGx5KEB1bmRlZmluZWQsIGFyZ3MpOwogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTEzNiwxNiArMTY5LDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
IShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYgKCEocHJv
bWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewogICAgICAgICAgICAgY2FsbGJhY2so
Ik9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVlKSA9PiB7Ci0g
ICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdhc1Rocm93
bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKHZh
bHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZp
ZXcpLAotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3Jl
YXRlUHJvdG90eXBlbGVzc09iamVjdCgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFs
c2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUs
IHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyks
CisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCkgewogICAgICAg
ICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5LDcgKzE5Miw3IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCBy
ZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jcmVhdGVU
aHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKICAgICAgICAgfTsK
LSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgIHBy
b21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAKICAgICBldmFsdWF0
ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVj
dEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJl
dmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCwxNCArMjEzLDE0IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkp
CiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlk
IjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107CisgICAgICAgIGxldCByZXNvbHZl
ZEFyZ3MgPSBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5KCk7CiAgICAgICAgIGlmIChhcmdzKSB7
CiAgICAgICAgICAgICBsZXQgY2FsbEFyZ3MgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUo
YXJncyk7CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxBcmdzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZWRBcmdzW2ldID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJnc1tpXSk7CiAgICAg
ICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQFN0cmluZyhlKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5NywxMCArMjMwLDEwIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBp
ZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJH
aXZlbiBleHByZXNzaW9uIGRvZXMgbm90IGV2YWx1YXRlIHRvIGEgZnVuY3Rpb24iOwogCi0gICAg
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAg
ICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuYXBwbHkob2JqZWN0
LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRl
UHJldmlldykKLSAgICAgICAgICAgIH07CisgICAgICAgICAgICByZXR1cm4gQGNyZWF0ZVByb3Rv
dHlwZWxlc3NPYmplY3QoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAg
ICAgICAgICAgICAgICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9i
amVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5l
cmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFt
ZSk7CiAgICAgICAgIH0KQEAgLTIzMywxMyArMjY2LDEzIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgb3duUHJv
cGVydGllcywgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsK
ICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0gb3duUHJvcGVydGllcyA/IEluamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMgOiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0
aW9uTW9kZS5BbGxQcm9wZXJ0aWVzOwotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGll
cyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5l
cmF0ZVByZXZpZXd9KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0
SWQsIGNvbGxlY3Rpb25Nb2RlLCBAY3JlYXRlUHJvdG90eXBlbGVzc09iamVjdCgiZmV0Y2hTdGFy
dCIsIGZldGNoU3RhcnQsICJmZXRjaENvdW50IiwgZmV0Y2hDb3VudCwgImdlbmVyYXRlUHJldmll
dyIsIGdlbmVyYXRlUHJldmlldykpOwogICAgIH0KIAogICAgIGdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhvYmplY3RJZCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQog
ICAgIHsKICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0gSW5qZWN0ZWRTY3JpcHQuQ29sbGVj
dGlvbk1vZGUuT3duUHJvcGVydGllcyB8IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk5h
dGl2ZUdldHRlclByb3BlcnRpZXM7Ci0gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVz
KG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVy
YXRlUHJldmlldywgbmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlfSk7CisgICAgICAgIHJldHVy
biB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwgQGNyZWF0ZVBy
b3RvdHlwZWxlc3NPYmplY3QoImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LCAiZmV0Y2hDb3VudCIs
IGZldGNoQ291bnQsICJnZW5lcmF0ZVByZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsICJuYXRpdmVH
ZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlKSk7CiAgICAgfQogCiAgICAgZ2V0SW50ZXJuYWxQcm9wZXJ0
aWVzKG9iamVjdElkLCBnZW5lcmF0ZVByZXZpZXcpCkBAIC0yNTYsNyArMjg5LDcgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgZGVzY3Jp
cHRvcnMgPSB0aGlzLl9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsKICAgICAg
ICAgaWYgKCFkZXNjcmlwdG9ycykKLSAgICAgICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAg
IHJldHVybiBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5KCk7CiAKICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBkZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IGRl
c2NyaXB0b3IgPSBkZXNjcmlwdG9yc1tpXTsKQEAgLTI4MCwxMiArMzEzLDEzIEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgbGV0IGVudHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5qZWN0ZWRTY3Jp
cHRIb3N0LnN1YnR5cGUob2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7Ci0gICAgICAg
IHJldHVybiBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBlbnRyeSA9
IGVudHJpZXNbaV07CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVh
dGUoZW50cnkudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKCJrZXkiIGluIGVudHJ5KQogICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90
ZU9iamVjdC5jcmVhdGUoZW50cnkua2V5LCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsK
LSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGVudHJpZXM7CiAgICAgfQogCiAgICAgc2F2ZVJlc3VsdChjYWxsQXJndW1lbnRK
U09OKQpAQCAtMzA2LDEwICszNDAsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVzdWx0ID0g
QGNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheSgpOwogICAgICAgICBsZXQgZGVwdGggPSAwOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2Fs
bEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CisgICAgICAgICAgICBAYXJyYXlQdXNo
KHJlc3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxG
cmFtZSkpOwogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAg
ICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNiw3
ICszNjAsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
IHdyYXBKU09OU3RyaW5nKGpzb25TdHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJhdGVQcmV2aWV3KQog
ICAgIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3Qo
SlNPTi5wYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcp
OworICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChAanNvblBhcnNlKGpzb25TdHJp
bmcpLCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIH0gY2F0Y2gg
ewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KQEAgLTM0MywxMiArMzc3LDEy
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAg
bGV0IGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5zID09PSAi
c3RyaW5nIikKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbY29sdW1uc107CisgICAgICAgICAgICBj
b2x1bW5zID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheShjb2x1bW5zKTsKIAogICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKLSAg
ICAgICAgICAgIGNvbHVtbk5hbWVzID0gW107CisgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IEBj
cmVhdGVQcm90b3R5cGVsZXNzQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgY29sdW1ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNo
KHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKKyAgICAgICAgICAgICAgICBAYXJyYXlQdXNoKGNvbHVt
bk5hbWVzLCB0b1N0cmluZyhjb2x1bW5zW2ldKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBmYWxzZSwgdHJ1ZSwgY29s
dW1uTmFtZXMpOwpAQCAtMzk2LDcgKzQzMCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNz
IEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUgPT09ICJjb25zb2xl
IikgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RSZXN1bHQ7CiAgICAgICAgICAgICB0
aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgICAgICB0aGlzLl9zYXZlZFJl
c3VsdHMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVQcm90
b3R5cGVsZXNzQXJyYXkoKTsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBncm91cCA9IHRoaXMu
X29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwpAQCAtNDI5LDE0ICs0NjMsMTMgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgcmV0dXJuIHRo
aXMuX21vZHVsZXNbbmFtZV07CiAgICAgfQogCi0gICAgaW5qZWN0TW9kdWxlKG5hbWUsIHNvdXJj
ZSwgaG9zdCkKKyAgICBpbmplY3RNb2R1bGUobmFtZSwgbW9kdWxlRnVuY3Rpb24sIGhvc3QpCiAg
ICAgewogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gZmFsc2U7CiAKLSAgICAgICAgbGV0
IG1vZHVsZUZ1bmN0aW9uID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIHNvdXJj
ZSArICIpIik7CiAgICAgICAgIGlmICh0eXBlb2YgbW9kdWxlRnVuY3Rpb24gIT09ICJmdW5jdGlv
biIpCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVuY3Rpb24g
d2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1bGUiOwotICAgICAgICBtb2R1bGVGdW5jdGlvbihJ
bmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJ
ZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBob3N0KTsKKyAgICAgICAg
bW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qs
IGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KCJSZW1v
dGVPYmplY3QiLCBSZW1vdGVPYmplY3QsICJDb21tYW5kTGluZUFQSSIsIENvbW1hbmRMaW5lQVBJ
KSwgaG9zdCk7CiAKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7CiAgICAgfQpA
QCAtNDcwLDEwICs1MDMsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgewogICAgICAgICAgICAgbGV0IGdy
b3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CiAgICAgICAgICAgICBp
ZiAoIWdyb3VwKSB7Ci0gICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAgICAg
ICBncm91cCA9IEBjcmVhdGVQcm90b3R5cGVsZXNzQXJyYXkoKTsKICAgICAgICAgICAgICAgICB0
aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGdy
b3VwLCBpZCk7CiAgICAgICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9i
amVjdEdyb3VwTmFtZTsKICAgICAgICAgfQogCkBAIC00ODgsOCArNTIxLDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9mYWxsYmFja1dyYXBwZXIo
b2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwotICAgICAgICByZXN1bHQu
dHlwZSA9IHR5cGVvZiBvYmplY3Q7CisgICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlUHJvdG90
eXBlbGVzc09iamVjdCgidHlwZSIsIHR5cGVvZiBvYmplY3QpOwogICAgICAgICBpZiAoaXNQcmlt
aXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0gb2JqZWN0Owog
ICAgICAgICBlbHNlCkBAIC01MTUsNyArNTQ3LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZEFyZzsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybiBAdW5kZWZp
bmVkOwogICAgIH0KIAogICAgIF9jcmVhdGVUaHJvd25WYWx1ZSh2YWx1ZSwgb2JqZWN0R3JvdXAp
CkBAIC01MjQsMTAgKzU1NiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICB0cnkgewogICAgICAgICAgICAgcmVtb3RlT2JqZWN0LmRlc2NyaXB0
aW9uID0gdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSk7CiAgICAgICAgIH0gY2F0Y2ggeyB9Ci0g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB3YXNUaHJvd246IHRydWUsCi0gICAgICAgICAg
ICByZXN1bHQ6IHJlbW90ZU9iamVjdAotICAgICAgICB9OworICAgICAgICByZXR1cm4gQGNyZWF0
ZVByb3RvdHlwZWxlc3NPYmplY3QoCisgICAgICAgICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAg
ICAgICAgICAgICJyZXN1bHQiLCByZW1vdGVPYmplY3QsCisgICAgICAgICk7CiAgICAgfQogCiAg
ICAgX2V2YWx1YXRlQW5kV3JhcChldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgb2Jq
ZWN0R3JvdXAsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVy
bkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTU1MiwxMCArNTg0LDEw
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKIAotICAgICAgICAg
ICAgbGV0IHJldHVybk9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNl
LAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9i
amVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9
OworICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IEBjcmVhdGVQcm90b3R5cGVsZXNzT2Jq
ZWN0KAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9iamVjdEdyb3VwLCByZXR1
cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAgICAgICAg
ICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKICAgICAgICAgICAg
ICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5k
ZXg7CkBAIC01NzEsNyArNjAzLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgbGV0IGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKICAgICAgICAgaWYg
KGluY2x1ZGVDb21tYW5kTGluZUFQSSkKICAgICAgICAgICAgIGNvbW1hbmRMaW5lQVBJID0gdGhp
cy5jcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6
IG51bGwpOwotICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLmNhbGwob2JqZWN0LCBleHByZXNz
aW9uLCBjb21tYW5kTGluZUFQSSk7CisgICAgICAgIHJldHVybiBldmFsRnVuY3Rpb24uQGNhbGwo
b2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CiAgICAgfQogCiAgICAgX2NhbGxG
cmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCkBAIC02MDcsNyArNjM5LDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgLy8gQWx3
YXlzIGluY2x1ZGUgX19wcm90b19fIGF0IHRoZSBlbmQsIGJ1dCBvbmx5IGZvciB0aGUgZmlyc3Qg
ZmV0Y2guCiAgICAgICAgIGxldCBpbmNsdWRlUHJvdG8gPSAhc3RhcnQ7CiAKLSAgICAgICAgbGV0
IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IEBjcmVhdGVQcm90
b3R5cGVsZXNzQXJyYXkoKTsKICAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAgICAgICAg
aWYgKHN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIC0tc3RhcnQ7CkBAIC02MjIsMTMgKzY1
NCwxMyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAg
ICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0
b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAg
ICAgICAgICBpZiAoInN5bWJvbCIgaW4gZGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNj
cmlwdG9yLnN5bWJvbCA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci5zeW1ib2wsIG9i
amVjdEdyb3VwTmFtZSk7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3Ip
OworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAKICAg
ICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3Ro
ID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKIAog
ICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQp
ID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRTY3Jp
cHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdldHRl
cnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7CisgICAgICAgIH0sIEBjcmVhdGVQcm90b3R5cGVs
ZXNzT2JqZWN0KCJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMs
ICJpbmNsdWRlUHJvdG8iLCBpbmNsdWRlUHJvdG8pKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0
b3JzOwogICAgIH0KIApAQCAtNjM4LDEzICs2NzAsMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsK
KyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheSgpOwog
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7IGkr
KykgewogICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ldOwot
ICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6
IHByb3BlcnR5LnZhbHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0ZVBy
b3RvdHlwZWxlc3NPYmplY3QoIm5hbWUiLCBwcm9wZXJ0eS5uYW1lLCAidmFsdWUiLCBwcm9wZXJ0
eS52YWx1ZSk7CiAgICAgICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQogICAgICAgICAg
ICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMu
cHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRl
c2NyaXB0b3IpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9
CkBAIC02NTQsMTUgKzY4NiwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9
PT0gInByb3h5IikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgbmFtZVByb2Nl
c3NlZCA9IG5ldyBTZXQ7CisgICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IEBTZXQ7CiAK
ICAgICAgICAgLy8gSGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBu
YW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90b19fIik7CisgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFk
ZCgiX19wcm90b19fIik7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlRmFrZVZhbHVlRGVzY3Jp
cHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0
aXZlQmluZGluZ0dldHRlcikKICAgICAgICAgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IG9iamVjdFtuYW1lXX07
CisgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gQGNyZWF0ZVByb3RvdHlwZWxl
c3NPYmplY3QoIm5hbWUiLCBuYW1lLCAidmFsdWUiLCBvYmplY3RbbmFtZV0pOwogICAgICAgICAg
ICAgICAgIGlmIChkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlw
dG9yLndyaXRhYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iud3Jp
dGFibGUgPSB0cnVlOwpAQCAtNjc4LDExICs3MTAsMTEgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAg
ICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAg
ICAgICAgLy8gU2lsZW5jZSBhbnkgcG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlv
bnMgY3JlYXRlZCBmcm9tIGFjY2Vzc2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3Jvbmcg
dGhpcyBvYmplY3QuCi0gICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGlu
c3RhbmNlb2YgUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRX
aXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKLSAgICAgICAg
ICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IudmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKKyAg
ICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlz
ZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVy
VHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZmFr
ZURlc2NyaXB0b3IudmFsdWUuQGNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZha2VEZXNjcmlwdG9yOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IGUsIHdhc1Rocm93
bjogdHJ1ZX07CisgICAgICAgICAgICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IEBjcmVhdGVQ
cm90b3R5cGVsZXNzT2JqZWN0KCJuYW1lIiwgbmFtZSwgInZhbHVlIiwgZSwgIndhc1Rocm93biIs
IHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChpc093blByb3BlcnR5KQogICAgICAgICAgICAg
ICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGlm
IChzeW1ib2wpCkBAIC03MTAsMTUgKzc0MiwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBw
cm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChu
YW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKG5hbWVQcm9j
ZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3Rl
ZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogCi0gICAgICAgICAgICBuYW1l
UHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5A
YWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJv
cGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5h
bWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAg
ICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3Mu
CkBAIC03MjcsNyArNzU5LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1Zh
bHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNX
aXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9y
Lmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5o
YXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAgICAgICAgaWYgKEBTdHJpbmcoZGVz
Y3JpcHRvci5nZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRv
ci5nZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3IsICJnZXQiKSAmJiAhZGVzY3JpcHRv
ci5zZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3IsICJzZXQiKSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gRGV2ZWxvcGVycyBtYXkgY3JlYXRlIHN1Y2ggYSBkZXNjcmlwdG9yLCBz
byB3ZSBzaG91bGQgYmUgcmVzaWxpZW50OgogICAgICAgICAgICAgICAgICAgICAvLyBsZXQgeCA9
IHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwgInAiLCB7Z2V0OnVuZGVmaW5lZH0pOyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHgsICJwIikKICAgICAgICAgICAgICAgICAgICAg
bGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1i
b2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHRydWUpOwpAQCAtNzQ1LDEwICs3NzcsMTAg
QEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBs
ZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlzQXJy
YXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zp
bml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAgICAgIGlz
QXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBA
aXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxlbmd0aCA+IDA7CiAgICAgICAgIH0g
Y2F0Y2ggeyB9CiAKLSAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBv
ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKSB7CisgICAgICAgIGZvciAobGV0IG8gPSBvYmpl
Y3Q7IGlzRGVmaW5lZChvKTsgbyA9IEBPYmplY3QuQGdldFByb3RvdHlwZU9mKG8pKSB7CiAgICAg
ICAgICAgICBsZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09IG9iamVjdDsKICAgICAgICAgICAgIGxl
dCBzaG91bGRCcmVhayA9IGZhbHNlOwogCkBAIC03NjQsNyArNzk2LDcgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsK
KyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3Bl
cnR5TmFtZXMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0
eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBw
cm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC03NzYsOCArODA4LDggQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGlmIChzaG91bGRCcmVh
aykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xz
ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvKTsKKyAgICAgICAgICAgIGlmIChAT2Jq
ZWN0LkBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVy
dHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8pOwogICAgICAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJv
cGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
U3RvcDsKQEAgLTc5NiwyMyArODI4LDIyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8pIHsKICAgICAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5fX3Byb3RvX18pCi0gICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHtuYW1lOiAiX19wcm90b19fIiwgdmFsdWU6IG9iamVjdC5fX3Byb3Rv
X18sIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGlzT3duOiB0cnVlfSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KCJu
YW1lIiwgIl9fcHJvdG9fXyIsICJ2YWx1ZSIsIG9iamVjdC5fX3Byb3RvX18sICJ3cml0YWJsZSIs
IHRydWUsICJjb25maWd1cmFibGUiLCB0cnVlLCAiaXNPd24iLCB0cnVlKSk7CiAgICAgICAgICAg
ICB9IGNhdGNoIHsgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgX2dldFNldEVudHJpZXMob2Jq
ZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMg
PSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5KCk7
CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVy
cmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2
YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5TZXRJ
dGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAg
ICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAg
ICAgICAgIEBhcnJheVB1c2goZW50cmllcywgQGNyZWF0ZVByb3RvdHlwZWxlc3NPYmplY3QoInZh
bHVlIiwgdmFsdWUpKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5s
ZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMsMTYg
Kzg1NCwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsK
LSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRl
UHJvdG90eXBlbGVzc0FycmF5KCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2
YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3Jd
LgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZv
ciAobGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRpbk1hcEl0ZXJhYmxlKG9iamVjdCkpIHsKICAg
ICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3Rh
cnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNo
KGVudHJpZXMsIEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KCJrZXkiLCBrZXksICJ2YWx1ZSIs
IHZhbHVlKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3Ro
ID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MDYs
MTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAg
ICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9
PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0g
QHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1
bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5AaW5k
ZXhPZihyZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHsKICAgICAg
ICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4OwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5MjQsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1JbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9u
TW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8IDAsICAgICAgICAgIC8vIG93biBwcm9w
ZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRpZXM6IDEgPDwgMSwgLy8gbmF0aXZlIGdl
dHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi0gICAgQWxsUHJvcGVydGll
czogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNo
YWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gQGNyZWF0ZVByb3RvdHlw
ZWxlc3NPYmplY3QoCisgICAgIk93blByb3BlcnRpZXMiLCAxIDw8IDAsICAgICAgICAgIC8vIG93
biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzIiwgMSA8PCAxLCAvLyBu
YXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICAiQWxs
UHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRpZXMgaW4gdGhlIHBy
b3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24g
PSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29udGludWUiKSwKLSAgICBTdG9wOiBTeW1ib2wo
InN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24gPSBAY3JlYXRl
UHJvdG90eXBlbGVzc09iamVjdCgKKyAgICAiQ29udGludWUiLCBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgiY29udGludWUiKSwKKyAgICAiU3RvcCIsIEBjcmVhdGVQcml2YXRlU3ltYm9sKCJzdG9wIiks
CispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTk2
Miw3ICs5OTIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
ICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVjdGVk
U2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkpOwogICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgdW5k
ZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhp
cy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgQHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC05NzcsNyArMTAwNyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBj
bGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNhdGNo
IChleCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAgICAg
ICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwogICAg
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24g
dG8gc3RyaW5nPiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90
ZU9iamVjdChkZXNjcmlwdGlvbik7CkBAIC05ODYsNyArMTAxNiw3IEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3
Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewotICAg
ICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZpbmVk
LCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGxldCByZW1v
dGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwgZ2Vu
ZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qub2Jq
ZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90ZU9i
amVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5cGUg
JiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKQpAQCAtMTAxMSw3ICsxMDQx
LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8v
IEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBp
ZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5s
ZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlv
biIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJh
cnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAgLTEwNTAsOCArMTA4MCw4IEBAIGxldCBS
ZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKHN1YnR5cGUgPT09
ICJhcnJheSIpCiAgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwogCi0gICAgICAgIGlmIChz
dWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworICAgICAgICBpZiAo
c3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBAQHRvU3RyaW5nVGFnIGluIHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLkBAdG9TdHJpbmdUYWc7CiAKICAgICAgICAgLy8gTm9kZUxpc3Qg
aW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNoZWNrIGZvciBhcnJheSBwcmlvciB0byB0aGlzLgogICAg
ICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMDk5LDcg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGljIG5v
ZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8y
Mzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogICAg
ICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCAmJiAhIW5vZGUub3du
ZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAgICBsZXQgbm9kZU5hbWUgPSBpc1hNTERvY3Vt
ZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKIApAQCAt
MTEwMCwxNyArMTEzMSwxNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAKICAgICBfaW5pdGlhbFByZXZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHByZXZpZXcgPSB7
Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjog
dGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKLSAgICAgICAgICAgIGxv
c3NsZXNzOiB0cnVlLAotICAgICAgICB9OworICAgICAgICBsZXQgcHJldmlldyA9IEBjcmVhdGVQ
cm90b3R5cGVsZXNzT2JqZWN0KAorICAgICAgICAgICAgInR5cGUiLCB0aGlzLnR5cGUsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iLCB0aGlzLmRlc2NyaXB0aW9uIHx8IHRvU3RyaW5nKHRoaXMu
dmFsdWUpLAorICAgICAgICAgICAgImxvc3NsZXNzIiwgdHJ1ZSwKKyAgICAgICAgKTsKIAogICAg
ICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7CiAgICAgICAgICAgICBwcmV2aWV3LnN1YnR5cGUgPSB0
aGlzLnN1YnR5cGU7CiAgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVsbCIpIHsK
ICAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107CisgICAgICAgICAgICAgICAgcHJldmlldy5wcm9w
ZXJ0aWVzID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheSgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTExMjYsNyArMTE1Nyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKIAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlz
LnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMu
c3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikgewog
ICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSkgewotICAgICAgICAgICAgICAgIHByZXZpZXcuZW50
cmllcyA9IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBjcmVhdGVQcm90
b3R5cGVsZXNzQXJyYXkoKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAg
ICB9CkBAIC0xMTQxLDIzICsxMTcyLDIzIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5
cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5
c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCi0g
ICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGll
czogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlz
Q291bnQpLAotICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6
IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9OworICAgICAgICBs
ZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KAorICAg
ICAgICAgICAgInByb3BlcnRpZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4KDUs
IGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAgICAgICAgImluZGV4ZXMiLCBpc1RhYmxlUm93
c1JlcXVlc3QgPyAxMDAwIDogbWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAgICAg
KTsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTWFwcywgU2V0cywgYW5kIEl0ZXJh
dG9ycyBoYXZlIGVudHJpZXMuCiAgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFw
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAi
IHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJh
dG9yIikKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwg
cHJldmlldyk7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAg
ICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheSgpOwog
CiAgICAgICAgICAgICAvLyBJbnRlcm5hbCBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgbGV0IGlu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyA9IGluamVjdGVkU2NyaXB0Ll9pbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcnMob2JqZWN0LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChpbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcnMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwg
cHJldmlldywgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNo
b2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWw6IHRydWV9KTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJl
dmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJv
cGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywgQGNyZWF0
ZVByb3RvdHlwZWxlc3NPYmplY3QoImludGVybmFsIiwgdHJ1ZSkpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0
b3ApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xMTY5LDcgKzEyMDAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAgICAgICAgICAgICAvLyBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgaW5qZWN0
ZWRTY3JpcHQuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBJbmplY3RlZFNjcmlw
dC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2
aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vj
b25kTGV2ZWxLZXlzKTsKLSAgICAgICAgICAgIH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6IHRy
dWUsIGluY2x1ZGVQcm90bzogdHJ1ZX0pCisgICAgICAgICAgICB9LCBAY3JlYXRlUHJvdG90eXBl
bGVzc09iamVjdCgibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwgdHJ1ZSwgImluY2x1ZGVQcm90byIs
IHRydWUpKTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNz
ID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTExNzcsNyArMTIwOCw3IEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgfQog
Ci0gICAgX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3Is
IHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtp
bnRlcm5hbH0gPSB7fSkKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmll
dywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29u
ZExldmVsS2V5cywge2ludGVybmFsfSA9IEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KCkpCiAg
ICAgewogICAgICAgICAvLyBFcnJvciBpbiBkZXNjcmlwdG9yLgogICAgICAgICBpZiAoZGVzY3Jp
cHRvci53YXNUaHJvd24pIHsKQEAgLTExOTAsOSArMTIyMSw5IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG5hbWUgPT09ICJfX3Byb3RvX18iKSB7
CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90b19fIG9iamVjdHMgbWF5IGhhdmUgaW50
ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2RzIHRvIHNob3cuCiAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yCi0gICAg
ICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0g
ICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkK
LSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBSZWdF
eHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0g
QE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3Ig
IT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0
b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
Q29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyArMTI0MCw3IEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVy
LCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgogICAgICAgICAvLyBGSVhNRTog
Q3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAg
ICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkK
KyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5AaW5jbHVkZXMo
bmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFj
dGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQcmV2aWV3KHByb3BlcnR5
KSB7CkBAIC0xMjI3LDIwICsxMjU4LDIwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcy5w
dXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJldmlldy5wcm9wZXJ0aWVz
LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdldHRlci9zZXR0
ZXIuCiAgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKICAgICAgICAgICAg
IHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2
aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5k
UHJldmlldyhAY3JlYXRlUHJvdG90eXBlbGVzc09iamVjdCgibmFtZSIsIG5hbWUsICJ0eXBlIiwg
ImFjY2Vzc29yIikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2YWx1ZS4KICAgICAg
ICAgbGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlID09PSBu
dWxsKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGU6ICJvYmpl
Y3QiLCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRQcmV2aWV3KEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KCJuYW1lIiwgbmFtZSwg
InR5cGUiLCAib2JqZWN0IiwgInN1YnR5cGUiLCAibnVsbCIsICJ2YWx1ZSIsICJudWxsIikpOwog
CiAgICAgICAgIC8vIElnbm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxl
dCB0eXBlID0gdHlwZW9mIHZhbHVlOwpAQCAtMTI1OCw3ICsxMjg5LDcgQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5f
YWJicmV2aWF0ZVN0cmluZyh2YWx1ZSwgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAg
ICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHRvU3RyaW5nRGVzY3JpcHRp
b24odmFsdWUpfSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlUHJv
dG90eXBlbGVzc09iamVjdCgibmFtZSIsIG5hbWUsICJ0eXBlIiwgdHlwZSwgInZhbHVlIiwgdG9T
dHJpbmdEZXNjcmlwdGlvbih2YWx1ZSkpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFN5bWJv
bC4KQEAgLTEyNjgsMTEgKzEyOTksMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90
ZU9iamVjdAogICAgICAgICAgICAgICAgIHN5bWJvbFN0cmluZyA9IHRoaXMuX2FiYnJldmlhdGVT
dHJpbmcoc3ltYm9sU3RyaW5nLCBtYXhMZW5ndGgsIHRydWUpOwogICAgICAgICAgICAgICAgIHBy
ZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTogc3ltYm9sU3RyaW5nfSk7CisgICAg
ICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlUHJvdG90eXBlbGVzc09iamVjdCgi
bmFtZSIsIG5hbWUsICJ0eXBlIiwgdHlwZSwgInZhbHVlIiwgc3ltYm9sU3RyaW5nKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9wZXJ0eSA9IHtuYW1l
LCB0eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NPYmpl
Y3QoIm5hbWUiLCBuYW1lLCAidHlwZSIsIHR5cGUpOwogICAgICAgICBsZXQgc3VidHlwZSA9IFJl
bW90ZU9iamVjdC5zdWJ0eXBlKHZhbHVlKTsKICAgICAgICAgaWYgKHN1YnR5cGUpCiAgICAgICAg
ICAgICBwcm9wZXJ0eS5zdWJ0eXBlID0gc3VidHlwZTsKQEAgLTEzMTMsNyArMTM0NCw3IEBAIGxl
dCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiA1KSB7Ci0gICAgICAgICAgICBlbnRyaWVz
LnBvcCgpOworICAgICAgICAgICAgZW50cmllcy5AcG9wKCk7CiAgICAgICAgICAgICBwcmV2aWV3
Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTMyMyw3ICsxMzU0LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9IGVudHJpZXMubWFwKGZ1bmN0
aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9IGVudHJpZXMuQG1hcChmdW5j
dGlvbihlbnRyeSkgewogICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3Jl
YXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2Jq
ZWN0KTsKICAgICAgICAgICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAg
ICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkgewpAQCAtMTMzNiw4ICsxMzY3LDggQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2lzUHJldmlld2FibGVPYmpl
Y3QodmFsdWUsIG9iamVjdCkKICAgICB7Ci0gICAgICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAg
ICAgICBzZXQuYWRkKG9iamVjdCk7CisgICAgICAgIGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAg
ICAgc2V0LkBhZGQob2JqZWN0KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJs
ZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEpOwogICAgIH0KQEAgLTEzNTcsMTEgKzEzODgs
MTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAgIGlmIChr
bm93bk9iamVjdHMuaGFzKG9iamVjdCkpCisgICAgICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhv
YmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0g
ICAgICAgIGtub3duT2JqZWN0cy5hZGQob2JqZWN0KTsKKyAgICAgICAga25vd25PYmplY3RzLkBh
ZGQob2JqZWN0KTsKIAogICAgICAgICAvLyBBcnJheXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUg
NSBvciBsZXNzIHNpbXBsZSBvYmplY3RzLgogICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9i
amVjdC5zdWJ0eXBlKG9iamVjdCk7CkBAIC0xMzgxLDEyICsxNDEyLDEyIEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICAvLyBPYmplY3RzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1w
bGUgdmFsdWUgcHJvcGVydGllcy4KLSAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOworICAgICAgICBsZXQgb3duUHJvcGVydHlO
YW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYg
KG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytp
KSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsK
LSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9
IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAmJiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCF0aGlzLl9p
c1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2Jq
ZWN0cywgZGVwdGgpKQpAQCAtMTQwNCw2NiArMTQzNSw3MSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlmIChtaWRkbGUpIHsKICAgICAgICAgICAgIGxl
dCBsZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAxOwogICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9
IG1heExlbmd0aCAtIGxlZnRIYWxmIC0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vi
c3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsgc3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3Ro
IC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vi
c3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsgc3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0
aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBz
dHJpbmcuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAiXHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0
cmluZy5Ac3Vic3RyKDAsIG1heExlbmd0aCkgKyAiXHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAt
LS0tLS0tCiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5h
bCwgY2FsbEZyYW1lKQotewotICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29y
ZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhp
cy5mdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRp
b24gPSB7c2NyaXB0SWQ6IFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBj
YWxsRnJhbWUubGluZSwgY29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlz
LnNjb3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMu
dGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJh
Y2UiKTsKLSAgICB0aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsK
LX07CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5
IHsKKyAgICBjb25zdHJ1Y3RvcihvcmRpbmFsLCBjYWxsRnJhbWUpCisgICAgeworICAgICAgICB0
aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJ
ZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOworICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNh
bGxGcmFtZS5mdW5jdGlvbk5hbWU7CisKKyAgICAgICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVQ
cm90b3R5cGVsZXNzT2JqZWN0KAorICAgICAgICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxs
RnJhbWUuc291cmNlSUQpLAorICAgICAgICAgICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGlu
ZSwKKyAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAg
ICApOworCisgICAgICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNh
bGxGcmFtZSk7CisgICAgICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZy
YW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVk
ID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkK
ICAgICB7CiAgICAgICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAg
ICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9u
cygpOwogCi0gICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNj
b3BlQ2hhaW5Qcm94eSA9IEBjcmVhdGVQcm90b3R5cGVsZXNzQXJyYXkoKTsKICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2Nv
cGVDaGFpblByb3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNj
b3BlSnNvbihzY29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIp
OwogICAgICAgICByZXR1cm4gc2NvcGVDaGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFs
IiwgLy8gR0xPQkFMX1NDT1BFCi0gICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjog
ImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NP
UEUKLSAgICA0OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6
ICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVO
VF9TQ09QRQotICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUK
LX07CisgICAgc3RhdGljIF9jcmVhdGVTY29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9j
YXRpb259LCBncm91cElkKQorICAgIHsKKyAgICAgICAgbGV0IHNjb3BlID0gQGNyZWF0ZVByb3Rv
dHlwZWxlc3NPYmplY3QoCisgICAgICAgICAgICAib2JqZWN0IiwgUmVtb3RlT2JqZWN0LmNyZWF0
ZShvYmplY3QsIGdyb3VwSWQpLAorICAgICAgICAgICAgInR5cGUiLCBJbmplY3RlZFNjcmlwdC5D
YWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCisgICAgICAgICk7CiAKLUluamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmpl
Y3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0g
ewotICAgICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwK
LSAgICAgICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5h
bWVzW3R5cGVdLAotICAgIH07CisgICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUu
bmFtZSA9IG5hbWU7CiAKLSAgICBpZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7
CisgICAgICAgIGlmIChsb2NhdGlvbikKKyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9j
YXRpb247CiAKLSAgICBpZiAobG9jYXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9j
YXRpb247CisgICAgICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBz
Y29wZS5lbXB0eSA9IHRydWU7CiAKLSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAg
ICAgICBzY29wZS5lbXB0eSA9IHRydWU7CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9
OwogCi0gICAgcmV0dXJuIHNjb3BlOwotfQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHku
X3Njb3BlVHlwZU5hbWVzID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NPYmplY3QoKTsKK0luamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1swXSA9ICJnbG9iYWwiOyAvLyBH
TE9CQUxfU0NPUEUKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1l
c1sxXSA9ICJ3aXRoIjsgLy8gV0lUSF9TQ09QRQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJv
eHkuX3Njb3BlVHlwZU5hbWVzWzJdID0gImNsb3N1cmUiOyAvLyBDTE9TVVJFX1NDT1BFCitJbmpl
Y3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbM10gPSAiY2F0Y2giOyAv
LyBDQVRDSF9TQ09QRQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5h
bWVzWzRdID0gImZ1bmN0aW9uTmFtZSI7IC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKK0luamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1s1XSA9ICJnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQiOyAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQorSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzWzZdID0gIm5lc3RlZExleGlj
YWwiOyAvLyBORVNURURfTEVYSUNBTF9TQ09QRQogCiAvLyAtLS0tLS0tCiAKQEAgLTE0NzcsOSAr
MTUxMyw5IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkKICAgICAgICAgICAg
IHZhbHVlID0gZnVuY3Rpb24oKSB7IHJldHVybiBvcmlnaW5hbFZhbHVlOyB9OwogICAgICAgICB9
CiAKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGtleSwgdmFsdWUpOworICAg
ICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiJCIgKyBrZXksIEBjcmVhdGVQcm90
b3R5cGVsZXNzT2JqZWN0KCJnZXQiLCB2YWx1ZSkpOwogICAgICAgICBpZiAoc2F2ZWRSZXN1bHRB
bGlhcyAmJiBzYXZlZFJlc3VsdEFsaWFzICE9PSAiJCIpCi0gICAgICAgICAgICB0aGlzLl9fZGVm
aW5lR2V0dGVyX18oc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgdmFsdWUpOworICAgICAgICAgICAg
QE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywgc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgQGNy
ZWF0ZVByb3RvdHlwZWxlc3NPYmplY3QoImdldCIsIHZhbHVlKSk7CiAgICAgfTsKIAogICAgIGlm
ICgiX2xhc3RSZXN1bHQiIGluIGluamVjdGVkU2NyaXB0KQpAQCAtMTUwMiw0OCArMTUzOCw0OCBA
QCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUpCiAgICAgICAgIHRoaXNbbmFtZV0g
PSBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdOwogfQogCi1Db21tYW5kTGluZUFQSS5nZXR0
ZXJzID0ge307CitDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0gQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9IHt9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kcyA9IEBjcmVhdGVQcm90b3R5cGVsZXNzT2JqZWN0KCk7CiAKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMo
b2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24o
b2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVzKG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtl
eXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rp
b24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkB2YWx1ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5hcmd1bWVudHMpOyB9OworQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZVByb3RvdHlwZWxlc3NB
cnJheUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5j
cmVhdGVQcm90b3R5cGVsZXNzQXJyYXlGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0
dXJuIGluamVjdGVkU2NyaXB0Lmluc3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siYXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmFzc2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siY2xlYXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuY2xlYXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImNvdW50Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmNvdW50KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJjb3VudFJlc2V0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmNvdW50UmVzZXQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImRlYnVnIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmRlYnVnKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJkaXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZGlyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGly
eG1sKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcigu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29s
bGFwc2VkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVu
ZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5n
cm91cEVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZv
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtl
SGVhcFNuYXBzaG90KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0
aW1lIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRpbWUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZUVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1l
TG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZVN0YW1wKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFj
ZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFy
Z3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmNyZWF0
ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5jcmVhdGVQcm90b3R5cGVsZXNzQXJyYXlGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnQoLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5jcmVhdGVQ
cm90b3R5cGVsZXNzQXJyYXlGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4u
Y3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uY3JlYXRlUHJvdG90eXBlbGVzc0Fy
cmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmVycm9yKC4uLmNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5jcmVhdGVQcm90
b3R5cGVsZXNzQXJyYXlGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uY3JlYXRlUHJvdG90eXBl
bGVzc0FycmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4u
Y3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2Zp
bGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
cHJvZmlsZSguLi5jcmVhdGVQcm90b3R5cGVsZXNzQXJyYXlGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmNy
ZWF0ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmNyZWF0ZVByb3RvdHlwZWxlc3NBcnJh
eUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJy
ZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUucmVjb3JkRW5kKC4uLmNyZWF0ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNo
b3QoLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmNyZWF0ZVByb3RvdHlwZWxl
c3NBcnJheUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uY3JlYXRlUHJvdG90eXBlbGVz
c0FycmF5RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUudGltZSguLi5jcmVhdGVQcm90b3R5cGVsZXNzQXJyYXlGcm9tQXJndW1lbnRzKGFyZ3Vt
ZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmNyZWF0
ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRp
bWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS50aW1lU3RhbXAoLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFyZ3VtZW50cyhh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmNyZWF0
ZVByb3RvdHlwZWxlc3NBcnJheUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5RnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKIAogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQ
SS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBm
dW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExp
bmUgQVBJXSB9IjsgfTsKIAogcmV0dXJuIGluamVjdGVkU2NyaXB0OwotfSkKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNmZjZm
OTc2YzdlMzlkOTk5NTguLmJjMjM3YTFmNGY0MGI2NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZhZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIyMSw3ICsyMjIxLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgpICE9IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93
KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGls
aW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVz
c2FnZSgpLCAiIG9uIGxpbmUgIiwgZXJyb3IubGluZSgpLCAiLiIpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5NWM0
NTRkOTllZTE5ZjEzZTc5Yy4uZmZjOWM5YzIzMzFkYWUzZDZhNjViZGVmYWM1MGJiMWEwM2YzNjcw
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgi
CiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgogCkBA
IC01Nyw2ICs1OCw4IEBAIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQcm90
b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNw
ZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworCisg
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmZyb21Qcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yRnJv
bUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA1YTNhYWE5MWU2MjcyOGMyY2E5
ZmFlZjU2MWQyZmFiZWRlNzA1OTVlLi41MTVjODVmZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdmOGY2
YWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDExIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmVudHJpZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVh
Y2hQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmZvckVhY2hQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5hbWUo
KSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRl
c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhPZlByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhPZlB1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5h
bWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHVibGljTmFtZSgpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52
YWx1ZXNQcml2YXRlTmFtZSgpLCBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7
CiAKICAgICBKU09iamVjdCogdW5zY29wYWJsZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwg
Z2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGQxNDQx
MjQ4ZjZlMmYyNmZlYzgzYzk1ZmM2NzE2YmMwZDIxNDM0MTkuLjk5ZjRmNzk0MTFiY2FjYjM5ZWE0
MDFkOTI4Yjc3OWVjMTAwMTQ5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9MQVpZ
X0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNvblBhcnNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzb25TdHJpbmdpZnkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxl
U3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVT
dXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpv
Yik7CkBAIC0zNjEsNiArMzYzLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQ
cml2YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6
OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNvblBhcnNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBqc29uID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
T05QYXJzZShnbG9iYWxPYmplY3QsIGpzb24pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzb25TdHJpbmdpZnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihhc3NlcnRDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTA3NCw5ICsxMDkzLDExIEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBt
X3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
cik7Ci0gICAgCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6U3RyaW5nKV0uc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rv
cik7CisKICAgICBtX2V2YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChM
YXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0
Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+
KGluaXQpOwpAQCAtMTU1Myw2ICsxNTc0LDE0IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3lt
Ym9sKSk7CiAgICAgICAgIH0pOwogCisgICAgLy8gSlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBh
cnNlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAg
ICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6anNvblN0cmluZ2lmeSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAy
LCBTdHJpbmcoKSwganNvblN0cmluZ2lmeSkpOworICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRv
d1JlYWxtcwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVJlbW90ZUZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBjcmVhdGVSZW1vdGVGdW5jdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3ODdhZjY2
YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uZTk0ODYwM2UyY2VjYTI5NTVhMmVkMjcxNTRiYjNi
MDE0OTcxYWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90b3R5cGU7
CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlT3Jp
Z2luOworY2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFjdGl2YXRp
b25TdGFja05vZGU7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHVibGljOgogICAgIFdyaXRlQmFycmll
cjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVC
YXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1fc3Ry
aW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxD
b2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCBhODZkZTk3NzY0ZWM0ZjVkMTc3
ZmIxYmMwN2E4YzgwOWE2ZWZjMmIwLi4xNzIzNjkyNDRkNTk0ZjRmNzJmZGU3ZmQ5MzZlYTUxNDMw
Y2JhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24q
IGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwg
bWFwUHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
ZW50cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0ZU5hbWUo
KSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRf
VFJBTlNJVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3NzczOGFhNjQ2NTY2MTRl
YWFiZDhhZDE0Ny4uYmI2YWYyNTRmNDk2NzlmNTE3YTM5ODcwNDE1ZWVmMzdjYmUxY2U5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcApAQCAtOTksOSArOTksMTkgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKIAogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCisg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgpLCBvYmplY3RDb25z
dHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5h
bWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5h
bWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVmaW5lUHJv
cGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMyk7CiAgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JDcmVh
dGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAy
KTsKLSAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpCisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFs
dWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIGlmIChPcHRp
b25zOjp1c2VIYXNPd24oKSkgewogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENvbnN0cnVjdG9ySGFz
T3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Mik7CisgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093blByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMik7CisgICAgfQogfQogCiAvLyBFUyAxOS4xLjEuMSBPYmplY3QoW3ZhbHVl
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDFlNmJjMWVlOGJiMzdmNWYxMzU3NmNlYTJhNmQ1ZDRhOTVkZDQ4NzEuLmY3ZjljMTQxOGJm
N2NjZjNhNGY1MDM0NGU0MmE0ZjIzMGEwNTc0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsNyBAQCB2b2lkIFNldFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogCiAgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1
YmxpY05hbWUoKS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzLCBKU1NldFZhbHVlc0ludHJp
bnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZh
bHVlc1ByaXZhdGVOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCB2YWx1
ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElP
TigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKaW5kZXggNTA2NzIzMmNkNjZmOTkxM2I5NTMyZjA5ZjY4MDMxYmVlZDA0Y2Y5My4uMzFh
OGY5ZTdkN2JiZDMyNjUwYzBjYjI5ODI2OWE5MzVlZDBjY2NmZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNjQsNiArMTY0
LDkgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLml0ZXJh
dG9yXSJfcywgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wsIGl0ZXJhdG9yRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN1YnN0clByaXZhdGVOYW1l
KCksIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVuZHNXaXRoUHJp
dmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKwogICAgIC8vIFRoZSBjb25zdHJ1
Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMgYmVl
biBidWlsdAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2VjZWJiZTgzZjdkNzI0
NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVhNWM4Y2YzYjIyY2Zj
ZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAgV0VCS0lU
X0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2Vi
Q29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygp
CiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9j
b21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGluc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9
L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3Vy
Y2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
bWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUyLDYgKzIzNDAs
NyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9t
L1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNvZGVy
U3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50
ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhM2Q2
OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUzNTYyYmQy
ZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5h
bWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Zh
bHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3Vu
dFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZj
Li5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChOT19TVVBQ
TEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5kZXApCiBl
bmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8jIHNvdXJj
ZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5q
cwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlM
VElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzIFwKICAg
ICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMDYwYWQ5ZjMxYWQyZTYx
NDgzNzk1MjM3MGJhNTAwMTE5ZDBhYWM0Li41NzgyMGI3NzNmMDQ5MDE2NDlhNzdiOThiMGQ1YzNj
ZGIwNTRiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2OCw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
YmExYjgyMDM1MmMxNGQ5NjA2NjMzZjMwMWY5ZDQ1MzcyOGUyZTI1Li5kM2Y4ZDU0NTQ0NTA0OTFj
NWNkNzIwZDBiMzM2NmIzODc2YThkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUzMDFC
RTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAv
KiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRCQUZC
ODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMg
LyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9OworCQkyRTNB
RUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQUVG
RjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQz
NDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJH
bG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlBNTc4RjQz
RjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAwM0RG
QzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyogU2Vy
dmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50Lmgg
Ki87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhv
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQw
RTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKLQkJ
QTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJ
QTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0
Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRENUFG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3REZEOTEy
REJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01V
UkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwNDEy
REJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVGRjky
ODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTM5NDEsNyArMTM5NDMsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMg
LyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFDMjAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3MTg2
MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI5LDcgKzIwNDMwLDYgQEAK
IAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJE
ODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4
NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1Q0U1
OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwICovLApAQCAtMjM1ODcsNiArMjM1ODcsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVE
MEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5
MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNwcCAq
LywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFCQ0FE
MDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJ
OTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMu
aCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5j
cHAgKi8sCkBAIC0zNDA4NSw3ICszNDA4Nyw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAwN0I4
NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzUx
ODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5
cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUwMTY3
NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1YjQ5Yjc5
ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpD
b21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1vZHVs
ZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmpl
Y3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdheXMo
IkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFuZExp
bmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1ZhbHVl
IENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgK
aW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1MGQ0YTVm
MzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
Q29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsKIAotICAg
IFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGlu
amVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsK
ICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcios
IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lk
IGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgY29uc3Qg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUzNTE5Y2Ni
MTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLjE3ZmUzNzIwNGYyMmY2YTEwNWI2YmQyNzhi
Njk1MjE1YjI5MmE5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlw
dEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRT
Y3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0
KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2Jq
ZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sKIAotLy8gRklYTUU6
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVj
dGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXIt
b3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4gSW5q
ZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAKIGluamVjdGVkU2Ny
aXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExpbmVBUEkubWV0aG9k
c1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVj
dDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAgICAgc3Ry
aW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOworICAgICAgICBzdHJp
bmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1
bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7CiAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNP
Ti5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0cmluZyA9IEBq
c29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAg
ICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5MCwyOCBAQCBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVuY3Rpb24odGFy
Z2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7Ci0gICAg
aWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3VzZSIsICJrZXki
LCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vt
b3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJy
ZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0Iiwg
InVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMg
PSBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5KCJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29u
dHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNl
b3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNpemUi
LCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCIpOwogICAg
IGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgIHR5cGVzID0gW3R5
cGVzXTsKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5KHR5cGVzKTsK
KworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBhZGRUeXBlc1RvUmVz
dWx0KCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHJlc3VsdHMuQGFkZChhcmd1bWVudHNbaV0pOworICAgIH0KIAotICAg
IGxldCByZXN1bHQgPSBbXTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgIHJl
c3VsdC5wdXNoKCJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwg
Im1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAg
ICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIs
ICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3
aGVlbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAgICAg
ICByZXN1bHQucHVzaCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQi
KTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImtleWRvd24iLCAia2V5cHJlc3MiLCAi
a2V5dXAiLCAidGV4dElucHV0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAidG91
Y2giKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwg
InRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0
KCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOwog
ICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAgcmVz
dWx0LnB1c2goImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJz
Y3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRUeXBl
c1RvUmVzdWx0KCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAi
c2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7CisgICAgICAgICAgICByZXN1bHQuQGFkZCh0
eXBlc1tpXSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTgsMTkgKzEyNCwx
NyBAQCBmdW5jdGlvbiBsb2dFdmVudChldmVudCkKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIm1v
bml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9iamVj
dCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3Rl
bmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5
cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2Up
OwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZh
bHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0SXRlcmFibGUobm9ybWFsaXpl
RXZlbnRUeXBlcyh0eXBlcykpKSB7CisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVy
KHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVy
KHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiAgICAgfQogfTsKIAogQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sidW5tb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7CiAgICAg
aWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXplRXZl
bnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsr
aSkKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50
LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRpblNldEl0ZXJhYmxlKG5vcm1h
bGl6ZUV2ZW50VHlwZXModHlwZXMpKSkKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKIH07CiAKIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKQEAgLTE1OCw5ICsx
NjIsMTAgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuTm9kZSkgewogICAgIH07CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyIkJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CisgICAgICAgIC8vIERvbid0IHJl
dHVybiBhIHByb3RvdHlwZWxlc3MgYXJyYXkgaGVyZSBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHVz
ZSB0aGUgcmVzdWx0cyBhcyBhIG5vcm1hbCBBcnJheS4KICAgICAgICAgaWYgKGNhblF1ZXJ5U2Vs
ZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKLSAgICAg
ICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgICAg
ICByZXR1cm4gQEFycmF5LkBmcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsK
KyAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwogICAgIH07CiAKICAgICBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKQEAgLTE3NSwx
MCArMTgwLDExIEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVj
dGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVh
blZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IG5vZGVzID0gW107CisgICAgICAgIC8v
IERvbid0IHJldHVybiBhIHByb3RvdHlwZWxlc3MgYXJyYXkgaGVyZSBzbyB0aGF0IGRldmVsb3Bl
cnMgY2FuIHVzZSB0aGUgcmVzdWx0cyBhcyBhIG5vcm1hbCBBcnJheS4KKyAgICAgICAgbGV0IG5v
ZGVzID0gbmV3IEBBcnJheTsKICAgICAgICAgbGV0IG5vZGUgPSBudWxsOwogICAgICAgICB3aGls
ZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVzaChu
b2RlKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gobm9kZXMsIG5vZGUpOwogICAgICAgICByZXR1
cm4gbm9kZXM7CiAgICAgfTsKIH0KQEAgLTE4Niw0ICsxOTIsNCBAQCBpZiAoaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiBmb3Ig
KGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEku
bWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIg
KyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCi19KQorfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGUzMzQ5YTFjZDU4MDE1MGMyNzg3ZDRmZTk3NDNjZDM4ZWE0YjkyNzguLjc3ZjVkYzkxOTdhN2Ex
OWM5YWJmOTIwNzYzZGMwY2JiYTZiMzI4NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0w
NS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQg
Z3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0LWlucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaW5qZWN0ZWQt
c2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9pbmpl
Y3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sOgorICAgICAgICAtIEFkZCBzZXZlcmFsIG1vcmUg
dGVzdCBjYXNlcyBmb3Igb3ZlcnJpZGluZyBmdW5jdGlvbnMgYW5kIGVudGlyZSBvYmplY3RzLgor
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMuaHRtbDoKKyAgICAgICAgLSBDaGFuZ2VkIHRvIHRlc3QgYSBjdXN0b20g
aW50ZXJuYWwgc2NyaXB0IHNuaXBwZXQgc2luY2UgdGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3Jp
cHQgaXMgbm93IGEgYnVpbHRpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRQYXJzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRQYXJzZWQuaHRtbDoKKyAgICAgICAgLSBUaGUgaW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCAo
YW5kIG1vZHVsZXMpIHdpbGwgbm8gbG9uZ2VyIGFwcGVhciBhcyBzY3JpcHRzIGluIFdlYiBJbnNw
ZWN0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1u
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgLSBJbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGxpbmUg
bnVtYmVycyBhcmUgZGlmZmVyZW50IGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLCBz
byBmaWx0ZXIgdGhvc2Ugb3V0LgorCiAyMDIyLTA1LTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2VNYXA6OnJlbW92ZUl0ZW0gbWF5IGZhaWwgdG8g
cmVtb3ZlIGl0ZW0gZnJvbSBtYXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0
ZWQudHh0CmluZGV4IDFlYjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQuLjU5
MzdmYWU5N2Y4OTU4ODQ3Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1p
bnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2MCBAQAotQ09OU09MRSBN
RVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xl
XQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5k
b3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTog
c3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8g
b3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzLgorQ2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlw
dHMgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2Yg
V0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAogPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogLS0gUnVubmluZyB0
ZXN0IHNldHVwLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzLkRpc2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29s
ZUxvZykKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBT
OiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3Jp
cHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAg
ICAgIHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAg
ICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUu
bG9nKCJzdHJpbmciKTsKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAy
MiAgICB9CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3Qo
KSB7CisgLT4gIDI1ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAg
ICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVy
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVn
Z2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAg
ICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJp
bmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1Cisg
ICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAg
IDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0
KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVw
LWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAgNiAgICBmdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAg
ICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8Y29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAg
IH0KLSAgICAgMTIKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjg6NQorICAgICAyNCAg
ICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdn
ZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworIC0+ICAyNyAgICAg
ICAgfGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0KDMpOworICAgICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElPTjogc3RlcC1pbgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAg
ICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUu
bG9nKGNvbnNvbGUpOwotIC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAg
ICAgMTEgICAgfQotICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KK1BBVVNFIEFUIGVu
dHJ5SW50ZXJuYWxPYmplY3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgyKTsKKyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwor
ICAgICAyOSAgICB9CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQogCiBBQ1RJT046
IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0gICAgICA4ICAgICAgICBj
b25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7
Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gLT4gIDExICAgIH18Ci0g
ICAgIDEyCi0gICAgIDEzICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAorUEFVU0UgQVQgZW50cnlJ
bnRlcm5hbE9iamVjdDozMDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18CisgICAgIDMwCisgICAgIDMx
ICAgIC8vIC0tLS0tLS0tLQorICAgICAzMgogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApAQCAt
NjgsNTcgKzYyLDU3IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBS
dW5uaW5nIHRlc3Qgc2V0dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRy
eUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3Qp
CiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRl
bWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAg
ICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4g
ICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cp
OwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBj
b25zb2xlLmxvZygic3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUK
KyAgICAgMjIgICAgfQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFs
T2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50
ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
Mik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0
ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0
PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAg
ICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAg
OSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxv
Zygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6
Mjc6NQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkg
eworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmpl
Y3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAg
IDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElP
Tjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNj
cmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAg
ICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAg
ICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29s
ZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2Jq
ZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmpl
Y3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFs
T2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAog
QUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAg
ICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAg
ICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cp
OwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBj
b25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJu
YWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5h
bE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50
ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAg
fQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAg
ICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsK
LSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdp
bmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAg
ICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJ
bnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUlu
dGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAy
OSAgICB9CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5o
dG1sCmluZGV4IGQxNjhhNzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLmU1YjBk
OWM4YjcxOGUxYjI1NmVhZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2Ny
aXB0cy5odG1sCkBAIC00LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+Ci1mdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBpbnRlcm5hbE9iamVjdCA9
IHsgdGVzdDogZnVuY3Rpb24oKSB7fSB9OworCitpZiAod2luZG93LmludGVybmFscykgeworICAg
IGludGVybmFsT2JqZWN0ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0ZUluV29ybGRJZ25vcmlu
Z0V4Y2VwdGlvbigidGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwgYAorICAgICAgICAvLyMg
c291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLmpz
CisgICAgICAgIGxldCBJbnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVybmFsT2JqZWN0IHsKKyAg
ICAgICAgICAgIHRlc3QoaW52b2NhdGlvbk51bWJlcikgeworICAgICAgICAgICAgICAgIGxldCBh
ID0gNjsKKyAgICAgICAgICAgICAgICBsZXQgYiA9IDc7CisgICAgICAgICAgICAgICAgbGV0IGFu
c3dlciA9IGEgKiBiOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG5ldyBJ
bnRlcm5hbE9iamVjdDsKKyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVj
dCgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgIGNvbnNv
bGUubG9nKGNvbnNvbGUpOwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKKyAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgaW50ZXJu
YWxPYmplY3QudGVzdCgzKTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0yMSwzMSArMzksMzEgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFt
ZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAg
ICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUu
bG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAot
ICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVu
dHMgd2hpY2ggdXNlIGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVz
c2lvbjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBDYWxs
IG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkg
dG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5n
LgogICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQ
YXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAg
ICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2lu
ZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKGNvbnNvbGUpCi0gICAg
ICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2coInN0cmluZyIpCisgICAgICAgICAgICAg
ICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJpbiIs
IC8vIGludGVybmFsT2JqZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRl
cm5hbE9iamVjdC50ZXN0KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAg
IH0pOwogCiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dl
ci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50cyB3
aGljaCB1c2UgdGhlIEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Np
b246ICJzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5h
bCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVu
dHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhl
IGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1h
bmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFz
eW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHModHJ1ZSk7IH0sCiAgICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1
Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAgICAg
c3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBj
b25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBp
bnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29t
ZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAgICAgICAgICAgICJpbiIs
IC8vIGludGVybmFsT2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29t
ZXdoZXJlIGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAgICAgICAgICAgICAgICJp
biIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCiAgICAgICAg
ICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcsNiArNzUsNiBAQCBmdW5j
dGlvbiB0ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgotPHA+Q2hlY2tpbmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9y
IG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVy
bmFsU2NyaXB0cy48L3A+Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5hbCkg
c2NyaXB0cyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1
ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
UGFyc2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRQYXJzZWQtZXhwZWN0ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3
M2RiZmY5ZjAxODguLjYzYTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJz
ZWQtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91bGQgZmluZCBFeHRlcm5h
bCBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQ
QVNTOiBTaG91bGQgZmluZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4K
IFBBU1M6IFNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVj
dG9yIEluamVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3Bl
Y3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBTaG91bGQgbm90IHJlY2Vp
dmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0
NWE2YmExZDEzNTQ5ZDlhNWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0
OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJz
ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2Vk
Lmh0bWwKQEAgLTE5LDE0ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyAgIC0gaW5s
aW5lIDxzY3JpcHQ+ICh0aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAgICAvLyAgIC0gaW5saW5l
IGJvZHkgb25sb2FkIGV2ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxv
dwogICAgIC8vICAgLSBldmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcKLSAgICAvLyAgIC0gaW5z
cGVjdG9yIGludGVybmFsIHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVybmFsU2NyaXB0ID0gZmFs
c2U7CiAgICAgbGV0IGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0
IGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IGZhbHNlOwogICAgIGxl
dCBmb3VuZEV2YWxTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJbmplY3RlZFNjcmlwdFNv
dXJjZVNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2Ny
aXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IGZhbHNlOwogCiAg
ICAgZnVuY3Rpb24gaXNFeHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAgLTQyLDIxICszOSwxMyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0lubGluZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXJTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBpc0lubGluZVNj
cmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8
Ym9keT4gYmVsb3cuCisgICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBh
cmFtcy5zdGFydExpbmUgPj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KICAgICB9
CiAKICAgICBmdW5jdGlvbiBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAgICAgICAgIHJldHVybiBw
YXJhbXMuc291cmNlVVJMID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaXNJ
bmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFt
cy5zb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291
cmNlVVJMLmVuZHNXaXRoKCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbW1hbmRM
aW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJj
ZVVSTC5pbmRleE9mKCJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9
Ci0KICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dl
ckRvbWFpbkFuZENoZWNrSW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewpAQCAtNzksMTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRFdmFsU2NyaXB0ICYmIGlzRXZh
bFNjcmlwdChwYXJhbXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRFdmFsU2NyaXB0
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVB
UElTb3VyY2VTY3JpcHQgJiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEluamVjdGVkU2NyaXB0
U291cmNlU2NyaXB0ICYmIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5sb2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsgSlNPTi5zdHJpbmdpZnko
bWVzc2FnZU9iamVjdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRVbmV4cGVjdGVk
U2NyaXB0ID0gdHJ1ZTsKQEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVTY3JpcHRUYWdTY3Jp
cHQsICJTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuIik7CiAgICAgICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5l
ciBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91
bmRFdmFsU2NyaXB0LCAiU2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7Ci0gICAgICAgICAgICAg
ICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlw
dCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7
Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRDb21tYW5kTGlu
ZUFQSVNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNv
dXJjZSBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQo
IWZvdW5kVW5leHBlY3RlZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3Rl
ZCBzY3JpcHRzLiIpOwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1l
eHBlY3RlZC50eHQKaW5kZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMwNjBiZTY4NjQyY2IwM2Fi
Ny4uZTMwYWE5ODE5Yzg5ZGFlMjY1YWQwMmIzNGY2MjMzYTI2N2YzYmQ0YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFi
bGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMTMgQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVj
dCBPYmplY3RdCi1UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRp
b25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05TT0xFIE1FU1NBR0U6IGEs
YixjCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBb
b2JqZWN0IFNldF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgTWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NP
TlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3Qg
T2JqZWN0XQorVGVzdCB0aGF0IEluamVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2Jz
ZXJ2YWJsZSBieSB1c2VyIGNvZGUuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBJbmplY3Rl
ZFNjcmlwdC5PYnNlcnZhYmxlCkBAIC04LDMgKzE2LDI4IEBAIFBBU1M6IFBhdXNlZC4KIFBBU1M6
IFJlc3VtZWQuCiBQQVNTOiBBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4K
K1BBU1M6IFJlc3VtZWQuCitQQVNTOiBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2Fs
bCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2Ny
aXB0Lk9ic2VydmFibGU6TWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVz
ZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3Jd
IGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3Rl
ZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5wdXNoCitQQVNTOiBQYXVzZWQuCitQ
QVNTOiBSZXN1bWVkLgorUEFTUzogQXJyYXkucHJvdG90eXBlWyJwdXNoIl0gY2FsbCBjb3VudCBz
aG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2Vy
dmFibGU6U2V0LnByb3RvdHlwZS5hZGQKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQ
QVNTOiBTZXQucHJvdG90eXBlWyJhZGQiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmcKK1BBU1M6
IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBTdHJpbmcgY2FsbCBjb3VudCBzaG91bGQg
YmUgMS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlw
dC9vYnNlcnZhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0
L29ic2VydmFibGUuaHRtbAppbmRleCA0ZDhkNjZlNTJmYmNiMTcxYWIxYzkwYTc2NThkOWQ5M2M4
NDdkNjk1Li42ZTdlZDYyYTkyNzgxOTI5NGJhNWRhODdiZGNmMTgxMDcyYTgwYTk2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUu
aHRtbApAQCAtMywzMSArMyw0OCBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci0vLyBOT1RFOiBNb3JlIGNhc2VzIHNob3VsZCBiZSB0ZXN0ZWQgYW5kIGFkZHJlc3Nl
ZCBieToKLS8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBh
cnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQg
bm9uLXVzZXItb3ZlcnJpZGVuIGJ1aWx0LWlucwotCi1mdW5jdGlvbiB0cmlnZ2VySXRlcmF0aW9u
KCkgeworZnVuY3Rpb24gcmVwbGFjZUFuZFRlc3RQcm90b3R5cGVQcm9wZXJ0eShwcm90b3R5cGUs
IHByb3BlcnR5LCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbikgewogICAgIGxldCBj
YWxsQ291bnQgPSAwOwotCi0gICAgY29uc3Qgb3JpZ2luYWxJdGVyYXRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IpOwot
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRv
ciwgeworICAgIAorICAgIGxldCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBwcm9wZXJ0eSk7CisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHsKICAgICAgICAgZ2V0KCkgewog
ICAgICAgICAgICAgKytjYWxsQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxJdGVy
YXRvci52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRv
ci52YWx1ZTsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107CisgICAg
ZGVidWdnZXI7CisKKyAgICAvLyBQcmV2aWV3IGFuIG9iamVjdC4KKyAgICBjb25zb2xlLmxvZyh7
YToxLCBiOjIsIGM6e319KTsKKworICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9u
KCk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgb3Jp
Z2luYWxQcm9wZXJ0eURlc2NyaXB0b3IpOworCisgICAgcmV0dXJuIGNhbGxDb3VudDsKK30KKwor
ZnVuY3Rpb24gcmVwbGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlk
ZGVuT2JqZWN0RnVuY3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBs
ZXQgb3JpZ2luYWxPYmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAg
ICAgICR7b2JqZWN0U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50Owor
ICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAg
IH07CisgICAgYCk7CiAKICAgICBkZWJ1Z2dlcjsKIAogICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0
LgogICAgIGNvbnNvbGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgLy8gVXNlIEFycmF5
IEl0ZXJhdG9yIGF0IGxlYXN0IG9uY2UuCi0gICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9Cisg
ICAgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uKCk7CiAKLSAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IsIG9yaWdpbmFsSXRlcmF0
b3IpOworICAgIGV2YWwoYCR7b2JqZWN0U3RyaW5nfSA9IG9yaWdpbmFsT2JqZWN0O2ApOwogCiAg
ICAgcmV0dXJuIGNhbGxDb3VudDsKIH0KQEAgLTM2LDIzICs1MywxMTYgQEAgZnVuY3Rpb24gdGVz
dCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRp
b24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5Qcm9w
ZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAg
ICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkoJHtwcm90b3R5cGVTdHJpbmd9LCAk
e3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbi50b1N0
cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke3Byb3RvdHlwZVN0cmluZ31bJHtw
cm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuYCk7CisgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgb2JqZWN0U3RyaW5nLCBp
bnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RPYmplY3QoIiR7b2JqZWN0U3RyaW5n
fSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uLnRvU3RyaW5nKCl9KTtgLCAoZXJy
b3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2lu
Z2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3Vt
ZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKICAgICAgICAgbmFt
ZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVy
YXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5IGl0ZXJhdGlvbiBpbiBJbmplY3Rl
ZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwKLSAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRy
aWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsICJBcnJheS5wcm90b3R5cGVbU3lt
Ym9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLiIpOwotICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBh
dXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQ
YXVzZWQuIik7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNh
dGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVz
dW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJS
ZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVzY3JpcHRp
b246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2Jz
ZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAor
ICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9r
ZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJy
YXkgPSBbImEiLCAiYiIsICJjIl07CisgICAgICAgICAgICBmb3IgKGxldCB4IG9mIGFycmF5KSB7
IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQg
c2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNl
dC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIs
CisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAg
ICAgICAgICBsZXQgc2V0ID0gbmV3IFNldChbImEiLCAiYiIsICJjIl0pOworICAgICAgICAgICAg
Zm9yIChsZXQgeCBvZiBzZXQpIHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhzZXQpOwor
ICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5cGVb
U3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFwIGl0ZXJhdGlvbiBp
biBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHBy
b3RvdHlwZVN0cmluZzogIk1hcC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzog
IlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0
aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgbWFwID0gbmV3IE1hcChbWyJhIiwgIjEiXSwg
WyJiIiwgIjIiXSwgWyJjIiwgIjMiXV0pOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBtYXAp
IHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhtYXApOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5wdXNoIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJBcnJheS5wdXNoIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJl
IG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBl
IiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcInB1c2hcIiIsCisgICAgICAgIGludm9rZU92
ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkg
PSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1c2goNDIpOworICAgICAgICB9LAorICAgIH0pOwor
CisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmpl
Y3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJTZXQuYWRkIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFi
bGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiU2V0LnByb3RvdHlwZSIsCisgICAgICAg
IHByb3BlcnR5U3RyaW5nOiAiXCJhZGRcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9w
ZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKKyAg
ICAgICAgICAgIHNldC5hZGQoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkT2Jq
ZWN0VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpT
dHJpbmciLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN0cmluZyBpbiBJbmplY3RlZCBTY3JpcHQg
c2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIG9iamVjdFN0cmluZzogIlN0cmlu
ZyIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbjogKCkgPT4geworICAg
ICAgICAgICAgbGV0IGFuc3dlciA9IFN0cmluZyg0Mik7CisgICAgICAgIH0sCiAgICAgfSk7CiAK
ICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKQEAgLTYwLDYgKzE3MCw2IEBAIGZ1
bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25z
IGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgorPHA+VGVzdCB0aGF0IEluamVj
dGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9w
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2Qz
NjJlYTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNm
MjJiNTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2Rl
bC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMx
LDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUp
IHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2si
LAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwg
Y29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFw
Q2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRp
dmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3
ICs3MCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9
IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1l
IjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUi
OiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAi
ZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRp
dmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAg
IH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBS
RVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5z
cGxpdFRleHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAog
ICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRA
W25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBb
bmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4
dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVd
XG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAg
ICAgewogICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4
OWVhYzBmYmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMw
OWIzMDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFT
UzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwK
ICAgICAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZp
bHRlcmVkPiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAg
ICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAg
ICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4i
LApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAg
ICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNj
cmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAg
ICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0
ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAg
fQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3
Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUi
OiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0
ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5O
dW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAg
ICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJiMzUzMzgwMGNiZTI1OWVlODg4N2Fi
ZTE4ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRt
bApAQCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gVG8gYXZvaWQg
Zmxha2luZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2UgYWx3YXlzIGV4cGVjdC4KICAgICBj
b25zdCBldmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5kZXJpbmdGcmFtZSIsICJDb25zb2xl
UHJvZmlsZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9uQ2FsbCJdKTsKKworICAgIC8vIFRo
ZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQg
bGluZSBudW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLiBXZSBvbmx5Cisg
ICAgLy8gd2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZvciB0aG9zZSBzcGVjaWZpYyBjYWxs
IGZyYW1lcyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGluZS9jb2x1bW4gbnVtYmVycyByZW1h
aW4gc3RhYmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5ndGggPSAwOworICAgIGxldCB1cmxM
ZW5ndGggPSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAg
ICBpZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAgICAgICAgICAgZnVuY3Rpb25OYW1l
TGVuZ3RoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAiY2hpbGRyZW4iICYmIHRoaXMuc3Rh
cnRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihlID0+IGV2ZW50QWxsb3ds
aXN0LmhhcyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9PT0gInN0YXJ0VGltZSIgfHwga2V5
ID09PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8IGtleSA9PT0gImZyYW1lSWQi
KQogICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgaWYgKChrZXkgPT09
ICJsaW5lTnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1l
TGVuZ3RoICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOwor
CisgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAgICAgICAgdXJsTGVuZ3RoID0gdmFs
dWUubGVuZ3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJsIiB8fCBrZXkgPT09ICJzY3JpcHRO
YW1lIikKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wv
aW5zcGVjdG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9s
aW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggMjVmOTMwZTI5MjFmODg5YzE2NDc3ZmJmYTEw
MmEyZDFjNzY3NzY4MC4uNTZkMTg0MDhiZGRlOWE3YjA3MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9s
aW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTYwLDggKzYwLDgg
QEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIi
LAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVk
PiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJl
ciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAg
ImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAg
ImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCArMTEzLDggQEAgUEFTUzogQ2FwdHVy
aW5nIHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAidXJsIjogIiIs
CiAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAibGluZU51bWJlciI6IDE0
MiwKLSAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgfQogICBdLAog
ICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0
dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAi
IiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjog
MTQyLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8Zmls
dGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0s
CiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458769</attachid>
            <date>2022-05-03 19:02:53 -0700</date>
            <delta_ts>2022-05-04 08:33:27 -0700</delta_ts>
            <desc>Patch v1.4 - Review nits and notes</desc>
            <filename>bug-152294-20220503190252.patch</filename>
            <type>text/plain</type>
            <size>156748</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NzUyYjY1OGM4ZjVhMmJjZmQ3NTQyOTQ0MTYxMGU5ZTQxNTQwMzQ0Li4zODU2ZTNmZjU3M2NlNzRi
YmM4Nzc0NTQ3NmEzNmUwOTc4NzBhOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMDMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+IGFu
ZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dLMl0g
QWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDNlODNiYjM1Zjg1OTkyZGYwNjJmNTM2NWE3NDc2NzRjNThmYTAyZGMuLmNkYWY2
MTAzZDE5ZmQxZDU0M2JhMDlhODhiMTgwMjYyNjYxZmI4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBi
dWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0LWlu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBC
dWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBh
IHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAgICAg
LSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9mIHJh
dyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3BlcnRp
ZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1vdmVy
cmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1c2Ug
YSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNlci1w
cm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFucyB0
aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRoZW0g
aW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1cHBv
cnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5vIG1v
cmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTAzICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2VNYXA6OnJlbW92ZUl0ZW0gbWF5
IGZhaWwgdG8gcmVtb3ZlIGl0ZW0gZnJvbSBtYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZlYWI4NmQyNDFjNTFhZDg5Li5lNmVk
N2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JV
SUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvVHlwZWRB
cnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5
cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
V2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTE0MDUsMTcg
KzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtKYXZh
U2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NCdWlsdGlucy5oCiApCiAKLWFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRF
TkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9D
T01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9J
bmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5IDwgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+PiAke0phdmFTY3Jp
cHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwot
ICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgKLSAgICBWRVJC
QVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgpCi0KIGlmIChX
VEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9UIEVOQUJMRV9DX0xPT1ApCiAgICAg
ICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA4ZDU0MGJkNTE5MjE3YjU1
MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYxZDMwNjA3ZThhNmZiNTE0M2E0YzI0
ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsyMSw2IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0ZWRXYXNtT3BzLmFz
bQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dl
bmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNtCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdFdhc20uYXNtCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4YTFiYTEzYzA5NWY3ZTE1NGY2OGU5
N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0ZjBkNDRlNWIzNWYwOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY4LDcgKzY4LDYgQEAg
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFTY3JpcHRDb3JlKS9TY3JpcHRzCiAK
IC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVkU2NyaXB0U291cmNlLmggXAogICAg
IExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIFJlZ0V4cEppdFRhYmxl
cy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rv
ci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMgXAor
ICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBc
CiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRz
IG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywgc28KQEAgLTM2OCwxMiArMzY4LDYg
QEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyA6IENvbWJpbmVkRG9tYWlu
cy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5wbCAtLWlucHV0IGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BM
QVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1h
bmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMu
aW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0
ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gLi9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4u
cHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMg
Pj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0JJChERUxFVEUpIElu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BDT0RFX0ZJTEVTID0gXAogICAgIEFp
ck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4YjIzMGY1OTI3MWNmZmQxNy4uMjRk
NGJlODZiOWMxNWZkYzZkMjdkNzNiYTkwZWZhODk5MDM0ZDJlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJCUE1MTNFNUJFMTg1QkZBQ0MwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJCMTg1
QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwogCQlBNTEzRTVD
MjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJEMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovOyB9OwotCQlB
NTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM2MTg1Rjk0MzYw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovOyB9OwogCQlBNTEzRTVDQjE4NUY5
NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2Ny
aXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkM5NUZGMjE1OUQ0
MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0QyMTU5RDQxRTAwRkNEODI2IC8qIElu
c3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTM3NTEsNiArMzc1MCw3IEBACiAJCTJBRDJFREZBMTk3OTlFMzgwMDRE
NjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5
MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1IC8qIFNo
YWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU2hhZG93UmVhbG1Q
cm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFBRDQ3
RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwQTVG
NDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBDNEYyN0I5NENFNDAwMzA4MDkxIC8q
IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDcwNyw3ICs0NzA3LDYgQEAKIAkJQTUxM0U1QkMxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QkQxODVCRkFDQzAwN0U5NUFEIC8q
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDOTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg0LDcgKzcyODMsNiBAQAogCQkJ
CTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJ
CQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICov
LAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywK
LQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAq
LywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0
b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRv
clByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCkBAIC05MzYzLDYgKzkzNjEsNyBA
QAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVEMDA1NDUyNEQgLyogU2V0SXRlcmF0
b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8qIFNldFBy
b3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMwMDAzNzFBMjUgLyogU2hhZG93UmVh
bG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1RDlCMTAwOURCMUVGIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2NUQ5QjEwMDlEQjFFRiAvKiBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUwNDUxQjFDMjVCNEIxMDBCQjY2M0Mg
LyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTIsNyArMTA0NTEsNiBAQAogCQkJCUE1
MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3QjdCODYwMDg0M0IxMCAvKiBJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUxM0U1QzcxODVGOTQ0NjAw
N0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU5
RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5k
LXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1QkI2OTFEMTIwNTBFMDAxOUZFNTcg
LyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDhBN0JGMDFCODI5NzVBMDAy
RDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMzgwLDcgKzEy
Mzc4LDYgQEAKIAkJCQk1MzZCMzE3QTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEw
Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyNzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyQzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzExMzVD
QTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJCYXNlLmMgaW4gU291cmNlcyAqLywK
IAkJCQk1MzZCMzE3NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzZCMzE3NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTExMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE4MDFGNzFDNTk5MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDA5LDcgKzEyNDA2LDYg
QEAKIAkJCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzNS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzVDMjQ2QzFGN0ExNzc4MDA2RUM0MEUgLyogVW5pZmllZFNv
dXJjZTEzNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBBNjZCQzFGQTNFNzhCMDAyNkE1NDUg
LyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzExMzVDQjI4MUI1
QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzguY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkYxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQyMCw3ICsxMjQxNiw2IEBACiAJ
CQkJNTMwQTY2QzQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM4RjE1RjIyNjhGQkM3QjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2Ux
NDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUUyNjhGQkJCNjAwRDYwMUM0IC8qIFVu
aWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1QzkyODFCNUIwMDAw
QzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVF
NzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MzhGMTVGMDI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzhGMTVFQjI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDMwLDYgKzEyNDI1LDkgQEAKIAkJCQk1MzhG
MTVFQTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1NC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MzhGMTVFRjI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1NS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MjVDOUNERjIyMDI4NTgzMDA4MkRCRkQgLyogV2FzbUFpcklS
R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRB
OSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1Q0EyODFC
NUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWls
dGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3dr
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0OTAx
MDczMDE5NzlhODZkMTY4Ny4uMzg3NGRkNDJmMjc2MGYzNGU4NmQ4ZGM4MTg2MWE1MmVjODhmZTNh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1Miw3IEBAIGZ1bmN0aW9uSXNBc3lu
Y1JlZ0V4cCA9IHJlLmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1bmN0aW9uIiwgcmUuTVVMVElMSU5F
IHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccyso
XHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25PdmVycmlkZGVu
TmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJpZGRlbk5hbWU9KFwiLitcIikkIiwg
cmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5j
b21waWxlKHIiXig/OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdysp
P1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCitm
dW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBpbGUociIsXHMqKD8hW157fV0qXH0p
IiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0aWxpbmVDb21tZW50UmVnRXhwID0g
cmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogc2lu
Z2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIGNsYXNzIEJ1aWx0aW5GdW5jdGlv
bjoKICAgICAgICAgaXNfbmFrZWRfY29uc3RydWN0b3IgPSBmdW5jdGlvbk5ha2VkQ29uc3RydWN0
b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBOb25lCiAgICAgICAgIGlmIGlzX25h
a2VkX2NvbnN0cnVjdG9yOgogICAgICAgICAgICAgaXNfY29uc3RydWN0b3IgPSBUcnVlCi0gICAg
ICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyRmlu
ZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxpdCgnLCcpXQorICAgICAgICBwYXJh
bWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlci5z
cGxpdChmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0p
XQogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0gMDoKICAgICAgICAgICAgIHBhcmFt
ZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBjbGFzcyBCdWlsdGluc0NvbGxlY3Rp
b246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAgICAgICAgc3RhcnQgPSAwCiAgICAg
ICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKICAgICAgICAgICAg
IHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CiAgICAg
ICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCiAgICAg
ICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAgICAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZGVwdGggPSAxCi0g
ICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVy
ID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUK
ICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgICAgICBpZiB0ZXh0W2Vu
ZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQotICAgICAg
ICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAgICAgICAgICAgICAgICAgICAgZGVw
dGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID0gdGV4dFtl
bmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5nQ2hhcmFjdGVyOgorICAgICAgICAg
ICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgaW4gImAn
XCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIg
aXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50
Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhNRTogPHdlYmtpdC5vcmcv
Yi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJhbGFuY2VkIHF1b3Rh
dGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAgIyBmb3VuZCBpbiBgU3Ry
aW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2UgdGhlIHN0YXRlIG9m
IHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5zaWRlL291dHNpZGUgYSBz
dHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0cmluZyBzdGF0ZSBh
dCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMgKHVubGVzcyB3ZSBhcmUg
aW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5sZXNzIGEgcmVndWxh
ciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1bmJhbGFuY2VkIGN1cmx5
IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUgYWJvdXQgaXMgb24g
dGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAgICAgICMgcmVndWxhciBl
eHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAgICAgICAgICBpZiBj
dXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciAh
PSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9
IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlm
IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0g
J3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAxCisgICAgICAgICAgICAgICAgZWxp
ZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggLT0g
MQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBw
ZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFy
dDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKaW5kZXggOWI5YWI3NWM2ZDc1YWE3M2Y3ZTE4ZDY5ZmUyYTg4NzdhZWQ1YWI0OC4uYTFkM2M5
M2JlMjdhMzhkMGFlZWJkNzUwNzVkNjUwYzFmOTY3ZmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTEwNiw2
ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgaSA9IHBhcmFtZXRlcnNTdGFydCArIDE7CiAgICAgICAgIHVuc2lnbmVkIGNvbW1hcyA9IDA7
CisgICAgICAgIGJvb2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOwogICAgICAgICBib29s
IHNhd09uZVBhcmFtID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFzUmVzdFBhcmFtID0gZmFsc2U7
CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xMTMsNyArMTE0LDEzIEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0m
IHZtLCBjb25zdCBTCiAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnKScpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcs
JykKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICd9JykKKyAgICAgICAgICAgICAg
ICBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmIChjaGFy
YWN0ZXJzW2ldID09ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNrZXRzKSB7CisgICAgICAgICAgICAg
ICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IHRydWU7CisgICAgICAgICAgICAgICAgKytpOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXJz
W2ldID09ICcsJykKICAgICAgICAgICAgICAgICArK2NvbW1hczsKICAgICAgICAgICAgIGVsc2Ug
aWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFyYWN0ZXJzW2ldKSkKICAgICAgICAg
ICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEw
MGM1MmFlYmM1ZC4uNzI5MWZhMmQ1YjJmYjFhMTc1N2UxZTEwNWNlYzMxYjk0Y2E0ZGQ4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTky
LDYgKzE5MiwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5j
dGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNv
cnQpIFwKKyAgICBtYWNybyhqc29uUGFyc2UpIFwKKyAgICBtYWNybyhqc29uU3RyaW5naWZ5KSBc
CisgICAgbWFjcm8oU3RyaW5nKSBcCisgICAgbWFjcm8oc3Vic3RyKSBcCisgICAgbWFjcm8oZW5k
c1dpdGgpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNy
byhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xz
KSBcCisgICAgbWFjcm8oaGFzT3duKSBcCisgICAgbWFjcm8oaW5kZXhPZikgXAorICAgIG1hY3Jv
KHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCmluZGV4IDI2M2U0M2JmYzBlODMxMTYw
NTAyYTk4NWUyNDFhZTA3Yzc3ZWUyZjQuLmIxOTg2ZTg4NTMwY2VjNjYyYzE5ZmZlYWU3NWEzNGI3
NWU4NmZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJh
dG9ySGVscGVycy5qcwpAQCAtNTEsMyArNTEsNDMgQEAgZnVuY3Rpb24gcGVyZm9ybUl0ZXJhdGlv
bihpdGVyYWJsZSkKICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaW5kZXgrKywgaXRl
bS52YWx1ZSk7CiAgICAgfQogfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gd3JhcHBlZEl0
ZXJhdG9yKGl0ZXJhdG9yKQoreworICAgIGxldCB3cmFwcGVyID0gQE9iamVjdC5AY3JlYXRlKG51
bGwpOworICAgIHdyYXBwZXIuQEBpdGVyYXRvciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaXRlcmF0
b3I7IH0KKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9u
IGJ1aWx0aW5TZXRJdGVyYWJsZShzZXQpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAg
IGlmICghQGlzU2V0KHNldCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpblNldEl0
ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1TZXQgb2JqZWN0LiIpOworCisgICAgLy8gVXNpbmcgdGhl
IHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9sIGl0c2Vs
ZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAgLy8gYWdh
aW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3IgU2V0cywg
YEB2YWx1ZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdpbmFsbHkKKyAgICAvLyBw
bGFjZWQgYXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBz
ZXQuQHZhbHVlczsKKyAgICAKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1
bmN0aW9uLkBjYWxsKHNldCkpOworfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gYnVpbHRp
bk1hcEl0ZXJhYmxlKG1hcCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgCisgICAgaWYgKCFA
aXNNYXAobWFwKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluTWFwSXRlcmFibGUg
Y2FsbGVkIHdpdGggbm9uLU1hcCBvYmplY3QuIik7CisKKyAgICAvLyBVc2luZyB0aGUgcHJpdmF0
ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRoZSBzeW1ib2wgaXRzZWxmIGhhcyBu
b3QgYmVlbiBtb2RpZmllZCwgYnV0IGRvZXMgbm90IHByb3RlY3QKKyAgICAvLyBhZ2FpbnN0IHRo
ZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5nIGJlZW4gcmVwbGFjZWQuIEZvciBNYXBzLCBgQGVudHJp
ZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdpbmFsbHkKKyAgICAvLyBwbGFjZWQg
YXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBtYXAuQGVu
dHJpZXM7CisKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBj
YWxsKG1hcCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNl
ZDcyMy4uYjg2NTNlODY1Njk5MzFmY2JiNmUyZjRiNDI1NDhjNGIwYzZlMTM3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0x
MjAsNiArMTIwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVG
dW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAog
ICAgIHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCisgICAgdihqc29uUGFyc2UsIG51bGxwdHIpIFwK
KyAgICB2KGpzb25TdHJpbmdpZnksIG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikg
XAogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFt
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0
ZDc2ZWY5NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFt
ZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xv
Y2suaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2Rl
LmgiCkBAIC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xl
YXJFeGNlcHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9u
VmFsdWUoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3Jp
cHRTb3VyY2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pz
KSk7Ci19Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmpl
Y3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUlu
amVjdGVkU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJj
ZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUg
Z2xvYmFsVGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVh
dGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVy
KCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9i
amVjdCwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
LSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAg
aWYgKCFmdW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4
cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7
CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9u
VmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0
ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwog
fQogCkBAIC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElk
Rm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBh
dXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQp
OwogICAgIGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRl
UmVzdWx0LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwx
MCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0
Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4g
MCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBz
Y3JpcHQ6ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9i
amVjdCkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1
bHQudmFsdWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2Ny
aXB0IG9iamVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlw
dFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJh
MGFmNGM4YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5
YTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBI
YXNoTWFwPEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBw
cml2YXRlOgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVk
PEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlk
KTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
PiBjcmVhdGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAog
ICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3Rl
ZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0
ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAy
MTIzODdmZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0
LDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkg
PiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29s
dW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVj
dGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgp
KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVz
XG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1
ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9v
bGVhbigpKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9z
LCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsK
LSAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxP
YmplY3QoKSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2Ny
aXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICgh
aW5qZWN0TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNCiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAg
ICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICcl
cyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50
b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwg
bGluZSwgY29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4
YzY5N2U5YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5
NWU0ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2Ny
aXB0TWFuYWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxl
IDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2Ny
aXB0TW9kdWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVl
IGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUz
Mzc5YTJmMWViNzFiOGM0OTI1ZjZjNC4uMDA4MDM2NjYyOGM2NmE1YmUwNDAyNGFhNTYwZTBkODEy
YzI3ODg0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywzOCBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
K0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKC8q
IGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUyLCAuLi4gKi8pCit7CisgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggJSAyICE9PSAwKQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJgY3JlYXRlT2Jq
ZWN0V2l0aG91dFByb3RvdHlwZWAgcmVxdWlyZXMgdGhhdCBlYWNoIGtleSBhcmd1bWVudCBiZSBm
b2xsb3dlZCBieSBhIHZhbHVlLCByZXN1bHRpbmcgaW4gYW4gZXZlbiBudW1iZXIgb2YgYXJndW1l
bnRzLiIpOworCisgICAgbGV0IG9iamVjdCA9IEBPYmplY3QuQGNyZWF0ZShudWxsKQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAyKQorICAgICAgICBvYmpl
Y3RbYXJndW1lbnRzW2ldXSA9IGFyZ3VtZW50c1tpICsgMV07CiAKLShmdW5jdGlvbiAoSW5qZWN0
ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpIHsK
KyAgICByZXR1cm4gb2JqZWN0OworfQogCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBi
dWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwor
QGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgvKiB2
YWx1ZTEsIHZhbHVlMiwgLi4uICovKQoreworICAgIGxldCBhcnJheSA9IG5ldyBAQXJyYXkoYXJn
dW1lbnRzLmxlbmd0aCk7CisgICAgYXJyYXkuX19wcm90b19fID0gbnVsbDsKKyAgICAKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgQGFycmF5
UHVzaChhcnJheSwgYXJndW1lbnRzW2ldKTsKKyAgICAKKyAgICByZXR1cm4gYXJyYXk7Cit9CiAK
LXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBj
cmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkKK3sKIAogZnVuY3Rpb24gdG9TdHJpbmco
b2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAgICByZXR1cm4gQFN0cmluZyhvYmop
OwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKQEAgLTkzLDYgKzExNCwx
NSBAQCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogfQorICAgIAorZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHNPYmplY3QpIHsKKyAgICBsZXQgaXRlcmF0b3JGdW5j
dGlvbiA9IGFyZ3VtZW50c09iamVjdC5AQGl0ZXJhdG9yOworICAgIHJldHVybiBAd3JhcHBlZEl0
ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoYXJndW1lbnRzT2JqZWN0KSk7Cit9CisKK2Z1
bmN0aW9uIG1heChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7Cit9CiAKIC8vIC0t
LS0tLS0KIApAQCAtMTAxLDEyICsxMzEsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9s
YXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0g
e307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhp
cy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKKyAgICAg
ICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgpOworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0gQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IEBjcmVhdGVP
YmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdElu
ZGV4ID0gMTsKLSAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgIHRoaXMu
X3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICB9CiAK
ICAgICAvLyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCkBAIC0xMTUsNyArMTQ1LDcgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldywgc2F2ZVJlc3VsdCwgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgaXNFdmFs
T25DYWxsRnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9u
KEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRT
Y3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21t
YW5kTGluZUFQSSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJh
bWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuQGFwcGx5KEB1bmRlZmluZWQsIGFyZ3MpOwogICAg
ICAgICB9KTsKICAgICB9CiAKQEAgLTEzNiwxNiArMTY2LDE2IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKKyAg
ICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewogICAgICAg
ICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGxldCByZXNvbHZlID0g
KHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAg
ICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVP
YmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVl
LCBnZW5lcmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1
cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAg
ICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9i
amVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2
ZVJlc3VsdCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpA
QCAtMTU5LDcgKzE4OSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxs
YmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5h
bWUpKTsKICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJl
amVjdCk7CisgICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAg
ICB9CiAKICAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5
VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCwxNCArMjEwLDE0IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICgh
aXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9i
amVjdCB3aXRoIGdpdmVuIGlkIjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107Cisg
ICAgICAgIGxldCByZXNvbHZlZEFyZ3MgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7
CiAgICAgICAgIGlmIChhcmdzKSB7CiAgICAgICAgICAgICBsZXQgY2FsbEFyZ3MgPSBJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVu
dChjYWxsQXJnc1tpXSk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTE5NywxMCArMjI3LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9uIGRvZXMgbm90IGV2YWx1YXRlIHRv
IGEgZnVuY3Rpb24iOwogCi0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHdh
c1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3Jl
YXRlKGZ1bmMuYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5hbWUsIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKLSAgICAgICAgICAgIH07CisgICAgICAgICAg
ICByZXR1cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAg
Indhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAgICJyZXN1bHQiLCBSZW1vdGVPYmpl
Y3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBO
YW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKICAg
ICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRocm93
blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7CiAgICAgICAgIH0KQEAgLTIzMywxMyArMjYzLDIy
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgZ2V0UHJv
cGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwg
Z2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0gb3du
UHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMg
OiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXd9KTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJmZXRjaFN0YXJ0IiwgZmV0Y2hTdGFydCwK
KyAgICAgICAgICAgICJmZXRjaENvdW50IiwgZmV0Y2hDb3VudCwKKyAgICAgICAgICAgICJnZW5l
cmF0ZVByZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsCisgICAgICAgICkpOwogICAgIH0KIAogICAg
IGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhvYmplY3RJZCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3Vu
dCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0g
SW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcyB8IEluamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlLk5hdGl2ZUdldHRlclByb3BlcnRpZXM7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwge2ZldGNoU3Rh
cnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldywgbmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0
cnVlfSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xs
ZWN0aW9uTW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAi
ZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZldGNo
Q291bnQsCisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LAor
ICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsCisgICAgICAgICkpOwog
ICAgIH0KIAogICAgIGdldEludGVybmFsUHJvcGVydGllcyhvYmplY3RJZCwgZ2VuZXJhdGVQcmV2
aWV3KQpAQCAtMjU2LDcgKzI5NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gdGhpcy5faW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CiAgICAgICAgIGlmICghZGVzY3JpcHRvcnMpCi0gICAg
ICAgICAgICByZXR1cm4gW107CisgICAgICAgICAgICByZXR1cm4gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSgpOwogCiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY3JpcHRvcnMu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnNb
aV07CkBAIC0yODAsMTIgKzMxOSwxMyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBlbnRyaWVzID0g
dGhpcy5fZW50cmllcyhvYmplY3QsIEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCks
IGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwotICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZnVu
Y3Rpb24oZW50cnkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzW2ldOwogICAgICAgICAg
ICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5LnZhbHVlLCBvYmplY3RH
cm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkK
ICAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5Lmtl
eSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gZW50
cnk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBlbnRyaWVzOwogICAg
IH0KIAogICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNPTikKQEAgLTMwNiwxMCArMzQ2LDEw
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlm
ICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGxldCBy
ZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90
b3R5cGUoKTsKICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyss
IGNhbGxGcmFtZSkpOworICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsIG5ldyBJbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKICAgICAgICAgICAg
IGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAgICAgIH0gd2hpbGUgKGNhbGxGcmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjYsNyArMzY2LDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB3cmFwSlNPTlN0cmluZyhqc29u
U3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNvblN0cmlu
ZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLndyYXBPYmplY3QoQGpzb25QYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVl
LCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICB9CkBAIC0zNDMsMTIgKzM4MywxMiBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IG51
bGw7CiAgICAgICAgIGlmICh0eXBlb2YgY29sdW1ucyA9PT0gInN0cmluZyIpCi0gICAgICAgICAg
ICBjb2x1bW5zID0gW2NvbHVtbnNdOworICAgICAgICAgICAgY29sdW1ucyA9IEBjcmVhdGVBcnJh
eVdpdGhvdXRQcm90b3R5cGUoY29sdW1ucyk7CiAKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0
SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAiYXJyYXkiKSB7Ci0gICAgICAgICAgICBjb2x1bW5O
YW1lcyA9IFtdOworICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0
UHJvdG90eXBlKCk7CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1
bW5zW2ldKSk7CisgICAgICAgICAgICAgICAgQGFycmF5UHVzaChjb2x1bW5OYW1lcywgdG9TdHJp
bmcoY29sdW1uc1tpXSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVj
dC5jcmVhdGUodGFibGUsICJjb25zb2xlIiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKQEAg
LTM5Niw3ICs0MzYsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lID09PSAiY29uc29sZSIpIHsKICAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0OwogICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVk
UmVzdWx0SW5kZXggPSAxOwotICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107Cisg
ICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90
eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91
cHNbb2JqZWN0R3JvdXBOYW1lXTsKQEAgLTQyOSwxNCArNDY5LDE2IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHJldHVybiB0aGlzLl9tb2R1bGVz
W25hbWVdOwogICAgIH0KIAotICAgIGluamVjdE1vZHVsZShuYW1lLCBzb3VyY2UsIGhvc3QpCisg
ICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0aW9uLCBob3N0KQogICAgIHsKICAgICAg
ICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOwogCi0gICAgICAgIGxldCBtb2R1bGVGdW5j
dGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwog
ICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5zcGVjdG9yOiBhIGZ1bmN0aW9uIHdhcyBleHBlY3Rl
ZCBmb3IgaW5qZWN0TW9kdWxlIjsKLSAgICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3Jp
cHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIHtS
ZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgaG9zdCk7CisgICAgICAgIG1vZHVsZUZ1bmN0
aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNj
cmlwdElkLCB0aGlzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICJSZW1vdGVPYmplY3QiLCBSZW1vdGVPYmplY3QsCisgICAgICAgICAgICAiQ29tbWFuZExpbmVB
UEkiLCBDb21tYW5kTGluZUFQSSwKKyAgICAgICAgKSwgaG9zdCk7CiAKICAgICAgICAgdGhpcy5f
bW9kdWxlc1tuYW1lXSA9IHRydWU7CiAgICAgfQpAQCAtNDcwLDEwICs1MTIsMTAgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdy
b3VwTmFtZSkgewogICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29i
amVjdEdyb3VwTmFtZV07CiAgICAgICAgICAgICBpZiAoIWdyb3VwKSB7Ci0gICAgICAgICAgICAg
ICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAgICAgICBncm91cCA9IEBjcmVhdGVBcnJheVdpdGhv
dXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0
R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZ3JvdXAucHVz
aChpZCk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGdyb3VwLCBpZCk7CiAgICAgICAgICAgICB0
aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9iamVjdEdyb3VwTmFtZTsKICAgICAgICAg
fQogCkBAIC00ODgsOCArNTMwLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgIF9mYWxsYmFja1dyYXBwZXIob2JqZWN0KQogICAgIHsKLSAgICAgICAg
bGV0IHJlc3VsdCA9IHt9OwotICAgICAgICByZXN1bHQudHlwZSA9IHR5cGVvZiBvYmplY3Q7Cisg
ICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgidHlwZSIs
IHR5cGVvZiBvYmplY3QpOwogICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQog
ICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0gb2JqZWN0OwogICAgICAgICBlbHNlCkBAIC01MTUs
NyArNTU2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgICAgIHJldHVybiByZXNvbHZlZEFyZzsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybiBAdW5kZWZpbmVkOwogICAgIH0KIAogICAgIF9j
cmVhdGVUaHJvd25WYWx1ZSh2YWx1ZSwgb2JqZWN0R3JvdXApCkBAIC01MjQsMTAgKzU2NSwxMCBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICB0cnkg
ewogICAgICAgICAgICAgcmVtb3RlT2JqZWN0LmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNjcmlw
dGlvbih2YWx1ZSk7CiAgICAgICAgIH0gY2F0Y2ggeyB9Ci0gICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICB3YXNUaHJvd246IHRydWUsCi0gICAgICAgICAgICByZXN1bHQ6IHJlbW90ZU9iamVj
dAotICAgICAgICB9OworICAgICAgICByZXR1cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICJyZXN1bHQi
LCByZW1vdGVPYmplY3QsCisgICAgICAgICk7CiAgICAgfQogCiAgICAgX2V2YWx1YXRlQW5kV3Jh
cChldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGlzRXZhbE9u
Q2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRl
UHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTU1MiwxMCArNTkzLDEwIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICB0
aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKIAotICAgICAgICAgICAgbGV0IHJldHVybk9iamVj
dCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAg
IHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9iamVjdEdyb3VwLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAg
ICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAicmVzdWx0IiwgUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5l
cmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAgICAgICAgICAgaWYgKHNhdmVSZXN1
bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKICAgICAgICAgICAgICAgICByZXR1cm5PYmpl
Y3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7CkBAIC01NzEsNyAr
NjEyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgbGV0IGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKICAgICAgICAgaWYgKGluY2x1ZGVDb21tYW5k
TGluZUFQSSkKICAgICAgICAgICAgIGNvbW1hbmRMaW5lQVBJID0gdGhpcy5jcmVhdGVDb21tYW5k
TGluZUFQSU9iamVjdChpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6IG51bGwpOwotICAgICAg
ICByZXR1cm4gZXZhbEZ1bmN0aW9uLmNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGlu
ZUFQSSk7CisgICAgICAgIHJldHVybiBldmFsRnVuY3Rpb24uQGNhbGwob2JqZWN0LCBleHByZXNz
aW9uLCBjb21tYW5kTGluZUFQSSk7CiAgICAgfQogCiAgICAgX2NhbGxGcmFtZUZvcklkKHRvcENh
bGxGcmFtZSwgY2FsbEZyYW1lSWQpCkBAIC02MDcsNyArNjQ4LDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgX19w
cm90b19fIGF0IHRoZSBlbmQsIGJ1dCBvbmx5IGZvciB0aGUgZmlyc3QgZmV0Y2guCiAgICAgICAg
IGxldCBpbmNsdWRlUHJvdG8gPSAhc3RhcnQ7CiAKLSAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0g
W107CisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5
cGUoKTsKICAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNv
bGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAgICAgICAgaWYgKHN0YXJ0ID4g
MCkgewogICAgICAgICAgICAgICAgIC0tc3RhcnQ7CkBAIC02MjIsMTMgKzY2MywxNiBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGRl
c2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9i
amVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICBpZiAo
InN5bWJvbCIgaW4gZGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnN5bWJv
bCA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci5zeW1ib2wsIG9iamVjdEdyb3VwTmFt
ZSk7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOworICAgICAgICAg
ICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAKICAgICAgICAgICAgIGlm
IChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYm
IGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKIAogICAgICAgICAgICAg
cmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQpID8gSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywg
aW5jbHVkZVByb3RvfSk7CisgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIG5hdGl2ZUdldHRlcnNBc1Zh
bHVlcywKKyAgICAgICAgICAgICJpbmNsdWRlUHJvdG8iLCBpbmNsdWRlUHJvdG8sCisgICAgICAg
ICkpOwogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfQogCkBAIC02MzgsMTMgKzY4
MiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAg
ICBpZiAoIWludGVybmFsUHJvcGVydGllcykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0g
ICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBA
Y3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgaW50ZXJuYWxQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICBsZXQgcHJv
cGVydHkgPSBpbnRlcm5hbFByb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRv
ciA9IHtuYW1lOiBwcm9wZXJ0eS5uYW1lLCB2YWx1ZTogcHJvcGVydHkudmFsdWV9OworICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAibmFtZSIsIHByb3BlcnR5Lm5hbWUsCisgICAgICAgICAgICAgICAgInZh
bHVlIiwgcHJvcGVydHkudmFsdWUsCisgICAgICAgICAgICApOwogICAgICAgICAgICAgaWYgKGNv
bXBsZXRlRGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1
ZTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7CisgICAgICAgICAg
ICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfQpAQCAtNjU0LDE1ICs3MDEsMTggQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKEluamVjdGVk
U2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJwcm94eSIpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgU2V0OworICAgICAgICBsZXQg
bmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0OwogCiAgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hl
biBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQoIl9fcHJvdG9fXyIp
OworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQoIl9fcHJvdG9fXyIpOwogCiAgICAgICAgIGZ1
bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9y
LCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5hdGl2ZUJpbmRpbmdHZXR0ZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0g
e25hbWUsIHZhbHVlOiBvYmplY3RbbmFtZV19OworICAgICAgICAgICAgICAgIGxldCBmYWtlRGVz
Y3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAg
ICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIsIG9iamVjdFtu
YW1lXSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9y
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwpAQCAtNjc4
LDExICs3MjgsMTUgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAgICAgICAgICAgICAgICBmYWtlRGVz
Y3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSBhbnkg
cG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlvbnMgY3JlYXRlZCBmcm9tIGFjY2Vz
c2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3JvbmcgdGhpcyBvYmplY3QuCi0gICAgICAg
ICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSAmJiBJ
bmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVy
cm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgZmFrZURlc2Ny
aXB0b3IudmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKKyAgICAgICAgICAgICAgICBpZiAoZmFr
ZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhv
c3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlw
dG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IudmFsdWUuQGNh
dGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZha2VEZXNjcmlwdG9y
OwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIGxldCBlcnJvckRl
c2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IGUsIHdhc1Rocm93bjogdHJ1ZX07CisgICAgICAgICAg
ICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICJ2YWx1ZSIsIGUsCisgICAgICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCB0cnVlLAorICAg
ICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgaWYgKGlzT3duUHJvcGVydHkpCiAgICAg
ICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5pc093biA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgaWYgKHN5bWJvbCkKQEAgLTcxMCwxNSArNzY0LDE1IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3Bl
cnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICBpZiAo
bmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKLSAgICAgICAg
ICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBuYW1lUHJv
Y2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKIAogICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0
cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHBy
b3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBudWxsOwogCi0gICAgICAgICAgICBsZXQgZGVz
Y3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3Ip
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQg
aGVyZT8KICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBz
ZXR0aW5ncy4KQEAgLTcyNyw3ICs3ODEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobmF0aXZlR2V0
dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdl
dCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRl
c2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNj
cmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQFN0
cmluZyhkZXNjcmlwdG9yLmdldCkuQGVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFk
ZXNjcmlwdG9yLmdldCAmJiBAT2JqZWN0LkBoYXNPd24oZGVzY3JpcHRvciwgImdldCIpICYmICFk
ZXNjcmlwdG9yLnNldCAmJiBAT2JqZWN0LkBoYXNPd24oZGVzY3JpcHRvciwgInNldCIpKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9wZXJzIG1heSBjcmVhdGUgc3VjaCBhIGRlc2Ny
aXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGllbnQ6CiAgICAgICAgICAgICAgICAgICAgIC8v
IGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCAicCIsIHtnZXQ6dW5kZWZpbmVk
fSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeCwgInAiKQogICAgICAgICAgICAg
ICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5h
bWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgdHJ1ZSk7CkBAIC03NDUsMTAg
Kzc5OSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNlOwogICAgICAgICB0cnkgewotICAgICAgICAg
ICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXki
ICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5ndGggPiAwOworICAgICAg
ICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJy
YXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKICAg
ICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmlu
ZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKKyAgICAgICAgZm9yIChsZXQg
byA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gQE9iamVjdC5AZ2V0UHJvdG90eXBlT2Yobykp
IHsKICAgICAgICAgICAgIGxldCBpc093blByb3BlcnR5ID0gbyA9PT0gb2JqZWN0OwogICAgICAg
ICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7CiAKQEAgLTc2NCw3ICs4MTgsNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0
T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5
KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAgLTc3NiwxNCArODMwLDEyIEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAo
c2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3Bl
cnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7Ci0gICAgICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9w
ZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5T
dG9wOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgcHJv
cGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8pOworICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5
U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsg
PSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCkBAIC03OTYs
MjMgKzg0OCwyOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgIGlmIChvYmplY3QuX19wcm90b19fKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVlOiBvYmplY3QuX19wcm90b19fLCB3cml0YWJsZTog
dHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBpc093bjogdHJ1ZX0pOworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJuYW1lIiwgIl9fcHJvdG9fXyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAidmFsdWUiLCBvYmplY3QuX19wcm90b19fLAorICAgICAgICAgICAgICAgICAgICAgICAgIndy
aXRhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWd1cmFibGUiLCB0
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzT3duIiwgdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgKSk7CiAgICAgICAgICAgICB9IGNhdGNoIHsgfQogICAgICAgICB9CiAgICAgfQog
CiAgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAg
IHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
b2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9y
IChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAg
ICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVu
dHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmllcywgQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoInZhbHVlIiwgdmFsdWUpKTsKIAogICAgICAgICAg
ICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMsMTYgKzg4MCwxOCBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBm
ZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsK
KyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlk
ZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBA
YnVpbHRpbk1hcEl0ZXJhYmxlKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0
ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXks
IHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJrZXkiLCBrZXksCisgICAgICAgICAg
ICAgICAgInZhbHVlIiwgdmFsdWUsCisgICAgICAgICAgICApKTsKIAogICAgICAgICAgICAgaWYg
KGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzkzNSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJl
c3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBu
dWxsKQorICAgICAgICBpZiAocmVzdWx0ID09PSBAdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVs
bCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRo
aXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7CisgICAgICAgIGxldCBleGlzdGluZ0lu
ZGV4ID0gQEFycmF5LnByb3RvdHlwZS5AaW5kZXhPZi5AY2FsbCh0aGlzLl9zYXZlZFJlc3VsdHMs
IHJlc3VsdCk7CiAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgewogICAgICAgICAg
ICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC04OTQsMTYgKzk1MywxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgIH0KIH07CiAKLUluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2Rl
ID0gewotICAgIE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRp
ZXMuCi0gICAgTmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVy
IHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAx
IDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4u
Ci19OworSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAiT3duUHJvcGVydGllcyIsIDEgPDwgMCwgICAgICAgICAgLy8gb3du
IHByb3BlcnRpZXMuCisgICAgIk5hdGl2ZUdldHRlclByb3BlcnRpZXMiLCAxIDw8IDEsIC8vIG5h
dGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorICAgICJBbGxQ
cm9wZXJ0aWVzIiwgMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJv
dG90eXBlIGNoYWluLgorKTsKIAotSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9
IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgi
c3RvcCIpLAotfQorSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IEBjcmVhdGVP
YmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICJDb250aW51ZSIsIEBjcmVhdGVQcml2YXRlU3lt
Ym9sKCJjb250aW51ZSIpLAorICAgICJTdG9wIiwgQGNyZWF0ZVByaXZhdGVTeW1ib2woInN0b3Ai
KSwKKyk7CiAKIHZhciBpbmplY3RlZFNjcmlwdCA9IG5ldyBJbmplY3RlZFNjcmlwdDsKIApAQCAt
OTYyLDcgKzEwMjEsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVj
dGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkpOwogICAgICAgICAgICAgICAg
IHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwg
dW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0g
dGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgQHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC05NzcsNyArMTAzNiw3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNh
dGNoIChleCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAg
ICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRp
b24gdG8gc3RyaW5nPiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJl
bW90ZU9iamVjdChkZXNjcmlwdGlvbik7CkBAIC05ODYsNyArMTA0NSw3IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2
aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewot
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZp
bmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGxldCBy
ZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwg
Z2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qu
b2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90
ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5
cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKQpAQCAtMTAxMSw3ICsx
MDcwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAg
IC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1
ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5j
dGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAgLTEwNTAsOCArMTEwOSw4IEBAIGxl
dCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKHN1YnR5cGUg
PT09ICJhcnJheSIpCiAgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwogCi0gICAgICAgIGlm
IChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworICAgICAgICBp
ZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBAQHRvU3RyaW5nVGFnIGluIHZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLkBAdG9TdHJpbmdUYWc7CiAKICAgICAgICAgLy8gTm9kZUxp
c3QgaW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNoZWNrIGZvciBhcnJheSBwcmlvciB0byB0aGlzLgog
ICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMTI4
LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGlj
IG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcv
Yi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgog
ICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCAmJiAhIW5vZGUu
b3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAgICBsZXQgbm9kZU5hbWUgPSBpc1hNTERv
Y3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKIApA
QCAtMTEwMCwxNyArMTE2MCwxNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAKICAgICBfaW5pdGlhbFByZXZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHByZXZpZXcg
PSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsCi0gICAgICAgICAgICBkZXNjcmlwdGlv
bjogdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKLSAgICAgICAgICAg
IGxvc3NsZXNzOiB0cnVlLAotICAgICAgICB9OworICAgICAgICBsZXQgcHJldmlldyA9IEBjcmVh
dGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgInR5cGUiLCB0aGlzLnR5cGUs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iLCB0aGlzLmRlc2NyaXB0aW9uIHx8IHRvU3RyaW5n
KHRoaXMudmFsdWUpLAorICAgICAgICAgICAgImxvc3NsZXNzIiwgdHJ1ZSwKKyAgICAgICAgKTsK
IAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7CiAgICAgICAgICAgICBwcmV2aWV3LnN1YnR5
cGUgPSB0aGlzLnN1YnR5cGU7CiAgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVs
bCIpIHsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107CisgICAgICAgICAgICAgICAgcHJldmll
dy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTExMjYsNyArMTE4Niw3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFw
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAi
IHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJh
dG9yIikgewogICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSkgewotICAgICAgICAgICAgICAgIHBy
ZXZpZXcuZW50cmllcyA9IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7
CiAgICAgICAgICAgICB9CkBAIC0xMTQxLDIzICsxMjAxLDIzIEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNl
Y29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBm
aXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5n
dGggOiAwOwogCi0gICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAg
ICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZp
cnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1
ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9
OworICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKAorICAgICAgICAgICAgInByb3BlcnRpZXMiLCBpc1RhYmxlUm93c1JlcXVlc3Qg
PyAxMDAwIDogbWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAgICAgICAgImluZGV4
ZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4KDEwLCBmaXJzdExldmVsS2V5c0Nv
dW50KSwKKyAgICAgICAgKTsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTWFwcywg
U2V0cywgYW5kIEl0ZXJhdG9ycyBoYXZlIGVudHJpZXMuCiAgICAgICAgICAgICBpZiAodGhpcy5z
dWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlw
ZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3Vi
dHlwZSA9PT0gIml0ZXJhdG9yIikKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRFbnRyeVBy
ZXZpZXdzKG9iamVjdCwgcHJldmlldyk7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGll
cyA9IFtdOworICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0
aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAgICAgICAvLyBJbnRlcm5hbCBQcm9wZXJ0aWVzLgog
ICAgICAgICAgICAgbGV0IGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyA9IGluamVjdGVkU2Ny
aXB0Ll9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0LCB0cnVlKTsKICAgICAgICAg
ICAgIGlmIChpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMpIHsKICAgICAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVy
dHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ld
LCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7
aW50ZXJuYWw6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29u
ZExldmVsS2V5cywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImludGVybmFsIiwgdHJ1
ZSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cHJldmlldzsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTY5LDcgKzEyMjksMTAgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgLy8gUHJvcGVydGll
cy4KICAgICAgICAgICAgIGluamVjdGVkU2NyaXB0Ll9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9y
KG9iamVjdCwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJvcGVydGllcywgKGRl
c2NyaXB0b3IpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYXBwZW5kUHJvcGVy
dHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9s
ZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cyk7Ci0gICAgICAgICAgICB9LCB7bmF0
aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlLCBpbmNsdWRlUHJvdG86IHRydWV9KQorICAgICAgICAg
ICAgfSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5h
dGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsCisgICAgICAgICAgICAgICAgImluY2x1ZGVQcm90
byIsIHRydWUsCisgICAgICAgICAgICApKTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAg
ICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTExNzcsNyArMTI0MCw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgcmV0dXJu
IHByZXZpZXc7CiAgICAgfQogCi0gICAgX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHBy
ZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBz
ZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSB7fSkKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2
aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmly
c3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKCkpCiAgICAgewogICAgICAgICAvLyBFcnJvciBpbiBkZXNjcmlwdG9y
LgogICAgICAgICBpZiAoZGVzY3JpcHRvci53YXNUaHJvd24pIHsKQEAgLTExOTAsOSArMTI1Myw5
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG5h
bWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90b19f
IG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2RzIHRv
IHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZh
bHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25z
dHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5j
b25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVl
LmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52
YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0
b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyArMTI3
Miw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVy
LgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBv
biB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVs
S2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFAQXJy
YXkucHJvdG90eXBlLkBpbmNsdWRlcy5AY2FsbChmaXJzdExldmVsS2V5cywgbmFtZSkpCiAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51
ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3
LDIwICsxMjkwLDI4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5h
bCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJldmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7
CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5D
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdldHRlci9zZXR0ZXIuCiAgICAgICAg
IGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKICAgICAgICAgICAgIHByZXZpZXcubG9z
c2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0
eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3Jl
YXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUs
CisgICAgICAgICAgICAgICAgInR5cGUiLCAiYWNjZXNzb3IiLAorICAgICAgICAgICAgKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBOdWxsIHZhbHVlLgogICAgICAgICBsZXQgdmFsdWUgPSBk
ZXNjcmlwdG9yLnZhbHVlOwogICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAg
ICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJu
dWxsIiwgdmFsdWU6ICJudWxsIn0pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBu
YW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgIm9iamVjdCIsCisgICAgICAgICAgICAgICAg
InN1YnR5cGUiLCAibnVsbCIsCisgICAgICAgICAgICAgICAgInZhbHVlIiwgIm51bGwiLAorICAg
ICAgICAgICAgKSk7CiAKICAgICAgICAgLy8gSWdub3JlIG5vbi1lbnVtZXJhYmxlIGZ1bmN0aW9u
cy4KICAgICAgICAgbGV0IHR5cGUgPSB0eXBlb2YgdmFsdWU7CkBAIC0xMjU4LDcgKzEzMjksMTEg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAg
IHZhbHVlID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyh2YWx1ZSwgbWF4TGVuZ3RoLCB0cnVlKTsK
ICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHRv
U3RyaW5nRGVzY3JpcHRpb24odmFsdWUpfSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFt
ZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCB0eXBlLAorICAgICAgICAgICAgICAg
ICJ2YWx1ZSIsIHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpLAorICAgICAgICAgICAgKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBTeW1ib2wuCkBAIC0xMjY4LDExICsxMzQzLDE4IEBAIGxl
dCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICBzeW1i
b2xTdHJpbmcgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHN5bWJvbFN0cmluZywgbWF4TGVuZ3Ro
LCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwg
dmFsdWU6IHN5bWJvbFN0cmluZ30pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBu
YW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgICAgICAgICAidmFs
dWUiLCBzeW1ib2xTdHJpbmcsCisgICAgICAgICAgICApKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE9iamVjdC4KLSAgICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OworICAgICAg
ICBsZXQgcHJvcGVydHkgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgKTsK
ICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZSh2YWx1ZSk7CiAgICAg
ICAgIGlmIChzdWJ0eXBlKQogICAgICAgICAgICAgcHJvcGVydHkuc3VidHlwZSA9IHN1YnR5cGU7
CkBAIC0xMzEzLDcgKzEzOTUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4g
NSkgewotICAgICAgICAgICAgZW50cmllcy5wb3AoKTsKKyAgICAgICAgICAgIEBBcnJheS5wcm90
b3R5cGUuQHBvcC5AY2FsbChlbnRyaWVzKTsKICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cg
PSB0cnVlOwogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9
CkBAIC0xMzIzLDcgKzE0MDUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkp
IHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVzID0gQEFycmF5LnByb3RvdHlwZS5AbWFwLkBjYWxs
KGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJl
bW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkudmFsdWUsIGVudHJ5
LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnku
dmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KSB7CkBAIC0xMzM2LDggKzE0
MTgsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaXNQ
cmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHNldCA9
IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAgICAgICAgbGV0IHNldCA9IG5l
dyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAgICAgICAgIHJldHVybiB0aGlz
Ll9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNldCwgMSk7CiAgICAgfQpAQCAt
MTM1NywxMSArMTQzOSwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4K
LSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAgaWYgKGtub3du
T2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOworICAgICAgICBr
bm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAgICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxl
IGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCiAgICAgICAgIGxldCBzdWJ0
eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAgLTEzODEsMTIgKzE0NjMsMTIg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUg
MyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgICAgICBsZXQgb3duUHJvcGVy
dHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7CisgICAgICAgIGxl
dCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qp
OwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFt
ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9w
ZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxl
dCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBp
biBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlO
YW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCkBAIC0xNDA0LDY2ICsxNDg2LDcyIEBAIGxldCBS
ZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG1pZGRsZSkgewog
ICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7CiAgICAgICAgICAgICBs
ZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAgICAgICAgcmV0
dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3Ry
KHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CisgICAgICAgICAgICByZXR1
cm4gc3RyaW5nLkBzdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuQHN1YnN0
cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOworICAg
ICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOwogICAg
IH0KIH07CiAKIC8vIC0tLS0tLS0KIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBm
dW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCi17Ci0gICAgdGhpcy5jYWxsRnJhbWVJZCA9IGB7
Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQiOiR7aW5qZWN0ZWRTY3JpcHRJ
ZH19YDsKLSAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7Ci0g
ICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJZDogU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCks
IGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5lLCBjb2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1
bW59OwotICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFt
ZSk7Ci0gICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09i
amVjdCwgImJhY2t0cmFjZSIpOwotICAgIHRoaXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5p
c1RhaWxEZWxldGVkOwotfTsKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gY2xhc3Mg
Q2FsbEZyYW1lUHJveHkgeworICAgIGNvbnN0cnVjdG9yKG9yZGluYWwsIGNhbGxGcmFtZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJp
bmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7CisgICAgICAgIHRoaXMuZnVu
Y3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKKworICAgICAgICB0aGlzLmxvY2F0
aW9uID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAic2NyaXB0
SWQiLCBAU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksCisgICAgICAgICAgICAibGluZU51bWJl
ciIsIGNhbGxGcmFtZS5saW5lLAorICAgICAgICAgICAgImNvbHVtbk51bWJlciIsIGNhbGxGcmFt
ZS5jb2x1bW4sCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5f
d3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKKyAgICAgICAgdGhpcy50aGlzID0gUmVtb3RlT2Jq
ZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOworICAgICAgICB0
aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKKyAgICB9CiAKLUlu
amVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICBfd3JhcFNjb3Bl
Q2hhaW4oY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbGV0IHNjb3BlQ2hhaW4gPSBjYWxsRnJh
bWUuc2NvcGVDaGFpbjsKICAgICAgICAgbGV0IHNjb3BlRGVzY3JpcHRpb25zID0gY2FsbEZyYW1l
LnNjb3BlRGVzY3JpcHRpb25zKCk7CiAKLSAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IFtd
OworICAgICAgICBsZXQgc2NvcGVDaGFpblByb3h5ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3Rv
dHlwZSgpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyBp
KyspCiAgICAgICAgICAgICBzY29wZUNoYWluUHJveHlbaV0gPSBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uKHNjb3BlQ2hhaW5baV0sIHNjb3BlRGVzY3JpcHRp
b25zW2ldLCAiYmFja3RyYWNlIik7CiAgICAgICAgIHJldHVybiBzY29wZUNoYWluUHJveHk7CiAg
ICAgfQotfTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVz
ID0gewotICAgIDA6ICJnbG9iYWwiLCAvLyBHTE9CQUxfU0NPUEUKLSAgICAxOiAid2l0aCIsIC8v
IFdJVEhfU0NPUEUKLSAgICAyOiAiY2xvc3VyZSIsIC8vIENMT1NVUkVfU0NPUEUKLSAgICAzOiAi
Y2F0Y2giLCAvLyBDQVRDSF9TQ09QRQotICAgIDQ6ICJmdW5jdGlvbk5hbWUiLCAvLyBGVU5DVElP
Tl9OQU1FX1NDT1BFCi0gICAgNTogImdsb2JhbExleGljYWxFbnZpcm9ubWVudCIsIC8vIEdMT0JB
TF9MRVhJQ0FMX0VOVklST05NRU5UX1NDT1BFCi0gICAgNjogIm5lc3RlZExleGljYWwiLCAvLyBO
RVNURURfTEVYSUNBTF9TQ09QRQotfTsKKyAgICBzdGF0aWMgX2NyZWF0ZVNjb3BlSnNvbihvYmpl
Y3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCisgICAgeworICAgICAgICBsZXQg
c2NvcGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJvYmpl
Y3QiLCBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBJZCksCisgICAgICAgICAgICAi
dHlwZSIsIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1t0eXBl
XSwKKyAgICAgICAgKTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNj
b3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwge25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJ
ZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0gICAgICAgIG9iamVjdDogUmVtb3RlT2JqZWN0LmNy
ZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAgICAgICB0eXBlOiBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCi0gICAgfTsKKyAgICAgICAgaWYgKG5h
bWUpCisgICAgICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsKIAotICAgIGlmIChuYW1lKQotICAg
ICAgICBzY29wZS5uYW1lID0gbmFtZTsKKyAgICAgICAgaWYgKGxvY2F0aW9uKQorICAgICAgICAg
ICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKIAotICAgIGlmIChsb2NhdGlvbikKLSAgICAg
ICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgaWYgKGlzRW1wdHlPYmplY3Qo
b2JqZWN0KSkKKyAgICAgICAgICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsKIAotICAgIGlmIChpc0Vt
cHR5T2JqZWN0KG9iamVjdCkpCi0gICAgICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIHNjb3BlOworICAgIH0KK307CiAKLSAgICByZXR1cm4gc2NvcGU7Ci19CitJbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXMgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAwLCAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCisgICAgMSwg
IndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAgMiwgImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BF
CisgICAgMywgImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAgICA0LCAiZnVuY3Rpb25OYW1lIiwg
Ly8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAgIDUsICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQi
LCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVAorICAgIDYsICJuZXN0ZWRMZXhpY2FsIiwg
Ly8gTkVTVEVEX0xFWElDQUxfU0NPUEUKKyk7CiAKIC8vIC0tLS0tLS0KIApAQCAtMTQ3Nyw5ICsx
NTY1LDkgQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQogICAgICAgICAgICAg
dmFsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG9yaWdpbmFsVmFsdWU7IH07CiAgICAgICAgIH0K
IAotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oIiQiICsga2V5LCB2YWx1ZSk7CisgICAg
ICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5KHRoaXMsICIkIiArIGtleSwgQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChzYXZlZFJlc3Vs
dEFsaWFzICYmIHNhdmVkUmVzdWx0QWxpYXMgIT09ICIkIikKLSAgICAgICAgICAgIHRoaXMuX19k
ZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3VsdEFsaWFzICsga2V5LCB2YWx1ZSk7CisgICAgICAgICAg
ICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBzYXZlZFJlc3VsdEFsaWFzICsga2V5LCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgiZ2V0IiwgdmFsdWUpKTsKICAgICB9OwogCiAg
ICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCkBAIC0xNTAyLDQ4ICsxNTkw
LDQ4IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkKICAgICAgICAgdGhpc1tu
YW1lXSA9IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV07CiB9CiAKLUNvbW1hbmRMaW5lQVBJ
LmdldHRlcnMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgpOwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzID0ge307CitDb21tYW5k
TGluZUFQSS5tZXRob2RzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBP
YmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0g
PSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqZWN0KTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4g
QE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVz
Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9
OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlw
dEhvc3QucXVlcnlIb2xkZXJzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21B
cmd1bWVudHMoYXJndW1lbnRzKSk7IH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluc3Bl
Y3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9i
amVjdChvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5t
ZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5k
TGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5hc3NlcnQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFy
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNs
ZWFyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudCguLi5jcmVhdGVJdGVy
YWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5kZWJ1ZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcigu
Li5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdy
b3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENv
bGxhcHNlZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxl
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uY3Jl
YXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFi
bGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVu
dHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBT
bmFwc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGltZUxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0
YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRpbWVTdGFtcCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRz
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uY3Jl
YXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBmb3IgKGxldCBuYW1lIGlu
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1l
XS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigp
IHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19
KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5
NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEzYmY0
ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0y
MjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAg
ICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlcnJvci5pc1Zh
bGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJyb3I6
OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3Rl
ZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
OiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5saW5lKCksICIuIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0NjUx
ZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJkZWZh
YzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFycmF5
Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5
T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
ICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFycmF5
Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVhM2Fh
YTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4MGMw
ZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJheVBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVk
ZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5hbWUo
KSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9m
UHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwgZ2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNOYW1l
KCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uOTlmNGY3
OTQxMWJjYWNiMzllYTQwMWQ5MjhiNzc5ZWMxMDAxNDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4IEBA
IEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2
YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
IGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7Cit9CisKICNpZiBBU1NF
UlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENhbGwsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0xMDc0
LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25z
dHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVj
dG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0
cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigK
ICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKICAg
ICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5
cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNy
ZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09OIGhlbHBlcnMK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGpz
b25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5naWZ5KSk7CisgICAgICAgIH0pOwor
CiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBh
MGFhZWQzNDc4N2FmNjZhNGVjMjgzMmNiNzg0N2ZhZjI4YTRmYTliLi5lOTQ4NjAzZTJjZWNhMjk1
NWEyZWQyNzE1NGJiM2IwMTQ5NzFhZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBTZXRJdGVy
YXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBj
bGFzcyBTb3VyY2VPcmlnaW47CitjbGFzcyBTdHJpbmdDb25zdHJ1Y3RvcjsKIGNsYXNzIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBz
dHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKQEAgLTMyMCw2ICszMjEsNyBAQCBwdWJsaWM6CiAg
ICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3Rv
cjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0
cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yPiBt
X2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxTdHJpbmdDb25z
dHJ1Y3Rvcj4gbV9zdHJpbmdDb25zdHJ1Y3RvcjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IGE4NmRl
OTc3NjRlYzRmNWQxNzdmYjFiYzA3YThjODA5YTZlZmMyYjAuLjE3MjM2OTI0NGQ1OTRmNGY3MmZk
ZTdmZDkzNmVhNTE0MzBjYmExMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwUHJvdG90eXBlLmNwcApAQCAtNzIsNiArNzIsNyBAQCB2b2lkIE1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAg
ICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFt
ZSgpLnN0cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBKU01hcEVudHJpZXNJbnRyaW5zaWMp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBlbnRyaWVzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQcml2YXRlTmFtZSgpLCBlbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBlbnRyaWVzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA2MDhjZjllMTc4ZmIxYzc3
NzM4YWE2NDY1NjYxNGVhYWJkOGFkMTQ3Li5iYjZhZjI1NGY0OTY3OWY1MTdhMzk4NzA0MTVlZWYz
N2NiZTFjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05OSw5ICs5OSwxOSBAQCB2b2lkIE9iamVjdENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE9iagogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcm90b3R5cGVPZlByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5RGVzY3JpcHRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5
TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNQcml2YXRlTmFtZSgpLCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmtleXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvcktleXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5kZWZpbmVQcm9wZXJ0eVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAzKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlTmFtZSgpLCBvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDIpOwotICAgIGlmIChPcHRpb25zOjp1c2VIYXNPd24oKSkKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwor
CisgICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKSB7CiAgICAgICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhc093biwgb2JqZWN0
Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAyKTsKKyAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT3duUHJpdmF0ZU5h
bWUoKSwgb2JqZWN0Q29uc3RydWN0b3JIYXNPd24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICB9CiB9CiAKIC8vIEVTIDE5LjEuMS4x
IE9iamVjdChbdmFsdWVdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAKaW5kZXggMWU2YmMxZWU4YmIzN2Y1ZjEzNTc2Y2VhMmE2ZDVkNGE5NWRkNDg3
MS4uZjdmOWMxNDE4YmY3Y2NmM2E0ZjUwMzQ0ZTQyYTRmMjMwYTA1NzQxNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC02OCw2ICs2OCw3
IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudmFsdWVzUHVibGljTmFtZSgpLnN0cmluZygpLCBzZXRQcm90b0Z1bmNWYWx1ZXMsIEpT
U2V0VmFsdWVzSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1
ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJs
aWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA1MDY3MjMyY2Q2NmY5OTEzYjk1MzJmMDlmNjgwMzFi
ZWVkMDRjZjkzLi4zMWE4ZjllN2Q3YmJkMzI2NTBjMGNiMjk4MjY5YTkzNWVkMGNjY2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
QEAgLTE2NCw2ICsxNjQsOSBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTRnVuY3Rpb24qIGl0
ZXJhdG9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
IltTeW1ib2wuaXRlcmF0b3JdIl9zLCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvciwgTm9JbnRyaW5z
aWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCwgaXRlcmF0b3JGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3Vi
c3RyUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZW5kc1dpdGhQcml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworCiAgICAg
Ly8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIFN0cmluZ0NvbnN0
cnVjdG9yIGhhcyBiZWVuIGJ1aWx0CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmEwNGI3
ZWNlYmJlODNmN2Q3MjQ3OTM0Yzk4OGRlZjRmZmMxYzhjYS4uNzkyYTY3MDE2MjdjMWVhM2M4OWJk
ZWE1YzhjZjNiMjJjZmNkZGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxMjksMTggKzIx
MjksNiBAQCBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2ViQ29yZSkKIFdFQktJVF9GUkFNRVdP
UktfREVDTEFSRShXZWJDb3JlVGVzdFN1cHBvcnQpCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklM
RVNfSUZfRVhJU1RTKCkKIAotIyBHZW5lcmF0ZSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
Ci1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLSAgICBNQUlOX0RF
UEVOREVOQ1kgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0gICAgREVQ
RU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUg
ZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzIiA+ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5IDwgJHtXRUJDT1JFX0RJUn0vaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+ICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLSAgICBDT01N
QU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQu
cGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyAke1dlYkNvcmVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotICAgIFZFUkJBVElN
KQotbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oKQotCi0KIE1BS0VfSEFTSF9UT09MUygk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9Db2xvckRhdGEpCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbG9yRGF0YS5jcHApCiAKQEAg
LTIzNTIsNiArMjM0MCw3IEBAIHNldChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke1dF
QkNPUkVfRElSfS9kb20vVGV4dERlY29kZXJTdHJlYW0uanMKICAgICAke1dFQkNPUkVfRElSfS9k
b20vVGV4dEVuY29kZXJTdHJlYW0uanMKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmdJbnRlcm5hbHMuanMKKyAgICAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKICkKIAogc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9T
Q1JJUFRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IGEzZDY4YWRmZTEzMWM0ODdjNzljYzRjMmFmMWM4YTg2ZTcwODEyYjkuLmY1Njc3
ZTJlNDUyNTM1NjJiZDJmMGM5MDJkNTYyNzZlNjBmNzMxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC04LDcgKzgsOCBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0
aW9uK1Byb3BlcnR5TmFtZXMuaQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5n
U3RyYXRlZ3lCdWlsdGlucy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ2NjNjMzIzNjg0ZDFjMGY4ODBmYjdjZjk2
MWZjNmZhNDIxNmU0NmMuLmIxMjNhYmY5M2UyNzU4ZDIxMTQ4YzEwMWM5ZDE3MzRkMDQ5NmY5YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjIxOSwxNiArMjIxOSw2IEBAIGlm
bmVxICgkKE5PX1NVUFBMRU1FTlRBTF9GSUxFUyksMSkKIC1pbmNsdWRlICQoSlNfRE9NX0hFQURF
UlM6Lmg9LmRlcCkKIGVuZGlmCiAKLSMgSW5zcGVjdG9yIGludGVyZmFjZXMKLQotYWxsIDogQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCi1Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
IDogJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLQll
Y2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMiID4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQWVRIT04p
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChXZWJDb3JlKS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UubWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94
eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UubWluLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQkkKERFTEVURSkgQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0KICMgV2ViQ29yZSBKUyBCdWlsdGlucwog
CiBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCkBAIC0yMjUyLDYgKzIyNDIsNyBAQCBXZWJD
b3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dERlY29kZXJT
dHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpzIFwKICAg
ICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcyBcCisgICAg
JChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgXAogIwog
CiBCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGQw
NjBhZDlmMzFhZDJlNjE0ODM3OTUyMzcwYmE1MDAxMTlkMGFhYzQuLjU3ODIwYjc3M2YwNDkwMTY0
OWE3N2I5OGIwZDVjM2NkYjA1NGIxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjA2OCw2ICsy
MDY4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NWYWx1ZUtleXdvcmRzLmgKKyAgICAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlu
cy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0V2ZW50SW50ZXJmYWNlcy5o
CiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0V2ZW50VGFyZ2V0SW50ZXJmYWNl
cy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0hUTUxFbGVtZW50VHlwZUhl
bHBlcnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDliYTFiODIwMzUyYzE0ZDk2MDY2MzNmMzAxZjlkNDUzNzI4ZTJlMjUuLmQz
ZjhkNTQ1NDQ1MDQ5MWM1Y2Q3MjBkMGIzMzY2YjM4NzZhOGRiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OSw2ICs4OTks
NyBAQAogCQkyRTMwMUJFODI3NDU5NDcyMDBDMDU2NEYgLyogQ29tcGlsZWRTZWxlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0NTEwNzcyMDJD
N0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2VsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTM3REZEQjEyREJBRkI4MDBBNkIyMzMgLyog
RE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTM3REZEODEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggKi87IH07CiAJCTJFMzdFMDA2MTJE
QkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmgg
Ki87IH07CisJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKIAkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0
QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKQEAgLTM1MTcsNyArMzUxOCw2
IEBACiAJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4RjQz
RTFERTBCNjJCMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZCMjg4Q0Yw
MENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBTZXJ2aWNl
V29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8qIFdlYklu
amVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9z
dC5oICovOyB9OwotCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5oICovOyB9OwogCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovOyB9Owog
CQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyRTE4
NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CiAJCUE1
ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2NEQ1QUYwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCAqLzsgfTsKQEAgLTgyMDQsNiArODIwNCw4IEBA
CiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMzdF
MDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RPTVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk0MSw3ICsxMzk0Myw2IEBACiAJCUE1ODFFRDEyMUZC
Mjg4QzkwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0
MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI5
MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21t
YW5kTGluZUFQSU1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0Mjks
NyArMjA0MzAsNiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNTg0RkUyNTE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLywKIAkJCQlB
NTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3BwICovLAog
CQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oICov
LAogCQkJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAgKi8sCkBAIC0yMzU4Nyw2ICsyMzU4Nyw4IEBACiAJCQkJOTkwOEIw
RjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5j
cHAgKi8sCiAJCQkJOTkwOEIwRjUxQkNBRDA3RDAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlENiAvKiBD
b2xvckRhdGEuY3BwICovLAorCQkJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLywKKwkJCQkyRTNBRUZGOTI4MDlGMTE5
MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oICovLAogCQkJ
CTk5MDhCMEY2MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5z
LmNwcCAqLywKIAkJCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3Ry
YXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJDNSAvKiBDU1NQ
cm9wZXJ0eU5hbWVzLmNwcCAqLywKQEAgLTM0MDg1LDcgKzM0MDg3LDcgQEAKIAkJCQkyNkU5NDRE
OTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkUzQUVG
RkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlCQUQgLyogQ29tbW9u
QXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RTY2NEZDMUU3MzcwMzMwMDc2NTUz
NiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKaW5kZXggZDc3
YzczZDhhZTQ5NTAxNjc1MjgyMjY0ZDBkMzZkNjVjY2U3NDJmZi4uZDQxZmNkMzVjYTllM2Y1MDNj
ZDQ3Mzg5NDViNDliNzlmZGVhMzM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIKIAotI2luY2x1ZGUg
IkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDgsOSArNDcsMTQgQEAgQ29tbWFuZExp
bmVBUElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkKIHsKIH0KIAotU3RyaW5nIENvbW1h
bmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAorSlNGdW5jdGlvbiogQ29tbWFuZExpbmVB
UElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzLCBzaXplb2YoQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2VfanMpKTsKKyAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCkpCisgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmNvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlKCkubV9pbmplY3RNb2R1bGVGdW5jdGlvbi5nZXQoKTsKKworICAg
IFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGdldCBgaW5qZWN0TW9kdWxlYCBmdW5jdGlvbiBm
cm9tIGBDb21tYW5kTGluZUFQSU1vZHVsZWAgZm9yIG5vbi1gSlNET01HbG9iYWxPYmplY3RgLiIp
OworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3QoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThjMmRlYmRlZGFjZjdmYzZiNDJkMmRm
NzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5N2Q1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApAQCAtMzMsNyAr
MzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBDb21tYW5kTGluZUFQSU1v
ZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEpTQzo6
SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNv
bnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0KEluc3BlY3Rvcjo6SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKaW5k
ZXggZjUxZTM1MTljY2IxNzk2MDkwYzMyNzRkNWIwYzM3YjI1OWQwZTNlYS4uODE5ZmE0N2U5ZDEw
ZDBmNGM3ZTcxZjkxOTRiMGJmNGVmNzY2M2I5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwx
MiBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRf
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKy8vIEBpbnRlcm5hbAogCi0oZnVuY3Rpb24g
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21t
YW5kTGluZUFQSUhvc3QpIHsKK2Z1bmN0aW9uIGluamVjdE1vZHVsZShJbmplY3RlZFNjcmlwdEhv
c3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3Jp
cHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0KQor
ewogCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3Rv
cjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFu
dGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucworLy8gRklYTUU6IDx3ZWJraXQub3Jn
L2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJDb3JlIGJ1aWx0LWlucy4K
IAogaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QgPSBmdW5jdGlvbihvYmplY3QpIHsKICAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKQEAgLTcwLDEyICs3MSwxMiBAQCBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihvYmplY3QpIHsKICAgICBlbHNlIGlm
IChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCiAgICAgICAgIHN0cmlu
ZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJzeW1ib2wi
KQotICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5nKG9iamVjdCk7
CisgICAgICAgIHN0cmluZyA9IEBTdHJpbmcob2JqZWN0KTsKICAgICBlbHNlIGlmICh0eXBlb2Yg
b2JqZWN0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAg
ICBlbHNlIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHN0cmluZyA9IGluc3BlY3RlZEds
b2JhbE9iamVjdC5KU09OLnN0cmluZ2lmeShvYmplY3QsIG51bGwsICIgICIpOworICAgICAgICAg
ICAgc3RyaW5nID0gQGpzb25TdHJpbmdpZnkob2JqZWN0LCAiICAiKTsKICAgICAgICAgfSBjYXRj
aCB7CiAgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICAgICAgfQpAQCAtODks
MjMgKzkwLDI4IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdldEV2ZW50TGlzdGVuZXJzIl0g
PSBmdW5jdGlvbih0YXJnZXQpIHsKIH07CiAKIGZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXMo
dHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgdHlwZXMgPSBb
Im1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hh
bmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1
cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVj
dCIsICJzdWJtaXQiLCAidW5sb2FkIl07CisgICAgaWYgKHR5cGVzID09PSBAdW5kZWZpbmVkKQor
ICAgICAgICB0eXBlcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoIm1vdXNlIiwgImtl
eSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmlj
ZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwg
InJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQi
LCAidW5sb2FkIik7CiAgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKLSAg
ICAgICAgdHlwZXMgPSBbdHlwZXNdOworICAgICAgICB0eXBlcyA9IEBjcmVhdGVBcnJheVdpdGhv
dXRQcm90b3R5cGUodHlwZXMpOworCisgICAgbGV0IHJlc3VsdCA9IG5ldyBAU2V0OworICAgIGZ1
bmN0aW9uIGFkZFR5cGVzVG9SZXN1bHQoKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
YXJndW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0LkBhZGQoYXJndW1lbnRz
W2ldKTsKKyAgICB9CiAKLSAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewogICAgICAgICBpZiAodHlwZXNbaV0gPT09ICJtb3Vz
ZSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vk
b3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1cCIsICJt
b3VzZXdoZWVsIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJjbGljayIsICJkYmxj
bGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIs
ICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09
ICJrZXkiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImtleWRvd24iLCAia2V5cHJlc3MiLCAi
a2V5dXAiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJrZXlk
b3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOwogICAgICAgICBlbHNlIGlm
ICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJ0b3VjaGNh
bmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOworICAgICAgICAg
ICAgYWRkVHlwZXNUb1Jlc3VsdCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3Zl
IiwgInRvdWNoc3RhcnQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9s
IikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJy
ZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwor
ICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAi
cmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZXNbaV0pOworICAgICAg
ICAgICAgcmVzdWx0LkBhZGQodHlwZXNbaV0pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtMTE4LDE5ICsxMjQsMTcgQEAgZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCiBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJtb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVz
KSB7CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmpl
Y3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9y
bWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tp
XSwgbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlw
ZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRpblNl
dEl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkgeworICAgICAgICBvYmplY3Qu
cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOworICAgICAgICBvYmpl
Y3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogICAgIH0KIH07CiAK
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInVubW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2Jq
ZWN0LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5l
ciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0
eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgdHlwZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVy
KHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0
aW5TZXRJdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpCisgICAgICAgIG9iamVj
dC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiB9OwogCiBpZiAo
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlKSB7CkBAIC0xNTgsOSArMTYyLDEwIEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9j
dW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKICAgICB9OwogCiAgICAgQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siJCQiXSA9IGZ1bmN0aW9uKHNlbGVjdG9yLCBzdGFydCkgewor
ICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVsZXNzIGFycmF5IGhlcmUgc28gdGhh
dCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMgYSBub3JtYWwgQXJyYXkuCiAgICAg
ICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxs
KHNlbGVjdG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXku
ZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxl
Y3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShzdGFydC5xdWVyeVNlbGVj
dG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICB9
OwogCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJHgiXSA9IGZ1bmN0aW9uKHhwYXRoLCBj
b250ZXh0KSB7CkBAIC0xNzUsMTAgKzE4MCwxMSBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBub2Rl
cyA9IFtdOworICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVsZXNzIGFycmF5IGhl
cmUgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMgYSBub3JtYWwgQXJy
YXkuCisgICAgICAgIGxldCBub2RlcyA9IG5ldyBAQXJyYXk7CiAgICAgICAgIGxldCBub2RlID0g
bnVsbDsKICAgICAgICAgd2hpbGUgKG5vZGUgPSByZXN1bHQuaXRlcmF0ZU5leHQoKSkKLSAgICAg
ICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKG5vZGVzLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH07CiB9CkBAIC0xODYsNCArMTkyLDQg
QEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuTm9kZSkgewogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQog
ICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsg
cmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9Ijsg
fTsKIAotfSkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBlMzM0OWExY2Q1ODAxNTBjMjc4N2Q0ZmU5NzQzY2QzOGVhNGI5
Mjc4Li44NjIwZmQzOTZhNWEwYmYyYTQ2OWNlMmU3YmFhODQzOTI0ZmFiYWU2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjItMDUtMDMgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFz
IGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIEpTQyBidWls
dC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICAqIGlu
c3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWw6CisgICAgICAgIC0g
QWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVycmlkaW5nIGZ1bmN0aW9ucyBhbmQg
ZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOgorICAgICAgICAtIENoYW5nZWQg
dG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25pcHBldCBzaW5jZSB0aGUgaW5zcGVj
dG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGluLgorCisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAtIFRoZSBpbnNwZWN0b3Ig
aW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBubyBsb25nZXIgYXBwZWFyIGFzIHNj
cmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1j
b2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAtIEluc3BlY3RvciBpbmpl
Y3RlZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiByZWxlYXNlIGFu
ZCBkZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDUtMDMgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZU1hcDo6cmVtb3Zl
SXRlbSBtYXkgZmFpbCB0byByZW1vdmUgaXRlbSBmcm9tIG1hcApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJu
YWwtc2NyaXB0cy1leHBlY3RlZC50eHQKaW5kZXggMWViMTUzOTg4MjQwNmJhOWZmNGY0ZDMzYTY1
ZmY1MjdkZmQ4NWM4ZC4uNTkzN2ZhZTk3Zjg5NTg4NDdmODhmZjQ2N2ViZTE1YjgxZTI4N2U0ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRl
cm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0xLDY2ICsx
LDYwIEBACi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ09OU09MRSBNRVNT
QUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQot
Q09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNoZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2Fu
IGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0
dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCitDaGVja2luZyB3aGV0aGVyIGluamVjdGVk
IChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5n
IG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy4KIAog
CiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3Jp
cHRzCiAtLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdn
ZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRGlzYWJsZWQKLUVYUFJFU1NJT046IHNldFRp
bWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUludGVy
bmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1
Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4K
LSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9n
KCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5s
b2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAx
MCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9i
amVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50
cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAgMjUgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYg
ICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAog
QUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUg
ICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAg
ICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93
KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAg
Y29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVy
bmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5h
bE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGlu
dGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAg
fQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMDo1Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVn
Z2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAtPiAgIDkgICAgICAg
IHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJp
bmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVj
dDoyODo1CisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAg
IDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
MSk7CisgLT4gIDI3ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KKyAgICAgMzAKIAogQUNU
SU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTE6NQotICAgICAgNyAgICAg
ICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAg
OSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gLT4gIDEwICAgICAgICB8Y29uc29sZS5s
b2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCi0gICAgIDEzICAgIC8vIC0tLS0t
LS0tLQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyOTo1CisgICAgIDI1ICAgICAgICBk
ZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworIC0+ICAyOCAgICAgICAgfGludGVybmFs
T2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KKyAgICAgMzAKKyAgICAgMzEgICAgLy8gLS0t
LS0tLS0tCiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEyOjIK
LSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25z
b2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsK
LSAtPiAgMTEgICAgfXwKLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCi0gICAgIDE0
CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjMwOjIKKyAgICAgMjYgICAgICAgIGludGVy
bmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIp
OworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAtPiAgMjkgICAgfXwK
KyAgICAgMzAKKyAgICAgMzEgICAgLy8gLS0tLS0tLS0tCisgICAgIDMyCiAKIEFDVElPTjogcmVz
dW1lCiBSRVNVTUVECkBAIC02OCw1NyArNjIsNTcgQEAgUEFTUzogU2hvdWxkIGhhdmUgdXNlZCBh
bGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFibGVkCi1FWFBSRVNTSU9O
OiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50
cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNF
RCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAg
ICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29u
c29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNv
bnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsK
LSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKK1BBVVNFIEFUIGVudHJ5SW50
ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0
aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1ICAgICAgICB8ZGVidWdnZXI7Cisg
ICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50
ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
Myk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0g
ICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygp
IHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAg
ICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50
cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5
SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAg
ICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAg
IDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTox
NgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVM
b2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUu
bG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAg
IDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFU
IGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24g
ZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAy
NiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsK
KyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
Zzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29u
c29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29u
c29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsK
LSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFV
U0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5j
dGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7Cisg
LT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25z
b2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50
cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAg
ICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNv
bGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9
CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAg
IGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dl
cjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwt
c2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1p
bnRlcm5hbC1zY3JpcHRzLmh0bWwKaW5kZXggZDE2OGE3MjU0Y2UxZWYwNGQ3M2E5ZmIzNWM2Y2Jk
NzM4ZmJjMzFlMy4uZTViMGQ5YzhiNzE4ZTFiMjU2ZWFlZjY3ODIyNmI2MjcwZTcxYjMxOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5h
bC1zY3JpcHRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNl
LWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKQEAgLTQsMTEgKzQsMjkgQEAKIDxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKKworbGV0
IGludGVybmFsT2JqZWN0ID0geyB0ZXN0OiBmdW5jdGlvbigpIHt9IH07CisKK2lmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgaW50ZXJuYWxPYmplY3QgPSB3aW5kb3cuaW50ZXJuYWxzLmV2YWx1
YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKCJ0ZXN0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMi
LCBgCisgICAgICAgIC8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9UZXN0UGF1c2VGb3JJ
bnRlcm5hbFNjcmlwdHMuanMKKyAgICAgICAgbGV0IEludGVybmFsT2JqZWN0ID0gY2xhc3MgSW50
ZXJuYWxPYmplY3QgeworICAgICAgICAgICAgdGVzdChpbnZvY2F0aW9uTnVtYmVyKSB7CisgICAg
ICAgICAgICAgICAgbGV0IGEgPSA2OworICAgICAgICAgICAgICAgIGxldCBiID0gNzsKKyAgICAg
ICAgICAgICAgICBsZXQgYW5zd2VyID0gYSAqIGI7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgbmV3IEludGVybmFsT2JqZWN0OworICAgIGApOworfQorCitmdW5jdGlvbiBl
bnRyeUludGVybmFsT2JqZWN0KCkgewogICAgIGRlYnVnZ2VyOwotICAgIGNvbnNvbGUubG9nKHdp
bmRvdyk7Ci0gICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgaW50ZXJuYWxPYmplY3QudGVz
dCgyKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogfQogCiAvLyAtLS0tLS0tLS0KQEAg
LTIxLDMxICszOSwzMSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGFkZFN0ZXBwaW5nVGVzdENh
c2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMu
RGlzYWJsZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3QgYmUgYWJsZSB0byBz
dGVwIGludG8gY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhlIEludGVybmFsIElu
amVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5Q29u
c29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3QgYmUgYWJsZSB0byBz
dGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0ZWQgc2NyaXB0cy4i
LAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KSIs
CiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5kIHNpbmNlIHRoZXJl
IGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3VsdCBpZiBjaGFuZ2lu
ZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB7IHJldHVybiBE
ZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAg
ICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAv
LyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5s
b2coY29uc29sZSkKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZygic3RyaW5n
IikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0KDEpCisgICAg
ICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgyKQorICAgICAgICAgICAg
ICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMykKICAgICAgICAgICAgICJyZXN1bWUi
LAogICAgICAgICBdCiAgICAgfSk7CiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAg
ICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQiLAot
ICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgb3ZlciBjb25zb2xl
LmxvZyBzdGF0ZW1lbnRzIHdoaWNoIHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwK
LSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMg
d2hpY2ggdXNlIGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBDYWxsIG91
dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8g
d2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgog
ICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cyh0cnVlKTsgfSwKICAgICAgICAgdGVhcmRvd246IGFzeW5jICgp
ID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFs
c2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92ZXIiLAotICAgICAgICAg
ICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAgICAiaW4i
LCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQotICAgICAgICAgICAg
ICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9nKHdpbmRvdyldCisgICAg
ICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAg
ICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCisg
ICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgaW50ZXJuYWxPYmplY3Qu
dGVzdCgxKV0KICAgICAgICAgICAgICJyZXN1bWUiLAogICAgICAgICBdCiAgICAgfSk7CkBAIC01
Nyw2ICs3NSw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBi
ZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRp
bmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLjwvcD4KKzxwPkNoZWNraW5nIHdoZXRoZXIgaW5q
ZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBl
bmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LjwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQKaW5kZXggNWRlZTk1ZWRmODhl
NWU5Yzg2MTU4Y2NlY2QyYzczZGJmZjlmMDE4OC4uNjNhNmU1Yjc0ODRiODY4OWM3ZDE0NWQ1NGJh
NThhN2Y1MjliNGU3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQKQEAgLTksNyArOSw1IEBAIFBBU1M6IFNo
b3VsZCBmaW5kIEV4dGVybmFsIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5kIElubGluZSBTY3Jp
cHQgVGFnIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQg
TGlzdGVuZXIgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuCi1QQVNTOiBT
aG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LgotUEFTUzog
U2hvdWxkIGZpbmQgSW5zcGVjdG9yIENvbW1hbmRMaW5lQVBJU291cmNlIFNjcmlwdC4KIFBBU1M6
IFNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKaW5kZXggZDRmOGYz
ODY4MmZjNGUxNWM1MDAzNDQ1YTZiYTFkMTM1NDlkOWE1Zi4uZDY3N2JhMmRlZGRmMWY1MTY4OTAy
YTE1NmNlMmYxOTFhYmExMTQ5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQuaHRtbApAQCAtMTksMTQgKzE5LDExIEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgIC8vICAgLSBpbmxpbmUgPHNjcmlwdD4gKHRoaXMpIHN0YXJ0aW5nIG9uIGxpbmUgNQog
ICAgIC8vICAgLSBpbmxpbmUgYm9keSBvbmxvYWQgZXZlbnQgbGlzdGVuZXIgYXR0cmlidXRlIG9u
IDxib2R5PiBsaW5lIGJlbG93CiAgICAgLy8gICAtIGV2YWwgc291cmNlIGFib3ZlIG9uIGxpbmUg
NwotICAgIC8vICAgLSBpbnNwZWN0b3IgaW50ZXJuYWwgc2NyaXB0cyBJbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogCiAgICAgbGV0IGZvdW5kRXh0
ZXJuYWxTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQg
PSBmYWxzZTsKICAgICBsZXQgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0
ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kRXZhbFNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3Vu
ZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kQ29tbWFu
ZExpbmVBUElTb3VyY2VTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRVbmV4cGVjdGVkU2Ny
aXB0ID0gZmFsc2U7CiAKICAgICBmdW5jdGlvbiBpc0V4dGVybmFsU2NyaXB0KHBhcmFtcykgewpA
QCAtNDIsMjEgKzM5LDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGlzSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAg
cmV0dXJuIGlzSW5saW5lU2NyaXB0KHBhcmFtcykgJiYgcGFyYW1zLnN0YXJ0TGluZSA+PSAxMDA7
IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KKyAgICAgICAgcmV0dXJuIGlzSW5saW5lU2Ny
aXB0KHBhcmFtcykgJiYgcGFyYW1zLnN0YXJ0TGluZSA+PSA5OTsgLy8gRXN0aW1hdGUgb2YgPGJv
ZHk+IGJlbG93LgogICAgIH0KIAogICAgIGZ1bmN0aW9uIGlzRXZhbFNjcmlwdChwYXJhbXMpIHsK
ICAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwgPT09ICJldmFsLmpzIjsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBpc0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykgewotICAg
ICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5zdGFydHNXaXRoKCJfX0luamVjdGVkU2NyaXB0
XyIpICYmIHBhcmFtcy5zb3VyY2VVUkwuZW5kc1dpdGgoIi5qcyIpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJl
dHVybiBwYXJhbXMuc291cmNlVVJMLmluZGV4T2YoIkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
IikgIT09IC0xOwotICAgIH0KLQogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFt
ZTogIkVuYWJsZURlYnVnZ2VyRG9tYWluQW5kQ2hlY2tJbml0aWFsU2NyaXB0cyIsCiAgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CkBAIC03OSwxMCArNjgsNiBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0
ZW5lclNjcmlwdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEV2
YWxTY3JpcHQgJiYgaXNFdmFsU2NyaXB0KHBhcmFtcykpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3VuZEV2YWxTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgh
Zm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCAmJiBpc0NvbW1hbmRMaW5lQVBJU291cmNl
U2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZENvbW1hbmRMaW5l
QVBJU291cmNlU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZv
dW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgJiYgaXNJbmplY3RlZFNjcmlwdFNvdXJjZVNj
cmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmplY3RlZFNjcmlw
dFNvdXJjZVNjcmlwdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiVU5FWFBFQ1RFRCBTQ1JJUFQ6ICIg
KyBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSB0cnVlOwpAQCAtOTMsOCArNzgsNiBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZElu
bGluZVNjcmlwdFRhZ1NjcmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBTY3JpcHQgVGFnIFNjcmlw
dC4iKTsKICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZElubGlu
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQsICJTaG91bGQgZmluZCBJbmxpbmUgQXR0cmli
dXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4iKTsKICAgICAgICAgICAgICAgICBQcm90b2NvbFRl
c3QuZXhwZWN0VGhhdChmb3VuZEV2YWxTY3JpcHQsICJTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4i
KTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZEluamVjdGVk
U2NyaXB0U291cmNlU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2NyaXB0
U291cmNlIFNjcmlwdC4iKTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhh
dChmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5zcGVjdG9y
IENvbW1hbmRMaW5lQVBJU291cmNlIFNjcmlwdC4iKTsKICAgICAgICAgICAgICAgICBQcm90b2Nv
bFRlc3QuZXhwZWN0VGhhdCghZm91bmRVbmV4cGVjdGVkU2NyaXB0LCAiU2hvdWxkIG5vdCByZWNl
aXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuIik7CiAKICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29i
c2VydmFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNj
cmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAppbmRleCA4ODMzYThmZDJhNjVjYzJjODQ1MmNj
MzA2MGJlNjg2NDJjYjAzYWI3Li40OWY0YWYyYzEzODRhNDY2N2I3ZmJlOGJjOGUxZmU4ZDdlZmU1
MDkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29i
c2VydmFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3Rl
ZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwxNyBAQAogQ09OU09M
RSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KLVRlc3QgdGhhdCBjZXJ0YWluIEluamVjdGVkU2Ny
aXB0U291cmNlIG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS4KK0NP
TlNPTEUgTUVTU0FHRTogYSxiLGMKK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitD
T05TT0xFIE1FU1NBR0U6IFtvYmplY3QgU2V0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9i
amVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBNYXBdCitDT05TT0xFIE1FU1NBR0U6IFtv
YmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUg
TUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IGNvdW50IG9mIDEKK0NP
TlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IGhlbGxvCitD
T05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorVGVzdCB0aGF0IEluamVjdGVkIFNjcmlw
dCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuCiAKIAogPT0gUnVu
bmluZyB0ZXN0IHN1aXRlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlCkBAIC04LDMgKzIwLDM4
IEBAIFBBU1M6IFBhdXNlZC4KIFBBU1M6IFJlc3VtZWQuCiBQQVNTOiBBcnJheS5wcm90b3R5cGVb
U3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgogCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBTZXQucHJvdG90
eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6TWFwLnByb3RvdHlwZVtTeW1i
b2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogTWFwLnBy
b3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlw
ZS5wdXNoCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogQXJyYXkucHJvdG90
eXBlWyJwdXNoIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U2V0LnByb3RvdHlwZS5hZGQKK1BBU1M6IFBh
dXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBTZXQucHJvdG90eXBlWyJhZGQiXSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpTdHJpbmcKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBT
dHJpbmcgY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IElu
amVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlLmluZGV4CitQQVNTOiBQYXVz
ZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogQXJyYXkucHJvdG90eXBlWyI0MiJdIGNhbGwgY291
bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJvcGVydHkKK1BBU1M6IFBh
dXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBPYmplY3QucHJvdG90eXBlWyJmZXRjaFN0YXJ0
Il0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbAppbmRleCA0ZDhkNjZlNTJmYmNi
MTcxYWIxYzkwYTc2NThkOWQ5M2M4NDdkNjk1Li5lMWI2YjQ0N2VjZjcwOTg5ZGQ5NTAxNmZlZDYx
Mjg3MjIwNGZiMjRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQt
c2NyaXB0L29ic2VydmFibGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0
ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbApAQCAtMywzMiArMyw1NiBAQAogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0vLyBOT1RFOiBNb3JlIGNhc2VzIHNob3VsZCBi
ZSB0ZXN0ZWQgYW5kIGFkZHJlc3NlZCBieToKLS8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIy
OTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQt
aW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIGJ1aWx0LWlucwotCi1mdW5j
dGlvbiB0cmlnZ2VySXRlcmF0aW9uKCkgeworZnVuY3Rpb24gcmVwbGFjZUFuZFRlc3RQcm90b3R5
cGVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbikgeworICAgIHRyeSB7CiAgICAgbGV0IGNhbGxDb3VudCA9IDA7Ci0KLSAgICBjb25z
dCBvcmlnaW5hbEl0ZXJhdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBcnJh
eS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRvcik7Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAgCisgICAgbGV0IG9yaWdp
bmFsUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihw
cm90b3R5cGUsIHByb3BlcnR5KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBl
LCBwcm9wZXJ0eSwgewogICAgICAgICBnZXQoKSB7CiAgICAgICAgICAgICArK2NhbGxDb3VudDsK
LSAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZXJhdG9yLnZhbHVlOworICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yPy52YWx1ZTsKICAgICAgICAgfQogICAg
IH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107Ci0KICAgICBkZWJ1Z2dlcjsKIAogICAgIC8vIFBy
ZXZpZXcgYW4gb2JqZWN0LgogICAgIGNvbnNvbGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0g
ICAgLy8gVXNlIEFycmF5IEl0ZXJhdG9yIGF0IGxlYXN0IG9uY2UuCi0gICAgZm9yIChsZXQgeCBv
ZiBhcnJheSkgeyB9CisgICAgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24oKTsKKwor
ICAgIGlmIChvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcikKKyAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9y
KTsKKyAgICBlbHNlCisgICAgICAgIGRlbGV0ZSBwcm90b3R5cGVbcHJvcGVydHldOworCisgICAg
cmV0dXJuIGNhbGxDb3VudDsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBTdHJp
bmcoZSk7CisgICAgfQorfQorCitmdW5jdGlvbiByZXBsYWNlQW5kVGVzdE9iamVjdChvYmplY3RT
dHJpbmcsIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbikgeworICAgIGxldCBjYWxsQ291
bnQgPSAwOworICAgIAorICAgIGxldCBvcmlnaW5hbE9iamVjdCA9IGV2YWwob2JqZWN0U3RyaW5n
KTsKKyAgICBldmFsKGAKKyAgICAgICAgJHtvYmplY3RTdHJpbmd9ID0gKCkgPT4geworICAgICAg
ICAgICAgKytjYWxsQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxPYmplY3QoLi4u
YXJndW1lbnRzKTsKKyAgICAgICAgfTsKKyAgICBgKTsKKworICAgIGRlYnVnZ2VyOworCisgICAg
Ly8gUHJldmlldyBhbiBvYmplY3QuCisgICAgY29uc29sZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7
CiAKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRl
cmF0b3IsIG9yaWdpbmFsSXRlcmF0b3IpOworICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5j
dGlvbigpOwogCisgICAgZXZhbChgJHtvYmplY3RTdHJpbmd9ID0gb3JpZ2luYWxPYmplY3Q7YCk7
CisgICAgY29uc29sZS5sb2coImNvdW50IG9mICIgKyBjYWxsQ291bnQpOwogICAgIHJldHVybiBj
YWxsQ291bnQ7CiB9CiAKQEAgLTM2LDMwICs2MCwxNDggQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgZnVuY3Rp
b24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3Rv
dHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0
aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAor
ICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxh
Y2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkoJHtwcm90b3R5cGVTdHJpbmd9LCAke3Byb3BlcnR5
U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbi50b1N0cmluZygpfSk7
YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke3Byb3RvdHlwZVN0cmluZ31bJHtwcm9wZXJ0eVN0
cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuYCk7CisgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE9i
amVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgb2JqZWN0U3RyaW5nLCBpbnZva2VPdmVy
cmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RPYmplY3QoIiR7b2JqZWN0U3RyaW5nfSIsICR7aW52
b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uLnRvU3RyaW5nKCl9KTtgLCAoZXJyb3IsIHJlc3Vs
dCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJl
c3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2
ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkluamVj
dGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAot
ICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQg
c2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJJdGVy
YXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsICJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJh
dG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLiIpOwotICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2lu
Z2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7
Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVj
dCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5n
bGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJh
eSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4i
LAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBw
cm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRk
ZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbImEi
LCAiYiIsICJjIl07CisgICAgICAgICAgICBmb3IgKGxldCB4IG9mIGFycmF5KSB7IH0KKworICAg
ICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAgICAgICB9LAorICAgIH0pOworCisgICAg
YWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5v
dCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5
cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAg
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBs
ZXQgc2V0ID0gbmV3IFNldChbImEiLCAiYiIsICJjIl0pOworICAgICAgICAgICAgZm9yIChsZXQg
eCBvZiBzZXQpIHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhzZXQpOworICAgICAgICB9
LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0
ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFwIGl0ZXJhdGlvbiBpbiBJbmplY3Rl
ZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0
cmluZzogIk1hcC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5p
dGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9
PiB7CisgICAgICAgICAgICBsZXQgbWFwID0gbmV3IE1hcChbWyJhIiwgIjEiXSwgWyJiIiwgIjIi
XSwgWyJjIiwgIjMiXV0pOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBtYXApIHsgfQorCisg
ICAgICAgICAgICBjb25zb2xlLmxvZyhtYXApOworICAgICAgICB9LAogICAgIH0pOwogCisgICAg
YWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5wdXNoIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJBcnJheS5wdXNoIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFi
bGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAg
ICAgcHJvcGVydHlTdHJpbmc6ICJcInB1c2hcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAg
ICAgICAgICAgIGFycmF5LnB1c2goNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRk
UHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlw
dC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJT
ZXQuYWRkIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAg
ICAgICAgcHJvdG90eXBlU3RyaW5nOiAiU2V0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5
U3RyaW5nOiAiXCJhZGRcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0
aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKKyAgICAgICAgICAg
IHNldC5hZGQoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkT2JqZWN0VGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmciLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlN0cmluZyBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5v
dCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIG9iamVjdFN0cmluZzogIlN0cmluZyIsCisgICAg
ICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAg
bGV0IGFuc3dlciA9IFN0cmluZyg0Mik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQ
cm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0
Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlLmluZGV4IiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJPdmVycmlkZW4gaW5kZXhlcyBpbiBBcnJheSBwcm90b3R5cGUgaW4gSW5qZWN0ZWQgU2NyaXB0
IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJB
cnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiNDJcIiIsCisgICAg
ICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAg
ICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1c2goImhlbGxvIik7CisgICAg
ICAgICAgICBjb25zb2xlLmxvZyhhcnJheSk7CisgICAgICAgICAgICBhcnJheVs0Ml07CisgICAg
ICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5k
ZXN0cnVjdHVyZWRQcm9wZXJ0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT2JqZWN0IGRlc3Ry
dWN0dXJpbmcgKGZvciBgb3B0aW9uc2AgcGFyYW1ldGVycykgaW4gSW5qZWN0ZWQgU2NyaXB0IHNo
b3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJPYmpl
Y3QucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcImZldGNoU3RhcnRcIiIs
CisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAg
ICAgICAgICBsZXQgeCA9IHt9LmZldGNoU3RhcnQ7CisgICAgICAgIH0sCisgICAgfSk7CisKKwor
CiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPlRlc3QgdGhhdCBjZXJ0YWluIEluamVj
dGVkU2NyaXB0U291cmNlIG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29k
ZS48L3A+Cis8cD5UZXN0IHRoYXQgSW5qZWN0ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBv
YnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1l
eHBlY3RlZC50eHQKaW5kZXggZDQ0MjE3ZDM2MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUyMzgx
Ni4uYWZiZDMyZDUwMzdlNTJhZTkwYzIzM2YyMmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9y
LWV4cGVjdGVkLnR4dApAQCAtMzEsNyArMzEsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7
IHRyeSB7IFtdLngueDsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7
CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAot
ICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJnbG9i
YWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBbbmF0
aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAg
ICJfZW50cmllcyI6IG51bGwKQEAgLTcwLDcgKzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBu
dWxsOyB0cnkgeyBldmFsKCJpZigpIik7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJv
cgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAi
c3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBj
b2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBD
YWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2Rl
QFxuZXZhbHVhdGVXaXRoU2NvcGVF4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFw
Q2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVs
bApAQCAtMTA0LDcgKzEwNCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLnNwbGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7CiAg
ICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAg
ICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisg
ICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxu
ZXZhbHVhdGVXaXRoU+KApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25h
dGl2ZSBjb2RlXSIKICAgICAgIH0sCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2RlIiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4t
ZXhwZWN0ZWQudHh0CmluZGV4IGJmY2FjOTg5ZWFjMGZiZDgwZTg1YWNjNjNjNGU3YzI4NmI4N2Ez
ODUuLjEyMzNlYjM5NDgxNzNiNDA3NmQzMzA5YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVk
LnR4dApAQCAtNjQsOCArNjQsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAg
ICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICAgICAidXJsIjogIiIsCiAgICAg
ICAgICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxpbmVO
dW1iZXIiOiAxNDIsCi0gICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAg
ICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVtbk51
bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAg
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzogQ2Fw
dHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAg
ICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAg
ICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAg
ICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJl
ciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAi
PGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQu
CiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIi
OiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1i
ZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+
IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmluZGV4
IDY3MmIzNTMzODAwY2JlMjU5ZWU4ODg3YWJlMTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0ZTQ1
NWQ4NjkzYzhkYWJlNDI5NTY0MzFkOTUxMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAKICAgICAvLyBUbyBhdm9pZCBmbGFraW5lc3MgcHJpbnQgb25seSBldmVudHMgdGhh
dCB3ZSBhbHdheXMgZXhwZWN0LgogICAgIGNvbnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNldChb
IlJlbmRlcmluZ0ZyYW1lIiwgIkNvbnNvbGVQcm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAiRnVu
Y3Rpb25DYWxsIl0pOworCisgICAgLy8gVGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgY2Fs
bCBmcmFtZShzKSBoYXZlIGRpZmZlcmVudCBsaW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNlIGFu
ZCBkZWJ1ZyBidWlsZHMuIFdlIG9ubHkKKyAgICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2YWx1
ZXMgZm9yIHRob3NlIHNwZWNpZmljIGNhbGwgZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBvdGhl
ciBsaW5lL2NvbHVtbiBudW1iZXJzIHJlbWFpbiBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9uTmFt
ZUxlbmd0aCA9IDA7CisgICAgbGV0IHVybExlbmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiByZXBs
YWNlcihrZXksIHZhbHVlKSB7CisgICAgICAgIGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUiKSB7
CisgICAgICAgICAgICBmdW5jdGlvbk5hbWVMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChrZXkg
PT09ICJjaGlsZHJlbiIgJiYgdGhpcy5zdGFydFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFs
dWUuZmlsdGVyKGUgPT4gZXZlbnRBbGxvd2xpc3QuaGFzKGUudHlwZSkpOwogICAgICAgICBpZiAo
a2V5ID09PSAic3RhcnRUaW1lIiB8fCBrZXkgPT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3Jp
cHRJZCIgfHwga2V5ID09PSAiZnJhbWVJZCIpCiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJl
ZD4iOworICAgICAgICBpZiAoKGtleSA9PT0gImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNvbHVt
bk51bWJlciIpICYmICFmdW5jdGlvbk5hbWVMZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybiAiPGZpbHRlcmVkPiI7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInVybCIpCisg
ICAgICAgICAgICB1cmxMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkgPT09
ICJ1cmwiIHx8IGtleSA9PT0gInNjcmlwdE5hbWUiKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LnJlcGxhY2UoL14uK0xheW91dFRlc3RzXC9pbnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAgcmV0
dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCAy
NWY5MzBlMjkyMWY4ODljMTY0NzdmYmZhMTAyYTJkMWM3Njc3NjgwLi41NmQxODQwOGJkZGU5YTdi
MDcwMjM5NmI5NGY5Nzk3NmNmM2JkYWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4
cGVjdGVkLnR4dApAQCAtNjAsOCArNjAsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAg
ICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAgICAgInVybCI6ICIiLAogICAgICAg
ICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAibGluZU51bWJlciI6IDE0
MiwKLSAgICAgICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAibGluZU51bWJlciI6
ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAg
ICAgICAgIH0KICAgICAgIF0sCiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTEx
Myw4ICsxMTMsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5h
bWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+
IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3Cisg
ICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAi
PGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAt
MTY1LDggKzE2NSw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgImZ1bmN0aW9u
TmFtZSI6ICIiLAogICAgICAgInVybCI6ICIiLAogICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJl
ZD4iLAotICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAiY29sdW1uTnVtYmVyIjogOTcK
KyAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgImNvbHVtbk51bWJlciI6
ICI8ZmlsdGVyZWQ+IgogICAgIH0KICAgXSwKICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458798</attachid>
            <date>2022-05-04 08:33:31 -0700</date>
            <delta_ts>2022-05-04 08:53:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152294-20220504083330.patch</filename>
            <type>text/plain</type>
            <size>157175</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NzUyYjY1OGM4ZjVhMmJjZmQ3NTQyOTQ0MTYxMGU5ZTQxNTQwMzQ0Li4zODU2ZTNmZjU3M2NlNzRi
YmM4Nzc0NTQ3NmEzNmUwOTc4NzBhOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMDMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+IGFu
ZCBZdXJ5IFNlbWlraGF0c2t5IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dLMl0g
QWRkIEFQSSB0byBhbGxvdyBlbWJlZGRlciB0byBzZXQgYSB0aW1lem9uZSBvdmVycmlkZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDNlODNiYjM1Zjg1OTkyZGYwNjJmNTM2NWE3NDc2NzRjNThmYTAyZGMuLmNkYWY2
MTAzZDE5ZmQxZDU0M2JhMDlhODhiMTgwMjYyNjYxZmI4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBi
dWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0LWlu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBC
dWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBhcyBh
IHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAgICAg
LSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9mIHJh
dyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3BlcnRp
ZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1vdmVy
cmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1c2Ug
YSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNlci1w
cm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFucyB0
aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRoZW0g
aW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1cHBv
cnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5vIG1v
cmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTAzICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2VNYXA6OnJlbW92ZUl0ZW0gbWF5
IGZhaWwgdG8gcmVtb3ZlIGl0ZW0gZnJvbSBtYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZlYWI4NmQyNDFjNTFhZDg5Li5lNmVk
N2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JV
SUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvVHlwZWRB
cnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5
cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
V2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTE0MDUsMTcg
KzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtKYXZh
U2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NCdWlsdGlucy5oCiApCiAKLWFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRF
TkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9D
T01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9J
bmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5IDwgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyA+PiAke0phdmFTY3Jp
cHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwot
ICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgKLSAgICBWRVJC
QVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmgpCi0KIGlmIChX
VEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9UIEVOQUJMRV9DX0xPT1ApCiAgICAg
ICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA4ZDU0MGJkNTE5MjE3YjU1
MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYxZDMwNjA3ZThhNmZiNTE0M2E0YzI0
ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsyMSw2IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0ZWRXYXNtT3BzLmFz
bQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dl
bmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNtCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdFdhc20uYXNtCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4YTFiYTEzYzA5NWY3ZTE1NGY2OGU5
N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0ZjBkNDRlNWIzNWYwOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY4LDcgKzY4LDYgQEAg
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFTY3JpcHRDb3JlKS9TY3JpcHRzCiAK
IC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVkU2NyaXB0U291cmNlLmggXAogICAg
IExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmggXAogICAgIFJlZ0V4cEppdFRhYmxl
cy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rv
ci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlw
ZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMgXAor
ICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBc
CiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRz
IG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywgc28KQEAgLTM2OCwxMiArMzY4LDYg
QEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyA6IENvbWJpbmVkRG9tYWlu
cy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5wbCAtLWlucHV0IGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BM
QVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1h
bmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMu
aW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0
ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gLi9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4u
cHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMg
Pj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCi0JJChERUxFVEUpIElu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BDT0RFX0ZJTEVTID0gXAogICAgIEFp
ck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4YjIzMGY1OTI3MWNmZmQxNy4uMjRk
NGJlODZiOWMxNWZkYzZkMjdkNzNiYTkwZWZhODk5MDM0ZDJlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJCUE1MTNFNUJFMTg1QkZBQ0MwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJCMTg1
QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwogCQlBNTEzRTVD
MjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJEMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovOyB9OwotCQlB
NTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM2MTg1Rjk0MzYw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovOyB9OwogCQlBNTEzRTVDQjE4NUY5
NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2Ny
aXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkM5NUZGMjE1OUQ0
MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0QyMTU5RDQxRTAwRkNEODI2IC8qIElu
c3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTM3NTEsNiArMzc1MCw3IEBACiAJCTJBRDJFREZBMTk3OTlFMzgwMDRE
NjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5
MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1IC8qIFNo
YWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU2hhZG93UmVhbG1Q
cm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFBRDQ3
RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwQTVG
NDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBDNEYyN0I5NENFNDAwMzA4MDkxIC8q
IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDcwNyw3ICs0NzA3LDYgQEAKIAkJQTUxM0U1QkMxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QkQxODVCRkFDQzAwN0U5NUFEIC8q
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDOTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg0LDcgKzcyODMsNiBAQAogCQkJ
CTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJ
CQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICov
LAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJbml0Qnl0ZWNvZGVzLmFzbSAqLywK
LQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAq
LywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0
b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRv
clByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCkBAIC05MzYzLDYgKzkzNjEsNyBA
QAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVEMDA1NDUyNEQgLyogU2V0SXRlcmF0
b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8qIFNldFBy
b3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMwMDAzNzFBMjUgLyogU2hhZG93UmVh
bG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1RDlCMTAwOURCMUVGIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2NUQ5QjEwMDlEQjFFRiAvKiBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUwNDUxQjFDMjVCNEIxMDBCQjY2M0Mg
LyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTIsNyArMTA0NTEsNiBAQAogCQkJCUE1
MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3QjdCODYwMDg0M0IxMCAvKiBJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUxM0U1QzcxODVGOTQ0NjAw
N0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU5
RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5k
LXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1QkI2OTFEMTIwNTBFMDAxOUZFNTcg
LyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDhBN0JGMDFCODI5NzVBMDAy
RDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMzgwLDcgKzEy
Mzc4LDYgQEAKIAkJCQk1MzZCMzE3QTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEw
Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyNzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyQzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzExMzVD
QTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJCYXNlLmMgaW4gU291cmNlcyAqLywK
IAkJCQk1MzZCMzE3NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzZCMzE3NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTExMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE4MDFGNzFDNTk5MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDA5LDcgKzEyNDA2LDYg
QEAKIAkJCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzNS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzVDMjQ2QzFGN0ExNzc4MDA2RUM0MEUgLyogVW5pZmllZFNv
dXJjZTEzNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBBNjZCQzFGQTNFNzhCMDAyNkE1NDUg
LyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzExMzVDQjI4MUI1
QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzguY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkYxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQyMCw3ICsxMjQxNiw2IEBACiAJ
CQkJNTMwQTY2QzQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM4RjE1RjIyNjhGQkM3QjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2Ux
NDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUUyNjhGQkJCNjAwRDYwMUM0IC8qIFVu
aWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1QzkyODFCNUIwMDAw
QzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVF
NzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MzhGMTVGMDI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzhGMTVFQjI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDMwLDYgKzEyNDI1LDkgQEAKIAkJCQk1MzhG
MTVFQTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1NC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MzhGMTVFRjI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1NS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MjVDOUNERjIyMDI4NTgzMDA4MkRCRkQgLyogV2FzbUFpcklS
R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRB
OSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1Q0EyODFC
NUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWls
dGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3dr
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVkYzE1Y2NhZGY1ZjAwYTZmMmY0OTAx
MDczMDE5NzlhODZkMTY4Ny4uMzg3NGRkNDJmMjc2MGYzNGU4NmQ4ZGM4MTg2MWE1MmVjODhmZTNh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1Miw3IEBAIGZ1bmN0aW9uSXNBc3lu
Y1JlZ0V4cCA9IHJlLmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1bmN0aW9uIiwgcmUuTVVMVElMSU5F
IHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccyso
XHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25PdmVycmlkZGVu
TmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJpZGRlbk5hbWU9KFwiLitcIikkIiwg
cmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5j
b21waWxlKHIiXig/OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdysp
P1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCitm
dW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBpbGUociIsXHMqKD8hW157fV0qXH0p
IiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0aWxpbmVDb21tZW50UmVnRXhwID0g
cmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogc2lu
Z2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIGNsYXNzIEJ1aWx0aW5GdW5jdGlv
bjoKICAgICAgICAgaXNfbmFrZWRfY29uc3RydWN0b3IgPSBmdW5jdGlvbk5ha2VkQ29uc3RydWN0
b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBOb25lCiAgICAgICAgIGlmIGlzX25h
a2VkX2NvbnN0cnVjdG9yOgogICAgICAgICAgICAgaXNfY29uc3RydWN0b3IgPSBUcnVlCi0gICAg
ICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyRmlu
ZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxpdCgnLCcpXQorICAgICAgICBwYXJh
bWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlci5z
cGxpdChmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0p
XQogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0gMDoKICAgICAgICAgICAgIHBhcmFt
ZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBjbGFzcyBCdWlsdGluc0NvbGxlY3Rp
b246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAgICAgICAgc3RhcnQgPSAwCiAgICAg
ICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKICAgICAgICAgICAg
IHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CiAgICAg
ICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCiAgICAg
ICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAgICAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZGVwdGggPSAxCi0g
ICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVy
ID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUK
ICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgICAgICBpZiB0ZXh0W2Vu
ZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQotICAgICAg
ICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAgICAgICAgICAgICAgICAgICAgZGVw
dGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID0gdGV4dFtl
bmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5nQ2hhcmFjdGVyOgorICAgICAgICAg
ICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgaW4gImAn
XCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIg
aXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50
Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlcjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gVHJ1ZQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBGSVhNRTogPHdlYmtpdC5vcmcv
Yi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFpbmluZyB1bmJhbGFuY2VkIHF1b3Rh
dGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAgICAgICAgIyBmb3VuZCBpbiBgU3Ry
aW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2FuIGNvbmZ1c2UgdGhlIHN0YXRlIG9m
IHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAgICMgaW5zaWRlL291dHNpZGUgYSBz
dHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVzZXQgb3VyIHN0cmluZyBzdGF0ZSBh
dCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAgICAgICMgKHVubGVzcyB3ZSBhcmUg
aW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxsIHdvcmsgdW5sZXNzIGEgcmVndWxh
ciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgIyB1bmJhbGFuY2VkIGN1cmx5
IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0IHdlIGNhcmUgYWJvdXQgaXMgb24g
dGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAgICAgICAgICAgICMgcmVndWxhciBl
eHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4KKyAgICAgICAgICAgICAgICBpZiBj
dXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciAh
PSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9
IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlm
IGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0g
J3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAxCisgICAgICAgICAgICAgICAgZWxp
ZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggLT0g
MQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBw
ZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFy
dDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKaW5kZXggOWI5YWI3NWM2ZDc1YWE3M2Y3ZTE4ZDY5ZmUyYTg4NzdhZWQ1YWI0OC4uYTFkM2M5
M2JlMjdhMzhkMGFlZWJkNzUwNzVkNjUwYzFmOTY3ZmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTEwNiw2
ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgaSA9IHBhcmFtZXRlcnNTdGFydCArIDE7CiAgICAgICAgIHVuc2lnbmVkIGNvbW1hcyA9IDA7
CisgICAgICAgIGJvb2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOwogICAgICAgICBib29s
IHNhd09uZVBhcmFtID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFzUmVzdFBhcmFtID0gZmFsc2U7
CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xMTMsNyArMTE0LDEzIEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0m
IHZtLCBjb25zdCBTCiAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnKScpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcs
JykKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICd9JykKKyAgICAgICAgICAgICAg
ICBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmIChjaGFy
YWN0ZXJzW2ldID09ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNrZXRzKSB7CisgICAgICAgICAgICAg
ICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IHRydWU7CisgICAgICAgICAgICAgICAgKytpOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXJz
W2ldID09ICcsJykKICAgICAgICAgICAgICAgICArK2NvbW1hczsKICAgICAgICAgICAgIGVsc2Ug
aWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFyYWN0ZXJzW2ldKSkKICAgICAgICAg
ICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFlNzQzYTlhMTJiMmNlMzBkZGZjMmEw
MGM1MmFlYmM1ZC4uNzI5MWZhMmQ1YjJmYjFhMTc1N2UxZTEwNWNlYzMxYjk0Y2E0ZGQ4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTky
LDYgKzE5MiwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhjcmVhdGVSZW1vdGVGdW5j
dGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheVNv
cnQpIFwKKyAgICBtYWNybyhqc29uUGFyc2UpIFwKKyAgICBtYWNybyhqc29uU3RyaW5naWZ5KSBc
CisgICAgbWFjcm8oU3RyaW5nKSBcCisgICAgbWFjcm8oc3Vic3RyKSBcCisgICAgbWFjcm8oZW5k
c1dpdGgpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpIFwKKyAgICBtYWNy
byhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlTeW1ib2xz
KSBcCisgICAgbWFjcm8oaGFzT3duKSBcCisgICAgbWFjcm8oaW5kZXhPZikgXAorICAgIG1hY3Jv
KHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCmluZGV4IDI2M2U0M2JmYzBlODMxMTYw
NTAyYTk4NWUyNDFhZTA3Yzc3ZWUyZjQuLmIxOTg2ZTg4NTMwY2VjNjYyYzE5ZmZlYWU3NWEzNGI3
NWU4NmZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJh
dG9ySGVscGVycy5qcwpAQCAtNTEsMyArNTEsNDMgQEAgZnVuY3Rpb24gcGVyZm9ybUl0ZXJhdGlv
bihpdGVyYWJsZSkKICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaW5kZXgrKywgaXRl
bS52YWx1ZSk7CiAgICAgfQogfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gd3JhcHBlZEl0
ZXJhdG9yKGl0ZXJhdG9yKQoreworICAgIGxldCB3cmFwcGVyID0gQE9iamVjdC5AY3JlYXRlKG51
bGwpOworICAgIHdyYXBwZXIuQEBpdGVyYXRvciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaXRlcmF0
b3I7IH0KKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9u
IGJ1aWx0aW5TZXRJdGVyYWJsZShzZXQpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAg
IGlmICghQGlzU2V0KHNldCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpblNldEl0
ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1TZXQgb2JqZWN0LiIpOworCisgICAgLy8gVXNpbmcgdGhl
IHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9sIGl0c2Vs
ZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAgLy8gYWdh
aW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3IgU2V0cywg
YEB2YWx1ZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdpbmFsbHkKKyAgICAvLyBw
bGFjZWQgYXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBz
ZXQuQHZhbHVlczsKKyAgICAKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1
bmN0aW9uLkBjYWxsKHNldCkpOworfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gYnVpbHRp
bk1hcEl0ZXJhYmxlKG1hcCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgCisgICAgaWYgKCFA
aXNNYXAobWFwKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGluTWFwSXRlcmFibGUg
Y2FsbGVkIHdpdGggbm9uLU1hcCBvYmplY3QuIik7CisKKyAgICAvLyBVc2luZyB0aGUgcHJpdmF0
ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRoZSBzeW1ib2wgaXRzZWxmIGhhcyBu
b3QgYmVlbiBtb2RpZmllZCwgYnV0IGRvZXMgbm90IHByb3RlY3QKKyAgICAvLyBhZ2FpbnN0IHRo
ZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5nIGJlZW4gcmVwbGFjZWQuIEZvciBNYXBzLCBgQGVudHJp
ZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdpbmFsbHkKKyAgICAvLyBwbGFjZWQg
YXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBtYXAuQGVu
dHJpZXM7CisKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBj
YWxsKG1hcCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhiOTBmOTljYjBjZTc0NmYwMTliZDNl
ZDcyMy4uYjg2NTNlODY1Njk5MzFmY2JiNmUyZjRiNDI1NDhjNGIwYzZlMTM3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0x
MjAsNiArMTIwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVG
dW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAog
ICAgIHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCisgICAgdihqc29uUGFyc2UsIG51bGxwdHIpIFwK
KyAgICB2KGpzb25TdHJpbmdpZnksIG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikg
XAogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFt
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0
ZDc2ZWY5NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFt
ZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xv
Y2suaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2Rl
LmgiCkBAIC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xl
YXJFeGNlcHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9u
VmFsdWUoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3Jp
cHRTb3VyY2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pz
KSk7Ci19Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmpl
Y3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUlu
amVjdGVkU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJj
ZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUg
Z2xvYmFsVGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtl
ZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVh
dGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVy
KCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9i
amVjdCwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsK
LSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAg
aWYgKCFmdW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxs
RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4
cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7
CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9u
VmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0
ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwog
fQogCkBAIC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElk
Rm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBh
dXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQp
OwogICAgIGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRl
UmVzdWx0LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwx
MCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0
Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4g
MCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVt
bik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBz
Y3JpcHQ6ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9i
amVjdCkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1
bHQudmFsdWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2Ny
aXB0IG9iamVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlw
dFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJh
MGFmNGM4YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5
YTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBI
YXNoTWFwPEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBw
cml2YXRlOgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVk
PEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlk
KTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
PiBjcmVhdGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAog
ICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3Rl
ZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0
ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAy
MTIzODdmZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0
LDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkg
PiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29s
dW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVj
dGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgp
KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVz
XG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1
ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9v
bGVhbigpKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9z
LCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsK
LSAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxP
YmplY3QoKSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2Ny
aXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICgh
aW5qZWN0TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNCiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAg
ICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICcl
cyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50
b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwg
bGluZSwgY29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4
YzY5N2U5YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5
NWU0ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2Ny
aXB0TWFuYWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxl
IDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2Ny
aXB0TW9kdWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVl
IGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUz
Mzc5YTJmMWViNzFiOGM0OTI1ZjZjNC4uMDA4MDM2NjYyOGM2NmE1YmUwNDAyNGFhNTYwZTBkODEy
YzI3ODg0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywzOCBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
K0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKC8q
IGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUyLCAuLi4gKi8pCit7CisgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggJSAyICE9PSAwKQorICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJgY3JlYXRlT2Jq
ZWN0V2l0aG91dFByb3RvdHlwZWAgcmVxdWlyZXMgdGhhdCBlYWNoIGtleSBhcmd1bWVudCBiZSBm
b2xsb3dlZCBieSBhIHZhbHVlLCByZXN1bHRpbmcgaW4gYW4gZXZlbiBudW1iZXIgb2YgYXJndW1l
bnRzLiIpOworCisgICAgbGV0IG9iamVjdCA9IEBPYmplY3QuQGNyZWF0ZShudWxsKQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAyKQorICAgICAgICBvYmpl
Y3RbYXJndW1lbnRzW2ldXSA9IGFyZ3VtZW50c1tpICsgMV07CiAKLShmdW5jdGlvbiAoSW5qZWN0
ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpIHsK
KyAgICByZXR1cm4gb2JqZWN0OworfQogCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBi
dWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwor
QGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgvKiB2
YWx1ZTEsIHZhbHVlMiwgLi4uICovKQoreworICAgIGxldCBhcnJheSA9IG5ldyBAQXJyYXkoYXJn
dW1lbnRzLmxlbmd0aCk7CisgICAgYXJyYXkuX19wcm90b19fID0gbnVsbDsKKyAgICAKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgQGFycmF5
UHVzaChhcnJheSwgYXJndW1lbnRzW2ldKTsKKyAgICAKKyAgICByZXR1cm4gYXJyYXk7Cit9CiAK
LXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBj
cmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkKK3sKIAogZnVuY3Rpb24gdG9TdHJpbmco
b2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAgICByZXR1cm4gQFN0cmluZyhvYmop
OwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKQEAgLTkzLDYgKzExNCwx
NSBAQCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogfQorICAgIAorZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHNPYmplY3QpIHsKKyAgICBsZXQgaXRlcmF0b3JGdW5j
dGlvbiA9IGFyZ3VtZW50c09iamVjdC5AQGl0ZXJhdG9yOworICAgIHJldHVybiBAd3JhcHBlZEl0
ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoYXJndW1lbnRzT2JqZWN0KSk7Cit9CisKK2Z1
bmN0aW9uIG1heChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7Cit9CiAKIC8vIC0t
LS0tLS0KIApAQCAtMTAxLDEyICsxMzEsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9s
YXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0g
e307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhp
cy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKKyAgICAg
ICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgpOworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0gQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IEBjcmVhdGVP
YmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdElu
ZGV4ID0gMTsKLSAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgIHRoaXMu
X3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICB9CiAK
ICAgICAvLyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCkBAIC0xMTUsNyArMTQ1LDcgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldywgc2F2ZVJlc3VsdCwgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgaXNFdmFs
T25DYWxsRnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9u
KEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRT
Y3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21t
YW5kTGluZUFQSSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJh
bWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuQGFwcGx5KEB1bmRlZmluZWQsIGFyZ3MpOwogICAg
ICAgICB9KTsKICAgICB9CiAKQEAgLTEzNiwxNiArMTY2LDE2IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKKyAg
ICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewogICAgICAg
ICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGxldCByZXNvbHZlID0g
KHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAg
ICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVP
YmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVl
LCBnZW5lcmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1
cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAg
ICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9i
amVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2
ZVJlc3VsdCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpA
QCAtMTU5LDcgKzE4OSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxs
YmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5h
bWUpKTsKICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJl
amVjdCk7CisgICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAg
ICB9CiAKICAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5
VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCwxNCArMjEwLDE0IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICgh
aXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9i
amVjdCB3aXRoIGdpdmVuIGlkIjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107Cisg
ICAgICAgIGxldCByZXNvbHZlZEFyZ3MgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7
CiAgICAgICAgIGlmIChhcmdzKSB7CiAgICAgICAgICAgICBsZXQgY2FsbEFyZ3MgPSBJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0gdGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVu
dChjYWxsQXJnc1tpXSk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTE5NywxMCArMjI3LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9uIGRvZXMgbm90IGV2YWx1YXRlIHRv
IGEgZnVuY3Rpb24iOwogCi0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHdh
c1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3Jl
YXRlKGZ1bmMuYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5hbWUsIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKLSAgICAgICAgICAgIH07CisgICAgICAgICAg
ICByZXR1cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAg
Indhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAgICJyZXN1bHQiLCBSZW1vdGVPYmpl
Y3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXBO
YW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKICAg
ICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRocm93
blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7CiAgICAgICAgIH0KQEAgLTIzMywxMyArMjYzLDIy
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgZ2V0UHJv
cGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwg
Z2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0gb3du
UHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMg
OiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQcm9wZXJ0aWVzOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXd9KTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJmZXRjaFN0YXJ0IiwgZmV0Y2hTdGFydCwK
KyAgICAgICAgICAgICJmZXRjaENvdW50IiwgZmV0Y2hDb3VudCwKKyAgICAgICAgICAgICJnZW5l
cmF0ZVByZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsCisgICAgICAgICkpOwogICAgIH0KIAogICAg
IGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhvYmplY3RJZCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3Vu
dCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0IGNvbGxlY3Rpb25Nb2RlID0g
SW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcyB8IEluamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlLk5hdGl2ZUdldHRlclByb3BlcnRpZXM7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwge2ZldGNoU3Rh
cnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldywgbmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0
cnVlfSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xs
ZWN0aW9uTW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAi
ZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZldGNo
Q291bnQsCisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LAor
ICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsCisgICAgICAgICkpOwog
ICAgIH0KIAogICAgIGdldEludGVybmFsUHJvcGVydGllcyhvYmplY3RJZCwgZ2VuZXJhdGVQcmV2
aWV3KQpAQCAtMjU2LDcgKzI5NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gdGhpcy5faW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CiAgICAgICAgIGlmICghZGVzY3JpcHRvcnMpCi0gICAg
ICAgICAgICByZXR1cm4gW107CisgICAgICAgICAgICByZXR1cm4gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSgpOwogCiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY3JpcHRvcnMu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnNb
aV07CkBAIC0yODAsMTIgKzMxOSwxMyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBlbnRyaWVzID0g
dGhpcy5fZW50cmllcyhvYmplY3QsIEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCks
IGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwotICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZnVu
Y3Rpb24oZW50cnkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzW2ldOwogICAgICAgICAg
ICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5LnZhbHVlLCBvYmplY3RH
cm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkK
ICAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGVudHJ5Lmtl
eSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gZW50
cnk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBlbnRyaWVzOwogICAg
IH0KIAogICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNPTikKQEAgLTMwNiwxMCArMzQ2LDEw
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlm
ICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGxldCBy
ZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90
b3R5cGUoKTsKICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyss
IGNhbGxGcmFtZSkpOworICAgICAgICAgICAgQGFycmF5UHVzaChyZXN1bHQsIG5ldyBJbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKICAgICAgICAgICAg
IGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAgICAgIH0gd2hpbGUgKGNhbGxGcmFt
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjYsNyArMzY2LDcgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB3cmFwSlNPTlN0cmluZyhqc29u
U3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEpTT04ucGFyc2UoanNvblN0cmlu
ZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLndyYXBPYmplY3QoQGpzb25QYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVl
LCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICB9CkBAIC0zNDMsMTIgKzM4MywxMiBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IG51
bGw7CiAgICAgICAgIGlmICh0eXBlb2YgY29sdW1ucyA9PT0gInN0cmluZyIpCi0gICAgICAgICAg
ICBjb2x1bW5zID0gW2NvbHVtbnNdOworICAgICAgICAgICAgY29sdW1ucyA9IEBjcmVhdGVBcnJh
eVdpdGhvdXRQcm90b3R5cGUoY29sdW1ucyk7CiAKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0
SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAiYXJyYXkiKSB7Ci0gICAgICAgICAgICBjb2x1bW5O
YW1lcyA9IFtdOworICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0
UHJvdG90eXBlKCk7CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1
bW5zW2ldKSk7CisgICAgICAgICAgICAgICAgQGFycmF5UHVzaChjb2x1bW5OYW1lcywgdG9TdHJp
bmcoY29sdW1uc1tpXSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVj
dC5jcmVhdGUodGFibGUsICJjb25zb2xlIiwgZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKQEAg
LTM5Niw3ICs0MzYsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lID09PSAiY29uc29sZSIpIHsKICAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0OwogICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVk
UmVzdWx0SW5kZXggPSAxOwotICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107Cisg
ICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90
eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91
cHNbb2JqZWN0R3JvdXBOYW1lXTsKQEAgLTQyOSwxNCArNDY5LDE2IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHJldHVybiB0aGlzLl9tb2R1bGVz
W25hbWVdOwogICAgIH0KIAotICAgIGluamVjdE1vZHVsZShuYW1lLCBzb3VyY2UsIGhvc3QpCisg
ICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0aW9uLCBob3N0KQogICAgIHsKICAgICAg
ICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOwogCi0gICAgICAgIGxldCBtb2R1bGVGdW5j
dGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwog
ICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5zcGVjdG9yOiBhIGZ1bmN0aW9uIHdhcyBleHBlY3Rl
ZCBmb3IgaW5qZWN0TW9kdWxlIjsKLSAgICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3Jp
cHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIHtS
ZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgaG9zdCk7CisgICAgICAgIG1vZHVsZUZ1bmN0
aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNj
cmlwdElkLCB0aGlzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICJSZW1vdGVPYmplY3QiLCBSZW1vdGVPYmplY3QsCisgICAgICAgICAgICAiQ29tbWFuZExpbmVB
UEkiLCBDb21tYW5kTGluZUFQSSwKKyAgICAgICAgKSwgaG9zdCk7CiAKICAgICAgICAgdGhpcy5f
bW9kdWxlc1tuYW1lXSA9IHRydWU7CiAgICAgfQpAQCAtNDcwLDEwICs1MTIsMTAgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdy
b3VwTmFtZSkgewogICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29i
amVjdEdyb3VwTmFtZV07CiAgICAgICAgICAgICBpZiAoIWdyb3VwKSB7Ci0gICAgICAgICAgICAg
ICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAgICAgICBncm91cCA9IEBjcmVhdGVBcnJheVdpdGhv
dXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0
R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZ3JvdXAucHVz
aChpZCk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGdyb3VwLCBpZCk7CiAgICAgICAgICAgICB0
aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9iamVjdEdyb3VwTmFtZTsKICAgICAgICAg
fQogCkBAIC00ODgsOCArNTMwLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgIF9mYWxsYmFja1dyYXBwZXIob2JqZWN0KQogICAgIHsKLSAgICAgICAg
bGV0IHJlc3VsdCA9IHt9OwotICAgICAgICByZXN1bHQudHlwZSA9IHR5cGVvZiBvYmplY3Q7Cisg
ICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgidHlwZSIs
IHR5cGVvZiBvYmplY3QpOwogICAgICAgICBpZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQog
ICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0gb2JqZWN0OwogICAgICAgICBlbHNlCkBAIC01MTUs
NyArNTU2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgICAgIHJldHVybiByZXNvbHZlZEFyZzsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybiBAdW5kZWZpbmVkOwogICAgIH0KIAogICAgIF9j
cmVhdGVUaHJvd25WYWx1ZSh2YWx1ZSwgb2JqZWN0R3JvdXApCkBAIC01MjQsMTAgKzU2NSwxMCBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICB0cnkg
ewogICAgICAgICAgICAgcmVtb3RlT2JqZWN0LmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNjcmlw
dGlvbih2YWx1ZSk7CiAgICAgICAgIH0gY2F0Y2ggeyB9Ci0gICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICB3YXNUaHJvd246IHRydWUsCi0gICAgICAgICAgICByZXN1bHQ6IHJlbW90ZU9iamVj
dAotICAgICAgICB9OworICAgICAgICByZXR1cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICJyZXN1bHQi
LCByZW1vdGVPYmplY3QsCisgICAgICAgICk7CiAgICAgfQogCiAgICAgX2V2YWx1YXRlQW5kV3Jh
cChldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGlzRXZhbE9u
Q2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRl
UHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTU1MiwxMCArNTkzLDEwIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICB0
aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKIAotICAgICAgICAgICAgbGV0IHJldHVybk9iamVj
dCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAg
IHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9iamVjdEdyb3VwLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAg
ICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAicmVzdWx0IiwgUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5l
cmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAgICAgICAgICAgaWYgKHNhdmVSZXN1
bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKICAgICAgICAgICAgICAgICByZXR1cm5PYmpl
Y3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0SW5kZXg7CkBAIC01NzEsNyAr
NjEyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgbGV0IGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKICAgICAgICAgaWYgKGluY2x1ZGVDb21tYW5k
TGluZUFQSSkKICAgICAgICAgICAgIGNvbW1hbmRMaW5lQVBJID0gdGhpcy5jcmVhdGVDb21tYW5k
TGluZUFQSU9iamVjdChpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6IG51bGwpOwotICAgICAg
ICByZXR1cm4gZXZhbEZ1bmN0aW9uLmNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGlu
ZUFQSSk7CisgICAgICAgIHJldHVybiBldmFsRnVuY3Rpb24uQGNhbGwob2JqZWN0LCBleHByZXNz
aW9uLCBjb21tYW5kTGluZUFQSSk7CiAgICAgfQogCiAgICAgX2NhbGxGcmFtZUZvcklkKHRvcENh
bGxGcmFtZSwgY2FsbEZyYW1lSWQpCkBAIC02MDcsNyArNjQ4LDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgX19w
cm90b19fIGF0IHRoZSBlbmQsIGJ1dCBvbmx5IGZvciB0aGUgZmlyc3QgZmV0Y2guCiAgICAgICAg
IGxldCBpbmNsdWRlUHJvdG8gPSAhc3RhcnQ7CiAKLSAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0g
W107CisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5
cGUoKTsKICAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNv
bGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAgICAgICAgaWYgKHN0YXJ0ID4g
MCkgewogICAgICAgICAgICAgICAgIC0tc3RhcnQ7CkBAIC02MjIsMTMgKzY2MywxNiBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGRl
c2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9i
amVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICBpZiAo
InN5bWJvbCIgaW4gZGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnN5bWJv
bCA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci5zeW1ib2wsIG9iamVjdEdyb3VwTmFt
ZSk7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3IpOworICAgICAgICAg
ICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAKICAgICAgICAgICAgIGlm
IChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYm
IGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKIAogICAgICAgICAgICAg
cmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQpID8gSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywg
aW5jbHVkZVByb3RvfSk7CisgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIG5hdGl2ZUdldHRlcnNBc1Zh
bHVlcywKKyAgICAgICAgICAgICJpbmNsdWRlUHJvdG8iLCBpbmNsdWRlUHJvdG8sCisgICAgICAg
ICkpOwogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfQogCkBAIC02MzgsMTMgKzY4
MiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAg
ICBpZiAoIWludGVybmFsUHJvcGVydGllcykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0g
ICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBA
Y3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgaW50ZXJuYWxQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICBsZXQgcHJv
cGVydHkgPSBpbnRlcm5hbFByb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRv
ciA9IHtuYW1lOiBwcm9wZXJ0eS5uYW1lLCB2YWx1ZTogcHJvcGVydHkudmFsdWV9OworICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAibmFtZSIsIHByb3BlcnR5Lm5hbWUsCisgICAgICAgICAgICAgICAgInZh
bHVlIiwgcHJvcGVydHkudmFsdWUsCisgICAgICAgICAgICApOwogICAgICAgICAgICAgaWYgKGNv
bXBsZXRlRGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1
ZTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7CisgICAgICAgICAg
ICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfQpAQCAtNjU0LDE1ICs3MDEsMTggQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKEluamVjdGVk
U2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJwcm94eSIpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgU2V0OworICAgICAgICBsZXQg
bmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0OwogCiAgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hl
biBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQoIl9fcHJvdG9fXyIp
OworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQoIl9fcHJvdG9fXyIpOwogCiAgICAgICAgIGZ1
bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9y
LCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5hdGl2ZUJpbmRpbmdHZXR0ZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0g
e25hbWUsIHZhbHVlOiBvYmplY3RbbmFtZV19OworICAgICAgICAgICAgICAgIGxldCBmYWtlRGVz
Y3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAg
ICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIsIG9iamVjdFtu
YW1lXSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9y
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwpAQCAtNjc4
LDExICs3MjgsMTUgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAgICAgICAgICAgICAgICBmYWtlRGVz
Y3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSBhbnkg
cG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlvbnMgY3JlYXRlZCBmcm9tIGFjY2Vz
c2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3JvbmcgdGhpcyBvYmplY3QuCi0gICAgICAg
ICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSAmJiBJ
bmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVy
cm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgZmFrZURlc2Ny
aXB0b3IudmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKKyAgICAgICAgICAgICAgICBpZiAoZmFr
ZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhv
c3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlw
dG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IudmFsdWUuQGNh
dGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZha2VEZXNjcmlwdG9y
OwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIGxldCBlcnJvckRl
c2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IGUsIHdhc1Rocm93bjogdHJ1ZX07CisgICAgICAgICAg
ICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICJ2YWx1ZSIsIGUsCisgICAgICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCB0cnVlLAorICAg
ICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgaWYgKGlzT3duUHJvcGVydHkpCiAgICAg
ICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5pc093biA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgaWYgKHN5bWJvbCkKQEAgLTcxMCwxNSArNzY0LDE1IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3Bl
cnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICBpZiAo
bmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKLSAgICAgICAg
ICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBuYW1lUHJv
Y2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKIAogICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0
cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHBy
b3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBudWxsOwogCi0gICAgICAgICAgICBsZXQgZGVz
Y3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3Ip
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQg
aGVyZT8KICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBz
ZXR0aW5ncy4KQEAgLTcyNyw3ICs3ODEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobmF0aXZlR2V0
dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdl
dCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRl
c2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNj
cmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQFN0
cmluZyhkZXNjcmlwdG9yLmdldCkuQGVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFk
ZXNjcmlwdG9yLmdldCAmJiBAT2JqZWN0LkBoYXNPd24oZGVzY3JpcHRvciwgImdldCIpICYmICFk
ZXNjcmlwdG9yLnNldCAmJiBAT2JqZWN0LkBoYXNPd24oZGVzY3JpcHRvciwgInNldCIpKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9wZXJzIG1heSBjcmVhdGUgc3VjaCBhIGRlc2Ny
aXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGllbnQ6CiAgICAgICAgICAgICAgICAgICAgIC8v
IGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCAicCIsIHtnZXQ6dW5kZWZpbmVk
fSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeCwgInAiKQogICAgICAgICAgICAg
ICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5h
bWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgdHJ1ZSk7CkBAIC03NDUsMTAg
Kzc5OSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNlOwogICAgICAgICB0cnkgewotICAgICAgICAg
ICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXki
ICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVjdC5sZW5ndGggPiAwOworICAgICAg
ICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJy
YXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKICAg
ICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmlu
ZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobykpIHsKKyAgICAgICAgZm9yIChsZXQg
byA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gQE9iamVjdC5AZ2V0UHJvdG90eXBlT2Yobykp
IHsKICAgICAgICAgICAgIGxldCBpc093blByb3BlcnR5ID0gbyA9PT0gb2JqZWN0OwogICAgICAg
ICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7CiAKQEAgLTc2NCw3ICs4MTgsNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0
T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5
KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAgLTc3NiwxNCArODMwLDEyIEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAo
c2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3Bl
cnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobyk7Ci0gICAgICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9w
ZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5T
dG9wOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgcHJv
cGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8pOworICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5
U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsg
PSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCkBAIC03OTYs
MjMgKzg0OCwyOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgIGlmIChvYmplY3QuX19wcm90b19fKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVlOiBvYmplY3QuX19wcm90b19fLCB3cml0YWJsZTog
dHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBpc093bjogdHJ1ZX0pOworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJuYW1lIiwgIl9fcHJvdG9fXyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAidmFsdWUiLCBvYmplY3QuX19wcm90b19fLAorICAgICAgICAgICAgICAgICAgICAgICAgIndy
aXRhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWd1cmFibGUiLCB0
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzT3duIiwgdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgKSk7CiAgICAgICAgICAgICB9IGNhdGNoIHsgfQogICAgICAgICB9CiAgICAgfQog
CiAgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAg
IHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
b2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9y
IChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAg
ICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVu
dHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmllcywgQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoInZhbHVlIiwgdmFsdWUpKTsKIAogICAgICAgICAg
ICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMsMTYgKzg4MCwxOCBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBm
ZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsK
KyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlk
ZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBA
YnVpbHRpbk1hcEl0ZXJhYmxlKG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0
ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXks
IHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJrZXkiLCBrZXksCisgICAgICAgICAg
ICAgICAgInZhbHVlIiwgdmFsdWUsCisgICAgICAgICAgICApKTsKIAogICAgICAgICAgICAgaWYg
KGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzkzNSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJl
c3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBu
dWxsKQorICAgICAgICBpZiAocmVzdWx0ID09PSBAdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVs
bCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRo
aXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7CisgICAgICAgIGxldCBleGlzdGluZ0lu
ZGV4ID0gQEFycmF5LnByb3RvdHlwZS5AaW5kZXhPZi5AY2FsbCh0aGlzLl9zYXZlZFJlc3VsdHMs
IHJlc3VsdCk7CiAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkgewogICAgICAgICAg
ICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5nSW5kZXg7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC04OTQsMTYgKzk1MywxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgIH0KIH07CiAKLUluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2Rl
ID0gewotICAgIE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRp
ZXMuCi0gICAgTmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVy
IHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAx
IDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4u
Ci19OworSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAiT3duUHJvcGVydGllcyIsIDEgPDwgMCwgICAgICAgICAgLy8gb3du
IHByb3BlcnRpZXMuCisgICAgIk5hdGl2ZUdldHRlclByb3BlcnRpZXMiLCAxIDw8IDEsIC8vIG5h
dGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorICAgICJBbGxQ
cm9wZXJ0aWVzIiwgMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJv
dG90eXBlIGNoYWluLgorKTsKIAotSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9
IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgi
c3RvcCIpLAotfQorSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IEBjcmVhdGVP
YmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICJDb250aW51ZSIsIEBjcmVhdGVQcml2YXRlU3lt
Ym9sKCJjb250aW51ZSIpLAorICAgICJTdG9wIiwgQGNyZWF0ZVByaXZhdGVTeW1ib2woInN0b3Ai
KSwKKyk7CiAKIHZhciBpbmplY3RlZFNjcmlwdCA9IG5ldyBJbmplY3RlZFNjcmlwdDsKIApAQCAt
OTYyLDcgKzEwMjEsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVj
dGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVjdCkpOwogICAgICAgICAgICAgICAg
IHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwg
dW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0g
dGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgQHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC05NzcsNyArMTAzNiw3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNh
dGNoIChleCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAg
ICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRp
b24gdG8gc3RyaW5nPiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJl
bW90ZU9iamVjdChkZXNjcmlwdGlvbik7CkBAIC05ODYsNyArMTA0NSw3IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2
aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewot
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZp
bmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGxldCBy
ZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwg
Z2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qu
b2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90
ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5
cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9iamVjdElkKQpAQCAtMTAxMSw3ICsx
MDcwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAg
IC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1
ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5j
dGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAgLTEwNTAsOCArMTEwOSw4IEBAIGxl
dCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKHN1YnR5cGUg
PT09ICJhcnJheSIpCiAgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwogCi0gICAgICAgIGlm
IChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddOworICAgICAgICBp
ZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBAQHRvU3RyaW5nVGFnIGluIHZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLkBAdG9TdHJpbmdUYWc7CiAKICAgICAgICAgLy8gTm9kZUxp
c3QgaW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNoZWNrIGZvciBhcnJheSBwcmlvciB0byB0aGlzLgog
ICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMTI4
LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGlj
IG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcv
Yi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgog
ICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCAmJiAhIW5vZGUu
b3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAgICBsZXQgbm9kZU5hbWUgPSBpc1hNTERv
Y3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKIApA
QCAtMTEwMCwxNyArMTE2MCwxNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAKICAgICBfaW5pdGlhbFByZXZpZXcoKQogICAgIHsKLSAgICAgICAgbGV0IHByZXZpZXcg
PSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsCi0gICAgICAgICAgICBkZXNjcmlwdGlv
bjogdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKLSAgICAgICAgICAg
IGxvc3NsZXNzOiB0cnVlLAotICAgICAgICB9OworICAgICAgICBsZXQgcHJldmlldyA9IEBjcmVh
dGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgInR5cGUiLCB0aGlzLnR5cGUs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iLCB0aGlzLmRlc2NyaXB0aW9uIHx8IHRvU3RyaW5n
KHRoaXMudmFsdWUpLAorICAgICAgICAgICAgImxvc3NsZXNzIiwgdHJ1ZSwKKyAgICAgICAgKTsK
IAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7CiAgICAgICAgICAgICBwcmV2aWV3LnN1YnR5
cGUgPSB0aGlzLnN1YnR5cGU7CiAgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVs
bCIpIHsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107CisgICAgICAgICAgICAgICAgcHJldmll
dy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTExMjYsNyArMTE4Niw3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFw
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAi
IHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJh
dG9yIikgewogICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSkgewotICAgICAgICAgICAgICAgIHBy
ZXZpZXcuZW50cmllcyA9IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7
CiAgICAgICAgICAgICB9CkBAIC0xMTQxLDIzICsxMjAxLDIzIEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNl
Y29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBm
aXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5n
dGggOiAwOwogCi0gICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAg
ICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZp
cnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1
ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9
OworICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKAorICAgICAgICAgICAgInByb3BlcnRpZXMiLCBpc1RhYmxlUm93c1JlcXVlc3Qg
PyAxMDAwIDogbWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAgICAgICAgImluZGV4
ZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4KDEwLCBmaXJzdExldmVsS2V5c0Nv
dW50KSwKKyAgICAgICAgKTsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTWFwcywg
U2V0cywgYW5kIEl0ZXJhdG9ycyBoYXZlIGVudHJpZXMuCiAgICAgICAgICAgICBpZiAodGhpcy5z
dWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlw
ZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3Vi
dHlwZSA9PT0gIml0ZXJhdG9yIikKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRFbnRyeVBy
ZXZpZXdzKG9iamVjdCwgcHJldmlldyk7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGll
cyA9IFtdOworICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0
aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAgICAgICAvLyBJbnRlcm5hbCBQcm9wZXJ0aWVzLgog
ICAgICAgICAgICAgbGV0IGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyA9IGluamVjdGVkU2Ny
aXB0Ll9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0LCB0cnVlKTsKICAgICAgICAg
ICAgIGlmIChpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMpIHsKICAgICAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVy
dHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ld
LCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7
aW50ZXJuYWw6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29u
ZExldmVsS2V5cywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImludGVybmFsIiwgdHJ1
ZSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cHJldmlldzsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTY5LDcgKzEyMjksMTAgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgLy8gUHJvcGVydGll
cy4KICAgICAgICAgICAgIGluamVjdGVkU2NyaXB0Ll9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9y
KG9iamVjdCwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJvcGVydGllcywgKGRl
c2NyaXB0b3IpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYXBwZW5kUHJvcGVy
dHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9s
ZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cyk7Ci0gICAgICAgICAgICB9LCB7bmF0
aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlLCBpbmNsdWRlUHJvdG86IHRydWV9KQorICAgICAgICAg
ICAgfSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5h
dGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsCisgICAgICAgICAgICAgICAgImluY2x1ZGVQcm90
byIsIHRydWUsCisgICAgICAgICAgICApKTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAg
ICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTExNzcsNyArMTI0MCw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgcmV0dXJu
IHByZXZpZXc7CiAgICAgfQogCi0gICAgX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHBy
ZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBz
ZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSB7fSkKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2
aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmly
c3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKCkpCiAgICAgewogICAgICAgICAvLyBFcnJvciBpbiBkZXNjcmlwdG9y
LgogICAgICAgICBpZiAoZGVzY3JpcHRvci53YXNUaHJvd24pIHsKQEAgLTExOTAsOSArMTI1Myw5
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG5h
bWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90b19f
IG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2RzIHRv
IHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZh
bHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25z
dHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5j
b25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVl
LmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52
YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0
b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHApCiAgICAgICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyArMTI3
Miw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVy
LgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBv
biB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVs
S2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFAQXJy
YXkucHJvdG90eXBlLkBpbmNsdWRlcy5AY2FsbChmaXJzdExldmVsS2V5cywgbmFtZSkpCiAgICAg
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51
ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3
LDIwICsxMjkwLDI4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5h
bCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJldmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7
CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5D
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdldHRlci9zZXR0ZXIuCiAgICAgICAg
IGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKICAgICAgICAgICAgIHByZXZpZXcubG9z
c2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0
eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3Jl
YXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUs
CisgICAgICAgICAgICAgICAgInR5cGUiLCAiYWNjZXNzb3IiLAorICAgICAgICAgICAgKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBOdWxsIHZhbHVlLgogICAgICAgICBsZXQgdmFsdWUgPSBk
ZXNjcmlwdG9yLnZhbHVlOwogICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAg
ICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJu
dWxsIiwgdmFsdWU6ICJudWxsIn0pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBu
YW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgIm9iamVjdCIsCisgICAgICAgICAgICAgICAg
InN1YnR5cGUiLCAibnVsbCIsCisgICAgICAgICAgICAgICAgInZhbHVlIiwgIm51bGwiLAorICAg
ICAgICAgICAgKSk7CiAKICAgICAgICAgLy8gSWdub3JlIG5vbi1lbnVtZXJhYmxlIGZ1bmN0aW9u
cy4KICAgICAgICAgbGV0IHR5cGUgPSB0eXBlb2YgdmFsdWU7CkBAIC0xMjU4LDcgKzEzMjksMTEg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAg
IHZhbHVlID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyh2YWx1ZSwgbWF4TGVuZ3RoLCB0cnVlKTsK
ICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHRv
U3RyaW5nRGVzY3JpcHRpb24odmFsdWUpfSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFt
ZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCB0eXBlLAorICAgICAgICAgICAgICAg
ICJ2YWx1ZSIsIHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpLAorICAgICAgICAgICAgKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBTeW1ib2wuCkBAIC0xMjY4LDExICsxMzQzLDE4IEBAIGxl
dCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICBzeW1i
b2xTdHJpbmcgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHN5bWJvbFN0cmluZywgbWF4TGVuZ3Ro
LCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwg
dmFsdWU6IHN5bWJvbFN0cmluZ30pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBu
YW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgICAgICAgICAidmFs
dWUiLCBzeW1ib2xTdHJpbmcsCisgICAgICAgICAgICApKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE9iamVjdC4KLSAgICAgICAgbGV0IHByb3BlcnR5ID0ge25hbWUsIHR5cGV9OworICAgICAg
ICBsZXQgcHJvcGVydHkgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgKTsK
ICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZSh2YWx1ZSk7CiAgICAg
ICAgIGlmIChzdWJ0eXBlKQogICAgICAgICAgICAgcHJvcGVydHkuc3VidHlwZSA9IHN1YnR5cGU7
CkBAIC0xMzEzLDcgKzEzOTUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4g
NSkgewotICAgICAgICAgICAgZW50cmllcy5wb3AoKTsKKyAgICAgICAgICAgIEBBcnJheS5wcm90
b3R5cGUuQHBvcC5AY2FsbChlbnRyaWVzKTsKICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cg
PSB0cnVlOwogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9
CkBAIC0xMzIzLDcgKzE0MDUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkp
IHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVzID0gQEFycmF5LnByb3RvdHlwZS5AbWFwLkBjYWxs
KGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJl
bW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUoZW50cnkudmFsdWUsIGVudHJ5
LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnku
dmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KSB7CkBAIC0xMzM2LDggKzE0
MTgsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaXNQ
cmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHNldCA9
IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsKKyAgICAgICAgbGV0IHNldCA9IG5l
dyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmplY3QpOwogCiAgICAgICAgIHJldHVybiB0aGlz
Ll9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUsIHNldCwgMSk7CiAgICAgfQpAQCAt
MTM1NywxMSArMTQzOSwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4K
LSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0KSkKKyAgICAgICAgaWYgKGtub3du
T2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFkZChvYmplY3QpOworICAgICAgICBr
bm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAgICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxl
IGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVjdHMuCiAgICAgICAgIGxldCBzdWJ0
eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsKQEAgLTEzODEsMTIgKzE0NjMsMTIg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUg
MyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgICAgICBsZXQgb3duUHJvcGVy
dHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7CisgICAgICAgIGxl
dCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qp
OwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5ndGggPiAzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFt
ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9w
ZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxl
dCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBp
biBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlO
YW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCkBAIC0xNDA0LDY2ICsxNDg2LDcyIEBAIGxldCBS
ZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG1pZGRsZSkgewog
ICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3RoID4+IDE7CiAgICAgICAgICAgICBs
ZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYgLSAxOwotICAgICAgICAgICAgcmV0
dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3Ry
KHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7CisgICAgICAgICAgICByZXR1
cm4gc3RyaW5nLkBzdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuQHN1YnN0
cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOworICAg
ICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOwogICAg
IH0KIH07CiAKIC8vIC0tLS0tLS0KIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBm
dW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCi17Ci0gICAgdGhpcy5jYWxsRnJhbWVJZCA9IGB7
Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQiOiR7aW5qZWN0ZWRTY3JpcHRJ
ZH19YDsKLSAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7Ci0g
ICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJZDogU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCks
IGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5lLCBjb2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1
bW59OwotICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFt
ZSk7Ci0gICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09i
amVjdCwgImJhY2t0cmFjZSIpOwotICAgIHRoaXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5p
c1RhaWxEZWxldGVkOwotfTsKK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gY2xhc3Mg
Q2FsbEZyYW1lUHJveHkgeworICAgIGNvbnN0cnVjdG9yKG9yZGluYWwsIGNhbGxGcmFtZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJp
bmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7CisgICAgICAgIHRoaXMuZnVu
Y3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsKKworICAgICAgICB0aGlzLmxvY2F0
aW9uID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAic2NyaXB0
SWQiLCBAU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksCisgICAgICAgICAgICAibGluZU51bWJl
ciIsIGNhbGxGcmFtZS5saW5lLAorICAgICAgICAgICAgImNvbHVtbk51bWJlciIsIGNhbGxGcmFt
ZS5jb2x1bW4sCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5f
d3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKKyAgICAgICAgdGhpcy50aGlzID0gUmVtb3RlT2Jq
ZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOworICAgICAgICB0
aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKKyAgICB9CiAKLUlu
amVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICBfd3JhcFNjb3Bl
Q2hhaW4oY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbGV0IHNjb3BlQ2hhaW4gPSBjYWxsRnJh
bWUuc2NvcGVDaGFpbjsKICAgICAgICAgbGV0IHNjb3BlRGVzY3JpcHRpb25zID0gY2FsbEZyYW1l
LnNjb3BlRGVzY3JpcHRpb25zKCk7CiAKLSAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IFtd
OworICAgICAgICBsZXQgc2NvcGVDaGFpblByb3h5ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3Rv
dHlwZSgpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyBp
KyspCiAgICAgICAgICAgICBzY29wZUNoYWluUHJveHlbaV0gPSBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uKHNjb3BlQ2hhaW5baV0sIHNjb3BlRGVzY3JpcHRp
b25zW2ldLCAiYmFja3RyYWNlIik7CiAgICAgICAgIHJldHVybiBzY29wZUNoYWluUHJveHk7CiAg
ICAgfQotfTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVz
ID0gewotICAgIDA6ICJnbG9iYWwiLCAvLyBHTE9CQUxfU0NPUEUKLSAgICAxOiAid2l0aCIsIC8v
IFdJVEhfU0NPUEUKLSAgICAyOiAiY2xvc3VyZSIsIC8vIENMT1NVUkVfU0NPUEUKLSAgICAzOiAi
Y2F0Y2giLCAvLyBDQVRDSF9TQ09QRQotICAgIDQ6ICJmdW5jdGlvbk5hbWUiLCAvLyBGVU5DVElP
Tl9OQU1FX1NDT1BFCi0gICAgNTogImdsb2JhbExleGljYWxFbnZpcm9ubWVudCIsIC8vIEdMT0JB
TF9MRVhJQ0FMX0VOVklST05NRU5UX1NDT1BFCi0gICAgNjogIm5lc3RlZExleGljYWwiLCAvLyBO
RVNURURfTEVYSUNBTF9TQ09QRQotfTsKKyAgICBzdGF0aWMgX2NyZWF0ZVNjb3BlSnNvbihvYmpl
Y3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCisgICAgeworICAgICAgICBsZXQg
c2NvcGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJvYmpl
Y3QiLCBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBJZCksCisgICAgICAgICAgICAi
dHlwZSIsIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1t0eXBl
XSwKKyAgICAgICAgKTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNj
b3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwge25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJ
ZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0gICAgICAgIG9iamVjdDogUmVtb3RlT2JqZWN0LmNy
ZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAgICAgICB0eXBlOiBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCi0gICAgfTsKKyAgICAgICAgaWYgKG5h
bWUpCisgICAgICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsKIAotICAgIGlmIChuYW1lKQotICAg
ICAgICBzY29wZS5uYW1lID0gbmFtZTsKKyAgICAgICAgaWYgKGxvY2F0aW9uKQorICAgICAgICAg
ICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKIAotICAgIGlmIChsb2NhdGlvbikKLSAgICAg
ICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgaWYgKGlzRW1wdHlPYmplY3Qo
b2JqZWN0KSkKKyAgICAgICAgICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsKIAotICAgIGlmIChpc0Vt
cHR5T2JqZWN0KG9iamVjdCkpCi0gICAgICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIHNjb3BlOworICAgIH0KK307CiAKLSAgICByZXR1cm4gc2NvcGU7Ci19CitJbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXMgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAwLCAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCisgICAgMSwg
IndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAgMiwgImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BF
CisgICAgMywgImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAgICA0LCAiZnVuY3Rpb25OYW1lIiwg
Ly8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAgIDUsICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQi
LCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVAorICAgIDYsICJuZXN0ZWRMZXhpY2FsIiwg
Ly8gTkVTVEVEX0xFWElDQUxfU0NPUEUKKyk7CiAKIC8vIC0tLS0tLS0KIApAQCAtMTQ3Nyw5ICsx
NTY1LDkgQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQogICAgICAgICAgICAg
dmFsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG9yaWdpbmFsVmFsdWU7IH07CiAgICAgICAgIH0K
IAotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oIiQiICsga2V5LCB2YWx1ZSk7CisgICAg
ICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5KHRoaXMsICIkIiArIGtleSwgQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChzYXZlZFJlc3Vs
dEFsaWFzICYmIHNhdmVkUmVzdWx0QWxpYXMgIT09ICIkIikKLSAgICAgICAgICAgIHRoaXMuX19k
ZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3VsdEFsaWFzICsga2V5LCB2YWx1ZSk7CisgICAgICAgICAg
ICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBzYXZlZFJlc3VsdEFsaWFzICsga2V5LCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgiZ2V0IiwgdmFsdWUpKTsKICAgICB9OwogCiAg
ICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCkBAIC0xNTAyLDQ4ICsxNTkw
LDQ4IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkKICAgICAgICAgdGhpc1tu
YW1lXSA9IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV07CiB9CiAKLUNvbW1hbmRMaW5lQVBJ
LmdldHRlcnMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgpOwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzID0ge307CitDb21tYW5k
TGluZUFQSS5tZXRob2RzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBP
YmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0g
PSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqZWN0KTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4g
QE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVz
Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9
OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJ
bmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlw
dEhvc3QucXVlcnlIb2xkZXJzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21B
cmd1bWVudHMoYXJndW1lbnRzKSk7IH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluc3Bl
Y3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9i
amVjdChvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5t
ZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5k
TGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5hc3NlcnQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFy
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNs
ZWFyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudCguLi5jcmVhdGVJdGVy
YWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5kZWJ1ZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcigu
Li5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdy
b3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENv
bGxhcHNlZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxl
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uY3Jl
YXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFi
bGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVu
dHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBT
bmFwc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGltZUxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0
YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRpbWVTdGFtcCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRz
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uY3Jl
YXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBmb3IgKGxldCBuYW1lIGlu
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1l
XS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigp
IHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19
KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5
NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEzYmY0
ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0y
MjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAg
ICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlcnJvci5pc1Zh
bGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJyb3I6
OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3Rl
ZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
OiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5saW5lKCksICIuIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0NjUx
ZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJkZWZh
YzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFycmF5
Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5
T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
ICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFycmF5
Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVhM2Fh
YTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4MGMw
ZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJheVBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVk
ZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5hbWUo
KSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9m
UHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwgZ2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNOYW1l
KCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uZjE2ZjNh
NzkyNWQzZDRjMmRkMTU1MDJjYmNhZDQ4YWUzNjBjNjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4IEBA
IEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2
YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
IGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7Cit9CisKICNpZiBBU1NF
UlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENhbGwsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CkBAIC0xMDc0
LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25z
dHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVj
dG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0
cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigK
ICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKICAg
ICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5
cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNy
ZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09OIGhlbHBlcnMK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGpz
b25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5naWZ5KSk7CisgICAgICAgIH0pOwor
CiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUmVtb3RlRnVuY3Rpb24pXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSk7CkBA
IC0yMTg0LDYgKzIyMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9zdHJpbmdDb25zdHJ1Y3Rvcik7CiAKICAgICB0aGlzT2JqZWN0LT5tX2Rl
ZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9y
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3ODdhZjY2YTRlYzI4MzJjYjc4NDdm
YWYyOGE0ZmE5Yi4uZTk0ODYwM2UyY2VjYTI5NTVhMmVkMjcxNTRiYjNiMDE0OTcxYWYyYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0x
MjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBTZXRQcm90
b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlT3JpZ2luOworY2xhc3MgU3Ry
aW5nQ29uc3RydWN0b3I7CiBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBj
bGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFjdGl2YXRpb25TdGFja05vZGU7CkBA
IC0zMjAsNiArMzIxLDcgQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0
cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlz
ZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcjsK
KyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+IG1fc3RyaW5nQ29uc3RydWN0b3I7
CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZh
dWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcAppbmRleCBhODZkZTk3NzY0ZWM0ZjVkMTc3ZmIxYmMwN2E4YzgwOWE2
ZWZjMmIwLi4xNzIzNjkyNDRkNTk0ZjRmNzJmZGU3ZmQ5MzZlYTUxNDMwY2JhMTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTcyLDYg
KzcyLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jRW50
cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05h
bWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0ZU5hbWUoKSwgZW50cmllcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3NzczOGFhNjQ2NTY2MTRlYWFiZDhhZDE0Ny4uYmI2
YWYyNTRmNDk2NzlmNTE3YTM5ODcwNDE1ZWVmMzdjYmUxY2U5YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtOTksOSAr
OTksMTkgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKIAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlw
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3Rv
dHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yUHJpdmF0
ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJv
cGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVmaW5lUHJvcGVydHlQcml2YXRlTmFt
ZSgpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMyk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Y3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKLSAgICBpZiAoT3B0
aW9uczo6dXNlSGFzT3duKCkpCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUo
KSwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIGlmIChPcHRpb25zOjp1c2VIYXNPd24o
KSkgewogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENvbnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmhhc093blByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9ySGFzT3du
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7
CisgICAgfQogfQogCiAvLyBFUyAxOS4xLjEuMSBPYmplY3QoW3ZhbHVlXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDFlNmJjMWVlOGJi
MzdmNWYxMzU3NmNlYTJhNmQ1ZDRhOTVkZDQ4NzEuLmY3ZjljMTQxOGJmN2NjZjNhNGY1MDM0NGU0
MmE0ZjIzMGEwNTc0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsNyBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNG
dW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAs
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJp
bmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzLCBKU1NldFZhbHVlc0ludHJpbnNpYyk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1l
KCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZh
bHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNTA2
NzIzMmNkNjZmOTkxM2I5NTMyZjA5ZjY4MDMxYmVlZDA0Y2Y5My4uMzFhOGY5ZTdkN2JiZDMyNjUw
YzBjYjI5ODI2OWE5MzVlZDBjY2NmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNjQsNiArMTY0LDkgQEAgdm9pZCBTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLml0ZXJhdG9yXSJfcywgc3RyaW5n
UHJvdG9GdW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGl0ZXJhdG9yRnVu
Y3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN1YnN0clByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3Rv
RnVuY1N1YnN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVuZHNXaXRoUHJpdmF0ZU5hbWUoKSwgc3Ry
aW5nUHJvdG9GdW5jRW5kc1dpdGgsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyKTsKKwogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFk
ZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdAogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2VjZWJiZTgzZjdkNzI0NzkzNGM5ODhkZWY0ZmZj
MWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVhNWM4Y2YzYjIyY2ZjZGRlZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAgV0VCS0lUX0ZSQU1FV09SS19ERUNM
QVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUoV2ViQ29yZVRlc3RTdXBwb3J0
KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKLSMgR2VuZXJhdGUg
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9V
VFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZIGluc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3Rl
ZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiAke1dlYkNvcmVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09N
TUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9q
c21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
X2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JE
YXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUyLDYgKzIzNDAsNyBAQCBzZXQoV2ViQ29y
ZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHREZWNvZGVyU3Ry
ZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpzCiAgICAg
JHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzCisgICAg
JHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiAp
CiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhM2Q2OGFkZmUxMzFjNDg3Yzc5
Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUzNTYyYmQyZjBjOTAyZDU2Mjc2ZTYw
ZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5hbWVzLmkKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtl
eXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0Nv
bG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjLi5iMTIzYWJmOTNlMjc1
OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChOT19TVVBQTEVNRU5UQUxfRklMRVMp
LDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5kZXApCiBlbmRpZgogCi0jIEluc3Bl
Y3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQot
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVk
U2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+IENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5q
cwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0g
XApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAg
ICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMg
PSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMDYwYWQ5ZjMxYWQyZTYxNDgzNzk1MjM3MGJhNTAw
MTE5ZDBhYWM0Li41NzgyMGI3NzNmMDQ5MDE2NDlhNzdiOThiMGQ1YzNjZGIwNTRiMTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9D
U1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NT
VmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YmExYjgyMDM1MmMxNGQ5
NjA2NjMzZjMwMWY5ZDQ1MzcyOGUyZTI1Li5kM2Y4ZDU0NTQ0NTA0OTFjNWNkNzIwZDBiMzM2NmIz
ODc2YThkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUzMDFCRTgyNzQ1OTQ3MjAwQzA1
NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRCQUZCODAwQTZCMjMzIC8qIERP
TVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdFMDA0MTJE
QkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9OworCQkyRTNBRUZGQjI4MDlGMTFEMDAz
NzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQUVGRjkyODA5RjExOTAwMzcx
QTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQzNDY0NjBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi87IH07CiAJCTJF
NDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzcwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckds
b2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5
LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlBNTc4RjQzRjFERTBCNjMwMDAzREZD
NkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVk
UHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTgxRUQx
MDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggKi87IH07CiAJCUE1ODQw
RTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0
M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKLQkJQTU4NEZFMjYxODYzN0RB
QjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcw
RjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29t
bWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8q
IFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29t
bWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0Lmgg
Ki87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3REZEOTEyREJBRkI4MDBBNkIyMzMg
LyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01VUkwuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0MDBBNkIyMzMgLyogSlNET01V
UkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01VUkwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMg
LyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01VUkwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1
aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTJFM0FFRkZE
MjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
MkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5NDEs
NyArMTM5NDMsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtl
ckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIyMTg3
QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYklu
amVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJ
bmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZF
MjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29t
bWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0
RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI5LDcgKzIwNDMwLDYgQEAKIAkJMUM1RkFFQ0EwRENG
RDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpT
Q29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAg
LyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJD
MjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovLApAQCAtMjM1
ODcsNiArMjM1ODcsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY1MUJDQUQwN0Qw
MEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlF
NDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNwcCAqLywKKwkJCQkyRTNBRUZG
RDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5j
cHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyog
Q291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjcxQkNBRDA3
RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDFF
QTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgKi8sCkBAIC0zNDA4
NSw3ICszNDA4Nyw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVk
VVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYz
ODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZB
MjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QzY5
RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5cHRvREVSVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUwMTY3NTI4MjI2NGQwZDM2ZDY1
Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1YjQ5Yjc5ZmRlYTMzNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApA
QCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbW1hbmRM
aW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
IgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4K
QEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpDb21tYW5kTGluZUFQSU1v
ZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlKCkgY29u
c3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdAogewotICAg
IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzKSk7Cisg
ICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxl
eGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5idWlsdGlu
SW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSgpLm1faW5qZWN0
TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBn
ZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFuZExpbmVBUElNb2R1bGVgIGZv
ciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1ZhbHVlIENvbW1hbmRMaW5lQVBJ
TW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKaW5kZXggMjc3MTZmY2E2
N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1MGQ0YTVmMzMzZDRmNDhkNWQwYzE3
NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgQ29tbWFuZExpbmVBUElN
b2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1vZHVsZSB7CiBw
dWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsKIAotICAgIFN0cmluZyBzb3VyY2Uo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGluamVjdE1vZHVsZUZ1bmN0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKICAgICBKU0M6OkpTVmFs
dWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lkIGluamVjdElmTmVlZGVk
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgY29uc3QgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUzNTE5Y2NiMTc5NjA5MGMzMjc0ZDVi
MGMzN2IyNTlkMGUzZWEuLjgxOWZhNDdlOWQxMGQwZjRjN2U3MWY5MTk0YjBiZjRlZjc2NjNiOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8j
IHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
CisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVP
YmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0KSB7CitmdW5jdGlvbiBp
bmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGlu
amVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGlu
ZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sKIAotLy8gRklYTUU6IDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNl
IGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWls
dC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4gSW5qZWN0ZWQgc2NyaXB0IHNo
b3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAKIGluamVjdGVkU2NyaXB0Ll9pbnNwZWN0T2Jq
ZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAp
CkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY29weSJdID0gZnVu
Y3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRTY3JpcHQuaXNQcmltaXRpdmVW
YWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICBlbHNlIGlm
ICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOworICAgICAgICBzdHJpbmcgPSBAU3RyaW5nKG9i
amVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKICAgICAg
ICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2Jq
ZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0cmluZyA9IEBqc29uU3RyaW5naWZ5KG9i
amVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgc3RyaW5nID0gIiIg
KyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5MCwyOCBAQCBDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVuY3Rpb24odGFyZ2V0KSB7CiB9OwogCiBm
dW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7Ci0gICAgaWYgKHR5cGVzID09PSB1
bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29u
dHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNl
b3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNpemUi
LCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCJdOworICAg
IGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9y
dCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24i
LCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwg
InNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCIpOwogICAgIGVsc2UgaWYgKHR5
cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgIHR5cGVzID0gW3R5cGVzXTsKKyAgICAg
ICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKHR5cGVzKTsKKworICAgIGxl
dCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBhZGRUeXBlc1RvUmVzdWx0KCkgewor
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIHJlc3VsdC5AYWRkKGFyZ3VtZW50c1tpXSk7CisgICAgfQogCi0gICAgbGV0IHJlc3Vs
dCA9IFtdOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKICAg
ICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2go
ImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQi
LCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOworICAgICAgICAgICAgYWRk
VHlwZXNUb1Jlc3VsdCgiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vkb3duIiwgIm1vdXNlbW92
ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1cCIsICJtb3VzZXdoZWVsIik7CiAg
ICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikKLSAgICAgICAgICAgIHJlc3VsdC5w
dXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOworICAgICAg
ICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0
ZXh0SW5wdXQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAg
ICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3Zl
IiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoInRvdWNoY2Fu
Y2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CiAgICAgICAgIGVs
c2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgi
Ymx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJz
ZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQo
ImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAi
c2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
c3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKHR5cGVzW2ldKTsK
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExOCwxOSArMTI0LDE3IEBAIGZ1bmN0
aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibW9uaXRvckV2ZW50
cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFvYmpl
Y3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAg
IG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAg
IGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVz
KHR5cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9n
RXZlbnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbG9n
RXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ1bm1v
bml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9iamVj
dCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3Rl
bmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5
cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAgICAg
ICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsK
KyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0SXRlcmFibGUobm9ybWFsaXplRXZlbnRU
eXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBs
b2dFdmVudCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewpAQCAtMTU4LDkgKzE2MiwxMCBAQCBp
ZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5Ob2RlKSB7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBm
dW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJv
dG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1
bHRzIGFzIGEgbm9ybWFsIEFycmF5LgogICAgICAgICBpZiAoY2FuUXVlcnlTZWxlY3Rvck9uTm9k
ZShzdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5
LmZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAgICAgICByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBA
QXJyYXkuQGZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOworICAgICAgICBy
ZXR1cm4gQEFycmF5LkBmcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbIiR4Il0gPSBmdW5jdGlvbih4cGF0aCwgY29udGV4dCkgewpAQCAtMTc1LDEwICsxODAsMTEg
QEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuTm9kZSkgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5ib29sZWFuVmFsdWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBsZXQgbm9kZXMgPSBbXTsKKyAgICAgICAgLy8gRG9uJ3QgcmV0
dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gdXNl
IHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgorICAgICAgICBsZXQgbm9kZXMgPSBuZXcg
QEFycmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7CiAgICAgICAgIHdoaWxlIChub2RlID0g
cmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAg
ICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAgICAgICAgIHJldHVybiBub2RlczsK
ICAgICB9OwogfQpAQCAtMTg2LDQgKzE5Miw0IEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
ZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKIGZvciAobGV0IG5hbWUg
aW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25h
bWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAi
KCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0pCit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTMzNDlhMWNk
NTgwMTUwYzI3ODdkNGZlOTc0M2NkMzhlYTRiOTI3OC4uODYyMGZkMzk2YTVhMGJmMmE0NjljZTJl
N2JhYTg0MzkyNGZhYmFlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA1LTAzICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQ
YXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVk
IG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBE
ZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2Vy
dmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQv
b2JzZXJ2YWJsZS5odG1sOgorICAgICAgICAtIEFkZCBzZXZlcmFsIG1vcmUgdGVzdCBjYXNlcyBm
b3Igb3ZlcnJpZGluZyBmdW5jdGlvbnMgYW5kIGVudGlyZSBvYmplY3RzLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlw
dHMuaHRtbDoKKyAgICAgICAgLSBDaGFuZ2VkIHRvIHRlc3QgYSBjdXN0b20gaW50ZXJuYWwgc2Ny
aXB0IHNuaXBwZXQgc2luY2UgdGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgaXMgbm93IGEg
YnVpbHRpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRt
bDoKKyAgICAgICAgLSBUaGUgaW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCAoYW5kIG1vZHVsZXMp
IHdpbGwgbm8gbG9uZ2VyIGFwcGVhciBhcyBzY3JpcHRzIGluIFdlYiBJbnNwZWN0b3IuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgLSBJbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGxpbmUgbnVtYmVycyBhcmUg
ZGlmZmVyZW50IGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLCBzbyBmaWx0ZXIgdGhv
c2Ugb3V0LgorCiAyMDIyLTA1LTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgog
CiAgICAgICAgIFN0b3JhZ2VNYXA6OnJlbW92ZUl0ZW0gbWF5IGZhaWwgdG8gcmVtb3ZlIGl0ZW0g
ZnJvbSBtYXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4
IDFlYjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQuLjU5MzdmYWU5N2Y4OTU4
ODQ3Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3Jp
cHRzLWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2Jq
ZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBN
RVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVj
a2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBl
bmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LgorQ2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0
ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3Mu
cGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1
Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogLS0gUnVubmluZyB0ZXN0IHNldHVwLgog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LkRpc2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJF
U1NJT046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwg
aW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50
cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1w
YXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2
ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dl
cjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBj
b25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmci
KTsKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1
ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0
aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAg
OCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAg
MTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAg
IDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBk
ZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAy
NyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFs
T2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBB
VCBlbnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVM
b2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUu
bG9nKHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAg
IDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIK
K1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjg6NQorICAgICAyNCAgICBmdW5jdGlvbiBl
bnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworIC0+ICAyNyAgICAgICAgfGludGVybmFs
T2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwor
ICAgICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAg
Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUp
OwotIC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQot
ICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxP
YmplY3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgy
KTsKKyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9
CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQogCiBBQ1RJT046IHN0ZXAtaW4KLVBB
VVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3
aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAg
ICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gLT4gIDExICAgIH18Ci0gICAgIDEyCi0gICAg
IDEzICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVj
dDozMDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0t
LS0tLQorICAgICAzMgogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApAQCAtNjgsNTcgKzYyLDU3
IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qg
c2V0dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cp
CitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3Zl
ciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8
ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAg
fQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgewor
IC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAg
ICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsK
LSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29u
c29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7
Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAy
MworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAg
ICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsK
KyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBp
bnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAg
IDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdn
ZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAg
IGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0Cisg
ICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAg
IDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8
KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVw
LWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBk
ZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6
MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsK
KyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAy
OCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046
IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3Jp
cHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAg
ICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAg
ICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUu
bG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVj
dDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0
KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7Cisg
ICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFD
VElPTjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmluZGV4IGQx
NjhhNzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLmU1YjBkOWM4YjcxOGUxYjI1
NmVhZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCkBA
IC00LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlv
biBlbnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBpbnRlcm5hbE9iamVjdCA9IHsgdGVzdDogZnVu
Y3Rpb24oKSB7fSB9OworCitpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFsT2Jq
ZWN0ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigi
dGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwgYAorICAgICAgICAvLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLmpzCisgICAgICAgIGxl
dCBJbnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVybmFsT2JqZWN0IHsKKyAgICAgICAgICAgIHRl
c3QoaW52b2NhdGlvbk51bWJlcikgeworICAgICAgICAgICAgICAgIGxldCBhID0gNjsKKyAgICAg
ICAgICAgICAgICBsZXQgYiA9IDc7CisgICAgICAgICAgICAgICAgbGV0IGFuc3dlciA9IGEgKiBi
OworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG5ldyBJbnRlcm5hbE9iamVj
dDsKKyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKICAgICBk
ZWJ1Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgIGNvbnNvbGUubG9nKGNvbnNv
bGUpOwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDEpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgaW50ZXJuYWxPYmplY3QudGVz
dCgzKTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0yMSwzMSArMzksMzEgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2Vy
LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVu
dHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHBy
ZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNl
IGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRp
bWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3Rs
eSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0
aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBz
ZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVy
bmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3Zl
ciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAg
ICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKGNvbnNvbGUpCi0gICAgICAgICAgICAgICAg
ImluIiwgLy8gY29uc29sZS5sb2coInN0cmluZyIpCisgICAgICAgICAgICAgICAgImluIiwgLy8g
aW50ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFs
T2JqZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwogCiAgICAg
YWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZv
ckludGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQg
YmUgYWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhl
IEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1l
b3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBh
YmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBz
Y3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxP
YmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2lu
Y2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlm
IGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsg
cmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0s
CiAgICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAg
ICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3
aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29s
ZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lk
ZSBjb25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFs
T2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lk
ZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21l
d2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCiAgICAgICAgICAgICAicmVzdW1l
IiwKICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcsNiArNzUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkK
IDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Q2hlY2tp
bmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5k
aW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48
L3A+Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4g
YmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0
aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODgu
LjYzYTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQu
dHh0CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQ
QVNTOiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQg
ZmluZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3Vs
ZCBmaW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVk
U2NyaXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5k
TGluZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhw
ZWN0ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5
ZDlhNWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5
LDE0ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+
ICh0aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAgICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2Fk
IGV2ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAg
LSBldmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcKLSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVy
bmFsIHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVybmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0
IGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5l
QXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxT
Y3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9
IGZhbHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7
CiAgICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24g
aXNFeHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAgLTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXJTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMp
ICYmIHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cu
CisgICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExp
bmUgPj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5j
dGlvbiBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAgICAgICAgIHJldHVybiBwYXJhbXMuc291cmNl
VVJMID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlw
dFNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwu
c3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNX
aXRoKCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNl
U2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9m
KCJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENo
ZWNrSW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAt
NzksMTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICghZm91bmRFdmFsU2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJh
bXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3Jp
cHQgJiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0
ICYmIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5sb2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVj
dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1
ZTsKQEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgUHJv
dG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQg
ZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9j
b2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0
LCAiU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7
CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0
LCAiU2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBm
aW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNj
cmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQu
Iik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBl
Y3RlZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIp
OwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQK
aW5kZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMwNjBiZTY4NjQyY2IwM2FiNy4uNDlmNGFmMmMx
Mzg0YTQ2NjdiN2ZiZThiYzhlMWZlOGQ3ZWZlNTA5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDUgKzEsMTcgQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCi1U
ZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qg
b2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05TT0xFIE1FU1NBR0U6IGEsYixjCitDT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFNldF0K
K0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgTWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FH
RTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09O
U09MRSBNRVNTQUdFOiBjb3VudCBvZiAxCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0
XQorQ09OU09MRSBNRVNTQUdFOiBoZWxsbworQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVj
dF0KK1Rlc3QgdGhhdCBJbmplY3RlZCBTY3JpcHQgb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFi
bGUgYnkgdXNlciBjb2RlLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZQpAQCAtOCwzICsyMCwzOCBAQCBQQVNTOiBQYXVzZWQuCiBQQVNTOiBSZXN1
bWVkLgogUEFTUzogQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBz
aG91bGQgYmUgMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2Vy
dmFibGU6U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNT
OiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291
bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgor
UEFTUzogUmVzdW1lZC4KK1BBU1M6IE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxs
IGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzog
UmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxk
IGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxl
OlNldC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzog
U2V0LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVz
ZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5
LnByb3RvdHlwZS5pbmRleAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFy
cmF5LnByb3RvdHlwZVsiNDIiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpPYmplY3QucHJvdG90eXBlLmRl
c3RydWN0dXJlZFByb3BlcnR5CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzog
T2JqZWN0LnByb3RvdHlwZVsiZmV0Y2hTdGFydCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2
YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZh
YmxlLmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4u
ZTFiNmI0NDdlY2Y3MDk4OWRkOTUwMTZmZWQ2MTI4NzIyMDRmYjI0ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAg
LTMsMzIgKzMsNTYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgot
Ly8gTk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBhZGRyZXNzZWQgYnk6Ci0v
LyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0ZXJhdGlvbigpIHsKK2Z1
bmN0aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0
eSwgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKKyAgICB0cnkgewogICAgIGxl
dCBjYWxsQ291bnQgPSAwOwotCi0gICAgY29uc3Qgb3JpZ2luYWxJdGVyYXRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3Ip
OwotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVy
YXRvciwgeworICAgIAorICAgIGxldCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBwcm9wZXJ0eSk7CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHsKICAgICAgICAgZ2V0KCkg
ewogICAgICAgICAgICAgKytjYWxsQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxJ
dGVyYXRvci52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFByb3BlcnR5RGVzY3Jp
cHRvcj8udmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCBhcnJheSA9IFtdOwot
CiAgICAgZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFuIG9iamVjdC4KICAgICBjb25zb2xl
LmxvZyh7YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVzZSBBcnJheSBJdGVyYXRvciBhdCBs
ZWFzdCBvbmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAgIGludm9rZU92ZXJy
aWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uKCk7CisKKyAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eURlc2Ny
aXB0b3IpCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5
LCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQorICAgICAgICBkZWxldGUg
cHJvdG90eXBlW3Byb3BlcnR5XTsKKworICAgIHJldHVybiBjYWxsQ291bnQ7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0KK30KKworZnVuY3Rpb24g
cmVwbGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0
RnVuY3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBsZXQgb3JpZ2lu
YWxPYmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAgICAgICR7b2Jq
ZWN0U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50OworICAgICAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAg
YCk7CisKKyAgICBkZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgorICAgIGNv
bnNvbGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAg
ICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb24oKTsKIAorICAgIGV2YWwoYCR7b2JqZWN0
U3RyaW5nfSA9IG9yaWdpbmFsT2JqZWN0O2ApOworICAgIGNvbnNvbGUubG9nKCJjb3VudCBvZiAi
ICsgY2FsbENvdW50KTsKICAgICByZXR1cm4gY2FsbENvdW50OwogfQogCkBAIC0zNiwzMCArNjAs
MTQ4IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZSIpOwogCi0gICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9uIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENh
c2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5cGVTdHJpbmcsIHByb3BlcnR5U3RyaW5nLCBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNlQW5kVGVzdFByb3RvdHlwZVByb3BlcnR5KCR7
cHJvdG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0cmluZ30sICR7aW52b2tlT3ZlcnJpZGRlblBy
b3BlcnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2AsIChlcnJvciwgcmVzdWx0KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtw
cm90b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJpbmd9XSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2lu
Z2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3Vt
ZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmplY3RUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRp
b24sIG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9ufSkgeworICAg
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0T2Jq
ZWN0KCIke29iamVjdFN0cmluZ30iLCAke2ludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50
b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke29iamVjdFN0cmluZ30gY2Fs
bCBjb3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBh
dXNlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
LmNhdGNoKHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0
Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnBy
b3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBp
dGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0g
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0aW9uKClgLCAoZXJyb3IsIHJlc3VsdCkgPT4g
ewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAi
QXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4i
KTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkgaXRlcmF0aW9uIGluIEluamVjdGVkIFNjcmlw
dCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAi
QXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0
b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4gewor
ICAgICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwgImIiLCAiYyJdOworICAgICAgICAgICAgZm9y
IChsZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGFycmF5KTsK
KyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBl
W1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNldCBpdGVyYXRpb24g
aW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBw
cm90b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6
ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5j
dGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQoWyJhIiwgImIiLCAi
YyJdKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0KKworICAgICAgICAgICAg
Y29uc29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlw
ZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2
YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlv
bjogIk1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2
YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJNYXAucHJvdG90eXBlIiwKKyAgICAg
ICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVy
cmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IG1hcCA9IG5l
dyBNYXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0sIFsiYyIsICIzIl1dKTsKKyAgICAgICAgICAg
IGZvciAobGV0IHggb2YgbWFwKSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2cobWFwKTsK
KyAgICAgICAgfSwKICAgICB9KTsKIAorICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5
cGUucHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBT
Y3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmlu
ZzogIkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIi
LAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAg
ICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFk
ZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hv
dWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5w
cm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0
IHNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAg
ICB9KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVk
U2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcg
aW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBv
YmplY3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVu
Y3Rpb246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAg
ICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5p
bmRleCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT3ZlcnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkg
cHJvdG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwK
KyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJv
cGVydHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAg
ICBhcnJheS5wdXNoKCJoZWxsbyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOwor
ICAgICAgICAgICAgYXJyYXlbNDJdOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJv
dG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJvcGVydHkiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVjdHVyaW5nIChmb3IgYG9wdGlvbnNgIHBhcmFt
ZXRlcnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAg
ICAgICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3Bl
cnR5U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJv
cGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0
OworICAgICAgICB9LAorICAgIH0pOworCisKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFy
ZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgorPHA+VGVzdCB0aGF0IEluamVjdGVk
IFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJl
YTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJi
NTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9y
ZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcg
QEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsg
ZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAog
ICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29k
ZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2Fs
bEAiCisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUg
Y29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3
MCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNh
dGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjog
InN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAi
ZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZh
bEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUg
Y29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0K
ICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNT
SU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxp
dFRleHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAg
ICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25h
dGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0
aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5A
W25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAgICAg
ewogICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVh
YzBmYmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIz
MDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzog
Q2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAg
ICAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRl
cmVkPiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAgICAi
Y29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVk
PiIsCisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAg
ICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApA
QCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJm
dW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlw
dElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJl
ZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQog
ICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4
IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAi
IiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJl
ZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJiMzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4
ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApA
QCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gVG8gYXZvaWQgZmxh
a2luZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2UgYWx3YXlzIGV4cGVjdC4KICAgICBjb25z
dCBldmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5kZXJpbmdGcmFtZSIsICJDb25zb2xlUHJv
ZmlsZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9uQ2FsbCJdKTsKKworICAgIC8vIFRoZSBp
bnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQgbGlu
ZSBudW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLiBXZSBvbmx5CisgICAg
Ly8gd2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZvciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZy
YW1lcyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGluZS9jb2x1bW4gbnVtYmVycyByZW1haW4g
c3RhYmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5ndGggPSAwOworICAgIGxldCB1cmxMZW5n
dGggPSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBp
ZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAgICAgICAgICAgZnVuY3Rpb25OYW1lTGVu
Z3RoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAiY2hpbGRyZW4iICYmIHRoaXMuc3RhcnRU
aW1lKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihlID0+IGV2ZW50QWxsb3dsaXN0
LmhhcyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9PT0gInN0YXJ0VGltZSIgfHwga2V5ID09
PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8IGtleSA9PT0gImZyYW1lSWQiKQog
ICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgaWYgKChrZXkgPT09ICJs
aW5lTnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVu
Z3RoICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisg
ICAgICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAgICAgICAgdXJsTGVuZ3RoID0gdmFsdWUu
bGVuZ3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJsIiB8fCBrZXkgPT09ICJzY3JpcHROYW1l
IikKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wvaW5z
cGVjdG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5l
LWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggMjVmOTMwZTI5MjFmODg5YzE2NDc3ZmJmYTEwMmEy
ZDFjNzY3NzY4MC4uNTZkMTg0MDhiZGRlOWE3YjA3MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5l
LWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTYwLDggKzYwLDggQEAg
UEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAog
ICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIs
Ci0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6
IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNv
bHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZy
YW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCArMTEzLDggQEAgUEFTUzogQ2FwdHVyaW5n
IHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAidXJsIjogIiIsCiAg
ICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAibGluZU51bWJlciI6IDE0MiwK
LSAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVk
PiIsCisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgfQogICBdLAogICAi
ZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJp
bmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwK
ICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQy
LAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458802</attachid>
            <date>2022-05-04 08:53:40 -0700</date>
            <delta_ts>2022-05-04 11:04:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152294-20220504085340.patch</filename>
            <type>text/plain</type>
            <size>157115</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDM5MTg2YjI1NmZmNjlmZmE3MWMzZGMxNTVmNzRhNzg2MTAyMTRhLi43YTkzZWNhZTlmNzUyZTQ2
NTAwYTc5YWNlNzc2YTBkMDQyODYyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBqc21pbiB0byAzLjAuMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGY5ZDlhYWU2YmEyOTM0OGRmOGViZWVhZWQwNzUzZDE0MDg0OTZkM2MuLjMz
Y2RkNzRlY2MyMjIzNzlhN2FlNjc0N2E0MjQ0Zjk0NWNhMjk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
LSBCdWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBh
cyBhIHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAg
ICAgLSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9m
IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3Bl
cnRpZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1
c2UgYSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNl
ci1wcm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFu
cyB0aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRo
ZW0gaW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1
cHBvcnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5v
IG1vcmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTA0ICBaaXJhbiBTdW4g
IDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gU2VsZWN0aW9uIGFm
dGVyIHR5cGUgY2hhbmdlIG5lZWRzIHRvIGZvbGxvdyBIVE1MIHNwZWNpZmljYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZl
YWI4NmQyNDFjNTFhZDg5Li5lNmVkN2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21f
Y29tbWFuZCgKQEAgLTE0MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NC
dWlsdGlucy5oCiApCiAKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQot
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pz
bWluLnB5IDwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyA+PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgKLSAgICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgpCi0KIGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9U
IEVOQUJMRV9DX0xPT1ApCiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCA4ZDU0MGJkNTE5MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYx
ZDMwNjA3ZThhNmZiNTE0M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsy
MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9HZW5lcmF0ZWRXYXNtT3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNt
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5p
dFdhc20uYXNtCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4
YTFiYTEzYzA5NWY3ZTE1NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0
ZjBkNDRlNWIzNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTY4LDcgKzY4LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFT
Y3JpcHRDb3JlKS9TY3JpcHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVk
U2NyaXB0U291cmNlLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmgg
XAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvV2ViQXNzZW1ibHkuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRl
cGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywg
c28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwp
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5w
bCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZp
bmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4g
Li9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkk
KFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlw
dFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BD
T0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4
YjIzMGY1OTI3MWNmZmQxNy4uMjRkNGJlODZiOWMxNWZkYzZkMjdkNzNiYTkwZWZhODk5MDM0ZDJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJ
CUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0Mw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oICovOyB9OwogCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5oICovOyB9OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICov
OyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVD
OTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAw
RjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0Qy
MTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NTEsNiArMzc1MCw3IEBACiAJ
CTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRG
OUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQy
ODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmlu
aXRpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBl
RGVmaW5pdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBD
NEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwNyw3ICs0NzA3LDYgQEAKIAkJ
QTUxM0U1QkMxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1
QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5q
ZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkU2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
Mjg0LDcgKzcyODMsNiBAQAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJ
bml0Qnl0ZWNvZGVzLmFzbSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CkBAIC05MzYzLDYgKzkzNjEsNyBAQAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVE
MDA1NDUyNEQgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQx
ODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMw
MDAzNzFBMjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1
RDlCMTAwOURCMUVGIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2
NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUw
NDUxQjFDMjVCNEIxMDBCQjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTIs
NyArMTA0NTEsNiBAQAogCQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3
QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1t
aW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1
QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDhBN0JGMDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyMzgwLDcgKzEyMzc4LDYgQEAKIAkJCQk1MzZCMzE3QTFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTEwNy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyNzFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzZCMzEyQzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlFMzExMzVDQTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJC
YXNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTExMC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE4
MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEyNDA5LDcgKzEyNDA2LDYgQEAKIAkJCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTEzNS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzVDMjQ2QzFGN0ExNzc4
MDA2RUM0MEUgLyogVW5pZmllZFNvdXJjZTEzNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBB
NjZCQzFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFMzExMzVDQjI4MUI1QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxMzguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UxMzkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkYxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MjQyMCw3ICsxMjQxNiw2IEBACiAJCQkJNTMwQTY2QzQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjIyNjhGQkM3QjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUUy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRTMxMTM1QzkyODFCNUIwMDAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291
cmNlcyAqLywKIAkJCQk1MzhGMTVFNzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0
OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVGMDI2OEZCQkI2MDBENjAxQzQgLyogVW5p
ZmllZFNvdXJjZTE0OS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFQjI2OEZCQkI2MDBE
NjAxQzQgLyogVW5pZmllZFNvdXJjZTE1MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDMwLDYg
KzEyNDI1LDkgQEAKIAkJCQk1MzhGMTVFQTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFRjI2OEZCQkI2MDBENjAxQzQgLyog
VW5pZmllZFNvdXJjZTE1NS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjVDOUNERjIyMDI4NTgz
MDA4MkRCRkQgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MTEzNUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5j
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9y
bWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVk
YzE1Y2NhZGY1ZjAwYTZmMmY0OTAxMDczMDE5NzlhODZkMTY4Ny4uMzg3NGRkNDJmMjc2MGYzNGU4
NmQ4ZGM4MTg2MWE1MmVjODhmZTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1
Miw3IEBAIGZ1bmN0aW9uSXNBc3luY1JlZ0V4cCA9IHJlLmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1
bmN0aW9uIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5j
b21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxM
KQogZnVuY3Rpb25PdmVycmlkZGVuTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJp
ZGRlbk5hbWU9KFwiLitcIikkIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/
Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxU
SUxJTkUgfCByZS5ET1RBTEwpCitmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBp
bGUociIsXHMqKD8hW157fV0qXH0pIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0
aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICAgICAgaXNfbmFrZWRfY29uc3RydWN0b3IgPSBm
dW5jdGlvbk5ha2VkQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBO
b25lCiAgICAgICAgIGlmIGlzX25ha2VkX2NvbnN0cnVjdG9yOgogICAgICAgICAgICAgaXNfY29u
c3RydWN0b3IgPSBUcnVlCi0gICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGlu
IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxp
dCgnLCcpXQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlcnNTcGxpdHRlci5zcGxpdChmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxs
KGZ1bmN0aW9uX3NvdXJjZSlbMF0pXQogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0g
MDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBj
bGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAg
ICAgICAgc3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4g
bWF0Y2hlczoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAg
aWYgc3RhcnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVu
ZCA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAg
ICAgICAgICAgZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAg
ICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0
aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAg
ICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q2hhcmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5n
Q2hhcmFjdGVyOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAg
ICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3Rl
ciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAg
IGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFj
dGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVy
ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAg
IyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFp
bmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAg
ICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2Fu
IGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAg
ICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVz
ZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAg
ICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxs
IHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAg
ICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0
IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAg
ICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4K
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlm
IGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAx
CisgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAg
ICAgICAgICAgICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlv
blN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBm
dW5jdGlvbkJvdW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODg4YzhiYWU0MzVmODg2M2Y0ODBkZDgxZTQ1
NTY2ZDc4YjYxZWZhNy4uNzA5OTI2YWU3Mzg2OTA3ZGJkNDliMWQwZjVkNTM2MTVmMzRlODVlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IHBhcmFtZXRlcnNTdGFydCArIDE7CiAgICAgICAg
IHVuc2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJvb2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9
IGZhbHNlOwogICAgICAgICBib29sIHNhd09uZVBhcmFtID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
aGFzUmVzdFBhcmFtID0gZmFsc2U7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xMTMsNyAr
MTE0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnKScpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlm
IChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09
ICd9JykKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CisgICAg
ICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNr
ZXRzKSB7CisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKICAgICAgICAgICAgICAgICArK2NvbW1h
czsKICAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFy
YWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFl
NzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uNzI5MWZhMmQ1YjJmYjFhMTc1N2UxZTEw
NWNlYzMxYjk0Y2E0ZGQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24p
IFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhqc29uUGFyc2UpIFwKKyAgICBt
YWNybyhqc29uU3RyaW5naWZ5KSBcCisgICAgbWFjcm8oU3RyaW5nKSBcCisgICAgbWFjcm8oc3Vi
c3RyKSBcCisgICAgbWFjcm8oZW5kc1dpdGgpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8o
Z2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAgbWFjcm8oaGFzT3duKSBcCisgICAgbWFjcm8o
aW5kZXhPZikgXAorICAgIG1hY3JvKHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCmlu
ZGV4IDI2M2U0M2JmYzBlODMxMTYwNTAyYTk4NWUyNDFhZTA3Yzc3ZWUyZjQuLmIxOTg2ZTg4NTMw
Y2VjNjYyYzE5ZmZlYWU3NWEzNGI3NWU4NmZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwpAQCAtNTEsMyArNTEsNDMgQEAgZnVu
Y3Rpb24gcGVyZm9ybUl0ZXJhdGlvbihpdGVyYWJsZSkKICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KHJlc3VsdCwgaW5kZXgrKywgaXRlbS52YWx1ZSk7CiAgICAgfQogfQorCitAZ2xvYmFsUHJpdmF0
ZQorZnVuY3Rpb24gd3JhcHBlZEl0ZXJhdG9yKGl0ZXJhdG9yKQoreworICAgIGxldCB3cmFwcGVy
ID0gQE9iamVjdC5AY3JlYXRlKG51bGwpOworICAgIHdyYXBwZXIuQEBpdGVyYXRvciA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworQGds
b2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5TZXRJdGVyYWJsZShzZXQpCit7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIAorICAgIGlmICghQGlzU2V0KHNldCkpCisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiYnVpbHRpblNldEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1TZXQgb2JqZWN0LiIp
OworCisgICAgLy8gVXNpbmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMg
dGhhdCB0aGUgc3ltYm9sIGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5v
dCBwcm90ZWN0CisgICAgLy8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVu
IHJlcGxhY2VkLiBGb3IgU2V0cywgYEB2YWx1ZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9u
IG9yaWdpbmFsbHkKKyAgICAvLyBwbGFjZWQgYXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0
IGl0ZXJhdG9yRnVuY3Rpb24gPSBzZXQuQHZhbHVlczsKKyAgICAKKyAgICByZXR1cm4gQHdyYXBw
ZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKHNldCkpOworfQorCitAZ2xvYmFsUHJp
dmF0ZQorZnVuY3Rpb24gYnVpbHRpbk1hcEl0ZXJhYmxlKG1hcCkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisgICAgCisgICAgaWYgKCFAaXNNYXAobWFwKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJidWlsdGluTWFwSXRlcmFibGUgY2FsbGVkIHdpdGggbm9uLU1hcCBvYmplY3QuIik7CisKKyAg
ICAvLyBVc2luZyB0aGUgcHJpdmF0ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRo
ZSBzeW1ib2wgaXRzZWxmIGhhcyBub3QgYmVlbiBtb2RpZmllZCwgYnV0IGRvZXMgbm90IHByb3Rl
Y3QKKyAgICAvLyBhZ2FpbnN0IHRoZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5nIGJlZW4gcmVwbGFj
ZWQuIEZvciBNYXBzLCBgQGVudHJpZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdp
bmFsbHkKKyAgICAvLyBwbGFjZWQgYXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJh
dG9yRnVuY3Rpb24gPSBtYXAuQGVudHJpZXM7CisKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRv
cihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKG1hcCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhi
OTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMy4uYjg2NTNlODY1Njk5MzFmY2JiNmUyZjRiNDI1NDhj
NGIwYzZlMTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
a1RpbWVDb25zdGFudC5oCkBAIC0xMjAsNiArMTIwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNSZW1vdGVG
dW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCisgICAgdihq
c29uUGFyc2UsIG51bGxwdHIpIFwKKyAgICB2KGpzb25TdHJpbmdpZnksIG51bGxwdHIpIFwKKyAg
ICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09O
U1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJm
MTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3
YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAK
KyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVk
U2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0
TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKElu
amVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQ
dHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50
IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGludCBpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNl
LCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247
Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJv
bm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZh
bHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8q
IGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlw
dCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3Bl
LmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFmdW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9u
VmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpA
QCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9u
Pj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChn
bG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFy
Z3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4g
cmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBAIC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3Jp
cHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQg
aWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVS
ZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9i
YWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAgIGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAg
IGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJv
cik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5l
QW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hl
biBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgp
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMo
Ik1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9iamVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMo
IiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXgg
MWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJm
MjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1f
c2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRlOgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNv
dXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgaW50IGlkKTsKIAogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25t
ZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5
YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdmZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVu
c3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAg
ICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxp
bmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3
aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwg
bmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmpl
Y3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVs
ZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVu
dmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291
cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5q
ZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAg
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBp
bmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVs
ZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgp
ID4gMCkKICAgICAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5l
LCBjb2x1bW4pOwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcg
J2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0
YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmpl
Y3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRl
eCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1
NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJs
aWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9kdWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBT
dHJpbmcgc291cmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBp
bmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5k
ZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJmMWViNzFiOGM0OTI1ZjZjNC4uMDA4MDM2NjYyOGM2
NmE1YmUwNDAyNGFhNTYwZTBkODEyYzI3ODg0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywzOCBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKC8qIGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUyLCAuLi4gKi8p
Cit7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJSAyICE9PSAwKQorICAgICAgICBAdGhyb3dS
YW5nZUVycm9yKCJgY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZWAgcmVxdWlyZXMgdGhhdCBl
YWNoIGtleSBhcmd1bWVudCBiZSBmb2xsb3dlZCBieSBhIHZhbHVlLCByZXN1bHRpbmcgaW4gYW4g
ZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpOworCisgICAgbGV0IG9iamVjdCA9IEBPYmplY3Qu
QGNyZWF0ZShudWxsKQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSArPSAyKQorICAgICAgICBvYmplY3RbYXJndW1lbnRzW2ldXSA9IGFyZ3VtZW50c1tpICsgMV07
CiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qs
IGluamVjdGVkU2NyaXB0SWQpIHsKKyAgICByZXR1cm4gb2JqZWN0OworfQogCi0vLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0
ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0LWlucworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5
V2l0aG91dFByb3RvdHlwZSgvKiB2YWx1ZTEsIHZhbHVlMiwgLi4uICovKQoreworICAgIGxldCBh
cnJheSA9IG5ldyBAQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7CisgICAgYXJyYXkuX19wcm90b19f
ID0gbnVsbDsKKyAgICAKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7
ICsraSkKKyAgICAgICAgQGFycmF5UHVzaChhcnJheSwgYXJndW1lbnRzW2ldKTsKKyAgICAKKyAg
ICByZXR1cm4gYXJyYXk7Cit9CiAKLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0BnbG9i
YWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkKK3sK
IAogZnVuY3Rpb24gdG9TdHJpbmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAg
ICByZXR1cm4gQFN0cmluZyhvYmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9u
KG9iaikKQEAgLTkzLDYgKzExNCwxNSBAQCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQorICAgIAorZnVuY3Rpb24gY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHNPYmplY3QpIHsK
KyAgICBsZXQgaXRlcmF0b3JGdW5jdGlvbiA9IGFyZ3VtZW50c09iamVjdC5AQGl0ZXJhdG9yOwor
ICAgIHJldHVybiBAd3JhcHBlZEl0ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoYXJndW1l
bnRzT2JqZWN0KSk7Cit9CisKK2Z1bmN0aW9uIG1heChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBi
ID8gYSA6IGI7Cit9CiAKIC8vIC0tLS0tLS0KIApAQCAtMTAxLDEyICsxMzEsMTIgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAg
ICAgewogICAgICAgICB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMu
X2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5h
bWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMu
X21vZHVsZXMgPSB7fTsKKyAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBO
YW1lID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fb2Jq
ZWN0R3JvdXBzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhp
cy5fbW9kdWxlcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRo
aXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRz
ID0gW107CisgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUoKTsKICAgICB9CiAKICAgICAvLyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCkBAIC0x
MTUsNyArMTQ1LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAs
IHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgKCkgPT4gewogICAg
ICAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25D
YWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5l
dmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0
cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuQGFwcGx5KEB1
bmRlZmluZWQsIGFyZ3MpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTEzNiwxNiArMTY2LDE2
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3Rh
bmNlb2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9m
IEBQcm9taXNlKSkgewogICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlk
IGlzIG5vdCBhIFByb21pc2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJu
T2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAg
ICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3Jv
dXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3Rv
dHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAg
ICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91
cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwog
CiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3Nh
dmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5LDcgKzE4OSw3IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9
PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24s
IHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9i
amVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4o
cmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAKICAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENh
bGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkK
QEAgLTE4MCwxNCArMjEwLDE0IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKIAotICAgICAgICBsZXQg
cmVzb2x2ZWRBcmdzID0gW107CisgICAgICAgIGxldCByZXNvbHZlZEFyZ3MgPSBAY3JlYXRlQXJy
YXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGlmIChhcmdzKSB7CiAgICAgICAgICAgICBs
ZXQgY2FsbEFyZ3MgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7CiAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0gdGhp
cy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJnc1tpXSk7CiAgICAgICAgICAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5NywxMCArMjI3LDEwIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMg
IT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9u
IGRvZXMgbm90IGV2YWx1YXRlIHRvIGEgZnVuY3Rpb24iOwogCi0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVz
dWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3Mp
LCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKLSAgICAg
ICAgICAgIH07CisgICAgICAgICAgICByZXR1cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAg
ICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2
ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcp
LAorICAgICAgICAgICAgKTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2NyZWF0ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7CiAgICAgICAg
IH0KQEAgLTIzMywxMyArMjYzLDIyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywgZmV0
Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0
IGNvbGxlY3Rpb25Nb2RlID0gb3duUHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rp
b25Nb2RlLk93blByb3BlcnRpZXMgOiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQ
cm9wZXJ0aWVzOwotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwg
Y29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXd9
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJmZXRj
aFN0YXJ0IiwgZmV0Y2hTdGFydCwKKyAgICAgICAgICAgICJmZXRjaENvdW50IiwgZmV0Y2hDb3Vu
dCwKKyAgICAgICAgICAgICJnZW5lcmF0ZVByZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsCisgICAg
ICAgICkpOwogICAgIH0KIAogICAgIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhvYmplY3RJZCwg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAg
bGV0IGNvbGxlY3Rpb25Nb2RlID0gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJv
cGVydGllcyB8IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk5hdGl2ZUdldHRlclByb3Bl
cnRpZXM7Ci0gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xs
ZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldywgbmF0
aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlfSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9w
ZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAiZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAg
ICAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQsCisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3
IiwgZ2VuZXJhdGVQcmV2aWV3LAorICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIs
IHRydWUsCisgICAgICAgICkpOwogICAgIH0KIAogICAgIGdldEludGVybmFsUHJvcGVydGllcyhv
YmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3KQpAQCAtMjU2LDcgKzI5NSw3IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGRlc2NyaXB0b3Jz
ID0gdGhpcy5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CiAgICAgICAgIGlm
ICghZGVzY3JpcHRvcnMpCi0gICAgICAgICAgICByZXR1cm4gW107CisgICAgICAgICAgICByZXR1
cm4gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgZGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBkZXNj
cmlwdG9yID0gZGVzY3JpcHRvcnNbaV07CkBAIC0yODAsMTIgKzMxOSwxMyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGxldCBlbnRyaWVzID0gdGhpcy5fZW50cmllcyhvYmplY3QsIEluamVjdGVkU2NyaXB0
SG9zdC5zdWJ0eXBlKG9iamVjdCksIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwotICAgICAgICBy
ZXR1cm4gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgZW50cnkgPSBl
bnRyaWVzW2ldOwogICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRl
KGVudHJ5LnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAg
IGlmICgia2V5IiBpbiBlbnRyeSkKICAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVP
YmplY3QuY3JlYXRlKGVudHJ5LmtleSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBlbnRyaWVzOwogICAgIH0KIAogICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNP
TikKQEAgLTMwNiwxMCArMzQ2LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAg
ICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOworICAgICAgICAgICAgQGFycmF5UHVz
aChyZXN1bHQsIG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxs
RnJhbWUpKTsKICAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAg
ICAgIH0gd2hpbGUgKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjYs
NyArMzY2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICB3cmFwSlNPTlN0cmluZyhqc29uU3RyaW5nLCBncm91cE5hbWUsIGdlbmVyYXRlUHJldmlldykK
ICAgICB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0
KEpTT04ucGFyc2UoanNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3
KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoQGpzb25QYXJzZShqc29uU3Ry
aW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICB9IGNhdGNo
IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CkBAIC0zNDMsMTIgKzM4Mywx
MiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAg
IGxldCBjb2x1bW5OYW1lcyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBlb2YgY29sdW1ucyA9PT0g
InN0cmluZyIpCi0gICAgICAgICAgICBjb2x1bW5zID0gW2NvbHVtbnNdOworICAgICAgICAgICAg
Y29sdW1ucyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoY29sdW1ucyk7CiAKICAgICAg
ICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAiYXJyYXkiKSB7
Ci0gICAgICAgICAgICBjb2x1bW5OYW1lcyA9IFtdOworICAgICAgICAgICAgY29sdW1uTmFtZXMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgY29sdW1uTmFt
ZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7CisgICAgICAgICAgICAgICAgQGFycmF5UHVz
aChjb2x1bW5OYW1lcywgdG9TdHJpbmcoY29sdW1uc1tpXSkpOwogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUodGFibGUsICJjb25zb2xlIiwgZmFsc2UsIHRy
dWUsIGNvbHVtbk5hbWVzKTsKQEAgLTM5Niw3ICs0MzYsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lID09PSAi
Y29uc29sZSIpIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0OwogICAgICAg
ICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAgICAgICAgdGhpcy5f
c2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgZ3Jv
dXAgPSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKQEAgLTQyOSwxNCArNDY5
LDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IHJldHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAgIH0KIAotICAgIGluamVjdE1vZHVsZShu
YW1lLCBzb3VyY2UsIGhvc3QpCisgICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVsZUZ1bmN0aW9u
LCBob3N0KQogICAgIHsKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZhbHNlOwogCi0g
ICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgi
KCIgKyBzb3VyY2UgKyAiKSIpOwogICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1bmN0aW9uICE9
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5zcGVjdG9yOiBh
IGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxlIjsKLSAgICAgICAgbW9kdWxl
RnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVj
dGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgaG9zdCk7
CisgICAgICAgIG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgKKyAgICAgICAgICAgICJSZW1vdGVPYmplY3QiLCBSZW1vdGVPYmplY3QsCisgICAg
ICAgICAgICAiQ29tbWFuZExpbmVBUEkiLCBDb21tYW5kTGluZUFQSSwKKyAgICAgICAgKSwgaG9z
dCk7CiAKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7CiAgICAgfQpAQCAtNDcw
LDEwICs1MTIsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgewogICAgICAgICAgICAgbGV0IGdyb3VwID0g
dGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CiAgICAgICAgICAgICBpZiAoIWdy
b3VwKSB7Ci0gICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAgICAgICBncm91
cCA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgICAgICB0aGlz
Ll9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGdyb3Vw
LCBpZCk7CiAgICAgICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXSA9IG9iamVj
dEdyb3VwTmFtZTsKICAgICAgICAgfQogCkBAIC00ODgsOCArNTMwLDcgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9mYWxsYmFja1dyYXBwZXIob2Jq
ZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwotICAgICAgICByZXN1bHQudHlw
ZSA9IHR5cGVvZiBvYmplY3Q7CisgICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgidHlwZSIsIHR5cGVvZiBvYmplY3QpOwogICAgICAgICBpZiAoaXNQcmlt
aXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0gb2JqZWN0Owog
ICAgICAgICBlbHNlCkBAIC01MTUsNyArNTU2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZEFyZzsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybiBAdW5kZWZp
bmVkOwogICAgIH0KIAogICAgIF9jcmVhdGVUaHJvd25WYWx1ZSh2YWx1ZSwgb2JqZWN0R3JvdXAp
CkBAIC01MjQsMTAgKzU2NSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICB0cnkgewogICAgICAgICAgICAgcmVtb3RlT2JqZWN0LmRlc2NyaXB0
aW9uID0gdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSk7CiAgICAgICAgIH0gY2F0Y2ggeyB9Ci0g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB3YXNUaHJvd246IHRydWUsCi0gICAgICAgICAg
ICByZXN1bHQ6IHJlbW90ZU9iamVjdAotICAgICAgICB9OworICAgICAgICByZXR1cm4gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAid2FzVGhyb3duIiwgdHJ1ZSwK
KyAgICAgICAgICAgICJyZXN1bHQiLCByZW1vdGVPYmplY3QsCisgICAgICAgICk7CiAgICAgfQog
CiAgICAgX2V2YWx1YXRlQW5kV3JhcChldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwg
b2JqZWN0R3JvdXAsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTU1MiwxMCArNTkz
LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKIAotICAgICAg
ICAgICAgbGV0IHJldHVybk9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZh
bHNlLAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCks
IG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAg
ICB9OworICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAg
ICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9iamVjdEdyb3Vw
LCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAg
ICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCkKICAgICAg
ICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMuX3NhdmVkUmVz
dWx0SW5kZXg7CkBAIC01NzEsNyArNjEyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKICAgICAg
ICAgaWYgKGluY2x1ZGVDb21tYW5kTGluZUFQSSkKICAgICAgICAgICAgIGNvbW1hbmRMaW5lQVBJ
ID0gdGhpcy5jcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChpc0V2YWxPbkNhbGxGcmFtZSA/IG9i
amVjdCA6IG51bGwpOwotICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLmNhbGwob2JqZWN0LCBl
eHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CisgICAgICAgIHJldHVybiBldmFsRnVuY3Rpb24u
QGNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CiAgICAgfQogCiAgICAg
X2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCkBAIC02MDcsNyArNjQ4
LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAg
Ly8gQWx3YXlzIGluY2x1ZGUgX19wcm90b19fIGF0IHRoZSBlbmQsIGJ1dCBvbmx5IGZvciB0aGUg
Zmlyc3QgZmV0Y2guCiAgICAgICAgIGxldCBpbmNsdWRlUHJvdG8gPSAhc3RhcnQ7CiAKLSAgICAg
ICAgbGV0IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IEBjcmVh
dGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgdGhpcy5fZm9yRWFjaFByb3BlcnR5
RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikgPT4gewogICAg
ICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIC0tc3RhcnQ7CkBAIC02
MjIsMTMgKzY2MywxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRl
KGRlc2NyaXB0b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmll
dyk7CiAgICAgICAgICAgICBpZiAoInN5bWJvbCIgaW4gZGVzY3JpcHRvcikKICAgICAgICAgICAg
ICAgICBkZXNjcmlwdG9yLnN5bWJvbCA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci5z
eW1ib2wsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRl
c2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRv
cik7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYgZGVzY3JpcHRv
cnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJvdG9fXyIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
U3RvcDsKIAogICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGgg
Pj0gY291bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wIDogSW5q
ZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAgICAgfSwge25h
dGl2ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7CisgICAgICAgIH0sIEBjcmVhdGVP
YmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVl
cyIsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlcywKKyAgICAgICAgICAgICJpbmNsdWRlUHJvdG8iLCBp
bmNsdWRlUHJvdG8sCisgICAgICAgICkpOwogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAg
ICAgfQogCkBAIC02MzgsMTMgKzY4MiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWludGVybmFsUHJvcGVydGllcykKICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAg
ICBsZXQgZGVzY3JpcHRvcnMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgICAgICBsZXQgcHJvcGVydHkgPSBpbnRlcm5hbFByb3BlcnRpZXNbaV07Ci0gICAg
ICAgICAgICBsZXQgZGVzY3JpcHRvciA9IHtuYW1lOiBwcm9wZXJ0eS5uYW1lLCB2YWx1ZTogcHJv
cGVydHkudmFsdWV9OworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFtZSIsIHByb3BlcnR5Lm5hbWUs
CisgICAgICAgICAgICAgICAgInZhbHVlIiwgcHJvcGVydHkudmFsdWUsCisgICAgICAgICAgICAp
OwogICAgICAgICAgICAgaWYgKGNvbXBsZXRlRGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICBk
ZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVz
Y3JpcHRvcik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9y
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAgfQpAQCAtNjU0
LDE1ICs3MDEsMTggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkgPT09ICJwcm94
eSIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBu
ZXcgU2V0OworICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0OwogCiAgICAgICAg
IC8vIEhhbmRsZWQgYmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAgbmFtZVByb2Nl
c3NlZC5hZGQoIl9fcHJvdG9fXyIpOworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQoIl9fcHJv
dG9fXyIpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2NyaXB0b3IobmFt
ZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5hdGl2ZUJpbmRp
bmdHZXR0ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
bGV0IGZha2VEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBvYmplY3RbbmFtZV19OworICAgICAg
ICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKAorICAgICAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICJ2YWx1ZSIsIG9iamVjdFtuYW1lXSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAg
ICAgICAgIGlmIChkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlw
dG9yLndyaXRhYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iud3Jp
dGFibGUgPSB0cnVlOwpAQCAtNjc4LDExICs3MjgsMTUgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQogICAgICAg
ICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAgICAgICAgICAg
ICAgICAgLy8gU2lsZW5jZSBhbnkgcG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9uIGV4Y2VwdGlv
bnMgY3JlYXRlZCBmcm9tIGFjY2Vzc2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRoIGEgd3Jvbmcg
dGhpcyBvYmplY3QuCi0gICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGlu
c3RhbmNlb2YgUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRX
aXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKLSAgICAgICAg
ICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IudmFsdWUuY2F0Y2goZnVuY3Rpb24oKXt9KTsKKyAg
ICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBAUHJvbWlz
ZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVy
VHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZmFr
ZURlc2NyaXB0b3IudmFsdWUuQGNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZha2VEZXNjcmlwdG9yOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IGUsIHdhc1Rocm93
bjogdHJ1ZX07CisgICAgICAgICAgICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IEBjcmVhdGVP
YmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIsIGUsCisgICAgICAgICAgICAgICAgICAgICJ3
YXNUaHJvd24iLCB0cnVlLAorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgaWYg
KGlzT3duUHJvcGVydHkpCiAgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRvci5pc093
biA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKQEAgLTcxMCwxNSArNzY0LDE1
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAg
ZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Qcm9wZXJ0eSkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHByb3BlcnR5TmFt
ZSkpCisgICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5TmFtZSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
Q29udGludWU7CiAKLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsKIAogICAgICAg
ICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgbGV0
IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUgOiBudWxsOwog
Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IobywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9i
amVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
ICAgICBpZiAoIWRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQmFkIGRl
c2NyaXB0b3IuIENhbiB3ZSBnZXQgaGVyZT8KICAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sg
dG8gdmVyeSByZXN0cmljdGl2ZSBzZXR0aW5ncy4KQEAgLTcyNyw3ICs3ODEsNyBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAobmF0aXZlR2V0dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1cbn0iKSB8fCAo
IWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpICYmICFk
ZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoQFN0cmluZyhkZXNjcmlwdG9yLmdldCkuQGVuZHNXaXRoKCJbbmF0
aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBAT2JqZWN0LkBoYXNPd24oZGVz
Y3JpcHRvciwgImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBAT2JqZWN0LkBoYXNPd24oZGVz
Y3JpcHRvciwgInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9wZXJzIG1h
eSBjcmVhdGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGllbnQ6CiAg
ICAgICAgICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4
LCAicCIsIHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
eCwgInAiKQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBjcmVhdGVG
YWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0
eSwgdHJ1ZSk7CkBAIC03NDUsMTAgKzc5OSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNlOwogICAg
ICAgICB0cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3VidHlw
ZShvYmplY3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVj
dC5sZW5ndGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Quc3Vi
dHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBv
YmplY3QubGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBmb3IgKGxl
dCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobykp
IHsKKyAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gQE9iamVj
dC5AZ2V0UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBpc093blByb3BlcnR5ID0g
byA9PT0gb2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7CiAKQEAg
LTc2NCw3ICs4MTgsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0
eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5h
bWVzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsg
PSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKQEAg
LTc3NiwxNCArODMwLDEyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5
bWJvbHMobyk7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5
bWJvbHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHBy
b2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwotICAg
ICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
QnJlYWspCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG8pOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eVN5
bWJvbHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vz
c1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
c2hvdWxkQnJlYWspCkBAIC03OTYsMjMgKzg0OCwyOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7CiAgICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgIGlmIChvYmplY3QuX19wcm90b19fKQotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVlOiBvYmplY3Qu
X19wcm90b19fLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBpc093bjogdHJ1
ZX0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgIl9fcHJvdG9fXyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiLCBvYmplY3QuX19wcm90b19fLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIndyaXRhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJjb25maWd1cmFibGUiLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzT3du
IiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICB9IGNhdGNoIHsg
fQogICAgICAgICB9CiAgICAgfQogCiAgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBmZXRjaFN0
YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAg
ICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgU2V0
LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBv
YmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJsZShv
YmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAg
ICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAgICAgICAgIEBh
cnJheVB1c2goZW50cmllcywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoInZhbHVlIiwg
dmFsdWUpKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGgg
PT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMsMTYgKzg4MCwx
OCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgX2dl
dE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAg
ICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJs
ZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgot
ICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAo
bGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRpbk1hcEl0ZXJhYmxlKG9iamVjdCkpIHsKICAgICAg
ICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNoU3RhcnQt
LTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVu
dHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJr
ZXkiLCBrZXksCisgICAgICAgICAgICAgICAgInZhbHVlIiwgdmFsdWUsCisgICAgICAgICAgICAp
KTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGggPT09IGZl
dGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzkzNSwxMCBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAg
dGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRl
ZmluZWQgfHwgcmVzdWx0ID09PSBudWxsKQorICAgICAgICBpZiAocmVzdWx0ID09PSBAdW5kZWZp
bmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBs
ZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3VsdCk7Cisg
ICAgICAgIGxldCBleGlzdGluZ0luZGV4ID0gQEFycmF5LnByb3RvdHlwZS5AaW5kZXhPZi5AY2Fs
bCh0aGlzLl9zYXZlZFJlc3VsdHMsIHJlc3VsdCk7CiAgICAgICAgIGlmIChleGlzdGluZ0luZGV4
ICE9PSAtMSkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4aXN0aW5n
SW5kZXg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04OTQsMTYgKzk1MywxNiBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIH0KIH07CiAKLUluamVjdGVk
U2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAgIE93blByb3BlcnRpZXM6IDEgPDwgMCwgICAg
ICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAgTmF0aXZlR2V0dGVyUHJvcGVydGllczogMSA8
PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4K
LSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0aWVzIGlu
IHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OworSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUg
PSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiT3duUHJvcGVydGllcyIsIDEg
PDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCisgICAgIk5hdGl2ZUdldHRlclByb3Bl
cnRpZXMiLCAxIDw8IDEsIC8vIG5hdGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90
eXBlIGNoYWluLgorICAgICJBbGxQcm9wZXJ0aWVzIiwgMSA8PCAyLCAgICAgICAgICAvLyBhbGwg
cHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorKTsKIAotSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJjb250aW51ZSIp
LAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAotfQorSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlG
ZXRjaEFjdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICJDb250aW51
ZSIsIEBjcmVhdGVQcml2YXRlU3ltYm9sKCJjb250aW51ZSIpLAorICAgICJTdG9wIiwgQGNyZWF0
ZVByaXZhdGVTeW1ib2woInN0b3AiKSwKKyk7CiAKIHZhciBpbmplY3RlZFNjcmlwdCA9IG5ldyBJ
bmplY3RlZFNjcmlwdDsKIApAQCAtOTYyLDcgKzEwMjEsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5f
Z2VuZXJhdGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVlKG9iamVj
dCkpOwogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2Vu
ZXJhdGVQcmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAgICAgICAg
ICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgQHVuZGVm
aW5lZCwgY29sdW1uTmFtZXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05NzcsNyArMTAzNiw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVzY3JpYmUo
ZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChleCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KGV4
Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmVycm9yKGV4Lm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIjxmYWls
ZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlvbik7CkBAIC05ODYsNyAr
MTA0NSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0
YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90
ZU9iamVjdCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5O
YW1lcyk7CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0KHZhbHVl
LCBAdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7CiAgICAg
ICAgIGlmIChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlw
dC5yZWxlYXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlmIChyZW1v
dGVPYmplY3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlLm9i
amVjdElkKQpAQCAtMTAxMSw3ICsxMDcwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogCiAgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24uCiAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0gImZ1bmN0
aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5cGVvZiB2
YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKQEAg
LTEwNTAsOCArMTEwOSw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpCiAgICAgICAgICAgICByZXR1cm4gY2xh
c3NOYW1lOwogCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5bWJvbC50
b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1ib2wudG9T
dHJpbmdUYWddOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBAQHRvU3Ry
aW5nVGFnIGluIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLkBAdG9TdHJpbmdUYWc7
CiAKICAgICAgICAgLy8gTm9kZUxpc3QgaW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNoZWNrIGZvciBh
cnJheSBwcmlvciB0byB0aGlzLgogICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiZnVuY3Rp
b24iKQpAQCAtMTA2OSw2ICsxMTI4LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90
ZU9iamVjdAogCiAgICAgc3RhdGljIG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAgICAgICAv
LyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNl
IFdlYkNvcmUgYnVpbHQtaW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5vZGUub3du
ZXJEb2N1bWVudCAmJiAhIW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAgICAgICBs
ZXQgbm9kZU5hbWUgPSBpc1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTsKIApAQCAtMTEwMCwxNyArMTE2MCwxNyBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaW5pdGlhbFByZXZpZXcoKQogICAgIHsK
LSAgICAgICAgbGV0IHByZXZpZXcgPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsCi0g
ICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlz
LnZhbHVlKSwKLSAgICAgICAgICAgIGxvc3NsZXNzOiB0cnVlLAotICAgICAgICB9OworICAgICAg
ICBsZXQgcHJldmlldyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAg
ICAgInR5cGUiLCB0aGlzLnR5cGUsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iLCB0aGlzLmRl
c2NyaXB0aW9uIHx8IHRvU3RyaW5nKHRoaXMudmFsdWUpLAorICAgICAgICAgICAgImxvc3NsZXNz
IiwgdHJ1ZSwKKyAgICAgICAgKTsKIAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7CiAgICAg
ICAgICAgICBwcmV2aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5cGU7CiAgICAgICAgICAgICBpZiAo
dGhpcy5zdWJ0eXBlICE9PSAibnVsbCIpIHsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJm
bG93ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gW107Cisg
ICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFBy
b3RvdHlwZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTExMjYsNyArMTE4Niw3
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICBpZiAo
dGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMu
c3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQiIHx8IHRo
aXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikgewogICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSkg
ewotICAgICAgICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IFtdOworICAgICAgICAgICAgICAg
IHByZXZpZXcuZW50cmllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAg
ICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcHJl
dmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMTQxLDIzICsxMjAxLDIz
IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgbGV0IGlz
VGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNvbmRMZXZl
bEtleXM7CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZlbEtleXMg
PyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCi0gICAgICAgIGxldCBwcm9wZXJ0aWVzVGhy
ZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8g
MTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAgICAgaW5k
ZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJzdExldmVs
S2V5c0NvdW50KQotICAgICAgICB9OworICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgInByb3BlcnRpZXMi
LCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQp
LAorICAgICAgICAgICAgImluZGV4ZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4
KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAgICAgKTsKIAogICAgICAgICB0cnkgewog
ICAgICAgICAgICAgLy8gTWFwcywgU2V0cywgYW5kIEl0ZXJhdG9ycyBoYXZlIGVudHJpZXMuCiAg
ICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09
ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0g
IndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikKICAgICAgICAgICAgICAg
ICB0aGlzLl9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwgcHJldmlldyk7CiAKLSAgICAgICAg
ICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0
aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAgICAgICAvLyBJ
bnRlcm5hbCBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgbGV0IGludGVybmFsUHJvcGVydHlEZXNj
cmlwdG9ycyA9IGluamVjdGVkU2NyaXB0Ll9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2Jq
ZWN0LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgaW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5
cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWw6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZp
ZXcsIGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwg
Zmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoImludGVybmFsIiwgdHJ1ZSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTY5
LDcgKzEyMjksMTAgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAg
ICAgICAgICAgLy8gUHJvcGVydGllcy4KICAgICAgICAgICAgIGluamVjdGVkU2NyaXB0Ll9mb3JF
YWNoUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1v
ZGUuQWxsUHJvcGVydGllcywgKGRlc2NyaXB0b3IpID0+IHsKICAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRv
ciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cyk7
Ci0gICAgICAgICAgICB9LCB7bmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlLCBpbmNsdWRlUHJv
dG86IHRydWV9KQorICAgICAgICAgICAgfSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsCisgICAgICAg
ICAgICAgICAgImluY2x1ZGVQcm90byIsIHRydWUsCisgICAgICAgICAgICApKTsKICAgICAgICAg
fSBjYXRjaCB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAg
IH0KQEAgLTExNzcsNyArMTI0MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgfQogCi0gICAgX2FwcGVuZFByb3Bl
cnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hv
bGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSB7fSkKKyAg
ICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJv
cGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVy
bmFsfSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCkpCiAgICAgewogICAgICAgICAv
LyBFcnJvciBpbiBkZXNjcmlwdG9yLgogICAgICAgICBpZiAoZGVzY3JpcHRvci53YXNUaHJvd24p
IHsKQEAgLTExOTAsOSArMTI1Myw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKICAgICAgICAgaWYgKG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAgICAgICAv
LyBOb24gYmFzaWMgX19wcm90b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3RpbmcsIG5vbi1l
bnVtZXJhYmxlLCBtZXRob2RzIHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52
YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgJiYg
ZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAgICAgICAg
JiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAgICAgICAg
ICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAgICAgICAg
ICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAorICAgICAg
ICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJheQorICAg
ICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBSZWdFeHAp
CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAg
ICAgIH0KQEAgLTEyMDksNyArMTI3Miw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNob3cgcHJv
cGVydGllcyBpbiB0aGUgZmlsdGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXNl
IGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZpcnN0TGV2
ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgaWYgKGZp
cnN0TGV2ZWxLZXlzICYmICFAQXJyYXkucHJvdG90eXBlLkBpbmNsdWRlcy5AY2FsbChmaXJzdExl
dmVsS2V5cywgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVy
dHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQcmV2aWV3
KHByb3BlcnR5KSB7CkBAIC0xMjI3LDIwICsxMjkwLDI4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBj
bGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZpZXcucHJv
cGVydGllcy5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJldmlldy5w
cm9wZXJ0aWVzLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdl
dHRlci9zZXR0ZXIuCiAgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpIHsKICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgICAgICByZXR1
cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAg
ICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCAiYWNjZXNzb3Ii
LAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOdWxsIHZhbHVlLgog
ICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOwogICAgICAgICBpZiAodmFsdWUg
PT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTog
Im9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOworICAgICAgICAgICAg
cmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
ICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgIm9iamVj
dCIsCisgICAgICAgICAgICAgICAgInN1YnR5cGUiLCAibnVsbCIsCisgICAgICAgICAgICAgICAg
InZhbHVlIiwgIm51bGwiLAorICAgICAgICAgICAgKSk7CiAKICAgICAgICAgLy8gSWdub3JlIG5v
bi1lbnVtZXJhYmxlIGZ1bmN0aW9ucy4KICAgICAgICAgbGV0IHR5cGUgPSB0eXBlb2YgdmFsdWU7
CkBAIC0xMjU4LDcgKzEzMjksMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyh2YWx1
ZSwgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7
bmFtZSwgdHlwZSwgdmFsdWU6IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpfSk7CisgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgK
KyAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCB0
eXBlLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUp
LAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTeW1ib2wuCkBAIC0x
MjY4LDExICsxMzQzLDE4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICAgICAgICAgICAgICBzeW1ib2xTdHJpbmcgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHN5
bWJvbFN0cmluZywgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5k
UHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHN5bWJvbFN0cmluZ30pOworICAgICAgICAgICAg
cmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
ICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwK
KyAgICAgICAgICAgICAgICAidmFsdWUiLCBzeW1ib2xTdHJpbmcsCisgICAgICAgICAgICApKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE9iamVjdC4KLSAgICAgICAgbGV0IHByb3BlcnR5ID0g
e25hbWUsIHR5cGV9OworICAgICAgICBsZXQgcHJvcGVydHkgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICJ0eXBl
IiwgdHlwZSwKKyAgICAgICAgKTsKICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZSh2YWx1ZSk7CiAgICAgICAgIGlmIChzdWJ0eXBlKQogICAgICAgICAgICAgcHJvcGVy
dHkuc3VidHlwZSA9IHN1YnR5cGU7CkBAIC0xMzEzLDcgKzEzOTUsNyBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
aWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAgICAgICAgICAgZW50cmllcy5wb3AoKTsKKyAg
ICAgICAgICAgIEBBcnJheS5wcm90b3R5cGUuQHBvcC5AY2FsbChlbnRyaWVzKTsKICAgICAgICAg
ICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVz
cyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzE0MDUsNyBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVz
cyA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVzID0gZW50cmll
cy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVzID0gQEFycmF5
LnByb3RvdHlwZS5AbWFwLkBjYWxsKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAg
ICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFs
dWUoZW50cnkudmFsdWUsIGVudHJ5LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAgICAgdXBk
YXRlTWFpblByZXZpZXcoZW50cnkudmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVu
dHJ5KSB7CkBAIC0xMzM2LDggKzE0MTgsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAKICAgICBfaXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0KQogICAg
IHsKLSAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2JqZWN0KTsK
KyAgICAgICAgbGV0IHNldCA9IG5ldyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmplY3QpOwog
CiAgICAgICAgIHJldHVybiB0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwodmFsdWUs
IHNldCwgMSk7CiAgICAgfQpAQCAtMTM1NywxMSArMTQzOSwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0
ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAg
ICAvLyBDeWNsaWMgb2JqZWN0cy4KLSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMob2JqZWN0
KSkKKyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmplY3RzLmFk
ZChvYmplY3QpOworICAgICAgICBrbm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAgICAgICAg
IC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxlIG9iamVj
dHMuCiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KTsK
QEAgLTEzODEsMTIgKzE0NjMsMTIgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVjdHMgYXJl
IHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0aWVzLgot
ICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCk7CisgICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QpOwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1lcy5sZW5n
dGggPiAzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBw
cm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0IGRlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChkZXNj
cmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRl
cm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCkBAIC0xNDA0
LDY2ICsxNDg2LDcyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgaWYgKG1pZGRsZSkgewogICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4TGVuZ3Ro
ID4+IDE7CiAgICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVmdEhhbGYg
LSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1
MjAyNiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFs
Zik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbGVmdEhhbGYpICsgIlx1
MjAyNiIgKyBzdHJpbmcuQHN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhh
bGYpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbWF4TGVu
Z3RoKSArICJcdTIwMjYiOworICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbWF4TGVu
Z3RoKSArICJcdTIwMjYiOwogICAgIH0KIH07CiAKIC8vIC0tLS0tLS0KIAotSW5qZWN0ZWRTY3Jp
cHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCi17Ci0gICAg
dGhpcy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0
SWQiOiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKLSAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxG
cmFtZS5mdW5jdGlvbk5hbWU7Ci0gICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJZDogU3RyaW5n
KGNhbGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5lLCBjb2x1bW5O
dW1iZXI6IGNhbGxGcmFtZS5jb2x1bW59OwotICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dy
YXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNy
ZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOwotICAgIHRoaXMuaXNUYWls
RGVsZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxldGVkOwotfTsKK0luamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5ID0gY2xhc3MgQ2FsbEZyYW1lUHJveHkgeworICAgIGNvbnN0cnVjdG9yKG9y
ZGluYWwsIGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJv
cmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9
fWA7CisgICAgICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZTsK
KworICAgICAgICB0aGlzLmxvY2F0aW9uID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAic2NyaXB0SWQiLCBAU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksCisg
ICAgICAgICAgICAibGluZU51bWJlciIsIGNhbGxGcmFtZS5saW5lLAorICAgICAgICAgICAgImNv
bHVtbk51bWJlciIsIGNhbGxGcmFtZS5jb2x1bW4sCisgICAgICAgICk7CisKKyAgICAgICAgdGhp
cy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKKyAgICAgICAg
dGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJh
Y2t0cmFjZSIpOworICAgICAgICB0aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWls
RGVsZXRlZDsKKyAgICB9CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlw
ZSA9IHsKICAgICBfd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbGV0
IHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKICAgICAgICAgbGV0IHNjb3BlRGVz
Y3JpcHRpb25zID0gY2FsbEZyYW1lLnNjb3BlRGVzY3JpcHRpb25zKCk7CiAKLSAgICAgICAgbGV0
IHNjb3BlQ2hhaW5Qcm94eSA9IFtdOworICAgICAgICBsZXQgc2NvcGVDaGFpblByb3h5ID0gQGNy
ZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHNjb3BlQ2hhaW4ubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBzY29wZUNoYWluUHJveHlbaV0g
PSBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uKHNjb3BlQ2hh
aW5baV0sIHNjb3BlRGVzY3JpcHRpb25zW2ldLCAiYmFja3RyYWNlIik7CiAgICAgICAgIHJldHVy
biBzY29wZUNoYWluUHJveHk7CiAgICAgfQotfTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1l
UHJveHkuX3Njb3BlVHlwZU5hbWVzID0gewotICAgIDA6ICJnbG9iYWwiLCAvLyBHTE9CQUxfU0NP
UEUKLSAgICAxOiAid2l0aCIsIC8vIFdJVEhfU0NPUEUKLSAgICAyOiAiY2xvc3VyZSIsIC8vIENM
T1NVUkVfU0NPUEUKLSAgICAzOiAiY2F0Y2giLCAvLyBDQVRDSF9TQ09QRQotICAgIDQ6ICJmdW5j
dGlvbk5hbWUiLCAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCi0gICAgNTogImdsb2JhbExleGljYWxF
bnZpcm9ubWVudCIsIC8vIEdMT0JBTF9MRVhJQ0FMX0VOVklST05NRU5UX1NDT1BFCi0gICAgNjog
Im5lc3RlZExleGljYWwiLCAvLyBORVNURURfTEVYSUNBTF9TQ09QRQotfTsKKyAgICBzdGF0aWMg
X2NyZWF0ZVNjb3BlSnNvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQp
CisgICAgeworICAgICAgICBsZXQgc2NvcGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgKKyAgICAgICAgICAgICJvYmplY3QiLCBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3Jv
dXBJZCksCisgICAgICAgICAgICAidHlwZSIsIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5
Ll9zY29wZVR5cGVOYW1lc1t0eXBlXSwKKyAgICAgICAgKTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2Fs
bEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwge25hbWUsIHR5
cGUsIGxvY2F0aW9ufSwgZ3JvdXBJZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0gICAgICAgIG9i
amVjdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAgICAgICB0eXBl
OiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCi0g
ICAgfTsKKyAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsK
IAotICAgIGlmIChuYW1lKQotICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsKKyAgICAgICAgaWYg
KGxvY2F0aW9uKQorICAgICAgICAgICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKIAotICAg
IGlmIChsb2NhdGlvbikKLSAgICAgICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAg
ICAgaWYgKGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgICAgIHNjb3BlLmVtcHR5ID0g
dHJ1ZTsKIAotICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkpCi0gICAgICAgIHNjb3BlLmVt
cHR5ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHNjb3BlOworICAgIH0KK307CiAKLSAgICByZXR1
cm4gc2NvcGU7Ci19CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFt
ZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAwLCAiZ2xvYmFsIiwgLy8g
R0xPQkFMX1NDT1BFCisgICAgMSwgIndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAgMiwgImNsb3N1
cmUiLCAvLyBDTE9TVVJFX1NDT1BFCisgICAgMywgImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAg
ICA0LCAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAgIDUsICJnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVAorICAg
IDYsICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKKyk7CiAKIC8vIC0t
LS0tLS0KIApAQCAtMTQ3Nyw5ICsxNTY1LDkgQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2Fs
bEZyYW1lKQogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG9yaWdpbmFs
VmFsdWU7IH07CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oIiQi
ICsga2V5LCB2YWx1ZSk7CisgICAgICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5KHRoaXMsICIk
IiArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChzYXZlZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVzdWx0QWxpYXMgIT09ICIkIikK
LSAgICAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3VsdEFsaWFzICsga2V5
LCB2YWx1ZSk7CisgICAgICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBzYXZl
ZFJlc3VsdEFsaWFzICsga2V5LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgiZ2V0Iiwg
dmFsdWUpKTsKICAgICB9OwogCiAgICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3Jp
cHQpCkBAIC0xNTAyLDQ4ICsxNTkwLDQ4IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxG
cmFtZSkKICAgICAgICAgdGhpc1tuYW1lXSA9IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV07
CiB9CiAKLUNvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLmdldHRl
cnMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogCi1Db21tYW5kTGluZUFQSS5t
ZXRob2RzID0ge307CitDb21tYW5kTGluZUFQSS5tZXRob2RzID0gQGNyZWF0ZU9iamVjdFdpdGhv
dXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rp
b24ob2JqZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVB
UEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52
YWx1ZXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0
aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmpl
Y3QuQHZhbHVlcyhvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUlu
c3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJ
bnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5
T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJ
bnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5
SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlI
b2xkZXJzKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUlu
c3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJ
bnN0YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CiAKIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5t
ZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
Y291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuY291bnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50
UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuY291bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
ZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZGVidWcoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4u
YXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5k
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25h
cHNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSgu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4u
YXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRz
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5hc3NlcnQoLi4uY3JlYXRlSXRlcmFi
bGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmNsZWFyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlw
ZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJj
b3VudCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5jb3VudCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1ZyguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmRpciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1s
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRp
cnhtbCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3Vt
ZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3Rv
dHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuZ3JvdXBFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbygu
Li5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5wcm9maWxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZy
b21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9m
aWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLnByb2ZpbGVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQo
Li4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRh
a2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sidGltZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS50aW1lKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUudHJhY2UoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5j
cmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9
OwogCiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1
bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1
cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKaW5kZXggYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdh
MWY0ZjQwYjY1ODc0YTU4OGEzYmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcGFyc2UoCiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50
eXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3Iu
bWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVy
cm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBl
cnJvci5saW5lKCksICIuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcAppbmRleCBmYzc4ODk0NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5
YzljMjMzMWRhZTNkNmE2NWJkZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBB
cnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEFycmEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5
bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJy
YXlDb25zdHJ1Y3RvcklzQXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJv
bVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCmluZGV4IDVhM2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUu
LjUxNWM4NWZkN2QzMWUxMzU4MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsx
MzAsMTEgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZh
dGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
ZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05h
bWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pbmRleE9mUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5pbmRleE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5h
bWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlz
UHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cG9wUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wb3BQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGds
b2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNj
b3BhYmxlcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90
b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3
MTZiYzBkMjE0MzQxOS4uZjE2ZjNhNzkyNWQzZDRjMmRkMTU1MDJjYmNhZDQ4YWUzNjBjNjQxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMjc1LDYgKzI3NSw4IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZF
QVRVUkVfRkxBR19UWVBFKQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJv
dW5kRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVu
Z3RoUHJvcGVydHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJp
dmF0ZVN5bWJvbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2Up
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5
bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdl
dCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvIGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwg
anNvbikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3Ry
aW5naWZ5KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5h
cmd1bWVudCgxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVz
dWx0KSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFzc2VydENhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCiB7CkBAIC0xMDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3Ry
dWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5h
bWUKIAogICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0
cnVjdG9yKTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywg
aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0
KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwg
dGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQo
dm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJp
bmcpXS5zZXQodm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9y
U3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5p
dGlhbGl6ZXImIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJy
b3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1
NzQsMTQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1
Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAK
KyAgICAvLyBKU09OIGhlbHBlcnMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMSwgU3RyaW5nKCksIGpzb25QYXJzZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29u
U3RyaW5naWZ5KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0
KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBqc29uU3RyaW5n
aWZ5KSk7CisgICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRl
UmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0
ZVJlbW90ZUZ1bmN0aW9uKSk7CkBAIC0yMTg0LDYgKzIyMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdHJpbmdDb25zdHJ1Y3Rvcik7CiAK
ICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3
ODdhZjY2YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uZTk0ODYwM2UyY2VjYTI5NTVhMmVkMjcx
NTRiYjNiMDE0OTcxYWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90
b3R5cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291
cmNlT3JpZ2luOworY2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7CiBjbGFzcyBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFj
dGl2YXRpb25TdGFja05vZGU7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHVibGljOgogICAgIFdyaXRl
QmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAg
V3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+
IG1fc3RyaW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCBhODZkZTk3NzY0ZWM0
ZjVkMTc3ZmIxYmMwN2E4YzgwOWE2ZWZjMmIwLi4xNzIzNjkyNDRkNTk0ZjRmNzJmZGU3ZmQ5MzZl
YTUxNDMwY2JhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVu
Y3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJp
bmcoKSwgbWFwUHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0
ZU5hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJ
VEhPVVRfVFJBTlNJVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3NzczOGFhNjQ2
NTY2MTRlYWFiZDhhZDE0Ny4uYmI2YWYyNTRmNDk2NzlmNTE3YTM5ODcwNDE1ZWVmMzdjYmUxY2U5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcApAQCAtOTksOSArOTksMTkgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKIAog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgpLCBvYmpl
Y3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJp
dmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJp
dmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVm
aW5lUHJvcGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMyk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0
b3JDcmVhdGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAyKTsKLSAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpCisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIGlm
IChPcHRpb25zOjp1c2VIYXNPd24oKSkgewogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENvbnN0cnVj
dG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMik7CisgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093blByaXZhdGVOYW1lKCksIG9i
amVjdENvbnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgfQogfQogCiAvLyBFUyAxOS4xLjEuMSBPYmplY3Qo
W3ZhbHVlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCmluZGV4IDFlNmJjMWVlOGJiMzdmNWYxMzU3NmNlYTJhNmQ1ZDRhOTVkZDQ4NzEuLmY3Zjlj
MTQxOGJmN2NjZjNhNGY1MDM0NGU0MmE0ZjIzMGEwNTc0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsNyBAQCB2b2lk
IFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiAgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZh
bHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzLCBKU1NldFZhbHVl
c0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgp
LCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKaW5kZXggNTA2NzIzMmNkNjZmOTkxM2I5NTMyZjA5ZjY4MDMxYmVlZDA0Y2Y5
My4uMzFhOGY5ZTdkN2JiZDMyNjUwYzBjYjI5ODI2OWE5MzVlZDBjY2NmZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNjQs
NiArMTY0LDkgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9s
Lml0ZXJhdG9yXSJfcywgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN1YnN0clByaXZh
dGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVuZHNX
aXRoUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKwogICAgIC8vIFRoZSBj
b25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBo
YXMgYmVlbiBidWlsdAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2VjZWJiZTgz
ZjdkNzI0NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVhNWM4Y2Yz
YjIyY2ZjZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAg
V0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xB
UkUoV2ViQ29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VY
SVNUUygpCiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZ
IGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8v
IyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cyIgPiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BF
UkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUyLDYg
KzIzNDAsNyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRF
bmNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5k
aW5nSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUz
NTYyYmQyZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9w
ZXJ0eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NTU1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5
QnVpbHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQy
MTZlNDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChO
T19TVVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5k
ZXApCiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2Vi
Q29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8j
IHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
IiA+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
Lm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlM
VElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpz
IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJD
b3JlKS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJ
TlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMDYwYWQ5ZjMx
YWQyZTYxNDgzNzk1MjM3MGJhNTAwMTE5ZDBhYWM0Li41NzgyMGI3NzNmMDQ5MDE2NDlhNzdiOThi
MGQ1YzNjZGIwNTRiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2OCw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAg
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAg
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5YmExYjgyMDM1MmMxNGQ5NjA2NjMzZjMwMWY5ZDQ1MzcyOGUyZTI1Li5kM2Y4ZDU0NTQ0
NTA0OTFjNWNkNzIwZDBiMzM2NmIzODc2YThkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJ
MkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1
N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgx
MkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9Owor
CQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlB
NTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYy
QjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMg
LyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFn
ZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsg
fTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsg
fTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZF
MzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4
NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3
REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJD
NUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3
RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUz
QUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRp
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM5NDEsNyArMTM5NDMsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBD
RUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhv
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdC
OEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRG
RTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVB
UElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI5LDcgKzIwNDMw
LDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkx
ODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0
RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5
MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwICovLApAQCAtMjM1ODcsNiArMjM1ODcsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNG
RkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAog
CQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRh
LmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBG
NjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8s
CiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlO
YW1lcy5jcHAgKi8sCkBAIC0zNDA4NSw3ICszNDA4Nyw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJE
RDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYx
MUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJp
bmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29t
bW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0
OTUwMTY3NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1
YjQ5Yjc5ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9k
dWxlOjpDb21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQ
SU1vZHVsZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxl
OjppbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dB
bHdheXMoIkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29t
bWFuZExpbmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBK
U1ZhbHVlIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmgKaW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1
MGQ0YTVmMzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAg
Y2xhc3MgQ29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsK
IAotICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rp
b24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVy
cmlkZTsKICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFu
YWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRp
YyB2b2lkIGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
Y29uc3QgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUz
NTE5Y2NiMTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLjgxOWZhNDdlOWQxMGQwZjRjN2U3
MWY5MTk0YjBiZjRlZjc2NjNiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5q
ZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVB
UElIb3N0KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVt
b3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sKIAotLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNl
IEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9u
LXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3
ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAKIGluamVj
dGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFy
Z3VtZW50cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0
ZWRTY3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcgPSAiIiAr
IG9iamVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAg
ICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOworICAgICAg
ICBzdHJpbmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9
PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7
CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0cmlu
ZyA9IEBqc29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewogICAg
ICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5MCwy
OCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVuY3Rp
b24odGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7
Ci0gICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3VzZSIs
ICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJk
ZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9h
ZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3Vi
bWl0IiwgInVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAg
dHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCJtb3VzZSIsICJrZXkiLCAidG91
Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24i
LCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIs
ICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9h
ZCIpOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgIHR5
cGVzID0gW3R5cGVzXTsKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90
eXBlKHR5cGVzKTsKKworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBh
ZGRUeXBlc1RvUmVzdWx0KCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKGFyZ3VtZW50c1tpXSk7Cisg
ICAgfQogCi0gICAgbGV0IHJlc3VsdCA9IFtdOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlw
ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAg
ICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJt
b3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVl
bCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiY2xpY2siLCAiZGJsY2xpY2siLCAi
bW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1
cCIsICJtb3VzZXdoZWVsIik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwg
InRleHRJbnB1dCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgia2V5ZG93biIsICJr
ZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5jZWwiLCAi
dG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgICAgIGFkZFR5
cGVzVG9SZXN1bHQoInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3Vj
aHN0YXJ0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCi0gICAg
ICAgICAgICByZXN1bHQucHVzaCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAi
cmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAg
ICAgIGFkZFR5cGVzVG9SZXN1bHQoImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0Iiwg
InJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAgIHJl
c3VsdC5AYWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEx
OCwxOSArMTI0LDE3IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAg
IGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92
ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2
ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2
ZW50LCBmYWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBs
b2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJs
ZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2
ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFkZEV2
ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlw
ZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBu
b3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVz
Lmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tp
XSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0SXRl
cmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewpA
QCAtMTU4LDkgKzE2MiwxMCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYm
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2ZWxv
cGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgogICAgICAgICBpZiAo
Y2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rv
cikpOwotICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsK
KyAgICAgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChz
ZWxlY3RvcikpOworICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKGluc3BlY3RlZEdsb2JhbE9i
amVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgfTsKIAogICAg
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlvbih4cGF0aCwgY29udGV4dCkg
ewpAQCAtMTc1LDEwICsxODAsMTEgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbm9kZXMgPSBbXTsK
KyAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRo
YXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgorICAg
ICAgICBsZXQgbm9kZXMgPSBuZXcgQEFycmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7CiAg
ICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAgICBu
b2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAg
ICAgICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5Miw0IEBAIGlmIChp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5v
ZGUpIHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21t
YW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAi
ZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0p
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZjkzMzY3ZjRjOWI5MmJhMDI2YWIwYjczOGRjOWUxMWFhOWRlNGVjNi4uYTc0
MzExNmEzODhiYWMzM2UwNjYxODFlYjU2M2Q4ZDVmN2Q0Y2M0MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDIyLTA1LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0
LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
aW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sOgorICAgICAgICAtIEFkZCBzZXZl
cmFsIG1vcmUgdGVzdCBjYXNlcyBmb3Igb3ZlcnJpZGluZyBmdW5jdGlvbnMgYW5kIGVudGlyZSBv
YmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5h
bC1zY3JpcHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbDoKKyAgICAgICAgLSBDaGFuZ2VkIHRvIHRlc3Qg
YSBjdXN0b20gaW50ZXJuYWwgc2NyaXB0IHNuaXBwZXQgc2luY2UgdGhlIGluc3BlY3RvciBpbmpl
Y3RlZCBzY3JpcHQgaXMgbm93IGEgYnVpbHRpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQuaHRtbDoKKyAgICAgICAgLSBUaGUgaW5zcGVjdG9yIGluamVjdGVk
IHNjcmlwdCAoYW5kIG1vZHVsZXMpIHdpbGwgbm8gbG9uZ2VyIGFwcGVhciBhcyBzY3JpcHRzIGlu
IFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVj
dC9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUt
Y29sdW1uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgLSBJbnNwZWN0b3IgaW5qZWN0ZWQgc2Ny
aXB0IGxpbmUgbnVtYmVycyBhcmUgZGlmZmVyZW50IGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcg
YnVpbGRzLCBzbyBmaWx0ZXIgdGhvc2Ugb3V0LgorCiAyMDIyLTA1LTA0ICBLYXJsIFJhY2tsZXIg
IDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGZhc3QvZm9ybXMvYXV0by1m
aWxsLWJ1dHRvbi9pbnB1dC1hdXRvLWZpbGwtYnV0dG9uLmh0bWwgaXMgYSBjb25zaXN0ZW50IGZh
aWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1m
b3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4IDFl
YjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQuLjU5MzdmYWU5N2Y4OTU4ODQ3
Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRz
LWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0
IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNT
QUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2lu
ZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRp
bmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgor
Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBw
ZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1Z2dl
ci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogLS0gUnVubmluZyB0ZXN0IHNldHVwLgogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRp
c2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJFU1NJ
T046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwgaW4s
IGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVz
ZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAg
IGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsK
LSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25z
b2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsK
K1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAgIDIz
CisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1ICAg
ICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOwor
ICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRy
eUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9u
IGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAg
ICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhj
b25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEg
ICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAgIDI0
ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1
Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2co
KSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEw
ICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKK1BB
VVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjg6NQorICAgICAyNCAgICBmdW5jdGlvbiBlbnRy
eUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworIC0+ICAyNyAgICAgICAgfGludGVybmFsT2Jq
ZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAg
ICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25z
b2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29u
c29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwot
IC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAg
ICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmpl
Y3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9Cisg
ICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gLT4gIDExICAgIH18Ci0gICAgIDEyCi0gICAgIDEz
ICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoz
MDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0t
LQorICAgICAzMgogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApAQCAtNjgsNTcgKzYyLDU3IEBA
IFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qgc2V0
dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitF
WFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3Zlciwg
aW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9s
b2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVi
dWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQor
ICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+
ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0Ug
QVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBm
dW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAt
PiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29s
ZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0g
ICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMwor
ICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAg
ICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAg
ICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1
ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQK
KyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAg
ICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0
ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+
Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAg
IGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5
ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoy
NzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkg
eworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAg
IDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElP
TjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmluZGV4IGQxNjhh
NzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLmU1YjBkOWM4YjcxOGUxYjI1NmVh
ZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCkBAIC00
LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBpbnRlcm5hbE9iamVjdCA9IHsgdGVzdDogZnVuY3Rp
b24oKSB7fSB9OworCitpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFsT2JqZWN0
ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigidGVz
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwgYAorICAgICAgICAvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLmpzCisgICAgICAgIGxldCBJ
bnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVybmFsT2JqZWN0IHsKKyAgICAgICAgICAgIHRlc3Qo
aW52b2NhdGlvbk51bWJlcikgeworICAgICAgICAgICAgICAgIGxldCBhID0gNjsKKyAgICAgICAg
ICAgICAgICBsZXQgYiA9IDc7CisgICAgICAgICAgICAgICAgbGV0IGFuc3dlciA9IGEgKiBiOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG5ldyBJbnRlcm5hbE9iamVjdDsK
KyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKICAgICBkZWJ1
Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgIGNvbnNvbGUubG9nKGNvbnNvbGUp
OwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgz
KTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0yMSwzMSArMzksMzEgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246
ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMg
d2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNz
aW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNlIGlu
dGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVv
dXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3RseSB0
byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0aGUg
Y29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBzZXR1
cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFs
U2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIs
Ci0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAgICAg
ICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKGNvbnNvbGUpCi0gICAgICAgICAgICAgICAgImlu
IiwgLy8gY29uc29sZS5sb2coInN0cmluZyIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50
ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2Jq
ZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0
KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwogCiAgICAgYWRk
U3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZvcklu
dGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUg
YWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhlIElu
dGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0
KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxl
IHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBzY3Jp
cHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmpl
Y3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2Ug
dGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNo
YW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0
dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCiAg
ICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAgICAg
ICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5k
b3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5s
b2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBj
b25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2Jq
ZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBp
bnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hl
cmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCiAgICAgICAgICAgICAicmVzdW1lIiwK
ICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcsNiArNzUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Q2hlY2tpbmcg
d2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5n
IG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+
Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUg
c3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5n
cy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0
ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODguLjYz
YTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0
CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQQVNT
OiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmlu
ZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBm
aW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2Ny
aXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGlu
ZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0
ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5ZDlh
NWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5LDE0
ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+ICh0
aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAgICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2FkIGV2
ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAgLSBl
dmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcKLSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVybmFs
IHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVybmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZv
dW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lQXR0
cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxTY3Jp
cHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IGZh
bHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7CiAg
ICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24gaXNF
eHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAgLTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJT
Y3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYm
IHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCisg
ICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUg
Pj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5jdGlv
biBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAgICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJM
ID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlwdFNv
dXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuc3Rh
cnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNXaXRo
KCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNlU2Ny
aXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9mKCJD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENoZWNr
SW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAtNzks
MTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICghZm91bmRFdmFsU2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJhbXMp
KQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQg
JiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ICYm
IGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5s
b2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1ZTsK
QEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgUHJvdG9j
b2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQgZmlu
ZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0LCAi
U2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7CiAg
ICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0LCAi
U2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0
LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5k
IEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAgICAg
ICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlw
dCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuIik7
CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBlY3Rl
ZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIpOwog
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKaW5k
ZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMwNjBiZTY4NjQyY2IwM2FiNy4uNDlmNGFmMmMxMzg0
YTQ2NjdiN2ZiZThiYzhlMWZlOGQ3ZWZlNTA5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0
CkBAIC0xLDUgKzEsMTcgQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCi1UZXN0
IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2Jz
ZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05TT0xFIE1FU1NBR0U6IGEsYixjCitDT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFNldF0KK0NP
TlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3Qg
TWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTog
W29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09M
RSBNRVNTQUdFOiBjb3VudCBvZiAxCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQor
Q09OU09MRSBNRVNTQUdFOiBoZWxsbworQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0K
K1Rlc3QgdGhhdCBJbmplY3RlZCBTY3JpcHQgb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFibGUg
YnkgdXNlciBjb2RlLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZQpAQCAtOCwzICsyMCwzOCBAQCBQQVNTOiBQYXVzZWQuCiBQQVNTOiBSZXN1bWVk
LgogUEFTUzogQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91
bGQgYmUgMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFi
bGU6U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNTOiBS
ZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQg
c2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFT
UzogUmVzdW1lZC4KK1BBU1M6IE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVz
dW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxkIGJl
IDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNl
dC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0
LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVzZWQu
CitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnBy
b3RvdHlwZS5pbmRleAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5
LnByb3RvdHlwZVsiNDIiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpPYmplY3QucHJvdG90eXBlLmRlc3Ry
dWN0dXJlZFByb3BlcnR5CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogT2Jq
ZWN0LnByb3RvdHlwZVsiZmV0Y2hTdGFydCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJs
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxl
Lmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4uZTFi
NmI0NDdlY2Y3MDk4OWRkOTUwMTZmZWQ2MTI4NzIyMDRmYjI0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAgLTMs
MzIgKzMsNTYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotLy8g
Tk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBhZGRyZXNzZWQgYnk6Ci0vLyA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92
ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0ZXJhdGlvbigpIHsKK2Z1bmN0
aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwg
aW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKKyAgICB0cnkgewogICAgIGxldCBj
YWxsQ291bnQgPSAwOwotCi0gICAgY29uc3Qgb3JpZ2luYWxJdGVyYXRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IpOwot
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRv
ciwgeworICAgIAorICAgIGxldCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBwcm9wZXJ0eSk7CisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHsKICAgICAgICAgZ2V0KCkgewog
ICAgICAgICAgICAgKytjYWxsQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxJdGVy
YXRvci52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRv
cj8udmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCBhcnJheSA9IFtdOwotCiAg
ICAgZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFuIG9iamVjdC4KICAgICBjb25zb2xlLmxv
Zyh7YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVzZSBBcnJheSBJdGVyYXRvciBhdCBsZWFz
dCBvbmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAgIGludm9rZU92ZXJyaWRk
ZW5Qcm9wZXJ0eUZ1bmN0aW9uKCk7CisKKyAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0
b3IpCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBv
cmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgcHJv
dG90eXBlW3Byb3BlcnR5XTsKKworICAgIHJldHVybiBjYWxsQ291bnQ7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0KK30KKworZnVuY3Rpb24gcmVw
bGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVu
Y3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBsZXQgb3JpZ2luYWxP
YmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAgICAgICR7b2JqZWN0
U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50OworICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAgYCk7
CisKKyAgICBkZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgorICAgIGNvbnNv
bGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFy
cmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAgICBp
bnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb24oKTsKIAorICAgIGV2YWwoYCR7b2JqZWN0U3Ry
aW5nfSA9IG9yaWdpbmFsT2JqZWN0O2ApOworICAgIGNvbnNvbGUubG9nKCJjb3VudCBvZiAiICsg
Y2FsbENvdW50KTsKICAgICByZXR1cm4gY2FsbENvdW50OwogfQogCkBAIC0zNiwzMCArNjAsMTQ4
IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZSIpOwogCi0gICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9uIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uo
e25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5cGVTdHJpbmcsIHByb3BlcnR5U3RyaW5nLCBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNlQW5kVGVzdFByb3RvdHlwZVByb3BlcnR5KCR7cHJv
dG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0cmluZ30sICR7aW52b2tlT3ZlcnJpZGRlblByb3Bl
cnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2AsIChlcnJvciwgcmVzdWx0KSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtwcm90
b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJpbmd9XSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmAp
OworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xl
RmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQu
Iik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmplY3RUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24s
IG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9ufSkgeworICAgICAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0T2JqZWN0
KCIke29iamVjdFN0cmluZ30iLCAke2ludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50b1N0
cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke29iamVjdFN0cmluZ30gY2FsbCBj
b3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBhdXNl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNh
dGNoKHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3Rv
dHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVy
YXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0gICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0aW9uKClgLCAoZXJyb3IsIHJlc3VsdCkgPT4gewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAiQXJy
YXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4iKTsK
LSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Cisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkgaXRlcmF0aW9uIGluIEluamVjdGVkIFNjcmlwdCBz
aG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJy
YXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3Ii
LAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAg
ICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwgImIiLCAiYyJdOworICAgICAgICAgICAgZm9yIChs
ZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGFycmF5KTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5
bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNldCBpdGVyYXRpb24gaW4g
SW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90
b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJT
eW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlv
bjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQoWyJhIiwgImIiLCAiYyJd
KTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0KKworICAgICAgICAgICAgY29u
c29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVBy
b3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjog
Ik1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJs
ZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJNYXAucHJvdG90eXBlIiwKKyAgICAgICAg
cHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IG1hcCA9IG5ldyBN
YXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0sIFsiYyIsICIzIl1dKTsKKyAgICAgICAgICAgIGZv
ciAobGV0IHggb2YgbWFwKSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2cobWFwKTsKKyAg
ICAgICAgfSwKICAgICB9KTsKIAorICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUu
cHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3Jp
cHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzog
IkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAor
ICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAg
ICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAg
ICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxk
IG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90
b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNl
dCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9
KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2Ny
aXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4g
SW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmpl
Y3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rp
b246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAg
ICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRl
eCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT3ZlcnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkgcHJv
dG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAg
ICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVy
dHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5j
dGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBh
cnJheS5wdXNoKCJoZWxsbyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAg
ICAgICAgICAgYXJyYXlbNDJdOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJvcGVydHkiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVjdHVyaW5nIChmb3IgYG9wdGlvbnNgIHBhcmFtZXRl
cnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAg
ICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5
U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVy
dHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0Owor
ICAgICAgICB9LAorICAgIH0pOworCisKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08
cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBu
b3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgorPHA+VGVzdCB0aGF0IEluamVjdGVkIFNj
cmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Jl
bW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJlYTRm
OWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJiNTM5
Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAg
RVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsgZXJy
b3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAg
ICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBc
bmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAi
CisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29k
ZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3MCw3
IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNhdGNo
IChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0
YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZXZh
bEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
QFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZhbEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUgY29k
ZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAg
ICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNTSU9O
OiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxpdFRl
eHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAg
ICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2
ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZl
IGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0
aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5AW25h
dGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAgICAgewog
ICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVhYzBm
YmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIzMDMz
YTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzogQ2Fw
dHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAg
ICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVk
PiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAgICAiY29s
dW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgICAg
IH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAt
MTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5j
dGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElk
IjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4i
LAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAg
ICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4IEBA
IFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwK
ICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4i
LAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIi
OiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJj
b2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJm
cmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJiMzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4ODc4
MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApAQCAt
NDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gVG8gYXZvaWQgZmxha2lu
ZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2UgYWx3YXlzIGV4cGVjdC4KICAgICBjb25zdCBl
dmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5kZXJpbmdGcmFtZSIsICJDb25zb2xlUHJvZmls
ZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9uQ2FsbCJdKTsKKworICAgIC8vIFRoZSBpbnNw
ZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQgbGluZSBu
dW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLiBXZSBvbmx5CisgICAgLy8g
d2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZvciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZyYW1l
cyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGluZS9jb2x1bW4gbnVtYmVycyByZW1haW4gc3Rh
YmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5ndGggPSAwOworICAgIGxldCB1cmxMZW5ndGgg
PSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAo
a2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAgICAgICAgICAgZnVuY3Rpb25OYW1lTGVuZ3Ro
ID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAiY2hpbGRyZW4iICYmIHRoaXMuc3RhcnRUaW1l
KQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihlID0+IGV2ZW50QWxsb3dsaXN0Lmhh
cyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9PT0gInN0YXJ0VGltZSIgfHwga2V5ID09PSAi
ZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8IGtleSA9PT0gImZyYW1lSWQiKQogICAg
ICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgaWYgKChrZXkgPT09ICJsaW5l
TnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVuZ3Ro
ICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisgICAg
ICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAgICAgICAgdXJsTGVuZ3RoID0gdmFsdWUubGVu
Z3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJsIiB8fCBrZXkgPT09ICJzY3JpcHROYW1lIikK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wvaW5zcGVj
dG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi1leHBlY3RlZC50eHQKaW5kZXggYzk2MmQ2ODEwMWNmNDczMTVkNWUwMWRjM2YwZDNmZTM1
OWQ2MjU0Ny4uNTZkMTg0MDhiZGRlOWE3YjA3MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTYwLDggKzYwLDggQEAgUEFT
UzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAg
ICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0g
ICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3
CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVt
bk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1l
SWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCArMTEzLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0
YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAidXJsIjogIiIsCiAgICAg
ICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAibGluZU51bWJlciI6IDE0MSwKLSAg
ICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgfQogICBdLAogICAiZnJh
bWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJpbmcg
c3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQxLAot
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+
IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJm
cmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458813</attachid>
            <date>2022-05-04 11:04:50 -0700</date>
            <delta_ts>2022-05-04 13:56:19 -0700</delta_ts>
            <desc>Patch v1.7 - For Windows EWS</desc>
            <filename>bug-152294-20220504110449.patch</filename>
            <type>text/plain</type>
            <size>156890</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDM5MTg2YjI1NmZmNjlmZmE3MWMzZGMxNTVmNzRhNzg2MTAyMTRhLi43YTkzZWNhZTlmNzUyZTQ2
NTAwYTc5YWNlNzc2YTBkMDQyODYyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBqc21pbiB0byAzLjAuMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGY5ZDlhYWU2YmEyOTM0OGRmOGViZWVhZWQwNzUzZDE0MDg0OTZkM2MuLjMz
Y2RkNzRlY2MyMjIzNzlhN2FlNjc0N2E0MjQ0Zjk0NWNhMjk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
LSBCdWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBh
cyBhIHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAg
ICAgLSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9m
IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3Bl
cnRpZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1
c2UgYSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNl
ci1wcm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFu
cyB0aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRo
ZW0gaW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1
cHBvcnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5v
IG1vcmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTA0ICBaaXJhbiBTdW4g
IDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gU2VsZWN0aW9uIGFm
dGVyIHR5cGUgY2hhbmdlIG5lZWRzIHRvIGZvbGxvdyBIVE1MIHNwZWNpZmljYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZl
YWI4NmQyNDFjNTFhZDg5Li5lNmVkN2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21f
Y29tbWFuZCgKQEAgLTE0MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NC
dWlsdGlucy5oCiApCiAKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQot
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pz
bWluLnB5IDwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyA+PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgKLSAgICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgpCi0KIGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9U
IEVOQUJMRV9DX0xPT1ApCiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCA4ZDU0MGJkNTE5MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYx
ZDMwNjA3ZThhNmZiNTE0M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsy
MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9HZW5lcmF0ZWRXYXNtT3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNt
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5p
dFdhc20uYXNtCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4
YTFiYTEzYzA5NWY3ZTE1NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0
ZjBkNDRlNWIzNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTY4LDcgKzY4LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFT
Y3JpcHRDb3JlKS9TY3JpcHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVk
U2NyaXB0U291cmNlLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmgg
XAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvV2ViQXNzZW1ibHkuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRl
cGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywg
c28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwp
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5w
bCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZp
bmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4g
Li9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkk
KFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlw
dFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BD
T0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4
YjIzMGY1OTI3MWNmZmQxNy4uMjRkNGJlODZiOWMxNWZkYzZkMjdkNzNiYTkwZWZhODk5MDM0ZDJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJ
CUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0Mw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oICovOyB9OwogCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5oICovOyB9OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICov
OyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVD
OTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAw
RjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0Qy
MTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NTEsNiArMzc1MCw3IEBACiAJ
CTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRG
OUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQy
ODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmlu
aXRpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBl
RGVmaW5pdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBD
NEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwNyw3ICs0NzA3LDYgQEAKIAkJ
QTUxM0U1QkMxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1
QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5q
ZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkU2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
Mjg0LDcgKzcyODMsNiBAQAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJ
bml0Qnl0ZWNvZGVzLmFzbSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CkBAIC05MzYzLDYgKzkzNjEsNyBAQAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVE
MDA1NDUyNEQgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQx
ODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMw
MDAzNzFBMjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1
RDlCMTAwOURCMUVGIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2
NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUw
NDUxQjFDMjVCNEIxMDBCQjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTIs
NyArMTA0NTEsNiBAQAogCQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3
QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1t
aW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1
QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDhBN0JGMDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyMzgwLDcgKzEyMzc4LDYgQEAKIAkJCQk1MzZCMzE3QTFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTEwNy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyNzFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzZCMzEyQzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlFMzExMzVDQTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJC
YXNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTExMC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE4
MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEyNDA5LDcgKzEyNDA2LDYgQEAKIAkJCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTEzNS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzVDMjQ2QzFGN0ExNzc4
MDA2RUM0MEUgLyogVW5pZmllZFNvdXJjZTEzNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBB
NjZCQzFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFMzExMzVDQjI4MUI1QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxMzguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UxMzkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkYxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MjQyMCw3ICsxMjQxNiw2IEBACiAJCQkJNTMwQTY2QzQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjIyNjhGQkM3QjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUUy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRTMxMTM1QzkyODFCNUIwMDAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291
cmNlcyAqLywKIAkJCQk1MzhGMTVFNzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0
OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVGMDI2OEZCQkI2MDBENjAxQzQgLyogVW5p
ZmllZFNvdXJjZTE0OS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFQjI2OEZCQkI2MDBE
NjAxQzQgLyogVW5pZmllZFNvdXJjZTE1MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDMwLDYg
KzEyNDI1LDkgQEAKIAkJCQk1MzhGMTVFQTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFRjI2OEZCQkI2MDBENjAxQzQgLyog
VW5pZmllZFNvdXJjZTE1NS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjVDOUNERjIyMDI4NTgz
MDA4MkRCRkQgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MTEzNUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5j
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9y
bWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVk
YzE1Y2NhZGY1ZjAwYTZmMmY0OTAxMDczMDE5NzlhODZkMTY4Ny4uMzg3NGRkNDJmMjc2MGYzNGU4
NmQ4ZGM4MTg2MWE1MmVjODhmZTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1
Miw3IEBAIGZ1bmN0aW9uSXNBc3luY1JlZ0V4cCA9IHJlLmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1
bmN0aW9uIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5j
b21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxM
KQogZnVuY3Rpb25PdmVycmlkZGVuTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJp
ZGRlbk5hbWU9KFwiLitcIikkIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/
Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxU
SUxJTkUgfCByZS5ET1RBTEwpCitmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBp
bGUociIsXHMqKD8hW157fV0qXH0pIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0
aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICAgICAgaXNfbmFrZWRfY29uc3RydWN0b3IgPSBm
dW5jdGlvbk5ha2VkQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBO
b25lCiAgICAgICAgIGlmIGlzX25ha2VkX2NvbnN0cnVjdG9yOgogICAgICAgICAgICAgaXNfY29u
c3RydWN0b3IgPSBUcnVlCi0gICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGlu
IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxp
dCgnLCcpXQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlcnNTcGxpdHRlci5zcGxpdChmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxs
KGZ1bmN0aW9uX3NvdXJjZSlbMF0pXQogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0g
MDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBj
bGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAg
ICAgICAgc3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4g
bWF0Y2hlczoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAg
aWYgc3RhcnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVu
ZCA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAg
ICAgICAgICAgZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAg
ICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0
aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAg
ICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q2hhcmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5n
Q2hhcmFjdGVyOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAg
ICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3Rl
ciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAg
IGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFj
dGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVy
ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAg
IyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFp
bmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAg
ICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2Fu
IGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAg
ICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVz
ZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAg
ICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxs
IHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAg
ICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0
IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAg
ICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4K
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlm
IGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAx
CisgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAg
ICAgICAgICAgICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlv
blN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBm
dW5jdGlvbkJvdW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODg4YzhiYWU0MzVmODg2M2Y0ODBkZDgxZTQ1
NTY2ZDc4YjYxZWZhNy4uNzA5OTI2YWU3Mzg2OTA3ZGJkNDliMWQwZjVkNTM2MTVmMzRlODVlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IHBhcmFtZXRlcnNTdGFydCArIDE7CiAgICAgICAg
IHVuc2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJvb2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9
IGZhbHNlOwogICAgICAgICBib29sIHNhd09uZVBhcmFtID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
aGFzUmVzdFBhcmFtID0gZmFsc2U7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xMTMsNyAr
MTE0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnKScpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlm
IChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09
ICd9JykKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CisgICAg
ICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNr
ZXRzKSB7CisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKICAgICAgICAgICAgICAgICArK2NvbW1h
czsKICAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFy
YWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFl
NzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uNzI5MWZhMmQ1YjJmYjFhMTc1N2UxZTEw
NWNlYzMxYjk0Y2E0ZGQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24p
IFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhqc29uUGFyc2UpIFwKKyAgICBt
YWNybyhqc29uU3RyaW5naWZ5KSBcCisgICAgbWFjcm8oU3RyaW5nKSBcCisgICAgbWFjcm8oc3Vi
c3RyKSBcCisgICAgbWFjcm8oZW5kc1dpdGgpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCisgICAgbWFjcm8o
Z2V0T3duUHJvcGVydHlTeW1ib2xzKSBcCisgICAgbWFjcm8oaGFzT3duKSBcCisgICAgbWFjcm8o
aW5kZXhPZikgXAorICAgIG1hY3JvKHBvcCkgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCmlu
ZGV4IDI2M2U0M2JmYzBlODMxMTYwNTAyYTk4NWUyNDFhZTA3Yzc3ZWUyZjQuLmIxOTg2ZTg4NTMw
Y2VjNjYyYzE5ZmZlYWU3NWEzNGI3NWU4NmZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwpAQCAtNTEsMyArNTEsNDMgQEAgZnVu
Y3Rpb24gcGVyZm9ybUl0ZXJhdGlvbihpdGVyYWJsZSkKICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KHJlc3VsdCwgaW5kZXgrKywgaXRlbS52YWx1ZSk7CiAgICAgfQogfQorCitAZ2xvYmFsUHJpdmF0
ZQorZnVuY3Rpb24gd3JhcHBlZEl0ZXJhdG9yKGl0ZXJhdG9yKQoreworICAgIGxldCB3cmFwcGVy
ID0gQE9iamVjdC5AY3JlYXRlKG51bGwpOworICAgIHdyYXBwZXIuQEBpdGVyYXRvciA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaXRlcmF0b3I7IH0KKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworQGds
b2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5TZXRJdGVyYWJsZShzZXQpCit7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIAorICAgIGlmICghQGlzU2V0KHNldCkpCisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiYnVpbHRpblNldEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1TZXQgb2JqZWN0LiIp
OworCisgICAgLy8gVXNpbmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMg
dGhhdCB0aGUgc3ltYm9sIGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5v
dCBwcm90ZWN0CisgICAgLy8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVu
IHJlcGxhY2VkLiBGb3IgU2V0cywgYEB2YWx1ZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9u
IG9yaWdpbmFsbHkKKyAgICAvLyBwbGFjZWQgYXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0
IGl0ZXJhdG9yRnVuY3Rpb24gPSBzZXQuQHZhbHVlczsKKyAgICAKKyAgICByZXR1cm4gQHdyYXBw
ZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKHNldCkpOworfQorCitAZ2xvYmFsUHJp
dmF0ZQorZnVuY3Rpb24gYnVpbHRpbk1hcEl0ZXJhYmxlKG1hcCkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisgICAgCisgICAgaWYgKCFAaXNNYXAobWFwKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJidWlsdGluTWFwSXRlcmFibGUgY2FsbGVkIHdpdGggbm9uLU1hcCBvYmplY3QuIik7CisKKyAg
ICAvLyBVc2luZyB0aGUgcHJpdmF0ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRo
ZSBzeW1ib2wgaXRzZWxmIGhhcyBub3QgYmVlbiBtb2RpZmllZCwgYnV0IGRvZXMgbm90IHByb3Rl
Y3QKKyAgICAvLyBhZ2FpbnN0IHRoZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5nIGJlZW4gcmVwbGFj
ZWQuIEZvciBNYXBzLCBgQGVudHJpZXNgIGhhcyBhIGNvcHkgb2YgdGhlIGZ1bmN0aW9uIG9yaWdp
bmFsbHkKKyAgICAvLyBwbGFjZWQgYXQgYFN5bWJvbC5pdGVyYXRvcmAuCisgICAgbGV0IGl0ZXJh
dG9yRnVuY3Rpb24gPSBtYXAuQGVudHJpZXM7CisKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRv
cihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKG1hcCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggMWM0N2VlZWJhODY5MDhi
OTBmOTljYjBjZTc0NmYwMTliZDNlZDcyMy4uNGRlMTg1NDMxZTNhNjU5YTQxODBhMzI3NTRiMDNj
NWEzMmJlMzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
a1RpbWVDb25zdGFudC5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIHYoY3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlzUmVtb3Rl
RnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAorICAgIHYo
anNvblBhcnNlLCBudWxscHRyKSBcCisgICAgdihqc29uU3RyaW5naWZ5LCBudWxscHRyKSBcCisK
Ky8vICAgIHYoU3RyaW5nLCBudWxscHRyKSAKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1F
X0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggY2IwNjM0
MDJiZjEyMmVhZTE2OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJkMWJjZTdlYWIwZmFmMTU0ZTA4
NzViN2MwYzc2ZGNkYmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsOSArMzEsOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
U291cmNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1ICsxMzUsMTggQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFsdWUoKQogICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5jbGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAKLVN0cmluZyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5n
SW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNpemVv
ZihJbmplY3RlZFNjcmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBlY3RlZDxKU09iamVjdCosIE5h
a2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGludCBpZCkKK0V4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBpbnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNv
dXJjZSwgeyB9KTsKICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+
Z2xvYmFsVGhpcygpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0
aW9uOwotICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBtX2Vu
dmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9
IGV2YWx1YXRlSGFuZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1
ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0g
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBh
dXRvKiBmdW5jdGlvblZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihnbG9iYWxPYmplY3QtPmxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRT
Y3JpcHQpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChz
Y29wZS5leGNlcHRpb24oKSkpOworICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShmdW5j
dGlvblZhbHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9u
ZSkKQEAgLTE2Niw3ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VS
VCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNh
bGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVl
LCBhcmdzKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0
dXJuIHJlc3VsdC5nZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVk
U2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAg
aW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3Jl
YXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwg
Z2xvYmFsT2JqZWN0LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChnbG9iYWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAg
ICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NFUlQo
ZXJyb3IpOwpAQCAtMTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAg
ICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRl
TGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9y
IHdoZW4gY3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFs
dWUoKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVt
bik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3
YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3
YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmlu
ZGV4IDFmNzQwYzQwNjg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRi
YjRiZjIyZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCAr
NzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50
PiBtX3NjcmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3Jp
cHRTb3VyY2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCos
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZp
cm9ubWVudDsKICAgICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhm
ZDVlOWExMS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxl
OjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQog
ICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1
dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJy
b3Igd2hlbiBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClc
biIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmpl
Y3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghaGFz
SW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRN
b2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KHNvdXJjZSgpKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVl
KGluamVjdE1vZHVsZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwog
ICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdl
ciwgaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RN
b2R1bGVSZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQo
ZnVuY3Rpb24pOwogICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyAr
OTEsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNp
emUoKSA+IDApCiAgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4o
bGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxs
aW5nICdpbmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgp
LmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFs
T2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZM
b2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgK
aW5kZXggMjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5Njky
Yjc0NTZhMDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBJbmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2Ugewog
cHVibGljOgogICAgIH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlv
biogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
CmluZGV4IDQ4YmFlZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhjNDkyNWY2YzQuLmQwMzdmM2Rl
OTY0NzdmNWY0YjJjMDkxNGEzOTNmZDE5YTQ1YzgxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNyArMjcs
MzkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0
X0luamVjdGVkU2NyaXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEsIGtleTIsIHZhbHVlMiwgLi4u
ICovKQoreworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAgQHRo
cm93UmFuZ2VFcnJvcigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGVgIHJlcXVpcmVzIHRo
YXQgZWFjaCBrZXkgYXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2YWx1ZSwgcmVzdWx0aW5nIGlu
IGFuIGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAgIGxldCBvYmplY3QgPSBAT2Jq
ZWN0LkBjcmVhdGUobnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7IGkgKz0gMikKKyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tpXV0gPSBhcmd1bWVudHNbaSAr
IDFdOwogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIElu
amVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVz
ZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVB
cnJheVdpdGhvdXRQcm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIsIC4uLiAqLykKK3sKKyAgICBs
ZXQgYXJyYXkgPSBuZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpOworICAgIGFycmF5Ll9fcHJv
dG9fXyA9IG51bGw7CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVu
Z3RoOyArK2kpCisgICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFyZ3VtZW50c1tpXSk7CisgICAg
CisgICAgcmV0dXJuIGFycmF5OworfQogCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7CitA
Z2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5q
ZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQp
Cit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7
CisgICAgcmV0dXJuICIiICsgb2JqOworLy8gICAgcmV0dXJuIFN0cmluZyhvYmopOwogfQogCiBm
dW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9uKG9iaikKQEAgLTkzLDYgKzExNSwxNSBAQCBmdW5j
dGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogfQorICAgIAorZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFy
Z3VtZW50cyhhcmd1bWVudHNPYmplY3QpIHsKKyAgICBsZXQgaXRlcmF0b3JGdW5jdGlvbiA9IGFy
Z3VtZW50c09iamVjdC5AQGl0ZXJhdG9yOworICAgIHJldHVybiBAd3JhcHBlZEl0ZXJhdG9yKGl0
ZXJhdG9yRnVuY3Rpb24uQGNhbGwoYXJndW1lbnRzT2JqZWN0KSk7Cit9CisKK2Z1bmN0aW9uIG1h
eChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7Cit9CiAKIC8vIC0tLS0tLS0KIApA
QCAtMTAxLDEyICsxMzIsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9sYXN0Qm91bmRP
YmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAg
ICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0
R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKKyAgICAgICAgdGhpcy5f
aWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOworICAg
ICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0gQGNyZWF0ZU9iamVjdFdpdGhv
dXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsK
LSAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICB9CiAKICAgICAvLyBJ
bmplY3RlZFNjcmlwdCBDKysgQVBJCkBAIC0xMTUsNyArMTQ2LDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93
cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmll
dywgc2F2ZVJlc3VsdCwgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJh
bWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVk
U2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0
LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFs
dWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5q
ZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1
ZGVDb21tYW5kTGluZUFQSSkuQGFwcGx5KEB1bmRlZmluZWQsIGFyZ3MpOwogICAgICAgICB9KTsK
ICAgICB9CiAKQEAgLTEzNiwxNiArMTY3LDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNz
IEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYg
KCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewogICAgICAgICAgICAgY2Fs
bGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21pc2UiKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVlKSA9
PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdh
c1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3Jl
YXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0
ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3Qg
PSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhy
b3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVh
dGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRl
UHJldmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCkg
ewogICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5LDcg
KzE5MCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAg
ICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlz
Ll9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKICAg
ICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7Cisg
ICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAKICAg
ICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Np
b24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdl
bmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCw3ICsyMTEsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWlzRGVmaW5lZChv
YmplY3QpKQogICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBn
aXZlbiBpZCI7CiAKLSAgICAgICAgbGV0IHJlc29sdmVkQXJncyA9IFtdOworICAgICAgICBsZXQg
cmVzb2x2ZWRBcmdzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBp
ZiAoYXJncykgewogICAgICAgICAgICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0
LmV2YWx1YXRlKGFyZ3MpOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJn
cy5sZW5ndGg7ICsraSkgewpAQCAtMTk3LDEwICsyMjgsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0g
ImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICByZXR1cm4gIkdpdmVuIGV4cHJlc3Npb24gZG9l
cyBub3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlvbiI7CiAKLSAgICAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6
IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5hcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9i
amVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgK
KyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJl
c3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5AYXBwbHkob2JqZWN0LCByZXNvbHZlZEFy
Z3MpLCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisg
ICAgICAgICAgICApOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fY3JlYXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICAgICAgfQpA
QCAtMjMzLDEzICsyNjQsMjIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICBnZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBvd25Qcm9wZXJ0aWVzLCBmZXRjaFN0
YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICBsZXQgY29s
bGVjdGlvbk1vZGUgPSBvd25Qcm9wZXJ0aWVzID8gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1v
ZGUuT3duUHJvcGVydGllcyA6IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3Bl
cnRpZXM7Ci0gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xs
ZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlld30pOwor
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1v
ZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgImZldGNoU3Rh
cnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAgImZldGNoQ291bnQiLCBmZXRjaENvdW50LAor
ICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIsIGdlbmVyYXRlUHJldmlldywKKyAgICAgICAg
KSk7CiAgICAgfQogCiAgICAgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKG9iamVjdElkLCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICBsZXQg
Y29sbGVjdGlvbk1vZGUgPSBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0
aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuTmF0aXZlR2V0dGVyUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3LCBuYXRpdmVH
ZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRp
ZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgKKyAgICAgICAgICAgICJmZXRjaFN0YXJ0IiwgZmV0Y2hTdGFydCwKKyAgICAgICAgICAgICJm
ZXRjaENvdW50IiwgZmV0Y2hDb3VudCwKKyAgICAgICAgICAgICJnZW5lcmF0ZVByZXZpZXciLCBn
ZW5lcmF0ZVByZXZpZXcsCisgICAgICAgICAgICAibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwgdHJ1
ZSwKKyAgICAgICAgKSk7CiAgICAgfQogCiAgICAgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKG9iamVj
dElkLCBnZW5lcmF0ZVByZXZpZXcpCkBAIC0yNTYsNyArMjk2LDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSB0
aGlzLl9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsKICAgICAgICAgaWYgKCFk
ZXNjcmlwdG9ycykKLSAgICAgICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAgIHJldHVybiBA
Y3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBkZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IGRlc2NyaXB0
b3IgPSBkZXNjcmlwdG9yc1tpXTsKQEAgLTI4MCwxMiArMzIwLDEzIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbGV0IGVudHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHRIb3N0
LnN1YnR5cGUob2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7Ci0gICAgICAgIHJldHVy
biBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJp
ZXNbaV07CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZW50
cnkudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCJrZXkiIGluIGVudHJ5KQogICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVj
dC5jcmVhdGUoZW50cnkua2V5LCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGVudHJpZXM7CiAgICAgfQogCiAgICAgc2F2ZVJlc3VsdChjYWxsQXJndW1lbnRKU09OKQpA
QCAtMzA2LDEwICszNDcsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBsZXQgZGVwdGggPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZy
YW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJl
c3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFt
ZSkpOwogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAg
fSB3aGlsZSAoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNiw3ICsz
NjcsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHdy
YXBKU09OU3RyaW5nKGpzb25TdHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAg
IHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoSlNP
Ti5wYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChAanNvblBhcnNlKGpzb25TdHJpbmcp
LCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIH0gY2F0Y2ggewog
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KQEAgLTM0MywxMiArMzg0LDEyIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0
IGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5zID09PSAic3Ry
aW5nIikKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbY29sdW1uc107CisgICAgICAgICAgICBjb2x1
bW5zID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZShjb2x1bW5zKTsKIAogICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKLSAg
ICAgICAgICAgIGNvbHVtbk5hbWVzID0gW107CisgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgY29sdW1ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5w
dXNoKHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKKyAgICAgICAgICAgICAgICBAYXJyYXlQdXNoKGNv
bHVtbk5hbWVzLCB0b1N0cmluZyhjb2x1bW5zW2ldKSk7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBmYWxzZSwgdHJ1ZSwg
Y29sdW1uTmFtZXMpOwpAQCAtMzk2LDcgKzQzNyw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUgPT09ICJjb25z
b2xlIikgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RSZXN1bHQ7CiAgICAgICAgICAg
ICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgICAgICB0aGlzLl9zYXZl
ZFJlc3VsdHMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVB
cnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBncm91cCA9
IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwpAQCAtNDI5LDE0ICs0NzAsMTYg
QEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgcmV0
dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CiAgICAgfQogCi0gICAgaW5qZWN0TW9kdWxlKG5hbWUs
IHNvdXJjZSwgaG9zdCkKKyAgICBpbmplY3RNb2R1bGUobmFtZSwgbW9kdWxlRnVuY3Rpb24sIGhv
c3QpCiAgICAgewogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gZmFsc2U7CiAKLSAgICAg
ICAgbGV0IG1vZHVsZUZ1bmN0aW9uID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiAr
IHNvdXJjZSArICIpIik7CiAgICAgICAgIGlmICh0eXBlb2YgbW9kdWxlRnVuY3Rpb24gIT09ICJm
dW5jdGlvbiIpCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVu
Y3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1bGUiOwotICAgICAgICBtb2R1bGVGdW5j
dGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRT
Y3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBob3N0KTsKKyAg
ICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKAorICAgICAgICAgICAgIlJlbW90ZU9iamVjdCIsIFJlbW90ZU9iamVjdCwKKyAgICAgICAg
ICAgICJDb21tYW5kTGluZUFQSSIsIENvbW1hbmRMaW5lQVBJLAorICAgICAgICApLCBob3N0KTsK
IAogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gdHJ1ZTsKICAgICB9CkBAIC00NzAsMTAg
KzUxMywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICBpZiAob2JqZWN0R3JvdXBOYW1lKSB7CiAgICAgICAgICAgICBsZXQgZ3JvdXAgPSB0aGlz
Ll9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKICAgICAgICAgICAgIGlmICghZ3JvdXAp
IHsKLSAgICAgICAgICAgICAgICBncm91cCA9IFtdOworICAgICAgICAgICAgICAgIGdyb3VwID0g
QGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgICAgIHRoaXMuX29i
amVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0gZ3JvdXA7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBncm91cC5wdXNoKGlkKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZ3JvdXAsIGlk
KTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbaWRdID0gb2JqZWN0R3Jv
dXBOYW1lOwogICAgICAgICB9CiAKQEAgLTQ4OCw4ICs1MzEsNyBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgX2ZhbGxiYWNrV3JhcHBlcihvYmplY3Qp
CiAgICAgewotICAgICAgICBsZXQgcmVzdWx0ID0ge307Ci0gICAgICAgIHJlc3VsdC50eXBlID0g
dHlwZW9mIG9iamVjdDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKCJ0eXBlIiwgdHlwZW9mIG9iamVjdCk7CiAgICAgICAgIGlmIChpc1ByaW1pdGl2
ZVZhbHVlKG9iamVjdCkpCiAgICAgICAgICAgICByZXN1bHQudmFsdWUgPSBvYmplY3Q7CiAgICAg
ICAgIGVsc2UKQEAgLTUxNSw3ICs1NTcsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQXJnOwogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7
CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93blZhbHVlKHZhbHVlLCBvYmplY3RHcm91cCkKQEAg
LTUyNCwxMCArNTY2LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICByZW1vdGVPYmplY3QuZGVzY3JpcHRpb24g
PSB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKTsKICAgICAgICAgfSBjYXRjaCB7IH0KLSAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHdhc1Rocm93bjogdHJ1ZSwKLSAgICAgICAgICAgIHJl
c3VsdDogcmVtb3RlT2JqZWN0Ci0gICAgICAgIH07CisgICAgICAgIHJldHVybiBAY3JlYXRlT2Jq
ZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJ3YXNUaHJvd24iLCB0cnVlLAorICAg
ICAgICAgICAgInJlc3VsdCIsIHJlbW90ZU9iamVjdCwKKyAgICAgICAgKTsKICAgICB9CiAKICAg
ICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmpl
Y3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQpAQCAtNTUyLDEwICs1OTQsMTAg
QEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwogCi0gICAgICAgICAg
ICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2Us
Ci0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMoKSwgb2Jq
ZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKLSAgICAgICAgICAgIH07
CisgICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAg
ICAgICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMoKSwgb2JqZWN0R3JvdXAsIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAg
ICAgICBpZiAoc2F2ZVJlc3VsdCAmJiB0aGlzLl9zYXZlZFJlc3VsdEluZGV4KQogICAgICAgICAg
ICAgICAgIHJldHVybk9iamVjdC5zYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRJ
bmRleDsKQEAgLTU3MSw3ICs2MTMsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICBsZXQgY29tbWFuZExpbmVBUEkgPSBudWxsOwogICAgICAgICBp
ZiAoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKQogICAgICAgICAgICAgY29tbWFuZExpbmVBUEkgPSB0
aGlzLmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KGlzRXZhbE9uQ2FsbEZyYW1lID8gb2JqZWN0
IDogbnVsbCk7Ci0gICAgICAgIHJldHVybiBldmFsRnVuY3Rpb24uY2FsbChvYmplY3QsIGV4cHJl
c3Npb24sIGNvbW1hbmRMaW5lQVBJKTsKKyAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5AY2Fs
bChvYmplY3QsIGV4cHJlc3Npb24sIGNvbW1hbmRMaW5lQVBJKTsKICAgICB9CiAKICAgICBfY2Fs
bEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCkKQEAgLTYwNyw3ICs2NDksNyBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAvLyBB
bHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJz
dCBmZXRjaC4KICAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9ICFzdGFydDsKIAotICAgICAgICBs
ZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gQGNyZWF0ZUFy
cmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB0aGlzLl9mb3JFYWNoUHJvcGVydHlEZXNj
cmlwdG9yKG9iamVjdCwgY29sbGVjdGlvbk1vZGUsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAg
ICAgICBpZiAoc3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgLS1zdGFydDsKQEAgLTYyMiwx
MyArNjY0LDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVz
Y3JpcHRvci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsK
ICAgICAgICAgICAgIGlmICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQogICAgICAgICAgICAgICAg
IGRlc2NyaXB0b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJv
bCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3Jp
cHRvcik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsK
IAogICAgICAgICAgICAgaWYgKGluY2x1ZGVQcm90byAmJiBjb3VudCAmJiBkZXNjcmlwdG9ycy5s
ZW5ndGggPj0gY291bnQgJiYgZGVzY3JpcHRvci5uYW1lICE9PSAiX19wcm90b19fIikKICAgICAg
ICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9w
OwogCiAgICAgICAgICAgICByZXR1cm4gKGNvdW50ICYmIGRlc2NyaXB0b3JzLmxlbmd0aCA+PSBj
b3VudCkgPyBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3AgOiBJbmplY3Rl
ZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwotICAgICAgICB9LCB7bmF0aXZl
R2V0dGVyc0FzVmFsdWVzLCBpbmNsdWRlUHJvdG99KTsKKyAgICAgICAgfSwgQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwg
bmF0aXZlR2V0dGVyc0FzVmFsdWVzLAorICAgICAgICAgICAgImluY2x1ZGVQcm90byIsIGluY2x1
ZGVQcm90bywKKyAgICAgICAgKSk7CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9
CiAKQEAgLTYzOCwxMyArNjgzLDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgIGlmICghaW50ZXJuYWxQcm9wZXJ0aWVzKQogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAKLSAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxl
dCBkZXNjcmlwdG9ycyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHsKICAg
ICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGludGVybmFsUHJvcGVydGllc1tpXTsKLSAgICAgICAg
ICAgIGxldCBkZXNjcmlwdG9yID0ge25hbWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0
eS52YWx1ZX07CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJuYW1lIiwgcHJvcGVydHkubmFtZSwKKyAg
ICAgICAgICAgICAgICAidmFsdWUiLCBwcm9wZXJ0eS52YWx1ZSwKKyAgICAgICAgICAgICk7CiAg
ICAgICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlw
dG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9CkBAIC02NTQsMTUg
KzcwMiwxOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBT
ZXQ7CisgICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IEBTZXQ7CiAKICAgICAgICAgLy8g
SGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBuYW1lUHJvY2Vzc2Vk
LmFkZCgiX19wcm90b19fIik7CisgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZCgiX19wcm90b19f
Iik7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBz
eW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dl
dHRlcikKICAgICAgICAgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBsZXQg
ZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IG9iamVjdFtuYW1lXX07CisgICAgICAgICAg
ICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
InZhbHVlIiwgb2JqZWN0W25hbWVdLAorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAg
ICAgaWYgKGRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
d3JpdGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci53cml0YWJs
ZSA9IHRydWU7CkBAIC02NzgsMTEgKzcyOSwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCiAgICAgICAgICAg
ICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJvbDsKICAgICAgICAgICAgICAg
ICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBj
cmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9uZyB0aGlz
IG9iamVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFu
Y2VvZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhO
YXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQotICAgICAgICAgICAg
ICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOworICAgICAg
ICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYm
IEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBl
RXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVz
Y3JpcHRvci52YWx1ZS5AY2F0Y2goZnVuY3Rpb24oKXt9KTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFrZURlc2NyaXB0b3I7CiAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogZSwgd2FzVGhyb3duOiB0
cnVlfTsKKyAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgInZhbHVlIiwgZSwKKyAgICAgICAgICAgICAgICAgICAgIndhc1Ro
cm93biIsIHRydWUsCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICBpZiAoaXNP
d25Qcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjcmlwdG9yLmlzT3duID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQpAQCAtNzEwLDE1ICs3NjUsMTUgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBmdW5j
dGlvbiBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lLCBpc093blByb3BlcnR5KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5oYXMocHJvcGVydHlOYW1lKSkK
KyAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLkBoYXMocHJvcGVydHlOYW1lKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250
aW51ZTsKIAotICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQocHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZChwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgICAg
ICBsZXQgbmFtZSA9IHRvU3RyaW5nKHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBsZXQgc3lt
Ym9sID0gaXNTeW1ib2wocHJvcGVydHlOYW1lKSA/IHByb3BlcnR5TmFtZSA6IG51bGw7CiAKLSAg
ICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAT2JqZWN0
LkBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IGlmICghZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBCYWQgZGVzY3Jp
cHRvci4gQ2FuIHdlIGdldCBoZXJlPwogICAgICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byB2
ZXJ5IHJlc3RyaWN0aXZlIHNldHRpbmdzLgpAQCAtNzI3LDcgKzc4Miw3IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoU3Ry
aW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVz
Y3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikgJiYgIWRlc2Ny
aXB0b3Iuc2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSkgeworICAgICAg
ICAgICAgICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBj
b2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0
b3IsICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0
b3IsICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxvcGVycyBtYXkgY3Jl
YXRlIHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxpZW50OgogICAgICAg
ICAgICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwgInAi
LCB7Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHgsICJw
IikKICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZh
bHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHRy
dWUpOwpAQCAtNzQ1LDEwICs4MDAsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVu
Z3RoID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0
Lmxlbmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgZm9yIChsZXQgbyA9
IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKSB7Cisg
ICAgICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IEBPYmplY3QuQGdl
dFByb3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09
IG9iamVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNlOwogCkBAIC03NjQs
NyArODE5LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1l
cyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lc1tp
XSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVz
dWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC03NzYs
MTQgKzgzMSwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewotICAgICAgICAg
ICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KG8pOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNz
UHJvcGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKLSAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFr
KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5U3lt
Ym9scyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9w
ZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHNob3Vs
ZEJyZWFrKQpAQCAtNzk2LDIzICs4NDksMjggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1ZGVQcm90bykgewogICAgICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXykKLSAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3RvX18iLCB2YWx1ZTogb2JqZWN0Ll9fcHJv
dG9fXywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgaXNPd246IHRydWV9KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsICJfX3Byb3RvX18iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0Ll9fcHJvdG9fXywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAi
Y29uZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpc093biIsIHRy
dWUsCisgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSBjYXRjaCB7IH0KICAg
ICAgICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwg
ZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxl
dCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8v
IEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIFNldC5wcm90
b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Ygb2JqZWN0
KSB7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGluU2V0SXRlcmFibGUob2JqZWN0
KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAg
ZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ2YWx1ZSIsIHZhbHVl
KSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBm
ZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIzLDE2ICs4ODEsMTggQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9nZXRNYXBF
bnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxl
dCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYg
dGhlIHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAg
ICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCBb
a2V5LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAg
ICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVu
dHJpZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5UHVzaChlbnRyaWVz
LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAia2V5Iiwg
a2V5LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZhbHVlLAorICAgICAgICAgICAgKSk7CiAK
ICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENv
dW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MzYsMTAgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMu
X2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVk
IHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8
fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4
aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOworICAgICAg
ICBsZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90b3R5cGUuQGluZGV4T2YuQGNhbGwodGhp
cy5fc2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0g
LTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5NTQsMTYgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1JbmplY3RlZFNjcmlw
dC5Db2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8IDAsICAgICAgICAg
IC8vIG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRpZXM6IDEgPDwgMSwg
Ly8gbmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi0gICAg
QWxsUHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUg
cHJvdG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIk93blByb3BlcnRpZXMiLCAxIDw8IDAs
ICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVz
IiwgMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBj
aGFpbi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3Bl
cnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29udGludWUiKSwKLSAg
ICBTdG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiQ29udGludWUiLCBA
Y3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICAiU3RvcCIsIEBjcmVhdGVQcml2
YXRlU3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0
ZWRTY3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIyLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVy
YXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsK
ICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRl
UHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAg
IHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQs
IGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcgKzEwMzcsNyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICB0cnkgewog
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0LmRlc2NyaWJlKGUpOwog
ICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICAgICBhbGVydChleC5tZXNz
YWdlKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJv
cihleC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICI8ZmFpbGVkIHRv
IGNvbnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3JpcHRpb24pOwpAQCAtOTg2LDcgKzEwNDYs
NyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBzdGF0aWMg
Y3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVt
bk5hbWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmpl
Y3QodmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMp
OworICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVu
ZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwogICAgICAgICBp
ZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVs
ZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBpZiAocmVtb3RlT2Jq
ZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJ
ZCkKQEAgLTEwMTEsNyArMTA3MSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9uLgogICAgICAgICB0
cnkgewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIg
JiYgaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUu
c3BsaWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsgfQogCkBAIC0xMDUw
LDggKzExMTAsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
ICAgIGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFt
ZTsKIAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBTeW1ib2wudG9TdHJp
bmdUYWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5n
VGFnXTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYgQEB0b1N0cmluZ1Rh
ZyBpbiB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5AQHRvU3RyaW5nVGFnOwogCiAg
ICAgICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkg
cHJpb3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikK
QEAgLTEwNjksNiArMTEyOSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKIAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAgICAgICAgLy8gRklY
TUU6IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJD
b3JlIGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9j
dW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAgICAgICAgbGV0IG5v
ZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjEsMTcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRpYWxQcmV2aWV3KCkKICAgICB7Ci0gICAg
ICAgIGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLAotICAgICAg
ICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1
ZSksCi0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsKKyAgICAgICAgbGV0
IHByZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJ0
eXBlIiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwgdGhpcy5kZXNjcmlw
dGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJsb3NzbGVzcyIsIHRy
dWUsCisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkgewogICAgICAgICAg
ICAgcHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAgICAgaWYgKHRoaXMu
c3VidHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAg
ICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5
cGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMTI2LDcgKzExODcsNyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgaWYgKHRoaXMu
c3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1
YnR5cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKLSAg
ICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBwcmV2
aWV3LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAg
ICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByZXZpZXcu
b3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTE0MSwyMyArMTIwMiwyMyBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGxldCBpc1RhYmxl
Um93c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09IG51bGwgfHwgc2Vjb25kTGV2ZWxLZXlz
OwogICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3VudCA9IGZpcnN0TGV2ZWxLZXlzID8gZmly
c3RMZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9s
ZCA9IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAg
OiBNYXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKLSAgICAgICAgICAgIGluZGV4ZXM6
IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCgxMCwgZmlyc3RMZXZlbEtleXND
b3VudCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJlc2hvbGQgPSBAY3Jl
YXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiwgaXNU
YWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAg
ICAgICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwg
Zmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRyaWVzLgogICAgICAg
ICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFr
c2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAgICAgICAgICAgdGhp
cy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0gICAgICAgICAgICBw
cmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9
IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICAgICAgLy8gSW50ZXJu
YWwgUHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnMgPSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwg
dHJ1ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKSB7CiAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRo
aXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNl
Y29uZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBp
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0
TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KCJpbnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0g
SW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE2OSw3ICsx
MjMwLDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAg
ICAgIC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFBy
b3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFs
bFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHBy
b3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwotICAg
ICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0
cnVlfSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAorICAgICAgICAgICAg
ICAgICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0gY2F0
Y2ggewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBA
IC0xMTc3LDcgKzEyNDEsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAgICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0KIAotICAgIF9hcHBlbmRQcm9wZXJ0eVBy
ZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBm
aXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9ID0ge30pCisgICAgX2Fw
cGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRp
ZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0g
PSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpKQogICAgIHsKICAgICAgICAgLy8gRXJy
b3IgaW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7CkBA
IC0xMTkwLDkgKzEyNTQsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAgICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAgICAgICAgLy8gTm9u
IGJhc2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5nLCBub24tZW51bWVy
YWJsZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUg
JiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAgICAgICAgICYmIGRl
c2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAgICAgICAgICAgJiYg
ZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAgICAgICAgICAgICAg
ICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QKKyAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJyYXkKKyAgICAgICAg
ICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAUmVnRXhwKQogICAg
ICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogICAgICAgICB9
CkBAIC0xMjA5LDcgKzEyNzMsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBzaG93IHByb3BlcnRp
ZXMgaW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGVzZSBmaWx0
ZXJzIGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChmaXJzdExldmVsS2V5
cyAmJiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAgIGlmIChmaXJzdExl
dmVsS2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5jbHVkZXMuQGNhbGwoZmlyc3RMZXZlbEtl
eXMsIG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0
Y2hBY3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kUHJldmlldyhwcm9w
ZXJ0eSkgewpAQCAtMTIyNywyMCArMTI5MSwyOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3Mg
UmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCiAgICAgICAgICAgICAgICAg
cHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRp
ZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHByZXZpZXcucHJvcGVy
dGllcywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3Bl
cnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHZXR0ZXIv
c2V0dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3IpKSB7CiAgICAgICAg
ICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5k
UHJldmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0pOworICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAg
ICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgImFjY2Vzc29yIiwKKyAg
ICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2YWx1ZS4KICAgICAg
ICAgbGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlID09PSBu
dWxsKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGU6ICJvYmpl
Y3QiLCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAg
ICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsICJvYmplY3QiLAor
ICAgICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwiLAorICAgICAgICAgICAgICAgICJ2YWx1
ZSIsICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAgICAgICAgIC8vIElnbm9yZSBub24tZW51
bWVyYWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlOwpAQCAt
MTI1OCw3ICsxMzMwLDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcodmFsdWUsIG1h
eExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUs
IHR5cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKX0pOworICAgICAgICAgICAg
cmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
ICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwK
KyAgICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKSwKKyAg
ICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU3ltYm9sLgpAQCAtMTI2OCwx
MSArMTM0NCwxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAg
ICAgICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xT
dHJpbmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVz
cyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZp
ZXcoe25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAg
ICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsIHR5cGUsCisgICAg
ICAgICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5nLAorICAgICAgICAgICAgKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9wZXJ0eSA9IHtuYW1l
LCB0eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAidHlwZSIsIHR5
cGUsCisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5
cGUodmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAgIHByb3BlcnR5LnN1
YnR5cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk2LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChl
bnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAg
ICAgICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwoZW50cmllcyk7CiAgICAgICAgICAgICBw
cmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBm
YWxzZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA2LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBm
YWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9IGVudHJpZXMubWFw
KGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBBcnJheS5wcm90
b3R5cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewogICAgICAgICAgICAg
ZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVu
dHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKICAgICAgICAgICAgIHVwZGF0ZU1h
aW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkg
ewpAQCAtMTMzNiw4ICsxNDE5LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKICAgICB7Ci0g
ICAgICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9iamVjdCk7CisgICAg
ICAgIGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2JqZWN0KTsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQs
IDEpOwogICAgIH0KQEAgLTEzNTcsMTEgKzE0NDAsMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8g
Q3ljbGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFzKG9iamVjdCkpCisg
ICAgICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGtub3duT2JqZWN0cy5hZGQob2Jq
ZWN0KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQob2JqZWN0KTsKIAogICAgICAgICAvLyBB
cnJheXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBvciBsZXNzIHNpbXBsZSBvYmplY3RzLgog
ICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCk7CkBAIC0x
MzgxLDEyICsxNDY0LDEyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBPYmplY3RzIGFyZSBzaW1w
bGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGllcy4KLSAgICAg
ICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QpOworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4g
MykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVy
dHlOYW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRv
ciAmJiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwo
b2JqZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTQwNCw2NiAr
MTQ4Nyw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
IGlmIChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBsZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAx
OwogICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxlZnRIYWxmIC0gMTsK
LSAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYi
ICsgc3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYi
ICsgc3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIG1heExlbmd0aCkg
KyAiXHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIG1heExlbmd0aCkg
KyAiXHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0tLS0tCiAKLUluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQotewotICAgIHRoaXMu
Y2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjok
e2luamVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUu
ZnVuY3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6IFN0cmluZyhjYWxs
RnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwgY29sdW1uTnVtYmVy
OiBjYWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0aGlzLl93cmFwU2Nv
cGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUo
Y2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKLSAgICB0aGlzLmlzVGFpbERlbGV0
ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07CitJbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsKKyAgICBjb25zdHJ1Y3RvcihvcmRpbmFs
LCBjYWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5h
bCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOwor
ICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7CisKKyAg
ICAgICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgInNjcmlwdElkIiwgU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksCisgICAgICAg
ICAgICAibGluZU51bWJlciIsIGNhbGxGcmFtZS5saW5lLAorICAgICAgICAgICAgImNvbHVtbk51
bWJlciIsIGNhbGxGcmFtZS5jb2x1bW4sCisgICAgICAgICk7CisKKyAgICAgICAgdGhpcy5zY29w
ZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsKKyAgICAgICAgdGhpcy50
aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFj
ZSIpOworICAgICAgICB0aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRl
ZDsKKyAgICB9CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsK
ICAgICBfd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbGV0IHNjb3Bl
Q2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKICAgICAgICAgbGV0IHNjb3BlRGVzY3JpcHRp
b25zID0gY2FsbEZyYW1lLnNjb3BlRGVzY3JpcHRpb25zKCk7CiAKLSAgICAgICAgbGV0IHNjb3Bl
Q2hhaW5Qcm94eSA9IFtdOworICAgICAgICBsZXQgc2NvcGVDaGFpblByb3h5ID0gQGNyZWF0ZUFy
cmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjb3Bl
Q2hhaW4ubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBzY29wZUNoYWluUHJveHlbaV0gPSBJbmpl
Y3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uKHNjb3BlQ2hhaW5baV0s
IHNjb3BlRGVzY3JpcHRpb25zW2ldLCAiYmFja3RyYWNlIik7CiAgICAgICAgIHJldHVybiBzY29w
ZUNoYWluUHJveHk7CiAgICAgfQotfTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHku
X3Njb3BlVHlwZU5hbWVzID0gewotICAgIDA6ICJnbG9iYWwiLCAvLyBHTE9CQUxfU0NPUEUKLSAg
ICAxOiAid2l0aCIsIC8vIFdJVEhfU0NPUEUKLSAgICAyOiAiY2xvc3VyZSIsIC8vIENMT1NVUkVf
U0NPUEUKLSAgICAzOiAiY2F0Y2giLCAvLyBDQVRDSF9TQ09QRQotICAgIDQ6ICJmdW5jdGlvbk5h
bWUiLCAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCi0gICAgNTogImdsb2JhbExleGljYWxFbnZpcm9u
bWVudCIsIC8vIEdMT0JBTF9MRVhJQ0FMX0VOVklST05NRU5UX1NDT1BFCi0gICAgNjogIm5lc3Rl
ZExleGljYWwiLCAvLyBORVNURURfTEVYSUNBTF9TQ09QRQotfTsKKyAgICBzdGF0aWMgX2NyZWF0
ZVNjb3BlSnNvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCisgICAg
eworICAgICAgICBsZXQgc2NvcGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICJvYmplY3QiLCBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBJZCks
CisgICAgICAgICAgICAidHlwZSIsIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29w
ZVR5cGVOYW1lc1t0eXBlXSwKKyAgICAgICAgKTsKIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1l
UHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwge25hbWUsIHR5cGUsIGxv
Y2F0aW9ufSwgZ3JvdXBJZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0gICAgICAgIG9iamVjdDog
UmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAgICAgICB0eXBlOiBJbmpl
Y3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCi0gICAgfTsK
KyAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsKIAotICAg
IGlmIChuYW1lKQotICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsKKyAgICAgICAgaWYgKGxvY2F0
aW9uKQorICAgICAgICAgICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKIAotICAgIGlmIChs
b2NhdGlvbikKLSAgICAgICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgaWYg
KGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsK
IAotICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkpCi0gICAgICAgIHNjb3BlLmVtcHR5ID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIHNjb3BlOworICAgIH0KK307CiAKLSAgICByZXR1cm4gc2Nv
cGU7Ci19CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXMgPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAwLCAiZ2xvYmFsIiwgLy8gR0xPQkFM
X1NDT1BFCisgICAgMSwgIndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAgMiwgImNsb3N1cmUiLCAv
LyBDTE9TVVJFX1NDT1BFCisgICAgMywgImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKKyAgICA0LCAi
ZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAgIDUsICJnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVAorICAgIDYsICJu
ZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKKyk7CiAKIC8vIC0tLS0tLS0K
IApAQCAtMTQ3Nyw5ICsxNTY2LDkgQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1l
KQogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG9yaWdpbmFsVmFsdWU7
IH07CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oIiQiICsga2V5
LCB2YWx1ZSk7CisgICAgICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5KHRoaXMsICIkIiArIGtl
eSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7CiAgICAgICAg
IGlmIChzYXZlZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVzdWx0QWxpYXMgIT09ICIkIikKLSAgICAg
ICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3VsdEFsaWFzICsga2V5LCB2YWx1
ZSk7CisgICAgICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBzYXZlZFJlc3Vs
dEFsaWFzICsga2V5LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgiZ2V0IiwgdmFsdWUp
KTsKICAgICB9OwogCiAgICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5qZWN0ZWRTY3JpcHQpCkBA
IC0xNTAyLDQ4ICsxNTkxLDQ4IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkK
ICAgICAgICAgdGhpc1tuYW1lXSA9IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV07CiB9CiAK
LUNvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogCi1Db21tYW5kTGluZUFQSS5tZXRob2Rz
ID0ge307CitDb21tYW5kTGluZUFQSS5tZXRob2RzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24ob2Jq
ZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0
aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC52YWx1ZXMo
b2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9i
amVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQHZh
bHVlcyhvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNl
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVy
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJz
KC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUluc3RhbmNl
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5j
ZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVu
dHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CiAKIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJj
bGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWci
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVi
dWcoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3Qo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZSguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uYXJndW1lbnRzKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5hc3NlcnQoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLmNsZWFyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21B
cmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3Vu
dCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNldCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jb3VudFJlc2V0KC4uLmNy
ZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1ZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmRpciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCgu
Li5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykp
OyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uY3JlYXRlSXRlcmFibGVX
aXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZy
b21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91
cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5ncm91cENvbGxhcHNlZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVG
cm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3Jv
dXBFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZ3JvdXBFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50
cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5wcm9maWxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5k
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnBy
b2ZpbGVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uY3Jl
YXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uY3JlYXRlSXRlcmFi
bGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGFibGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFw
U25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVG
cm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGlt
ZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50
aW1lKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5
cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
dHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUudHJhY2UoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5jcmVhdGVJ
dGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBm
b3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVB
UEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9u
ICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCiByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHQ7Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5k
ZXggYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQw
YjY1ODc0YTU4OGEzYmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoCiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci50eXBlKCkg
IT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFM
b2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2Fn
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNv
bXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24gbGluZSAiLCBlcnJvci5s
aW5lKCksICIuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApp
bmRleCBmYzc4ODk0NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNlNzljLi5mZmM5YzljMjMz
MWRhZTNkNmE2NWJkZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAog
I2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDggQEAgdm9pZCBBcnJheUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEFycmEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25z
dHJ1Y3RvcklzQXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZh
dGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCmluZGV4IDVhM2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4
NWZkN2QzMWUxMzU4MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEg
QEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1l
KCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmll
c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFB1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5jbHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRl
eE9mUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbmRleE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwg
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGlj
TmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucG9wUHJp
dmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5wb3BQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIGdsb2JhbE9i
amVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxl
cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVP
YmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBk
MjE0MzQxOS4uOTEwNWIwNjRjZmI1ZDgxZDE5ZWNlODYzM2U4MzM2NDExZmJiYjM1YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
Mjc1LDYgKzI3NSw4IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVf
RkxBR19UWVBFKQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVu
Y3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJv
cGVydHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5
bWJvbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2ICszNjMsMjMgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6
Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7
CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvIGpzb24gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGdsb2JhbE9iamVjdCwganNvbikp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lmeSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byByZXN1bHQgPSBKU09OU3RyaW5naWZ5
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7
Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2Vy
dENhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCiB7CkBAIC0xMDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAog
ICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9y
KTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IpOworLy8gICAgbV9zdHJpbmdDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlz
LCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwg
dGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwotICAgIAorLy8gICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U3RyaW5n
KV0uc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2YWxFcnJvclN0
cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRp
YWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9y
Q29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1Myw2ICsxNTc0
LDE0IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAgIH0pOwogCisg
ICAgLy8gSlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBhcnNlKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDEsIFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblN0
cmluZ2lmeSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lm
eSkpOworICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwogICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVJl
bW90ZUZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVS
ZW1vdGVGdW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwor
Ly8gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdHJpbmdDb25zdHJ1Y3Rvcik7CiAK
ICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3
ODdhZjY2YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uOWM3NWM2NWQ2ODc5YjhlZjcxOWY4YjU0
M2ExOGI2OGQ4ZmE0ZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90
b3R5cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291
cmNlT3JpZ2luOworLy9jbGFzcyBTdHJpbmdDb25zdHJ1Y3RvcjsKIGNsYXNzIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBzdHJ1Y3Qg
QWN0aXZhdGlvblN0YWNrTm9kZTsKQEAgLTMyMCw2ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgV3Jp
dGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9y
OwogICAgIFdyaXRlQmFycmllcjxKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yPiBtX2ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yOworLy8gICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0cnVj
dG9yPiBtX3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTg2ZGU5Nzc2
NGVjNGY1ZDE3N2ZiMWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0ZDU5NGY0ZjcyZmRlN2Zk
OTM2ZWE1MTQzMGNiYTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBK
U0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCku
c3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1By
aXZhdGVOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNmOWUxNzhmYjFjNzc3Mzhh
YTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2EzOTg3MDQxNWVlZjM3Y2Jl
MWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2Jq
CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUoKSwg
b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93
blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlOYW1l
c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lKCksIG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5
c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmRlZmluZVByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IDMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0
cnVjdG9yQ3JlYXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMik7Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQorICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAg
ICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duLCBvYmplY3RDb25z
dHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIpOworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25Qcml2YXRlTmFtZSgp
LCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8gRVMgMTkuMS4xLjEgT2Jq
ZWN0KFt2YWx1ZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcAppbmRleCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZkNWQ0YTk1ZGQ0ODcxLi5m
N2Y5YzE0MThiZjdjY2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDcgQEAg
dm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNTZXRW
YWx1ZXNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05h
bWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCmluZGV4IDUwNjcyMzJjZDY2Zjk5MTNiOTUzMmYwOWY2ODAzMWJlZWQw
NGNmOTMuLjMxYThmOWU3ZDdiYmQzMjY1MGMwY2IyOTgyNjlhOTM1ZWQwY2NjZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAt
MTY0LDYgKzE2NCw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRlcmF0
b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5
bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJzdHJQ
cml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5l
bmRzV2l0aFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAvLyBU
aGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3RydWN0
b3IgaGFzIGJlZW4gYnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0YjdlY2Vi
YmU4M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi43OTJhNjcwMTYyN2MxZWEzYzg5YmRlYTVj
OGNmM2IyMmNmY2RkZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEyOSw2
IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09SS19E
RUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19J
Rl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLWFk
ZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5E
RU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBFTkRT
ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hv
ICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQg
JHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi1s
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAtMjM1
Miw2ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09S
RV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9U
ZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQ
VFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
aW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uZjU2NzdlMmU0
NTI1MzU2MmJkMmYwYzkwMmQ1NjI3NmU2MGY3MzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24r
UHJvcGVydHlOYW1lcy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01DbGllbnRJc29TdWJzcGFjZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYxZmM2
ZmE0MjE2ZTQ2Yy4uYjEyM2FiZjkzZTI3NThkMjExNDhjMTAxYzlkMTczNGQwNDk2ZjlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAgaWZuZXEg
KCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1ZGUgJChKU19ET01fSEVBREVSUzou
aD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggOiAk
KFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotCWVjaG8g
Ii8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKFdlYkNvcmUpL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5w
bCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCSQoREVMRVRFKSBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIFdl
YkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKQEAgLTIyNTIsNiArMjI0Miw3IEBAIFdlYkNvcmVf
QlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RGVjb2RlclN0cmVh
bS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMgXAogICAgICQo
V2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAgICAkKFdl
YkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBcCiAjCiAKIEJV
SUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZDA2MGFk
OWYzMWFkMmU2MTQ4Mzc5NTIzNzBiYTUwMDExOWQwYWFjNC4uNTc4MjBiNzczZjA0OTAxNjQ5YTc3
Yjk4YjBkNWMzY2RiMDU0YjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMDY4LDYgKzIwNjgs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5oCiAgICAgJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1ZhbHVlS2V5d29yZHMuaAorICAgICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgK
ICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRJbnRlcmZhY2VzLmgKICAg
ICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgK
ICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSFRNTEVsZW1lbnRUeXBlSGVscGVy
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOWJhMWI4MjAzNTJjMTRkOTYwNjYzM2YzMDFmOWQ0NTM3MjhlMmUyNS4uZDNmOGQ1
NDU0NDUwNDkxYzVjZDcyMGQwYjMzNjZiMzg3NmE4ZGI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk5LDYgKzg5OSw3IEBA
CiAJCTJFMzAxQkU4Mjc0NTk0NzIwMEMwNTY0RiAvKiBDb21waWxlZFNlbGVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ1MTA3NzIwMkM3RTAx
MDA2NTdEMzMgLyogQ29tcGlsZWRTZWxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIzMyAvKiBET01V
UkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdE
RkQ4MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCAqLzsgfTsKIAkJMkUzN0UwMDYxMkRCQzVB
NDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLzsg
fTsKKwkJMkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNDM0NjM3MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjRCMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwpAQCAtMzUxNyw3ICszNTE4LDYgQEAK
IAkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDNFMURF
MEI2MkIwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4MUVEMTMxRkIyODhDRjAwQ0VE
NEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4MUVEMTAxRkIyODhDODAwQ0VENEVDIC8qIFNlcnZpY2VXb3Jr
ZXJBZ2VudC5oICovOyB9OwogCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0
ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
Ki87IH07Ci0JCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgg
Ki87IH07CiAJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZF
MkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi87IH07CiAJCUE1
ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2NENC
ODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKIAkJQTU4NEZF
MzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMzIxODY0RDVBRjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwpAQCAtODIwNCw2ICs4MjA0LDggQEAKIAkJ
MkUzN0RGRDkxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRE9NVVJMLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDMx
MkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRE9NVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2VyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTQxLDcgKzEzOTQzLDYgQEAKIAkJQTU4MUVEMTIxRkIyODhD
OTAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTg0MEUyMjE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluamVj
dGVkU2NyaXB0SG9zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIz
MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMjkxODYz
ODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRM
aW5lQVBJTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQyOSw3ICsy
MDQzMCw2IEBACiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1ODRGRTI1MTg2MzdE
QUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUE1ODRG
RTM5MTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCiAJCQkJ
QTU4NEZFM0ExODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmggKi8sCiAJ
CQkJOTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAqLywKQEAgLTIzNTg3LDYgKzIzNTg3LDggQEAKIAkJCQk5OTA4QjBGMzFC
Q0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAq
LywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9y
RGF0YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkw
OEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3Bw
ICovLAogCQkJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3Bl
cnR5TmFtZXMuY3BwICovLApAQCAtMzQwODUsNyArMzQwODcsNyBAQAogCQkJCTI2RTk0NEQ5MUFD
NEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZGQjI4
MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzOUM2OUQwMjgxMEQxMUQwMEU2OUJBRCAvKiBDb21tb25BdG9t
U3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAwNzY1NTM2IC8q
IENvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAppbmRleCBkNzdjNzNk
OGFlNDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5kNDFmY2QzNWNhOWUzZjUwM2NkNDcz
ODk0NWI0OWI3OWZkZWEzMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogCi0jaW5jbHVkZSAiQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0NywxNCBAQCBDb21tYW5kTGluZUFQ
SU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQogewogfQogCi1TdHJpbmcgQ29tbWFuZExp
bmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1v
ZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMsIHNpemVvZihDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RG
TG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20g
YENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9iamVjdGAuIik7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogSlNWYWx1ZSBDb21tYW5kTGluZUFQSU1vZHVsZTo6aG9zdChJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5oCmluZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGViZGVkYWNmN2ZjNmI0MmQyZGY3NGIu
LjBhNTBkNGE1ZjMzM2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCkBAIC0zMyw3ICszMyw3
IEBAIGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAgIENvbW1hbmRMaW5lQVBJTW9kdWxl
KCk7CiAKLSAgICBTdHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpKU0Z1
bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBz
dGF0aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdl
ciosIGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwppbmRleCBm
NTFlMzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi4xZGViYWU0ZDQ0MDI1MzY5
NTY5OWQ5MTY2ZGFkNTdkNGEyZDM2MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEyIEBA
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworLy8gQGludGVybmFsCiAKLShmdW5jdGlvbiAoSW5q
ZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQs
IGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRM
aW5lQVBJSG9zdCkgeworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9zdCwg
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwg
e1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7CiAK
LS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQ
YXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVk
IG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCisvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8y
Mzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogCiBp
bmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGlm
IChhcmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNzAsMTIgKzcxLDEyIEBAIENvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGVsc2UgaWYgKGlu
amVjdGVkU2NyaXB0LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgc3RyaW5nID0g
IiIgKyBvYmplY3Q7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN5bWJvbCIpCi0g
ICAgICAgIHN0cmluZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcob2JqZWN0KTsKKyAg
ICAgICAgc3RyaW5nID0gU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVj
dCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxz
ZSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0
cmluZyA9IEBqc29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewog
ICAgICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5
MCwyOCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVu
Y3Rpb24odGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVz
KSB7Ci0gICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3Vz
ZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIs
ICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAi
bG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAi
c3VibWl0IiwgInVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAg
ICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCJtb3VzZSIsICJrZXkiLCAi
dG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rp
b24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNl
dCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVu
bG9hZCIpOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAg
IHR5cGVzID0gW3R5cGVzXTsKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJv
dG90eXBlKHR5cGVzKTsKKworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlv
biBhZGRUeXBlc1RvUmVzdWx0KCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKGFyZ3VtZW50c1tpXSk7
CisgICAgfQogCi0gICAgbGV0IHJlc3VsdCA9IFtdOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
dHlwZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQot
ICAgICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIs
ICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3
aGVlbCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiY2xpY2siLCAiZGJsY2xpY2si
LCAibW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91
c2V1cCIsICJtb3VzZXdoZWVsIik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5
IikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVw
IiwgInRleHRJbnB1dCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgia2V5ZG93biIs
ICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAgICAgZWxzZSBpZiAodHlw
ZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5jZWwi
LCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgICAgIGFk
ZFR5cGVzVG9SZXN1bHQoInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0
b3VjaHN0YXJ0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCi0g
ICAgICAgICAgICByZXN1bHQucHVzaCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQi
LCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAg
ICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0
IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAg
IHJlc3VsdC5AYWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAg
LTExOCwxOSArMTI0LDE3IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVB
UEkubWV0aG9kc1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewog
ICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6
ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxv
Z0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ld
LCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5TZXRJdGVy
YWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92
ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFk
ZEV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwg
dHlwZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwg
IW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMg
PSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5
cGVzLmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBl
c1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0
SXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QucmVt
b3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkg
ewpAQCAtMTU4LDkgKzE2MiwxMCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50
ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgfTsKIAogICAgIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAg
ICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2
ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgogICAgICAgICBp
ZiAoY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxl
Y3RvcikpOwotICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20o
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3Ip
KTsKKyAgICAgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFs
bChzZWxlY3RvcikpOworICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgfTsKIAog
ICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlvbih4cGF0aCwgY29udGV4
dCkgewpAQCAtMTc1LDEwICsxODAsMTEgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1
bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbm9kZXMgPSBb
XTsKKyAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNv
IHRoYXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5Lgor
ICAgICAgICBsZXQgbm9kZXMgPSBuZXcgQEFycmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7
CiAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAg
ICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7
CiAgICAgICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5Miw0IEBAIGlm
IChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0
Lk5vZGUpIHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBD
b21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVy
biAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAK
LX0pCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjkzMzY3ZjRjOWI5MmJhMDI2YWIwYjczOGRjOWUxMWFhOWRlNGVjNi4u
YTc0MzExNmEzODhiYWMzM2UwNjYxODFlYjU2M2Q4ZDVmN2Q0Y2M0MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIyLTA1LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1
aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlu
c3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sOgorICAgICAgICAtIEFkZCBz
ZXZlcmFsIG1vcmUgdGVzdCBjYXNlcyBmb3Igb3ZlcnJpZGluZyBmdW5jdGlvbnMgYW5kIGVudGly
ZSBvYmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRl
cm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
cGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbDoKKyAgICAgICAgLSBDaGFuZ2VkIHRvIHRl
c3QgYSBjdXN0b20gaW50ZXJuYWwgc2NyaXB0IHNuaXBwZXQgc2luY2UgdGhlIGluc3BlY3RvciBp
bmplY3RlZCBzY3JpcHQgaXMgbm93IGEgYnVpbHRpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbDoKKyAgICAgICAgLSBUaGUgaW5zcGVjdG9yIGluamVj
dGVkIHNjcmlwdCAoYW5kIG1vZHVsZXMpIHdpbGwgbm8gbG9uZ2VyIGFwcGVhciBhcyBzY3JpcHRz
IGluIFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9i
amVjdC9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1u
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5l
L2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgLSBJbnNwZWN0b3IgaW5qZWN0ZWQg
c2NyaXB0IGxpbmUgbnVtYmVycyBhcmUgZGlmZmVyZW50IGJldHdlZW4gcmVsZWFzZSBhbmQgZGVi
dWcgYnVpbGRzLCBzbyBmaWx0ZXIgdGhvc2Ugb3V0LgorCiAyMDIyLTA1LTA0ICBLYXJsIFJhY2ts
ZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGZhc3QvZm9ybXMvYXV0
by1maWxsLWJ1dHRvbi9pbnB1dC1hdXRvLWZpbGwtYnV0dG9uLmh0bWwgaXMgYSBjb25zaXN0ZW50
IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4
IDFlYjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQuLjU5MzdmYWU5N2Y4OTU4
ODQ3Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3Jp
cHRzLWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2Jq
ZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBN
RVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVj
a2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBl
bmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LgorQ2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0
ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3Mu
cGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1
Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogLS0gUnVubmluZyB0ZXN0IHNldHVwLgog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LkRpc2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJF
U1NJT046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwg
aW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50
cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1w
YXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2
ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dl
cjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBj
b25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmci
KTsKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1
ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0
aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAg
OCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAg
MTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAg
IDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBk
ZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAy
NyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFs
T2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBB
VCBlbnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVM
b2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUu
bG9nKHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAg
IDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIK
K1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjg6NQorICAgICAyNCAgICBmdW5jdGlvbiBl
bnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworIC0+ICAyNyAgICAgICAgfGludGVybmFs
T2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwor
ICAgICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAg
Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUp
OwotIC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQot
ICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxP
YmplY3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgy
KTsKKyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9
CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQogCiBBQ1RJT046IHN0ZXAtaW4KLVBB
VVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3
aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAg
ICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gLT4gIDExICAgIH18Ci0gICAgIDEyCi0gICAg
IDEzICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVj
dDozMDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0t
LS0tLQorICAgICAzMgogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApAQCAtNjgsNTcgKzYyLDU3
IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qg
c2V0dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cp
CitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3Zl
ciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8
ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAg
fQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgewor
IC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAg
ICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsK
LSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29u
c29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7
Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAy
MworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAg
ICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsK
KyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBp
bnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAg
IDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdn
ZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAg
IGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0Cisg
ICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAg
IDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8
KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVw
LWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBk
ZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6
MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsK
KyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAy
OCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046
IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3Jp
cHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAg
ICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAg
ICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUu
bG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVj
dDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0
KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7Cisg
ICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFD
VElPTjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmluZGV4IGQx
NjhhNzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLmU1YjBkOWM4YjcxOGUxYjI1
NmVhZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCkBA
IC00LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlv
biBlbnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBpbnRlcm5hbE9iamVjdCA9IHsgdGVzdDogZnVu
Y3Rpb24oKSB7fSB9OworCitpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFsT2Jq
ZWN0ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigi
dGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwgYAorICAgICAgICAvLyMgc291cmNlVVJMPV9f
SW5qZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLmpzCisgICAgICAgIGxl
dCBJbnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVybmFsT2JqZWN0IHsKKyAgICAgICAgICAgIHRl
c3QoaW52b2NhdGlvbk51bWJlcikgeworICAgICAgICAgICAgICAgIGxldCBhID0gNjsKKyAgICAg
ICAgICAgICAgICBsZXQgYiA9IDc7CisgICAgICAgICAgICAgICAgbGV0IGFuc3dlciA9IGEgKiBi
OworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG5ldyBJbnRlcm5hbE9iamVj
dDsKKyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKICAgICBk
ZWJ1Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgIGNvbnNvbGUubG9nKGNvbnNv
bGUpOwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDEpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgaW50ZXJuYWxPYmplY3QudGVz
dCgzKTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0yMSwzMSArMzksMzEgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2Vy
LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVu
dHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHBy
ZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNl
IGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRp
bWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3Rs
eSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0
aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBz
ZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVy
bmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3Zl
ciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAg
ICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKGNvbnNvbGUpCi0gICAgICAgICAgICAgICAg
ImluIiwgLy8gY29uc29sZS5sb2coInN0cmluZyIpCisgICAgICAgICAgICAgICAgImluIiwgLy8g
aW50ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFs
T2JqZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwogCiAgICAg
YWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZv
ckludGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQg
YmUgYWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhl
IEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1l
b3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBh
YmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBz
Y3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxP
YmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2lu
Y2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlm
IGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsg
cmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0s
CiAgICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAg
ICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3
aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29s
ZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lk
ZSBjb25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFs
T2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lk
ZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21l
d2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCiAgICAgICAgICAgICAicmVzdW1l
IiwKICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcsNiArNzUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkK
IDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Q2hlY2tp
bmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5k
aW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48
L3A+Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4g
YmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0
aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODgu
LjYzYTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQu
dHh0CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQ
QVNTOiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQg
ZmluZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3Vs
ZCBmaW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVk
U2NyaXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5k
TGluZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhw
ZWN0ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5
ZDlhNWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5
LDE0ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+
ICh0aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAgICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2Fk
IGV2ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAg
LSBldmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcKLSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVy
bmFsIHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVybmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0
IGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5l
QXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxT
Y3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9
IGZhbHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7
CiAgICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24g
aXNFeHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAgLTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXJTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMp
ICYmIHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cu
CisgICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExp
bmUgPj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5j
dGlvbiBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAgICAgICAgIHJldHVybiBwYXJhbXMuc291cmNl
VVJMID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlw
dFNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwu
c3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNX
aXRoKCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNl
U2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9m
KCJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENo
ZWNrSW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAt
NzksMTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICghZm91bmRFdmFsU2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJh
bXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3Jp
cHQgJiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0
ICYmIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5sb2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVj
dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1
ZTsKQEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgUHJv
dG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQg
ZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9j
b2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0
LCAiU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7
CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0
LCAiU2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBm
aW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNj
cmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQu
Iik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBl
Y3RlZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIp
OwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQK
aW5kZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMwNjBiZTY4NjQyY2IwM2FiNy4uNDlmNGFmMmMx
Mzg0YTQ2NjdiN2ZiZThiYzhlMWZlOGQ3ZWZlNTA5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDUgKzEsMTcgQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCi1U
ZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qg
b2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05TT0xFIE1FU1NBR0U6IGEsYixjCitDT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFNldF0K
K0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgTWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FH
RTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09O
U09MRSBNRVNTQUdFOiBjb3VudCBvZiAxCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0
XQorQ09OU09MRSBNRVNTQUdFOiBoZWxsbworQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVj
dF0KK1Rlc3QgdGhhdCBJbmplY3RlZCBTY3JpcHQgb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFi
bGUgYnkgdXNlciBjb2RlLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZQpAQCAtOCwzICsyMCwzOCBAQCBQQVNTOiBQYXVzZWQuCiBQQVNTOiBSZXN1
bWVkLgogUEFTUzogQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBz
aG91bGQgYmUgMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2Vy
dmFibGU6U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNT
OiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291
bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgor
UEFTUzogUmVzdW1lZC4KK1BBU1M6IE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxs
IGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzog
UmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxk
IGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxl
OlNldC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzog
U2V0LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVz
ZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5
LnByb3RvdHlwZS5pbmRleAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFy
cmF5LnByb3RvdHlwZVsiNDIiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpPYmplY3QucHJvdG90eXBlLmRl
c3RydWN0dXJlZFByb3BlcnR5CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzog
T2JqZWN0LnByb3RvdHlwZVsiZmV0Y2hTdGFydCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2
YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZh
YmxlLmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4u
ZTFiNmI0NDdlY2Y3MDk4OWRkOTUwMTZmZWQ2MTI4NzIyMDRmYjI0ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAg
LTMsMzIgKzMsNTYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgot
Ly8gTk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBhZGRyZXNzZWQgYnk6Ci0v
LyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2Vy
LW92ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0ZXJhdGlvbigpIHsKK2Z1
bmN0aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0
eSwgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKKyAgICB0cnkgewogICAgIGxl
dCBjYWxsQ291bnQgPSAwOwotCi0gICAgY29uc3Qgb3JpZ2luYWxJdGVyYXRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3Ip
OwotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVy
YXRvciwgeworICAgIAorICAgIGxldCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBwcm9wZXJ0eSk7CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHsKICAgICAgICAgZ2V0KCkg
ewogICAgICAgICAgICAgKytjYWxsQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxJ
dGVyYXRvci52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFByb3BlcnR5RGVzY3Jp
cHRvcj8udmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCBhcnJheSA9IFtdOwot
CiAgICAgZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFuIG9iamVjdC4KICAgICBjb25zb2xl
LmxvZyh7YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVzZSBBcnJheSBJdGVyYXRvciBhdCBs
ZWFzdCBvbmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAgIGludm9rZU92ZXJy
aWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uKCk7CisKKyAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eURlc2Ny
aXB0b3IpCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5
LCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQorICAgICAgICBkZWxldGUg
cHJvdG90eXBlW3Byb3BlcnR5XTsKKworICAgIHJldHVybiBjYWxsQ291bnQ7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0KK30KKworZnVuY3Rpb24g
cmVwbGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0
RnVuY3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBsZXQgb3JpZ2lu
YWxPYmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAgICAgICR7b2Jq
ZWN0U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50OworICAgICAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAg
YCk7CisKKyAgICBkZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgorICAgIGNv
bnNvbGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAg
ICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb24oKTsKIAorICAgIGV2YWwoYCR7b2JqZWN0
U3RyaW5nfSA9IG9yaWdpbmFsT2JqZWN0O2ApOworICAgIGNvbnNvbGUubG9nKCJjb3VudCBvZiAi
ICsgY2FsbENvdW50KTsKICAgICByZXR1cm4gY2FsbENvdW50OwogfQogCkBAIC0zNiwzMCArNjAs
MTQ4IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZSIpOwogCi0gICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9uIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENh
c2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5cGVTdHJpbmcsIHByb3BlcnR5U3RyaW5nLCBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNlQW5kVGVzdFByb3RvdHlwZVByb3BlcnR5KCR7
cHJvdG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0cmluZ30sICR7aW52b2tlT3ZlcnJpZGRlblBy
b3BlcnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2AsIChlcnJvciwgcmVzdWx0KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtw
cm90b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJpbmd9XSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2lu
Z2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3Vt
ZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmplY3RUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRp
b24sIG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9ufSkgeworICAg
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0T2Jq
ZWN0KCIke29iamVjdFN0cmluZ30iLCAke2ludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50
b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke29iamVjdFN0cmluZ30gY2Fs
bCBjb3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBh
dXNlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
LmNhdGNoKHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0
Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnBy
b3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBp
dGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0g
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0aW9uKClgLCAoZXJyb3IsIHJlc3VsdCkgPT4g
ewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAi
QXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4i
KTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkgaXRlcmF0aW9uIGluIEluamVjdGVkIFNjcmlw
dCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAi
QXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0
b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4gewor
ICAgICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwgImIiLCAiYyJdOworICAgICAgICAgICAgZm9y
IChsZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGFycmF5KTsK
KyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBl
W1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNldCBpdGVyYXRpb24g
aW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBw
cm90b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6
ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5j
dGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQoWyJhIiwgImIiLCAi
YyJdKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0KKworICAgICAgICAgICAg
Y29uc29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlw
ZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2
YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlv
bjogIk1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2
YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJNYXAucHJvdG90eXBlIiwKKyAgICAg
ICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVy
cmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IG1hcCA9IG5l
dyBNYXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0sIFsiYyIsICIzIl1dKTsKKyAgICAgICAgICAg
IGZvciAobGV0IHggb2YgbWFwKSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2cobWFwKTsK
KyAgICAgICAgfSwKICAgICB9KTsKIAorICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5
cGUucHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBT
Y3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmlu
ZzogIkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIi
LAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAg
ICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFk
ZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hv
dWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5w
cm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0
IHNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAg
ICB9KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVk
U2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcg
aW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBv
YmplY3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVu
Y3Rpb246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAg
ICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5p
bmRleCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT3ZlcnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkg
cHJvdG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwK
KyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJv
cGVydHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAg
ICBhcnJheS5wdXNoKCJoZWxsbyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOwor
ICAgICAgICAgICAgYXJyYXlbNDJdOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJv
dG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJvcGVydHkiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVjdHVyaW5nIChmb3IgYG9wdGlvbnNgIHBhcmFt
ZXRlcnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAg
ICAgICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3Bl
cnR5U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJv
cGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0
OworICAgICAgICB9LAorICAgIH0pOworCisKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFy
ZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgorPHA+VGVzdCB0aGF0IEluamVjdGVk
IFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJl
YTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJi
NTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9y
ZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcg
QEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsg
ZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAog
ICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29k
ZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2Fs
bEAiCisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUg
Y29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3
MCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNh
dGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjog
InN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAi
ZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZh
bEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUg
Y29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0K
ICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNT
SU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxp
dFRleHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAg
ICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25h
dGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0
aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5A
W25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAgICAg
ewogICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVh
YzBmYmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIz
MDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzog
Q2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAg
ICAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRl
cmVkPiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAgICAi
Y29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVk
PiIsCisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAg
ICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApA
QCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJm
dW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlw
dElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJl
ZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQog
ICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4
IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAi
IiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJl
ZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJiMzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4
ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApA
QCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gVG8gYXZvaWQgZmxh
a2luZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2UgYWx3YXlzIGV4cGVjdC4KICAgICBjb25z
dCBldmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5kZXJpbmdGcmFtZSIsICJDb25zb2xlUHJv
ZmlsZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9uQ2FsbCJdKTsKKworICAgIC8vIFRoZSBp
bnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQgbGlu
ZSBudW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLiBXZSBvbmx5CisgICAg
Ly8gd2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZvciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZy
YW1lcyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGluZS9jb2x1bW4gbnVtYmVycyByZW1haW4g
c3RhYmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5ndGggPSAwOworICAgIGxldCB1cmxMZW5n
dGggPSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBp
ZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAgICAgICAgICAgZnVuY3Rpb25OYW1lTGVu
Z3RoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAiY2hpbGRyZW4iICYmIHRoaXMuc3RhcnRU
aW1lKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihlID0+IGV2ZW50QWxsb3dsaXN0
LmhhcyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9PT0gInN0YXJ0VGltZSIgfHwga2V5ID09
PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8IGtleSA9PT0gImZyYW1lSWQiKQog
ICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgaWYgKChrZXkgPT09ICJs
aW5lTnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVu
Z3RoICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisg
ICAgICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAgICAgICAgdXJsTGVuZ3RoID0gdmFsdWUu
bGVuZ3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJsIiB8fCBrZXkgPT09ICJzY3JpcHROYW1l
IikKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wvaW5z
cGVjdG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5l
LWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYzk2MmQ2ODEwMWNmNDczMTVkNWUwMWRjM2YwZDNm
ZTM1OWQ2MjU0Ny4uNTZkMTg0MDhiZGRlOWE3YjA3MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5l
LWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTYwLDggKzYwLDggQEAg
UEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAog
ICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIs
Ci0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6
IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNv
bHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZy
YW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCArMTEzLDggQEAgUEFTUzogQ2FwdHVyaW5n
IHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAidXJsIjogIiIsCiAg
ICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAibGluZU51bWJlciI6IDE0MSwK
LSAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVk
PiIsCisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgfQogICBdLAogICAi
ZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJp
bmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwK
ICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQx
LAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>
<flag name="commit-queue"
          id="487770"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458825</attachid>
            <date>2022-05-04 13:55:13 -0700</date>
            <delta_ts>2022-05-04 14:34:17 -0700</delta_ts>
            <desc>Patch v1.8 - For Windows EWS</desc>
            <filename>bug-152294-20220504135513.patch</filename>
            <type>text/plain</type>
            <size>157918</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDM5MTg2YjI1NmZmNjlmZmE3MWMzZGMxNTVmNzRhNzg2MTAyMTRhLi43YTkzZWNhZTlmNzUyZTQ2
NTAwYTc5YWNlNzc2YTBkMDQyODYyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBqc21pbiB0byAzLjAuMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGY5ZDlhYWU2YmEyOTM0OGRmOGViZWVhZWQwNzUzZDE0MDg0OTZkM2MuLjMz
Y2RkNzRlY2MyMjIzNzlhN2FlNjc0N2E0MjQ0Zjk0NWNhMjk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
LSBCdWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBh
cyBhIHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAg
ICAgLSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9m
IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3Bl
cnRpZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1
c2UgYSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNl
ci1wcm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFu
cyB0aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRo
ZW0gaW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1
cHBvcnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5v
IG1vcmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTA0ICBaaXJhbiBTdW4g
IDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gU2VsZWN0aW9uIGFm
dGVyIHR5cGUgY2hhbmdlIG5lZWRzIHRvIGZvbGxvdyBIVE1MIHNwZWNpZmljYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZl
YWI4NmQyNDFjNTFhZDg5Li5lNmVkN2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21f
Y29tbWFuZCgKQEAgLTE0MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NC
dWlsdGlucy5oCiApCiAKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQot
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pz
bWluLnB5IDwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyA+PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgKLSAgICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgpCi0KIGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9U
IEVOQUJMRV9DX0xPT1ApCiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCA4ZDU0MGJkNTE5MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYx
ZDMwNjA3ZThhNmZiNTE0M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsy
MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9HZW5lcmF0ZWRXYXNtT3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNt
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5p
dFdhc20uYXNtCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4
YTFiYTEzYzA5NWY3ZTE1NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0
ZjBkNDRlNWIzNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTY4LDcgKzY4LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFT
Y3JpcHRDb3JlKS9TY3JpcHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVk
U2NyaXB0U291cmNlLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmgg
XAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvV2ViQXNzZW1ibHkuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRl
cGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywg
c28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwp
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5w
bCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZp
bmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4g
Li9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkk
KFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlw
dFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BD
T0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4
YjIzMGY1OTI3MWNmZmQxNy4uZjZlNWRlM2I5OGQzODEyMzc5Y2I4ZDYxYzg5ZWRhM2QyYWE5MjFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJ
CUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0Mw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oICovOyB9OwogCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5oICovOyB9OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICov
OyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVD
OTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAw
RjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0Qy
MTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzYsNyArMTczNSw3IEBACiAJ
CUJDMThDNDVEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5QjI0RkYwRDhBRjZEMTAwOUNCOEM3IC8q
IFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIENMb29wU3RhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDc5MjY0MERBQTAzRkIwMDFB
OUYwNSAvKiBDTG9vcFN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUU4NjZF
RDBERDU5QUZBMDBBMkIyQTEgLyogU291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAg
LyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMThDM0MxMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rv
ci5oICovOyB9OworCQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThD
M0MxMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDY4MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBTdHJpbmdPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMThDM0MzMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2
QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDNjBFMTZFRTMzMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEEzOTZBNjBDRDI5
MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc1MSw2ICszNzUwLDcgQEAKIAkJMkFEMkVERkExOTc5
OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFbnVtZXJhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9uU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9n
Z2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0xvZ2dpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRjAwRDI4MTcxQUMwMDAzNzFB
MjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTaGFk
b3dSZWFsbVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3
NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21UeXBlRGVmaW5pdGlvbklubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVR5cGVEZWZpbml0aW9uSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTc3MEM0RjI3Qjk0Q0U0MDAz
MDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzA3LDcgKzQ3MDcsNiBAQAogCQlBNTEzRTVCQzE4NUJG
QUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCRDE4NUJGQUNDMDA3
RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzMxODVGOTJDOTAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MTNFNUM2MTg1Rjk0MzYw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM5MTg1Rjk2
MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1MTRCMkMwMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3Jp
cHRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyODQsNyArNzI4Myw2
IEBACiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1dC5o
ICovLAogCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRCeXRlY29kZXMu
YXNtICovLAotCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oICovLAogCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50
bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDczMUI0REMxQzYwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTkzNjMsNiAr
OTM2MSw3IEBACiAJCQkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTUzNEQ5QkY4MjM2M0M1NUQwMDU0NTI0RCAvKiBT
ZXRJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk3MDM1NTg3RDFDNDE4NDE5MDA0QkQ3QkYg
LyogU2V0UHJvdG90eXBlLmpzICovLAorCQkJCTJFM0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAvKiBT
aGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM2MDFCNjVEOUIxMDA5REIxRUYg
LyogU3RyaW5nQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNjExQjY1RDlCMTAwOURCMUVG
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCUExRTA0NTFCMUMyNUI0QjEw
MEJCNjYzQyAvKiBTdHJpbmdQcm90b3R5cGUuanMgKi8sCkBAIC0xMDQ1Miw3ICsxMDQ1MSw2IEBA
CiAJCQkJQTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjExODdCN0I4NjAwODQzQjEw
IC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTEzRTVDNzE4
NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5NTlFOTMyMUJEMTgyNzkwMDFBQTQxMyAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNo
ZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTc5MDVCQjY5MUQxMjA1MEUw
MDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEE3QkYwMUI4
Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTIz
ODAsNyArMTIzNzgsNiBAQAogCQkJCTUzNkIzMTdBMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlMTA3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTI3MUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMTA4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTJDMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTA5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzNkIzMTc0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTEw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTc3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMTExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTgwMUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMTEyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MDksNyAr
MTI0MDYsNiBAQAogCQkJCTUzNkIzMTlEMUY3MzVFN0QwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MTM1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNUMyNDZDMUY3QTE3NzgwMDZFQzQwRSAvKiBV
bmlmaWVkU291cmNlMTM2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJDMUZBM0U3OEIw
MDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEz
NUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAq
LywKIAkJCQk1MzBBNjZCRDFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzOC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzBBNjZCRTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTEzOS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBBNjZCRjFGQTNFNzhCMDAyNkE1NDUg
LyogVW5pZmllZFNvdXJjZTE0MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDIwLDcgKzEyNDE2
LDYgQEAKIAkJCQk1MzBBNjZDNDFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0NS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVGMjI2OEZCQzdCMDBENjAxQzQgLyogVW5pZmll
ZFNvdXJjZTE0Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFRTI2OEZCQkI2MDBENjAx
QzQgLyogVW5pZmllZFNvdXJjZTE0Ny5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzExMzVDOTI4
MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEYxNUU3MjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ4LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzOEYxNUYwMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVCMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlm
aWVkU291cmNlMTUwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MzAsNiArMTI0MjUsOSBAQAog
CQkJCTUzOEYxNUVBMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTU0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEYxNUVGMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNl
MTU1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBX
YXNtQWlySVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1QzkyODFCNUIw
MDAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291cmNlcyAqLywKKwkJCQlFMzEx
MzVDQTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJCYXNlLmMgaW4gU291cmNlcyAq
LywKKwkJCQlFMzExMzVDQjI4MUI1QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQppbmRleCA2NWRjMTVjY2FkZjVmMDBh
NmYyZjQ5MDEwNzMwMTk3OWE4NmQxNjg3Li4zODc0ZGQ0MmYyNzYwZjM0ZTg2ZDhkYzgxODYxYTUy
ZWM4OGZlM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTUyLDYgKzUyLDcgQEAgZnVuY3Rp
b25Jc0FzeW5jUmVnRXhwID0gcmUuY29tcGlsZShyIihhc3luYyk/XHMqZnVuY3Rpb24iLCByZS5N
VUxUSUxJTkUgfCByZS5ET1QKIGZ1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5j
dGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiBmdW5jdGlvbk92
ZXJyaWRkZW5OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIi4qXkBvdmVycmlkZGVuTmFtZT0oXCIu
K1wiKSQiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiBmdW5jdGlvblBhcmFtZXRlckZpbmRl
ciA9IHJlLmNvbXBpbGUociJeKD86YXN5bmNccyspP2Z1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/
OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLkRP
VEFMTCkKK2Z1bmN0aW9uUGFyYW1ldGVyc1NwbGl0dGVyID0gcmUuY29tcGlsZShyIixccyooPyFb
Xnt9XSpcfSkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiAKIG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5ET1RB
TEwpCiBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCBy
ZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCkBAIC0xNDUsNyArMTQ2LDcgQEAgY2xhc3MgQnVpbHRp
bkZ1bmN0aW9uOgogICAgICAgICBpc19uYWtlZF9jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uTmFrZWRD
b25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbl9zb3VyY2UpICE9IE5vbmUKICAgICAgICAg
aWYgaXNfbmFrZWRfY29uc3RydWN0b3I6CiAgICAgICAgICAgICBpc19jb25zdHJ1Y3RvciA9IFRy
dWUKLSAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJh
bWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdLnNwbGl0KCcsJyldCisgICAg
ICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyc1Nw
bGl0dGVyLnNwbGl0KGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291
cmNlKVswXSldCiAgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgogICAgICAgICAg
ICAgcGFyYW1ldGVycyA9IFtdCiAKQEAgLTMwMywyMSArMzA0LDU1IEBAIGNsYXNzIEJ1aWx0aW5z
Q29sbGVjdGlvbjoKICAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQogICAgICAgICBzdGFydCA9
IDAKICAgICAgICAgZW5kID0gMAorCiAgICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgogICAg
ICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCiAgICAgICAgICAgICBpZiBzdGFydCA8IGVu
ZDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZW5kID0gbWF0Y2guZW5k
KCkKICAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6Ci0gICAgICAgICAgICAgICAg
ZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAgICAgICBkZXB0
aCA9IDEKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGlzRXNjYXBpbmdD
aGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVy
ID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgotICAgICAgICAgICAgICAgIGlm
IHRleHRbZW5kXSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAx
Ci0gICAgICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgotICAgICAgICAgICAgICAg
ICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgICAgICAgICBlbmQgKz0gMQorICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIg
PSB0ZXh0W2VuZF0KKworICAgICAgICAgICAgICAgIGlmIGlzRXNjYXBpbmdDaGFyYWN0ZXI6Cisg
ICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENoYXJhY3Rl
ciBpbiAiYCdcIiI6CisgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENo
YXJhY3RlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0
YXJ0Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICBlbGlm
IGN1cnJlbnRDaGFyYWN0ZXIgPT0gY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyID0gTm9uZQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENo
YXJhY3RlciA9PSAnXFwnIGFuZCBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBUcnVlCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiA8d2Vi
a2l0Lm9yZy9iLzIzOTgxNz4gUmVndWxhciBleHByZXNzaW9ucyBjb250YWluaW5nIHVuYmFsYW5j
ZWQgcXVvdGF0aW9uIG1hcmtzIChsaWtlIHRoZSBvbmUKKyAgICAgICAgICAgICAgICAjIGZvdW5k
IGluIGBTdHJpbmdQcm90b3R5cGUuanNgJ3MgYGNyZWF0ZUhUTUxgKSBjYW4gY29uZnVzZSB0aGUg
c3RhdGUgb2YgdHJhY2tpbmcgb3VyIGJlaW5nCisgICAgICAgICAgICAgICAgIyBpbnNpZGUvb3V0
c2lkZSBhIHN0cmluZy4gVG8gd29yayBhcm91bmQgdGhpcywganVzdCByZXNldCBvdXIgc3RyaW5n
IHN0YXRlIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lCisgICAgICAgICAgICAgICAgIyAodW5sZXNz
IHdlIGFyZSBpbnNpZGUgYSB0ZW1wbGF0ZSBzdHJpbmcpLiBUaGlzIHdpbGwgd29yayB1bmxlc3Mg
YSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMKKyAgICAgICAgICAgICAgICAjIHVuYmFsYW5j
ZWQgY3VybHkgYnJhY2tldHMgb3IgYSBjbG9zaW5nIGN1cmx5IGJyYWNrZXQgd2UgY2FyZSBhYm91
dCBpcyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBlYXJsaWVyCisgICAgICAgICAgICAgICAgIyBy
ZWd1bGFyIGV4cHJlc3Npb24gd2l0aCBhbiB1bmJhbGFuY2VkIHF1b3RlLgorICAgICAgICAgICAg
ICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xuJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hh
cmFjdGVyICE9ICdgJzoKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hh
cmFjdGVyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAg
ICAgICAgaWYgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENoYXJh
Y3RlciA9PSAneyc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKyAgICAgICAgICAg
ICAgICBlbGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ30nOgorICAgICAgICAgICAgICAgICAgICBk
ZXB0aCAtPSAxCisKKyAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAgICAgICBmdW5jdGlvbkJv
dW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQogCiAgICAgICAgIGZ1bmN0aW9uU3RyaW5ncyA9IFt0
ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRz
XQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCA4ODhjOGJhZTQzNWY4ODYzZjQ4MGRkODFlNDU1NjZkNzhiNjFlZmE3
Li43MDk5MjZhZTczODY5MDdkYmQ0OWIxZDBmNWQ1MzYxNWYzNGU4NWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMTA2LDYgKzEwNiw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBpID0gcGFyYW1ldGVyc1N0YXJ0ICsgMTsKICAgICAgICAgdW5zaWduZWQgY29t
bWFzID0gMDsKKyAgICAgICAgYm9vbCBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CiAgICAg
ICAgIGJvb2wgc2F3T25lUGFyYW0gPSBmYWxzZTsKICAgICAgICAgYm9vbCBoYXNSZXN0UGFyYW0g
PSBmYWxzZTsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTExMyw3ICsxMTQsMTMgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09ICcp
JykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNb
aV0gPT0gJywnKQorICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJ30nKQorICAgICAg
ICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGNoYXJhY3RlcnNbaV0gPT0gJ3snIHx8IGluc2lkZUN1cmx5QnJhY2tldHMpIHsKKyAgICAg
ICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAr
K2k7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNo
YXJhY3RlcnNbaV0gPT0gJywnKQogICAgICAgICAgICAgICAgICsrY29tbWFzOwogICAgICAgICAg
ICAgZWxzZSBpZiAoIUxleGVyPExDaGFyPjo6aXNXaGl0ZVNwYWNlKGNoYXJhY3RlcnNbaV0pKQog
ICAgICAgICAgICAgICAgIHNhd09uZVBhcmFtID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA1NDgzZTg3MWU3NDNhOWExMmIyY2Uz
MGRkZmMyYTAwYzUyYWViYzVkLi40ZWRhODE4YTRkMjljYTE0ZDQyZjgxZDIzNTRhY2VmMTc5MjM2
MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CkBAIC0xOTIsNiArMTkyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGNyZWF0ZVJl
bW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oaXNSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3Jv
KGFycmF5U29ydCkgXAorICAgIG1hY3JvKHN1YnN0cikgXAorICAgIG1hY3JvKGVuZHNXaXRoKSBc
CisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oZ2V0T3du
UHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5U3ltYm9scykgXAorICAg
IG1hY3JvKGhhc093bikgXAorICAgIG1hY3JvKGluZGV4T2YpIFwKKyAgICBtYWNybyhwb3ApIFwK
IAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNlNDNiZmMwZTgzMTE2MDUwMmE5ODVl
MjQxYWUwN2M3N2VlMmY0Li5iMTk4NmU4ODUzMGNlYzY2MmMxOWZmZWFlNzVhMzRiNzVlODZmZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxw
ZXJzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBl
cnMuanMKQEAgLTUxLDMgKzUxLDQzIEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFi
bGUpCiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGluZGV4KyssIGl0ZW0udmFsdWUp
OwogICAgIH0KIH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIHdyYXBwZWRJdGVyYXRvcihp
dGVyYXRvcikKK3sKKyAgICBsZXQgd3JhcHBlciA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAg
ICB3cmFwcGVyLkBAaXRlcmF0b3IgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGl0ZXJhdG9yOyB9Cisg
ICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGlu
U2V0SXRlcmFibGUoc2V0KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAgICBpZiAoIUBp
c1NldChzZXQpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5TZXRJdGVyYWJsZSBj
YWxsZWQgd2l0aCBub24tU2V0IG9iamVjdC4iKTsKKworICAgIC8vIFVzaW5nIHRoZSBwcml2YXRl
IEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRoYXQgdGhlIHN5bWJvbCBpdHNlbGYgaGFzIG5v
dCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3QgcHJvdGVjdAorICAgIC8vIGFnYWluc3QgdGhl
IGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiByZXBsYWNlZC4gRm9yIFNldHMsIGBAdmFsdWVz
YCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5hbGx5CisgICAgLy8gcGxhY2VkIGF0
IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0gc2V0LkB2YWx1
ZXM7CisgICAgCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5A
Y2FsbChzZXQpKTsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5NYXBJdGVy
YWJsZShtYXApCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIGlmICghQGlzTWFwKG1h
cCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRpbk1hcEl0ZXJhYmxlIGNhbGxlZCB3
aXRoIG5vbi1NYXAgb2JqZWN0LiIpOworCisgICAgLy8gVXNpbmcgdGhlIHByaXZhdGUgQEBpdGVy
YXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9sIGl0c2VsZiBoYXMgbm90IGJlZW4g
bW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAgLy8gYWdhaW5zdCB0aGUgaXRlcmF0
b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3IgTWFwcywgYEBlbnRyaWVzYCBoYXMg
YSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5hbGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1i
b2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0gbWFwLkBlbnRyaWVzOwor
CisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChtYXAp
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCmluZGV4IDFjNDdlZWViYTg2OTA4YjkwZjk5Y2IwY2U3NDZmMDE5YmQzZWQ3MjMuLjg5
ZWQzYTVlODVmYmRiNTU0YjU4YWJhMWQyMDNkNGMwYjE3YTBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTIyLDYgKzEy
MiwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikg
XAogCiAKKy8vICAgIHYoanNvblBhcnNlLCBudWxscHRyKQorLy8gICAgdihqc29uU3RyaW5naWZ5
LCBudWxscHRyKSAKKworLy8gICAgdihTdHJpbmcsIG51bGxwdHIpCisKKwogI2RlZmluZSBERUNM
QVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLAogZW51bSBjbGFzcyBMaW5r
VGltZUNvbnN0YW50IDogaW50MzJfdCB7CiAgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNU
QU5UUyhERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBj
YjA2MzQwMmJmMTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5NzcwLi4yMmQxYmNlN2VhYjBmYWYx
NTRlMDg3NWI3YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3Bl
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0xMzUsMjUgKzEzNSwxOCBAQCB2
b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiAgICAgICAg
IGluamVjdGVkU2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIH0KIAotU3RyaW5nIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewotICAgIHJldHVybiBT
dHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywg
c2l6ZW9mKEluamVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLUV4cGVjdGVkPEpTT2JqZWN0
KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmpl
Y3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgaW50IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3Vy
Y2Uoc291cmNlLCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25F
eGNlcHRpb247Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9
IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZh
bHVlID0gZXZhbHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwgc291cmNlQ29kZSwgZ2xvYmFsVGhp
c1ZhbHVlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlv
bikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOwor
ICAgIGF1dG8qIGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdsb2JhbE9iamVj
dC0+bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVJbnNwZWN0b3JJbmpl
Y3RlZFNjcmlwdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVj
dGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFmdW5jdGlvblZhbHVlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRh
KGZ1bmN0aW9uVmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBl
OjpOb25lKQpAQCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8
RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjCiAgICAg
QVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpT
Qzo6Y2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlz
VmFsdWUsIGFyZ3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAg
ICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBAIC0xODMsNyArMTc2LDcgQEAgSW5q
ZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAK
ICAgICBpbnQgaWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJj
ZSgpLCBnbG9iYWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUlu
amVjdGVkU2NyaXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAgIGlmICghY3JlYXRlUmVzdWx0KSB7
CiAgICAgICAgIGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0LmVycm9yKCk7CiAgICAgICAgIEFT
U0VSVChlcnJvcik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YgogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNv
bXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3Igd2hlbiBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDolZClcbiIsIGVycm9y
LT52YWx1ZSgpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkudXRmOCgpLmRhdGEoKSwgbGluZSwg
Y29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBXVEZM
b2dBbHdheXMoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9iamVjdCIpOwotICAgICAgICBXVEZM
b2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgKaW5kZXggMWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4YzMyNzc3NDk1NDhlYS4uYjU0MTAx
MmVmNGJiNGJmMjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC03
NSw4ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBpbnQ+IG1fc2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRlOgotICAgIFN0cmluZyBpbmplY3Rl
ZFNjcmlwdFNvdXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNl
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2Jq
ZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKIAogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBt
X2Vudmlyb25tZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3Jp
cHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2Yjg5NzQx
MmY0OGZkNWU5YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdmZGI0YmFkNWQwYTY1NzhmODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRN
b2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNCiAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0u
Y29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJFcnJvciB3aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVk
OiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5n
KGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1
bW4pOwotICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYg
KCFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmpl
Y3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7CiAgICAgICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
c3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoc291cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpT
VmFsdWUoaW5qZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkp
KSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpOwogICAgICAgICBhdXRvIGlu
amVjdE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5h
YmxlZChmdW5jdGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7CkBAIC05
Miw3ICs5MSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgICAgICBpZiAoc3Rh
Y2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENv
bHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVu
IGNhbGxpbmcgJ2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuaAppbmRleCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5YTAzYmVkYjVlYWY4NThiLi5hNGJl
ZDk2OTJiNzQ1NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCkBAIC00
Niw3ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVibGljIEluamVjdGVkU2NyaXB0QmFz
ZSB7CiBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9kdWxlKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNDOjpKU0Z1
bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMKaW5kZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJmMWViNzFiOGM0OTI1ZjZjNC4uNDQw
MzMwNjc1ZDUwZTA3N2I5MWM1MTY4NTI0NGRiNjZmZGI5ZTIyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE2
ICsyNywzOCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRT
Y3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKC8qIGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUy
LCAuLi4gKi8pCit7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJSAyICE9PSAwKQorICAgICAg
ICBAdGhyb3dSYW5nZUVycm9yKCJgY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZWAgcmVxdWly
ZXMgdGhhdCBlYWNoIGtleSBhcmd1bWVudCBiZSBmb2xsb3dlZCBieSBhIHZhbHVlLCByZXN1bHRp
bmcgaW4gYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpOworCisgICAgbGV0IG9iamVjdCA9
IEBPYmplY3QuQGNyZWF0ZShudWxsKQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSArPSAyKQorICAgICAgICBvYmplY3RbYXJndW1lbnRzW2ldXSA9IGFyZ3VtZW50
c1tpICsgMV07CiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpIHsKKyAgICByZXR1cm4gb2JqZWN0OworfQogCi0v
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFy
c2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBu
b24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNy
ZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgvKiB2YWx1ZTEsIHZhbHVlMiwgLi4uICovKQorewor
ICAgIGxldCBhcnJheSA9IG5ldyBAQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7CisgICAgYXJyYXku
X19wcm90b19fID0gbnVsbDsKKyAgICAKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgQGFycmF5UHVzaChhcnJheSwgYXJndW1lbnRzW2ldKTsK
KyAgICAKKyAgICByZXR1cm4gYXJyYXk7Cit9CiAKLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3Rv
cjsKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlw
dChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3Jp
cHRJZCkKK3sKIAogZnVuY3Rpb24gdG9TdHJpbmcob2JqKQogeworLy8gICAgcmV0dXJuICIiICsg
b2JqOwogICAgIHJldHVybiBTdHJpbmcob2JqKTsKIH0KIApAQCAtOTMsNiArMTE1LDE1IEBAIGZ1
bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiB9CisgICAgCitmdW5jdGlvbiBjcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50c09iamVjdCkgeworICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0g
YXJndW1lbnRzT2JqZWN0LkBAaXRlcmF0b3I7CisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0b3Io
aXRlcmF0b3JGdW5jdGlvbi5AY2FsbChhcmd1bWVudHNPYmplY3QpKTsKK30KKworZnVuY3Rpb24g
bWF4KGEsIGIpIHsKKyAgICByZXR1cm4gYSA+IGIgPyBhIDogYjsKK30KIAogLy8gLS0tLS0tLQog
CkBAIC0xMDEsMTIgKzEzMiwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xhc3RCb3Vu
ZE9iamVjdElkID0gMTsKLSAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSB7fTsKLSAg
ICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IHt9OwotICAgICAgICB0aGlzLl9vYmpl
Y3RHcm91cHMgPSB7fTsKLSAgICAgICAgdGhpcy5fbW9kdWxlcyA9IHt9OworICAgICAgICB0aGlz
Ll9pZFRvV3JhcHBlZE9iamVjdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7Cisg
ICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgpOworICAgICAgICB0aGlzLl9vYmplY3RHcm91cHMgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgpOworICAgICAgICB0aGlzLl9tb2R1bGVzID0gQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAx
OwotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2F2ZWRS
ZXN1bHRzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgIH0KIAogICAgIC8v
IEluamVjdGVkU2NyaXB0IEMrKyBBUEkKQEAgLTExNSw3ICsxNDYsNyBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2
aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBpc0V2YWxPbkNhbGxG
cmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0
ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhv
c3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2
YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJ
bmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVmaW5lZCwgYXJncyk7CiAgICAgICAgIH0p
OwogICAgIH0KIApAQCAtMTM2LDE2ICsxNjcsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xh
c3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlKSkgeworICAgICAgICBp
ZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgQFByb21pc2UpKSB7CiAgICAgICAgICAgICBj
YWxsYmFjaygiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgaXMgbm90IGEgUHJvbWlzZSIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IHJlc29sdmUgPSAodmFsdWUp
ID0+IHsKLSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAg
d2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5j
cmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldyksCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IHJldHVybk9iamVj
dCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJ3YXNU
aHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNy
ZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJh
dGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAKICAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0
KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CkBAIC0xNTks
NyArMTkwLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICAgICAgbGV0IHJlamVjdCA9IChyZWFzb24pID0+IHsKICAgICAgICAgICAgIGNhbGxiYWNrKHRo
aXMuX2NyZWF0ZVRocm93blZhbHVlKHJlYXNvbiwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSkpOwog
ICAgICAgICB9OwotICAgICAgICBwcm9taXNlT2JqZWN0LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsK
KyAgICAgICAgcHJvbWlzZU9iamVjdC5AdGhlbihyZXNvbHZlLCByZWplY3QpOwogICAgIH0KIAog
ICAgIGV2YWx1YXRlT25DYWxsRnJhbWUodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCwgZXhwcmVz
c2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQpAQCAtMTgwLDcgKzIxMSw3IEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZpbmVk
KG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRo
IGdpdmVuIGlkIjsKIAotICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gW107CisgICAgICAgIGxl
dCByZXNvbHZlZEFyZ3MgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAg
IGlmIChhcmdzKSB7CiAgICAgICAgICAgICBsZXQgY2FsbEFyZ3MgPSBJbmplY3RlZFNjcmlwdEhv
c3QuZXZhbHVhdGUoYXJncyk7CiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxB
cmdzLmxlbmd0aDsgKytpKSB7CkBAIC0xOTcsMTAgKzIyOCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVzc2lvbiBk
b2VzIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0dXJuIHsK
LSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJlc3Vs
dDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwg
b2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAg
ICAgICB9OworICAgICAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAi
cmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3QsIHJlc29sdmVk
QXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwK
KyAgICAgICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwogICAgICAgICB9
CkBAIC0yMzMsMTMgKzI2NCwyMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZldGNo
U3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBj
b2xsZWN0aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9u
TW9kZS5Pd25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJv
cGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNv
bGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3fSk7
CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9u
TW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiZmV0Y2hT
dGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQs
CisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LAorICAgICAg
ICApKTsKICAgICB9CiAKICAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZl
dGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxl
dCBjb2xsZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3Bl
cnRpZXMgfCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0
aWVzOwotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVj
dGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2
ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZX0pOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVy
dGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKAorICAgICAgICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAg
ImZldGNoQ291bnQiLCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIs
IGdlbmVyYXRlUHJldmlldywKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0
cnVlLAorICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXRJbnRlcm5hbFByb3BlcnRpZXMob2Jq
ZWN0SWQsIGdlbmVyYXRlUHJldmlldykKQEAgLTI1Niw3ICsyOTYsNyBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9
IHRoaXMuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOwogICAgICAgICBpZiAo
IWRlc2NyaXB0b3JzKQotICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgcmV0dXJu
IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZGVzY3Jp
cHRvciA9IGRlc2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICszMjAsMTMgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBsZXQgZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3RlZFNjcmlwdEhv
c3Quc3VidHlwZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgcmV0
dXJuIGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50
cmllc1tpXTsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShl
bnRyeS52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBp
ZiAoImtleSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnkua2V5ID0gUmVtb3RlT2Jq
ZWN0LmNyZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwotICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04p
CkBAIC0zMDYsMTAgKzM0NywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxldCByZXN1bHQgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGxldCBkZXB0aCA9IDA7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2go
cmVzdWx0LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZy
YW1lKSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVyOwogICAgICAg
ICB9IHdoaWxlIChjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzQzLDEy
ICszODQsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAog
ICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIGNvbHVt
bnMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKyAgICAg
ICAgICAgIGNvbHVtbnMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKGNvbHVtbnMpOwog
CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFy
cmF5IikgewotICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVt
bk5hbWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNv
bHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBh
cnJheVB1c2goY29sdW1uTmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZh
bHNlLCB0cnVlLCBjb2x1bW5OYW1lcyk7CkBAIC0zOTYsNyArNDM3LDcgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFt
ZSA9PT0gImNvbnNvbGUiKSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsK
ICAgICAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRz
ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAg
bGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00Mjks
MTQgKzQ3MCwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RN
b2R1bGUobmFtZSwgc291cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVG
dW5jdGlvbiwgaG9zdCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxz
ZTsKIAotICAgICAgICBsZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZh
bHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5j
dGlvbiAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3Bl
Y3RvcjogYSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAg
IG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0s
IGhvc3QpOworICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiUmVtb3RlT2JqZWN0IiwgUmVtb3RlT2JqZWN0
LAorICAgICAgICAgICAgIkNvbW1hbmRMaW5lQVBJIiwgQ29tbWFuZExpbmVBUEksCisgICAgICAg
ICksIGhvc3QpOwogCiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSB0cnVlOwogICAgIH0K
QEAgLTQ3MCwxMCArNTEzLDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBn
cm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAg
aWYgKCFncm91cCkgewotICAgICAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICAg
ICAgZ3JvdXAgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVz
aChncm91cCwgaWQpOwogICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0g
PSBvYmplY3RHcm91cE5hbWU7CiAgICAgICAgIH0KIApAQCAtNDg4LDggKzUzMSw3IEBAIGxldCBJ
bmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZmFsbGJhY2tXcmFw
cGVyKG9iamVjdCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVz
dWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoInR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYg
KGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9i
amVjdDsKICAgICAgICAgZWxzZQpAQCAtNTE1LDcgKzU1Nyw3IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4g
QHVuZGVmaW5lZDsKICAgICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVj
dEdyb3VwKQpAQCAtNTI0LDEwICs1NjYsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5k
ZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNo
IHsgfQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAg
ICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIndhc1Rocm93biIs
IHRydWUsCisgICAgICAgICAgICAicmVzdWx0IiwgcmVtb3RlT2JqZWN0LAorICAgICAgICApOwog
ICAgIH0KIAogICAgIF9ldmFsdWF0ZUFuZFdyYXAoZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC01NTIs
MTAgKzU5NCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICB0cnkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CiAK
LSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhy
b3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUo
ZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisg
ICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmpl
Y3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7
CiAKICAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgp
CiAgICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9z
YXZlZFJlc3VsdEluZGV4OwpAQCAtNTcxLDcgKzYxMyw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7
CiAgICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5k
TGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJh
bWUgPyBvYmplY3QgOiBudWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1
bmN0aW9uLkBjYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0K
IAogICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjA3
LDcgKzY0OSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgIC8vIEFsd2F5cyBpbmNsdWRlIF9fcHJvdG9fXyBhdCB0aGUgZW5kLCBidXQgb25seSBm
b3IgdGhlIGZpcnN0IGZldGNoLgogICAgICAgICBsZXQgaW5jbHVkZVByb3RvID0gIXN0YXJ0Owog
Ci0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQ
cm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+
IHsKICAgICAgICAgICAgIGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0
OwpAQCAtNjIyLDEzICs2NjQsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShkZXNjcmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0
ZVByZXZpZXcpOwogICAgICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2Ny
aXB0b3Iuc3ltYm9sLCBvYmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMu
cHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRl
c2NyaXB0b3IpOwogCiAgICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRl
c2NyaXB0b3JzLmxlbmd0aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3Rv
X18iKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLlN0b3A7CiAKICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMu
bGVuZ3RoID49IGNvdW50KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cCA6IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAg
IH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJz
QXNWYWx1ZXMiLCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsCisgICAgICAgICAgICAiaW5jbHVkZVBy
b3RvIiwgaW5jbHVkZVByb3RvLAorICAgICAgICApKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0
b3JzOwogICAgIH0KIApAQCAtNjM4LDEzICs2ODMsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsK
KyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgp
OwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ld
OwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFs
dWU6IHByb3BlcnR5LnZhbHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBwcm9wZXJ0
eS5uYW1lLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlLAorICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5w
dXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVz
Y3JpcHRvcik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0K
QEAgLTY1NCwxNSArNzAyLDE4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09
PSAicHJveHkiKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vz
c2VkID0gbmV3IFNldDsKKyAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAog
ICAgICAgICAvLyBIYW5kbGVkIGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5h
bWVQcm9jZXNzZWQuYWRkKCJfX3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRk
KCJfX3Byb3RvX18iKTsKIAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlw
dG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRp
dmVCaW5kaW5nR2V0dGVyKQogICAgICAgICB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsK
KyAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAidmFsdWUiLCBvYmplY3RbbmFtZV0sCisgICAgICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci53cml0YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLndyaXRhYmxlID0gdHJ1ZTsKQEAgLTY3OCwxMSArNzI5LDE1IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkK
ICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAg
ICAgICAgICAgICAgIC8vIFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBl
eGNlcHRpb25zIGNyZWF0ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBh
IHdyb25nIHRoaXMgb2JqZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52
YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJl
amVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7
fSk7CisgICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2Yg
QFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3
YXNUaHJvd246IHRydWV9OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUi
LCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAidmFsdWUiLCBlLAorICAgICAgICAgICAgICAg
ICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgIGlmIChpc093blByb3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0
b3IuaXNPd24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUg
Kzc2NSwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJv
cGVydHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9w
ZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5h
bWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLkNvbnRpbnVlOwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAK
ICAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAg
ICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDog
bnVsbDsKIAotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRv
ciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFs
bCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzgyLDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAg
ICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59
IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQi
KSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0Iikp
KSB7CisgICAgICAgICAgICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuQGVuZHNXaXRo
KCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBAT2JqZWN0LkBoYXNP
d24oZGVzY3JpcHRvciwgImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBAT2JqZWN0LkBoYXNP
d24oZGVzY3JpcHRvciwgInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEZXZlbG9w
ZXJzIG1heSBjcmVhdGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNpbGll
bnQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh4LCAicCIsIHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoeCwgInAiKQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBj
cmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Q
cm9wZXJ0eSwgdHJ1ZSk7CkBAIC03NDUsMTAgKzgwMCwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZhbHNl
OwogICAgICAgICB0cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmplY3Qu
c3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYm
IG9iamVjdC5sZW5ndGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmpl
Y3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVuZ3Ro
KSAmJiBvYmplY3QubGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAgICBm
b3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2YobykpIHsKKyAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0g
QE9iamVjdC5AZ2V0UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBpc093blByb3Bl
cnR5ID0gbyA9PT0gb2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFsc2U7
CiAKQEAgLTc2NCw3ICs4MTksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3Rl
ZFNjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1l
cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgICAgIGxldCBw
cm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9w
ZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cDsKQEAgLTc3NiwxNCArODMxLDEyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7
Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMobyk7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9w
ZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkp
OwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAgICAgICAgICAgICBpZiAo
c2hvdWxkQnJlYWspCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0T3du
UHJvcGVydHlTeW1ib2xzKG8pOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9w
ZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0g
cHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWsp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoc2hvdWxkQnJlYWspCkBAIC03OTYsMjMgKzg0OSwyOCBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7CiAg
ICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGlmIChvYmplY3QuX19wcm90b19fKQot
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVlOiBv
YmplY3QuX19wcm90b19fLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBpc093
bjogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgIl9fcHJvdG9f
XyIsCisgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiLCBvYmplY3QuX19wcm90b19fLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJjb25maWd1cmFibGUiLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ImlzT3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICB9IGNh
dGNoIHsgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgX2dldFNldEVudHJpZXMob2JqZWN0LCBm
ZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsK
KyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlk
ZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2YWx1
ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5TZXRJdGVy
YWJsZShvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAg
ICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAgICAg
ICAgIEBhcnJheVB1c2goZW50cmllcywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoInZh
bHVlIiwgdmFsdWUpKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5s
ZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMsMTYg
Kzg4MSwxOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsK
LSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRl
QXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2Jz
ZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0
b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAgICAg
IGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRpbk1hcEl0ZXJhYmxlKG9iamVjdCkpIHsK
ICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZldGNo
U3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJrZXkiLCBrZXksCisgICAgICAgICAgICAgICAgInZhbHVlIiwgdmFsdWUsCisgICAgICAg
ICAgICApKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5ndGgg
PT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzkzNiwx
MCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsKICAg
ICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0ID09
PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBudWxsKQorICAgICAgICBpZiAocmVzdWx0ID09PSBA
dW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJlc3Vs
dCk7CisgICAgICAgIGxldCBleGlzdGluZ0luZGV4ID0gQEFycmF5LnByb3RvdHlwZS5AaW5kZXhP
Zi5AY2FsbCh0aGlzLl9zYXZlZFJlc3VsdHMsIHJlc3VsdCk7CiAgICAgICAgIGlmIChleGlzdGlu
Z0luZGV4ICE9PSAtMSkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IGV4
aXN0aW5nSW5kZXg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04OTQsMTYgKzk1NCwxNiBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIH0KIH07CiAKLUlu
amVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAgIE93blByb3BlcnRpZXM6IDEgPDwg
MCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAgTmF0aXZlR2V0dGVyUHJvcGVydGll
czogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBj
aGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9wZXJ0
aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OworSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlv
bk1vZGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiT3duUHJvcGVydGll
cyIsIDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCisgICAgIk5hdGl2ZUdldHRl
clByb3BlcnRpZXMiLCAxIDw8IDEsIC8vIG5hdGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUg
cHJvdG90eXBlIGNoYWluLgorICAgICJBbGxQcm9wZXJ0aWVzIiwgMSA8PCAyLCAgICAgICAgICAv
LyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorKTsKIAotSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJjb250
aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAotfQorSW5qZWN0ZWRTY3JpcHQuUHJv
cGVydHlGZXRjaEFjdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICJD
b250aW51ZSIsIEBjcmVhdGVQcml2YXRlU3ltYm9sKCJjb250aW51ZSIpLAorICAgICJTdG9wIiwg
QGNyZWF0ZVByaXZhdGVTeW1ib2woInN0b3AiKSwKKyk7CiAKIHZhciBpbmplY3RlZFNjcmlwdCA9
IG5ldyBJbmplY3RlZFNjcmlwdDsKIApAQCAtOTYyLDcgKzEwMjIsNyBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0g
dGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZhbHVl
KG9iamVjdCkpOwogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZhbHNl
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhp
cy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAg
ICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwg
QHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05NzcsNyAr
MTAzNyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3QuZGVz
Y3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChleCkgewotICAgICAgICAgICAgICAgIGFs
ZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0g
IjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlvbik7CkBAIC05
ODYsNyArMTA0Niw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAog
ICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRlUHJl
dmlldywgY29sdW1uTmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3
IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBj
b2x1bW5OYW1lcyk7CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2JqZWN0
KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1lcyk7
CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmplY3Rl
ZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAgIGlm
IChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90
eXBlLm9iamVjdElkKQpAQCAtMTAxMSw3ICsxMDcxLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rpb24u
CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9PT0g
ImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYgKHR5
cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxlbmd0
aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2ggeyB9
CiAKQEAgLTEwNTAsOCArMTExMCw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKICAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpCiAgICAgICAgICAgICByZXR1
cm4gY2xhc3NOYW1lOwogCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIFN5
bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtTeW1i
b2wudG9TdHJpbmdUYWddOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBA
QHRvU3RyaW5nVGFnIGluIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLkBAdG9TdHJp
bmdUYWc7CiAKICAgICAgICAgLy8gTm9kZUxpc3QgaW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNoZWNr
IGZvciBhcnJheSBwcmlvciB0byB0aGlzLgogICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAi
ZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMTI5LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGljIG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgeworICAg
ICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91
bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9IG5v
ZGUub3duZXJEb2N1bWVudCAmJiAhIW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwogICAg
ICAgICBsZXQgbm9kZU5hbWUgPSBpc1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5vZGUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKIApAQCAtMTEwMCwxNyArMTE2MSwxNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaW5pdGlhbFByZXZpZXcoKQog
ICAgIHsKLSAgICAgICAgbGV0IHByZXZpZXcgPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLnR5
cGUsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmlu
Zyh0aGlzLnZhbHVlKSwKLSAgICAgICAgICAgIGxvc3NsZXNzOiB0cnVlLAotICAgICAgICB9Owor
ICAgICAgICBsZXQgcHJldmlldyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgInR5cGUiLCB0aGlzLnR5cGUsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iLCB0
aGlzLmRlc2NyaXB0aW9uIHx8IHRvU3RyaW5nKHRoaXMudmFsdWUpLAorICAgICAgICAgICAgImxv
c3NsZXNzIiwgdHJ1ZSwKKyAgICAgICAgKTsKIAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBlKSB7
CiAgICAgICAgICAgICBwcmV2aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5cGU7CiAgICAgICAgICAg
ICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVsbCIpIHsKICAgICAgICAgICAgICAgICBwcmV2aWV3
Lm92ZXJmbG93ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0g
W107CisgICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0
aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTExMjYsNyAr
MTE4Nyw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAg
ICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQiIHx8
IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtzZXQi
IHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikgewogICAgICAgICAgICAgaWYgKHRoaXMu
c2l6ZSkgewotICAgICAgICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IFtdOworICAgICAgICAg
ICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsK
ICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMTQxLDIzICsx
MjAyLDIzIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAg
bGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBzZWNv
bmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RMZXZl
bEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCi0gICAgICAgIGxldCBwcm9wZXJ0
aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NSZXF1
ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAgICAg
ICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBmaXJz
dExldmVsS2V5c0NvdW50KQotICAgICAgICB9OworICAgICAgICBsZXQgcHJvcGVydGllc1RocmVz
aG9sZCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgInByb3Bl
cnRpZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4KDUsIGZpcnN0TGV2ZWxLZXlz
Q291bnQpLAorICAgICAgICAgICAgImluZGV4ZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAw
IDogbWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAgICAgKTsKIAogICAgICAgICB0
cnkgewogICAgICAgICAgICAgLy8gTWFwcywgU2V0cywgYW5kIEl0ZXJhdG9ycyBoYXZlIGVudHJp
ZXMuCiAgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlw
ZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikKICAgICAgICAg
ICAgICAgICB0aGlzLl9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwgcHJldmlldyk7CiAKLSAg
ICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAgICAgcHJldmlldy5w
cm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAgICAg
ICAvLyBJbnRlcm5hbCBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgbGV0IGludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9ycyA9IGluamVjdGVkU2NyaXB0Ll9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnMob2JqZWN0LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChpbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcnMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBsZXQg
cmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgaW50
ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExl
dmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWw6IHRydWV9KTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3Qs
IHByZXZpZXcsIGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVz
aG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywgQGNyZWF0ZU9iamVjdFdpdGhv
dXRQcm90b3R5cGUoImludGVybmFsIiwgdHJ1ZSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICAgICAgICAgICAgICB9CkBA
IC0xMTY5LDcgKzEyMzAsMTAgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogICAgICAgICAgICAgLy8gUHJvcGVydGllcy4KICAgICAgICAgICAgIGluamVjdGVkU2NyaXB0
Ll9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVj
dGlvbk1vZGUuQWxsUHJvcGVydGllcywgKGRlc2NyaXB0b3IpID0+IHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVz
Y3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVs
S2V5cyk7Ci0gICAgICAgICAgICB9LCB7bmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlLCBpbmNs
dWRlUHJvdG86IHRydWV9KQorICAgICAgICAgICAgfSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUsCisg
ICAgICAgICAgICAgICAgImluY2x1ZGVQcm90byIsIHRydWUsCisgICAgICAgICAgICApKTsKICAg
ICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTExNzcsNyArMTI0MSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgfQogCi0gICAgX2FwcGVu
ZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNU
aHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSB7
fSkKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRv
ciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywg
e2ludGVybmFsfSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCkpCiAgICAgewogICAg
ICAgICAvLyBFcnJvciBpbiBkZXNjcmlwdG9yLgogICAgICAgICBpZiAoZGVzY3JpcHRvci53YXNU
aHJvd24pIHsKQEAgLTExOTAsOSArMTI1NCw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAgICAg
ICAgICAvLyBOb24gYmFzaWMgX19wcm90b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3Rpbmcs
IG5vbi1lbnVtZXJhYmxlLCBtZXRob2RzIHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVzY3Jp
cHRvci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAgICAg
ICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAgICAg
ICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAgICAg
ICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisgICAg
ICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVjdAor
ICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBBcnJh
eQorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBS
ZWdFeHApCiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7
CiAgICAgICAgIH0KQEAgLTEyMDksNyArMTI3Myw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5IHNo
b3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5
IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYgKGZp
cnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAg
aWYgKGZpcnN0TGV2ZWxLZXlzICYmICFAQXJyYXkucHJvdG90eXBlLkBpbmNsdWRlcy5AY2FsbChm
aXJzdExldmVsS2V5cywgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBlbmRQ
cmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3LDIwICsxMjkxLDI4IEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHByZXZp
ZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocHJl
dmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEdldHRlci9zZXR0ZXIuCiAgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikp
IHsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCAiYWNj
ZXNzb3IiLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOdWxsIHZh
bHVlLgogICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOwogICAgICAgICBpZiAo
dmFsdWUgPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwg
dHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOworICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwg
Im9iamVjdCIsCisgICAgICAgICAgICAgICAgInN1YnR5cGUiLCAibnVsbCIsCisgICAgICAgICAg
ICAgICAgInZhbHVlIiwgIm51bGwiLAorICAgICAgICAgICAgKSk7CiAKICAgICAgICAgLy8gSWdu
b3JlIG5vbi1lbnVtZXJhYmxlIGZ1bmN0aW9ucy4KICAgICAgICAgbGV0IHR5cGUgPSB0eXBlb2Yg
dmFsdWU7CkBAIC0xMjU4LDcgKzEzMzAsMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fYWJicmV2aWF0ZVN0cmlu
Zyh2YWx1ZSwgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3Ns
ZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpfSk7Cisg
ICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3Rv
dHlwZSgKKyAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5
cGUiLCB0eXBlLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHRvU3RyaW5nRGVzY3JpcHRpb24o
dmFsdWUpLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTeW1ib2wu
CkBAIC0xMjY4LDExICsxMzQ0LDE4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKICAgICAgICAgICAgICAgICBzeW1ib2xTdHJpbmcgPSB0aGlzLl9hYmJyZXZpYXRlU3Ry
aW5nKHN5bWJvbFN0cmluZywgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2
aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
YXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHN5bWJvbFN0cmluZ30pOworICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwg
dHlwZSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCBzeW1ib2xTdHJpbmcsCisgICAgICAgICAg
ICApKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9iamVjdC4KLSAgICAgICAgbGV0IHByb3Bl
cnR5ID0ge25hbWUsIHR5cGV9OworICAgICAgICBsZXQgcHJvcGVydHkgPSBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAg
ICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgKTsKICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVP
YmplY3Quc3VidHlwZSh2YWx1ZSk7CiAgICAgICAgIGlmIChzdWJ0eXBlKQogICAgICAgICAgICAg
cHJvcGVydHkuc3VidHlwZSA9IHN1YnR5cGU7CkBAIC0xMzEzLDcgKzEzOTYsNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAgICAgICAgICAgZW50cmllcy5wb3Ao
KTsKKyAgICAgICAgICAgIEBBcnJheS5wcm90b3R5cGUuQHBvcC5AY2FsbChlbnRyaWVzKTsKICAg
ICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJldmlldy5s
b3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzE0MDYsNyBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJldmlldy5s
b3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVzID0g
ZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVzID0g
QEFycmF5LnByb3RvdHlwZS5AbWFwLkBjYWxsKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7CiAg
ICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2aWV3
Rm9yVmFsdWUoZW50cnkudmFsdWUsIGVudHJ5LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAgICAg
ICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkudmFsdWUpOwogICAgICAgICAgICAgaWYgKCJrZXki
IGluIGVudHJ5KSB7CkBAIC0xMzM2LDggKzE0MTksOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2JqZWN0
KQogICAgIHsKLSAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQob2Jq
ZWN0KTsKKyAgICAgICAgbGV0IHNldCA9IG5ldyBAU2V0OworICAgICAgICBzZXQuQGFkZChvYmpl
Y3QpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwo
dmFsdWUsIHNldCwgMSk7CiAgICAgfQpAQCAtMTM1NywxMSArMTQ0MCwxMSBAQCBsZXQgUmVtb3Rl
T2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KLSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5oYXMo
b2JqZWN0KSkKKyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25PYmpl
Y3RzLmFkZChvYmplY3QpOworICAgICAgICBrbm93bk9iamVjdHMuQGFkZChvYmplY3QpOwogCiAg
ICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2ltcGxl
IG9iamVjdHMuCiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KTsKQEAgLTEzODEsMTIgKzE0NjQsMTIgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9iamVj
dHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9wZXJ0
aWVzLgotICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCk7CisgICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5A
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOwogICAgICAgICBpZiAob3duUHJvcGVydHlOYW1l
cy5sZW5ndGggPiAzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
IGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgbGV0
IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlm
IChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVPYmpl
Y3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkpCkBA
IC0xNDA0LDY2ICsxNDg3LDcyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKICAgICAgICAgaWYgKG1pZGRsZSkgewogICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0gbWF4
TGVuZ3RoID4+IDE7CiAgICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0gbGVm
dEhhbGYgLSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhhbGYp
ICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJp
Z2h0SGFsZik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbGVmdEhhbGYp
ICsgIlx1MjAyNiIgKyBzdHJpbmcuQHN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCBy
aWdodEhhbGYpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwg
bWF4TGVuZ3RoKSArICJcdTIwMjYiOworICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwg
bWF4TGVuZ3RoKSArICJcdTIwMjYiOwogICAgIH0KIH07CiAKIC8vIC0tLS0tLS0KIAotSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCi17
Ci0gICAgdGhpcy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVjdGVk
U2NyaXB0SWQiOiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKLSAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9
IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7Ci0gICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJZDog
U3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5lLCBj
b2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1bW59OwotICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRo
aXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAgdGhpcy50aGlzID0gUmVtb3RlT2Jq
ZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOwotICAgIHRoaXMu
aXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxldGVkOwotfTsKK0luamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5ID0gY2xhc3MgQ2FsbEZyYW1lUHJveHkgeworICAgIGNvbnN0cnVj
dG9yKG9yZGluYWwsIGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2FsbEZyYW1lSWQg
PSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2Ny
aXB0SWR9fWA7CisgICAgICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0aW9u
TmFtZTsKKworICAgICAgICB0aGlzLmxvY2F0aW9uID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAic2NyaXB0SWQiLCBTdHJpbmcoY2FsbEZyYW1lLnNvdXJjZUlE
KSwKKyAgICAgICAgICAgICJsaW5lTnVtYmVyIiwgY2FsbEZyYW1lLmxpbmUsCisgICAgICAgICAg
ICAiY29sdW1uTnVtYmVyIiwgY2FsbEZyYW1lLmNvbHVtbiwKKyAgICAgICAgKTsKKworICAgICAg
ICB0aGlzLnNjb3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOworICAg
ICAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFtZS50aGlzT2JqZWN0
LCAiYmFja3RyYWNlIik7CisgICAgICAgIHRoaXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5p
c1RhaWxEZWxldGVkOworICAgIH0KIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkucHJv
dG90eXBlID0gewogICAgIF93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpCiAgICAgewogICAgICAg
ICBsZXQgc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS5zY29wZUNoYWluOwogICAgICAgICBsZXQgc2Nv
cGVEZXNjcmlwdGlvbnMgPSBjYWxsRnJhbWUuc2NvcGVEZXNjcmlwdGlvbnMoKTsKIAotICAgICAg
ICBsZXQgc2NvcGVDaGFpblByb3h5ID0gW107CisgICAgICAgIGxldCBzY29wZUNoYWluUHJveHkg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7IGkrKykKICAgICAgICAgICAgIHNjb3BlQ2hhaW5Qcm94
eVtpXSA9IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24oc2Nv
cGVDaGFpbltpXSwgc2NvcGVEZXNjcmlwdGlvbnNbaV0sICJiYWNrdHJhY2UiKTsKICAgICAgICAg
cmV0dXJuIHNjb3BlQ2hhaW5Qcm94eTsKICAgICB9Ci19OwogCi1JbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXMgPSB7Ci0gICAgMDogImdsb2JhbCIsIC8vIEdMT0JB
TF9TQ09QRQotICAgIDE6ICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQotICAgIDI6ICJjbG9zdXJlIiwg
Ly8gQ0xPU1VSRV9TQ09QRQotICAgIDM6ICJjYXRjaCIsIC8vIENBVENIX1NDT1BFCi0gICAgNDog
ImZ1bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKLSAgICA1OiAiZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlRfU0NPUEUKLSAg
ICA2OiAibmVzdGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCi19OworICAgIHN0
YXRpYyBfY3JlYXRlU2NvcGVKc29uKG9iamVjdCwge25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3Jv
dXBJZCkKKyAgICB7CisgICAgICAgIGxldCBzY29wZSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJv
dG90eXBlKAorICAgICAgICAgICAgIm9iamVjdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0
LCBncm91cElkKSwKKyAgICAgICAgICAgICJ0eXBlIiwgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1l
UHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAorICAgICAgICApOwogCi1JbmplY3RlZFNjcmlw
dC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uID0gZnVuY3Rpb24ob2JqZWN0LCB7bmFt
ZSwgdHlwZSwgbG9jYXRpb259LCBncm91cElkKQotewotICAgIGxldCBzY29wZSA9IHsKLSAgICAg
ICAgb2JqZWN0OiBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBJZCksCi0gICAgICAg
IHR5cGU6IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1t0eXBl
XSwKLSAgICB9OworICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgIHNjb3BlLm5hbWUgPSBu
YW1lOwogCi0gICAgaWYgKG5hbWUpCi0gICAgICAgIHNjb3BlLm5hbWUgPSBuYW1lOworICAgICAg
ICBpZiAobG9jYXRpb24pCisgICAgICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0aW9uOwog
Ci0gICAgaWYgKGxvY2F0aW9uKQotICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0aW9uOwor
ICAgICAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQorICAgICAgICAgICAgc2NvcGUuZW1w
dHkgPSB0cnVlOwogCi0gICAgaWYgKGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKLSAgICAgICAgc2Nv
cGUuZW1wdHkgPSB0cnVlOworICAgICAgICByZXR1cm4gc2NvcGU7CisgICAgfQorfTsKIAotICAg
IHJldHVybiBzY29wZTsKLX0KK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5
cGVOYW1lcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgIDAsICJnbG9iYWwi
LCAvLyBHTE9CQUxfU0NPUEUKKyAgICAxLCAid2l0aCIsIC8vIFdJVEhfU0NPUEUKKyAgICAyLCAi
Y2xvc3VyZSIsIC8vIENMT1NVUkVfU0NPUEUKKyAgICAzLCAiY2F0Y2giLCAvLyBDQVRDSF9TQ09Q
RQorICAgIDQsICJmdW5jdGlvbk5hbWUiLCAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCisgICAgNSwg
Imdsb2JhbExleGljYWxFbnZpcm9ubWVudCIsIC8vIEdMT0JBTF9MRVhJQ0FMX0VOVklST05NRU5U
CisgICAgNiwgIm5lc3RlZExleGljYWwiLCAvLyBORVNURURfTEVYSUNBTF9TQ09QRQorKTsKIAog
Ly8gLS0tLS0tLQogCkBAIC0xNDc3LDkgKzE1NjYsOSBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQ
SShjYWxsRnJhbWUpCiAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3Jp
Z2luYWxWYWx1ZTsgfTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJf
XygiJCIgKyBrZXksIHZhbHVlKTsKKyAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhp
cywgIiQiICsga2V5LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgiZ2V0IiwgdmFsdWUp
KTsKICAgICAgICAgaWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0g
IiQiKQotICAgICAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMg
KyBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5KHRoaXMs
IHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJn
ZXQiLCB2YWx1ZSkpOwogICAgIH07CiAKICAgICBpZiAoIl9sYXN0UmVzdWx0IiBpbiBpbmplY3Rl
ZFNjcmlwdCkKQEAgLTE1MDIsNDggKzE1OTEsNDggQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVBUEko
Y2FsbEZyYW1lKQogICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFuZExpbmVBUEkubWV0aG9kc1tu
YW1lXTsKIH0KIAotQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OworQ29tbWFuZExpbmVBUEku
Z2V0dGVycyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgpOwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBm
dW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7IH07Ci1Db21tYW5k
TGluZUFQSS5tZXRob2RzWyJ2YWx1ZXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2Jq
ZWN0LnZhbHVlcyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0g
ZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkBrZXlzKG9iamVjdCk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ2YWx1ZXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4g
QE9iamVjdC5AdmFsdWVzKG9iamVjdCk7IH07CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1
ZXJ5SW5zdGFuY2VzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5x
dWVyeUluc3RhbmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cXVlcnlPYmplY3RzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5x
dWVyeUluc3RhbmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cXVlcnlIb2xkZXJzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5x
dWVyeUhvbGRlcnMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1
ZXJ5SW5zdGFuY2VzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5x
dWVyeUluc3RhbmNlcyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlPYmplY3Rz
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3RhbmNl
cyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlIb2xkZXJzIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUhvbGRlcnMoLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKIAogQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siaW5zcGVjdCJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVy
biBpbmplY3RlZFNjcmlwdC5pbnNwZWN0T2JqZWN0KG9iamVjdCk7IH07CiAKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5hc3NlcnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLmNsZWFyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5jb3VudCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
Y291bnRSZXNldCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5jb3VudFJlc2V0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJkZWJ1ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5kZWJ1ZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
ZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmRpciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnht
bCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4u
YXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxh
cHNlZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3Jv
dXBFbmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbygu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCgu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhl
YXBTbmFwc2hvdCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGlt
ZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50
aW1lKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVF
bmQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxv
ZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVT
dGFtcCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2Uo
Li4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5hcmd1
bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siYXNzZXJ0Il0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmFzc2VydCguLi5jcmVhdGVJ
dGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siY2xlYXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY2xlYXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJv
dG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImNvdW50Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLmNvdW50KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVu
dHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudFJlc2V0Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
UmVzZXQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRlYnVnIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRlYnVnKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJkaXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlw
ZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJk
aXJ4bWwiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZGlyeG1sKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvciguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29sbGFwc2VkKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJncm91cEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5ncm91cEVuZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVG
cm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5m
byJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5p
bmZvKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUucHJvZmlsZUVuZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3Jk
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJl
Y29yZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3Vt
ZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5j
cmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90KC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sidGFrZUhlYXBTbmFwc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS50YWtlSGVhcFNuYXBzaG90KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJ0aW1lIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLnRpbWUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUVu
ZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lTG9nKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZVN0YW1wKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ0cmFjZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50cmFjZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJu
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CiAKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBD
b21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVy
biAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAK
IHJldHVybiBpbmplY3RlZFNjcmlwdDsKLX0pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCBhNjk4MWJiZjVhZDk0ZjkzZmQ3OTgzZmY2Zjk3NmM3ZTM5ZDk5OTU4Li5i
YzIzN2ExZjRmNDBiNjU4NzRhNTg4YTNiZjQ4OTA0MWI5M2M2YWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGVy
cm9yLnR5cGUoKSAhPSBQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdykKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBl
cnJvci5tZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0
ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5l
ICIsIGVycm9yLmxpbmUoKSwgIi4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IGZjNzg4OTQ2NTFlOWQ3Njk3N2Y3OTVjNDU0ZDk5ZWUxOWYxM2U3OWMu
LmZmYzljOWMyMzMxZGFlM2Q2YTY1YmRlZmFjNTBiYjFhMDNmMzY3MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJy
YXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKIApAQCAtNTcsNiArNTgsOCBAQCB2
b2lkIEFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQXJyYQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcldp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVj
aWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIEpTQ19CVUlM
VElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5
LCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKworICAgIEpTQ19CVUlMVElOX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5mcm9tUHJpdmF0ZU5hbWUoKSwgYXJyYXlDb25zdHJ1Y3RvckZyb21Db2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggNWEzYWFhOTFlNjI3MjhjMmNhOWZhZWY1NjFkMmZhYmVkZTcw
NTk1ZS4uNTE1Yzg1ZmQ3ZDMxZTEzNTgwYzBlOGE1MGYxMGY3ZjhmNmFiZjk2OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTMw
LDcgKzEzMCwxMSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgfQogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVz
UHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHJpdmF0ZU5hbWUoKSwg
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHVi
bGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluZGV4T2ZQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmluZGV4T2ZQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2
YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmtleXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5wb3BQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnBvcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUo
KSwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogCiAgICAgSlNPYmplY3Qq
IHVuc2NvcGFibGVzID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVs
bFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBkMTQ0MTI0OGY2ZTJmMjZmZWM4M2M5
NWZjNjcxNmJjMGQyMTQzNDE5Li44ZDU2MDJiYmQ4NzkzMzVjMzIwNTQwNmVkMmZmZTM5OWQ5NjU4
NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0yNzUsNiArMjc1LDggQEAgRk9SX0VBQ0hfTEFaWV9CVUlMVElOX1RZUEUoQ0hF
Q0tfRkVBVFVSRV9GTEFHX1RZUEUpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTiht
YWtlQm91bmRGdW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihoYXNP
d25MZW5ndGhQcm9wZXJ0eSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjcmVh
dGVQcml2YXRlU3ltYm9sKTsKKy8vc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNv
blBhcnNlKTsKKy8vc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblN0cmluZ2lm
eSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbmFibGVTdXBlclNhbXBsZXIp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZGlzYWJsZVN1cGVyU2FtcGxlcik7
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihlbnF1ZXVlSm9iKTsKQEAgLTM2MSw2
ICszNjMsMjMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1ib2ws
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5
bWJvbCgpLmdldCgpKSk7CiB9CiAKKy8vSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25QYXJz
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
Ky8veworLy8gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworLy8gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworLy8gICAgYXV0byBqc29uID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworLy8gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKy8vCisvLyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb24pKTsKKy8vfQorLy8KKy8vSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCisvL3sKKy8vICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKy8vICAgIGF1dG8gcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworLy8gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcmVzdWx0KSk7CisvL30KKwogI2lm
IEFTU0VSVF9FTkFCTEVECiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXNzZXJ0Q2FsbCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKQEAg
LTEwNzQsOSArMTA5MywxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgbV9wcm9t
aXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1f
aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvcik7CisvLyAgICBtX3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgc3Ry
aW5nQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VD
b25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Ci0gICAgCisvLyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0s
IHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmlu
aXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGlu
aXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3Rv
cjxFcnJvclR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2Fw
aXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1
cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09O
IGhlbHBlcnMKKy8vICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25QYXJzZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworLy8gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCBqc29uUGFyc2UpKTsKKy8vICAgICAgICB9KTsKKy8vICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25TdHJp
bmdpZnkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
Ky8vICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lm
eSkpOworLy8gICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRl
UmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0
ZVJlbW90ZUZ1bmN0aW9uKSk7CkBAIC0yMTg0LDYgKzIyMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7
CisvLyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N0cmluZ0NvbnN0cnVjdG9yKTsK
IAogICAgIHRoaXNPYmplY3QtPm1fZGVmYXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhMGFhZWQz
NDc4N2FmNjZhNGVjMjgzMmNiNzg0N2ZhZjI4YTRmYTliLi45Yzc1YzY1ZDY4NzliOGVmNzE5Zjhi
NTQzYTE4YjY4ZDhmYTRlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBTZXRJdGVyYXRvclBy
b3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBT
b3VyY2VPcmlnaW47CisvL2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVj
dCBBY3RpdmF0aW9uU3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAgICBX
cml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwog
ICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0
b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7CisvLyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3Ry
dWN0b3I+IG1fc3RyaW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCBhODZkZTk3
NzY0ZWM0ZjVkMTc3ZmIxYmMwN2E4YzgwOWE2ZWZjMmIwLi4xNzIzNjkyNDRkNTk0ZjRmNzJmZGU3
ZmQ5MzZlYTUxNDMwY2JhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAg
IEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUo
KS5zdHJpbmcoKSwgbWFwUHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVz
UHJpdmF0ZU5hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3Nzcz
OGFhNjQ2NTY2MTRlYWFiZDhhZDE0Ny4uYmI2YWYyNTRmNDk2NzlmNTE3YTM5ODcwNDE1ZWVmMzdj
YmUxY2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcApAQCAtOTksOSArOTksMTkgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBP
YmoKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwogCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgp
LCBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5h
bWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5r
ZXlzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZGVmaW5lUHJvcGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVBy
b3BlcnR5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JDcmVhdGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCAyKTsKLSAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpCisgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKwor
ICAgIGlmIChPcHRpb25zOjp1c2VIYXNPd24oKSkgewogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENv
bnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMik7CisgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093blByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgfQogfQogCiAvLyBFUyAxOS4xLjEuMSBP
YmplY3QoW3ZhbHVlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCmluZGV4IDFlNmJjMWVlOGJiMzdmNWYxMzU3NmNlYTJhNmQ1ZDRhOTVkZDQ4NzEu
LmY3ZjljMTQxOGJmN2NjZjNhNGY1MDM0NGU0MmE0ZjIzMGEwNTc0MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsNyBA
QCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzLCBKU1Nl
dFZhbHVlc0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGlj
TmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhP
VVRfVFJBTlNJVElPTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNTA2NzIzMmNkNjZmOTkxM2I5NTMyZjA5ZjY4MDMxYmVl
ZDA0Y2Y5My4uMzFhOGY5ZTdkN2JiZDMyNjUwYzBjYjI5ODI2OWE5MzVlZDBjY2NmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBA
IC0xNjQsNiArMTY0LDkgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Z1bmN0aW9uKiBpdGVy
YXRvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJb
U3ltYm9sLml0ZXJhdG9yXSJfcywgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIE5vSW50cmluc2lj
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN1YnN0
clByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmVuZHNXaXRoUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKwogICAgIC8v
IFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1
Y3RvciBoYXMgYmVlbiBidWlsdAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2Vj
ZWJiZTgzZjdkNzI0NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVh
NWM4Y2YzYjIyY2ZjZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5
LDYgQEAgV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JL
X0RFQ0xBUkUoV2ViQ29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVT
X0lGX0VYSVNUUygpCiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAot
YWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBF
TkRFTkNZIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVO
RFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVj
aG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcyIgPiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBs
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkK
LWxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0y
MzUyLDYgKzIzNDAsNyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJD
T1JFX0RJUn0vZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9t
L1RleHRFbmNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NS
SVBUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAppbmRleCBhM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2Uy
ZTQ1MjUzNTYyYmQyZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlv
bitQcm9wZXJ0eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFm
YzZmYTQyMTZlNDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5l
cSAoJChOT19TVVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJT
Oi5oPS5kZXApCiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6
ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNo
byAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmpzIiA+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhk
LnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLm1pbi5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAog
V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3Ry
ZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAg
JChXZWJDb3JlKS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQo
V2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAog
QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMDYw
YWQ5ZjMxYWQyZTYxNDgzNzk1MjM3MGJhNTAwMTE5ZDBhYWM0Li41NzgyMGI3NzNmMDQ5MDE2NDlh
NzdiOThiMGQ1YzNjZGIwNTRiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2
OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAog
ICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMu
aAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxw
ZXJzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA5YmExYjgyMDM1MmMxNGQ5NjA2NjMzZjMwMWY5ZDQ1MzcyOGUyZTI1Li5kM2Y4
ZDU0NTQ0NTA0OTFjNWNkNzIwZDBiMzM2NmIzODc2YThkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcg
QEAKIAkJMkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdF
MDEwMDY1N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERP
TVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUz
N0RGRDgxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJD
NUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICov
OyB9OworCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBA
QAogCQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0Ux
REUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBD
RUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdv
cmtlckFnZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLzsgfTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
aCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJ
QTU4NEZFMzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0
Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0
RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAog
CQkyRTM3REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAw
MzEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTM5NDEsNyArMTM5NDMsNiBAQAogCQlBNTgxRUQxMjFGQjI4
OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNj
cmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBF
MjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFu
ZExpbmVBUElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI5LDcg
KzIwNDMwLDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYz
N0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4
NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJ
CQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywK
IAkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICovLApAQCAtMjM1ODcsNiArMjM1ODcsOCBAQAogCQkJCTk5MDhCMEYz
MUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3Bw
ICovLAogCQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29s
b3JEYXRhLmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAw
MzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5
OTA4QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5j
cHAgKi8sCiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0
ZWd5QnVpbHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJv
cGVydHlOYW1lcy5jcHAgKi8sCkBAIC0zNDA4NSw3ICszNDA4Nyw3IEBACiAJCQkJMjZFOTQ0RDkx
QUM0QjJERDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZC
MjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0
b21TdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYg
LyogQ29tbW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3
M2Q4YWU0OTUwMTY3NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0
NzM4OTQ1YjQ5Yjc5ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5l
QVBJTW9kdWxlOjpDb21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5k
TGluZUFQSU1vZHVsZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRo
b3V0Q29weWluZyhDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBX
VEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJv
bSBgQ29tbWFuZExpbmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBKU1ZhbHVlIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlLmgKaW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0
Yi4uMGE1MGQ0YTVmMzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgQ29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1
bGUoKTsKIAotICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpT
RnVuY3Rpb24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25z
dCBvdmVycmlkZTsKICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHN0YXRpYyB2b2lkIGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiwgY29uc3QgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4
IGY1MWUzNTE5Y2NiMTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLmExODc0NjdkYjQ0OWEy
Njk4NjM1NWM1YTMyODA5ZTBlNTA0NmI4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIg
QEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJ
bmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJ
ZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFu
ZExpbmVBUElIb3N0KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0
LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0
LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sK
IAotLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6
IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRl
ZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9i
LzIzOTc3ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAK
IGluamVjdGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAg
aWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAo
aW5qZWN0ZWRTY3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcg
PSAiIiArIG9iamVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikK
LSAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOwor
ICAgICAgICBzdHJpbmcgPSBTdHJpbmcob2JqZWN0KTsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2Jq
ZWN0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICBl
bHNlIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHN0cmluZyA9IGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5KU09OLnN0cmluZ2lmeShvYmplY3QsIG51bGwsICIgICIpOworICAgICAgICAgICAg
c3RyaW5nID0gSlNPTi5zdHJpbmdpZnkob2JqZWN0LCAiICAiKTsKICAgICAgICAgfSBjYXRjaCB7
CiAgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICAgICAgfQpAQCAtODksMjMg
KzkwLDI4IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdldEV2ZW50TGlzdGVuZXJzIl0gPSBm
dW5jdGlvbih0YXJnZXQpIHsKIH07CiAKIGZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50VHlwZXModHlw
ZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgdHlwZXMgPSBbIm1v
dXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdl
IiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIs
ICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIs
ICJzdWJtaXQiLCAidW5sb2FkIl07CisgICAgaWYgKHR5cGVzID09PSBAdW5kZWZpbmVkKQorICAg
ICAgICB0eXBlcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoIm1vdXNlIiwgImtleSIs
ICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1v
dGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJl
c2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAi
dW5sb2FkIik7CiAgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKLSAgICAg
ICAgdHlwZXMgPSBbdHlwZXNdOworICAgICAgICB0eXBlcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUodHlwZXMpOworCisgICAgbGV0IHJlc3VsdCA9IG5ldyBAU2V0OworICAgIGZ1bmN0
aW9uIGFkZFR5cGVzVG9SZXN1bHQoKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJn
dW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0LkBhZGQoYXJndW1lbnRzW2ld
KTsKKyAgICB9CiAKLSAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCB0eXBlcy5sZW5ndGg7IGkrKykgewogICAgICAgICBpZiAodHlwZXNbaV0gPT09ICJtb3VzZSIp
Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vkb3du
IiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1cCIsICJtb3Vz
ZXdoZWVsIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJjbGljayIsICJkYmxjbGlj
ayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJt
b3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJr
ZXkiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5
dXAiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJrZXlkb3du
IiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOwogICAgICAgICBlbHNlIGlmICh0
eXBlc1tpXSA9PT0gInRvdWNoIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJ0b3VjaGNhbmNl
bCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOworICAgICAgICAgICAg
YWRkVHlwZXNUb1Jlc3VsdCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwg
InRvdWNoc3RhcnQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNl
dCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOworICAg
ICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVz
ZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZXNbaV0pOworICAgICAgICAg
ICAgcmVzdWx0LkBhZGQodHlwZXNbaV0pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMTE4LDE5ICsxMjQsMTcgQEAgZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCiBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJtb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7
CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3Qu
cmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9ybWFs
aXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwg
bG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlwZXNb
aV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRpblNldEl0
ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkgeworICAgICAgICBvYmplY3QucmVt
b3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOworICAgICAgICBvYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogICAgIH0KIH07CiAKIENv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInVubW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0
LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8
fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBl
cyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
dHlwZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5
cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5T
ZXRJdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpCisgICAgICAgIG9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiB9OwogCiBpZiAoaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2Rl
KSB7CkBAIC0xNTgsOSArMTYyLDEwIEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1l
bnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKICAgICB9OwogCiAgICAgQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siJCQiXSA9IGZ1bmN0aW9uKHNlbGVjdG9yLCBzdGFydCkgeworICAg
ICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVsZXNzIGFycmF5IGhlcmUgc28gdGhhdCBk
ZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMgYSBub3JtYWwgQXJyYXkuCiAgICAgICAg
IGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNl
bGVjdG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJv
bShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rv
cikpOworICAgICAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShzdGFydC5xdWVyeVNlbGVjdG9y
QWxsKHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICB9Owog
CiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJHgiXSA9IGZ1bmN0aW9uKHhwYXRoLCBjb250
ZXh0KSB7CkBAIC0xNzUsMTAgKzE4MCwxMSBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRv
Y3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBub2RlcyA9
IFtdOworICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVsZXNzIGFycmF5IGhlcmUg
c28gdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMgYSBub3JtYWwgQXJyYXku
CisgICAgICAgIGxldCBub2RlcyA9IG5ldyBAQXJyYXk7CiAgICAgICAgIGxldCBub2RlID0gbnVs
bDsKICAgICAgICAgd2hpbGUgKG5vZGUgPSByZXN1bHQuaXRlcmF0ZU5leHQoKSkKLSAgICAgICAg
ICAgIG5vZGVzLnB1c2gobm9kZSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKG5vZGVzLCBub2Rl
KTsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH07CiB9CkBAIC0xODYsNCArMTkyLDQgQEAg
aWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuTm9kZSkgewogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAg
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0
dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsK
IAotfSkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBmOTMzNjdmNGM5YjkyYmEwMjZhYjBiNzM4ZGM5ZTExYWE5ZGU0ZWM2
Li5hNzQzMTE2YTM4OGJhYzMzZTA2NjE4MWViNTYzZDhkNWY3ZDRjYzQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMjItMDUtMDMgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEg
YnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIEpTQyBidWlsdC1p
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWw6CisgICAgICAgIC0gQWRk
IHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVycmlkaW5nIGZ1bmN0aW9ucyBhbmQgZW50
aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOgorICAgICAgICAtIENoYW5nZWQgdG8g
dGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25pcHBldCBzaW5jZSB0aGUgaW5zcGVjdG9y
IGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGluLgorCisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAtIFRoZSBpbnNwZWN0b3IgaW5q
ZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBubyBsb25nZXIgYXBwZWFyIGFzIHNjcmlw
dHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUt
b2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1
bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAtIEluc3BlY3RvciBpbmplY3Rl
ZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiByZWxlYXNlIGFuZCBk
ZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDUtMDQgIEthcmwgUmFj
a2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIF0gZmFzdC9mb3Jtcy9h
dXRvLWZpbGwtYnV0dG9uL2lucHV0LWF1dG8tZmlsbC1idXR0b24uaHRtbCBpcyBhIGNvbnNpc3Rl
bnQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Bh
dXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKaW5k
ZXggMWViMTUzOTg4MjQwNmJhOWZmNGY0ZDMzYTY1ZmY1MjdkZmQ4NWM4ZC4uNTkzN2ZhZTk3Zjg5
NTg4NDdmODhmZjQ2N2ViZTE1YjgxZTI4N2U0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNj
cmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0xLDY2ICsxLDYwIEBACi1DT05TT0xFIE1FU1NBR0U6IFtv
YmplY3QgV2luZG93XQotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xF
IE1FU1NBR0U6IHN0cmluZwotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNP
TEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNo
ZWNraW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRl
cGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMuCitDaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUg
c3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5n
cy5wYXVzZUZvckludGVybmFsU2NyaXB0cy4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERl
YnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzCiAtLSBSdW5uaW5nIHRlc3Qgc2V0dXAu
CiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMuRGlzYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQ
UkVTU0lPTjogc2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGlu
LCBpbiwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9n
LXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAg
IDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVn
Z2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAg
IGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAg
ICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAg
MjUgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
MSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVu
Y3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4g
ICA4ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUu
bG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAg
ICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAg
ICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAg
IGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAg
IDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJu
YWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzoxMDo1Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29s
ZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29s
ZS5sb2cod2luZG93KTsKLSAtPiAgIDkgICAgICAgIHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAg
ICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAx
MgorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyODo1CisgICAgIDI0ICAgIGZ1bmN0aW9u
IGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAg
MjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgLT4gIDI3ICAgICAgICB8aW50ZXJu
YWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7
CisgICAgIDI5ICAgIH0KKyAgICAgMzAKIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRy
eUNvbnNvbGVMb2c6MTE6NQotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAg
ICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29s
ZSk7Ci0gLT4gIDEwICAgICAgICB8Y29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9
Ci0gICAgIDEyCi0gICAgIDEzICAgIC8vIC0tLS0tLS0tLQorUEFVU0UgQVQgZW50cnlJbnRlcm5h
bE9iamVjdDoyOTo1CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDIpOworIC0+ICAyOCAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAg
IH0KKyAgICAgMzAKKyAgICAgMzEgICAgLy8gLS0tLS0tLS0tCiAKIEFDVElPTjogc3RlcC1pbgot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjEyOjIKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAg
ICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAtPiAgMTEgICAgfXwKLSAgICAgMTIKLSAg
ICAgMTMgICAgLy8gLS0tLS0tLS0tCi0gICAgIDE0CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2Jq
ZWN0OjMwOjIKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgzKTsKKyAtPiAgMjkgICAgfXwKKyAgICAgMzAKKyAgICAgMzEgICAgLy8gLS0t
LS0tLS0tCisgICAgIDMyCiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECkBAIC02OCw1NyArNjIs
NTcgQEAgUEFTUzogU2hvdWxkIGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVz
dCBzZXR1cC4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVy
bmFsU2NyaXB0cy5FbmFibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxv
ZykKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBv
dmVyLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+
Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAg
IHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5
ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAg
ICB9CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7
CisgLT4gIDI1ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAg
MjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1Q
QVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2
ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2Vy
OwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBj
b25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmci
KTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1
ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQK
KyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAg
ICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0
ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+
Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAg
IGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5
ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoy
NzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkg
eworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAg
IDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElP
Tjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNj
cmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAg
ICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAg
ICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29s
ZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2Jq
ZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmpl
Y3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFs
T2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAog
QUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKaW5kZXgg
ZDE2OGE3MjU0Y2UxZWYwNGQ3M2E5ZmIzNWM2Y2JkNzM4ZmJjMzFlMy4uZTViMGQ5YzhiNzE4ZTFi
MjU2ZWFlZjY3ODIyNmI2MjcwZTcxYjMxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwK
QEAgLTQsMTEgKzQsMjkgQEAKIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0
aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKKworbGV0IGludGVybmFsT2JqZWN0ID0geyB0ZXN0OiBm
dW5jdGlvbigpIHt9IH07CisKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgaW50ZXJuYWxP
YmplY3QgPSB3aW5kb3cuaW50ZXJuYWxzLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9u
KCJ0ZXN0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMiLCBgCisgICAgICAgIC8vIyBzb3VyY2VVUkw9
X19JbmplY3RlZFNjcmlwdF9UZXN0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuanMKKyAgICAgICAg
bGV0IEludGVybmFsT2JqZWN0ID0gY2xhc3MgSW50ZXJuYWxPYmplY3QgeworICAgICAgICAgICAg
dGVzdChpbnZvY2F0aW9uTnVtYmVyKSB7CisgICAgICAgICAgICAgICAgbGV0IGEgPSA2OworICAg
ICAgICAgICAgICAgIGxldCBiID0gNzsKKyAgICAgICAgICAgICAgICBsZXQgYW5zd2VyID0gYSAq
IGI7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgbmV3IEludGVybmFsT2Jq
ZWN0OworICAgIGApOworfQorCitmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgewogICAg
IGRlYnVnZ2VyOwotICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgY29uc29sZS5sb2coInN0cmluZyIpOworICAgIGludGVybmFsT2JqZWN0LnRl
c3QoMSk7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpOwogfQogCiAvLyAtLS0tLS0tLS0KQEAgLTIxLDMxICszOSwzMSBAQCBmdW5jdGlvbiB0
ZXN0KCkKIAogICAgIGFkZFN0ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdn
ZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRGlzYWJsZWQiLAotICAgICAgICBkZXNjcmlw
dGlvbjogIlNob3VsZCBub3QgYmUgYWJsZSB0byBzdGVwIGludG8gY29uc29sZS5sb2cgc3RhdGVt
ZW50cyB3aGljaCB1c2UgdGhlIEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4
cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlNob3VsZCBub3QgYmUgYWJsZSB0byBzdGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1
c2UgaW50ZXJuYWwgaW5qZWN0ZWQgc2NyaXB0cy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0
VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KSIsCiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVj
dGx5IHRvIHRoZSBiYWNrZW5kIHNpbmNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9u
IHRoZSBjb21tYW5kIHJlc3VsdCBpZiBjaGFuZ2luZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAg
IHNldHVwOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJv
dmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAg
ICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2coY29uc29sZSkKLSAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBjb25zb2xlLmxvZygic3RyaW5nIikKKyAgICAgICAgICAgICAgICAiaW4iLCAv
LyBpbnRlcm5hbE9iamVjdC50ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJu
YWxPYmplY3QudGVzdCgyKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0
LnRlc3QoMykKICAgICAgICAgICAgICJyZXN1bWUiLAogICAgICAgICBdCiAgICAgfSk7CiAKICAg
ICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNl
Rm9ySW50ZXJuYWxTY3JpcHRzLkVuYWJsZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3Vs
ZCBiZSBhYmxlIHRvIHN0ZXAgb3ZlciBjb25zb2xlLmxvZyBzdGF0ZW1lbnRzIHdoaWNoIHVzZSB0
aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRp
bWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJl
IGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNlIGludGVybmFsIGluamVjdGVk
IHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5h
bE9iamVjdCkiLAogICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBz
aW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQg
aWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4g
eyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyh0cnVlKTsg
fSwKICAgICAgICAgdGVhcmRvd246IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQu
c2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwog
ICAgICAgICAgICAgIm92ZXIiLAotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9n
KHdpbmRvdykKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25z
b2xlLmxvZyh3aW5kb3cpXQotICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5z
aWRlIGNvbnNvbGUubG9nKHdpbmRvdyldCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJu
YWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5z
aWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1Nv
bWV3aGVyZSBpbnNpZGUgaW50ZXJuYWxPYmplY3QudGVzdCgxKV0KICAgICAgICAgICAgICJyZXN1
bWUiLAogICAgICAgICBdCiAgICAgfSk7CkBAIC01Nyw2ICs3NSw2IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5DaGVj
a2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBl
bmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LjwvcD4KKzxwPkNoZWNraW5nIHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNh
biBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNl
dHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLjwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1l
eHBlY3RlZC50eHQKaW5kZXggNWRlZTk1ZWRmODhlNWU5Yzg2MTU4Y2NlY2QyYzczZGJmZjlmMDE4
OC4uNjNhNmU1Yjc0ODRiODY4OWM3ZDE0NWQ1NGJhNThhN2Y1MjliNGU3YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3Rl
ZC50eHQKQEAgLTksNyArOSw1IEBAIFBBU1M6IFNob3VsZCBmaW5kIEV4dGVybmFsIFNjcmlwdC4K
IFBBU1M6IFNob3VsZCBmaW5kIElubGluZSBTY3JpcHQgVGFnIFNjcmlwdC4KIFBBU1M6IFNob3Vs
ZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LgogUEFTUzogU2hv
dWxkIGZpbmQgRXZhbCBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0
ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIENvbW1h
bmRMaW5lQVBJU291cmNlIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5l
eHBlY3RlZCBzY3JpcHRzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0UGFyc2VkLmh0bWwKaW5kZXggZDRmOGYzODY4MmZjNGUxNWM1MDAzNDQ1YTZiYTFkMTM1
NDlkOWE1Zi4uZDY3N2JhMmRlZGRmMWY1MTY4OTAyYTE1NmNlMmYxOTFhYmExMTQ5NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbApAQCAt
MTksMTQgKzE5LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIC8vICAgLSBpbmxpbmUgPHNjcmlw
dD4gKHRoaXMpIHN0YXJ0aW5nIG9uIGxpbmUgNQogICAgIC8vICAgLSBpbmxpbmUgYm9keSBvbmxv
YWQgZXZlbnQgbGlzdGVuZXIgYXR0cmlidXRlIG9uIDxib2R5PiBsaW5lIGJlbG93CiAgICAgLy8g
ICAtIGV2YWwgc291cmNlIGFib3ZlIG9uIGxpbmUgNwotICAgIC8vICAgLSBpbnNwZWN0b3IgaW50
ZXJuYWwgc2NyaXB0cyBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcwogCiAgICAgbGV0IGZvdW5kRXh0ZXJuYWxTY3JpcHQgPSBmYWxzZTsKICAgICBs
ZXQgZm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRJbmxp
bmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kRXZh
bFNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0
ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSBmYWxz
ZTsKICAgICBsZXQgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gZmFsc2U7CiAKICAgICBmdW5jdGlv
biBpc0V4dGVybmFsU2NyaXB0KHBhcmFtcykgewpAQCAtNDIsMjEgKzM5LDEzIEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGlzSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0
ZW5lclNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIGlzSW5saW5lU2NyaXB0KHBhcmFt
cykgJiYgcGFyYW1zLnN0YXJ0TGluZSA+PSAxMDA7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxv
dy4KKyAgICAgICAgcmV0dXJuIGlzSW5saW5lU2NyaXB0KHBhcmFtcykgJiYgcGFyYW1zLnN0YXJ0
TGluZSA+PSA5OTsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgogICAgIH0KIAogICAgIGZ1
bmN0aW9uIGlzRXZhbFNjcmlwdChwYXJhbXMpIHsKICAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3Vy
Y2VVUkwgPT09ICJldmFsLmpzIjsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBpc0luamVjdGVkU2Ny
aXB0U291cmNlU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVS
TC5zdGFydHNXaXRoKCJfX0luamVjdGVkU2NyaXB0XyIpICYmIHBhcmFtcy5zb3VyY2VVUkwuZW5k
c1dpdGgoIi5qcyIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzQ29tbWFuZExpbmVBUElTb3Vy
Y2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLmluZGV4
T2YoIkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlIikgIT09IC0xOwotICAgIH0KLQogICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkVuYWJsZURlYnVnZ2VyRG9tYWluQW5k
Q2hlY2tJbml0aWFsU2NyaXB0cyIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CkBA
IC03OSwxMCArNjgsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEV2YWxTY3JpcHQgJiYgaXNFdmFsU2NyaXB0KHBh
cmFtcykpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEV2YWxTY3JpcHQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNj
cmlwdCAmJiBpc0NvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3Jp
cHQgJiYgaXNJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmxvZygiVU5FWFBFQ1RFRCBTQ1JJUFQ6ICIgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2Jq
ZWN0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSB0
cnVlOwpAQCAtOTMsOCArNzgsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBQ
cm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCwgIlNob3Vs
ZCBmaW5kIElubGluZSBTY3JpcHQgVGFnIFNjcmlwdC4iKTsKICAgICAgICAgICAgICAgICBQcm90
b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3Jp
cHQsICJTaG91bGQgZmluZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4i
KTsKICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZEV2YWxTY3Jp
cHQsICJTaG91bGQgZmluZCBFdmFsIFNjcmlwdC4iKTsKLSAgICAgICAgICAgICAgICBQcm90b2Nv
bFRlc3QuZXhwZWN0VGhhdChmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0LCAiU2hvdWxk
IGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4iKTsKLSAgICAgICAg
ICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZENvbW1hbmRMaW5lQVBJU291cmNl
U2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5zcGVjdG9yIENvbW1hbmRMaW5lQVBJU291cmNlIFNjcmlw
dC4iKTsKICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdCghZm91bmRVbmV4
cGVjdGVkU2NyaXB0LCAiU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMu
Iik7CiAKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4
dAppbmRleCA4ODMzYThmZDJhNjVjYzJjODQ1MmNjMzA2MGJlNjg2NDJjYjAzYWI3Li40OWY0YWYy
YzEzODRhNDY2N2I3ZmJlOGJjOGUxZmU4ZDdlZmU1MDkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3Rl
ZC50eHQKQEAgLTEsNSArMSwxNyBAQAogQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0K
LVRlc3QgdGhhdCBjZXJ0YWluIEluamVjdGVkU2NyaXB0U291cmNlIG9wZXJhdGlvbnMgYXJlIG5v
dCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS4KK0NPTlNPTEUgTUVTU0FHRTogYSxiLGMKK0NPTlNP
TEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgU2V0
XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29i
amVjdCBNYXBdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNT
QUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitD
T05TT0xFIE1FU1NBR0U6IGNvdW50IG9mIDEKK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmpl
Y3RdCitDT05TT0xFIE1FU1NBR0U6IGhlbGxvCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2Jq
ZWN0XQorVGVzdCB0aGF0IEluamVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2
YWJsZSBieSB1c2VyIGNvZGUuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlCkBAIC04LDMgKzIwLDM4IEBAIFBBU1M6IFBhdXNlZC4KIFBBU1M6IFJl
c3VtZWQuCiBQQVNTOiBBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50
IHNob3VsZCBiZSAxLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2Jz
ZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4KK1BB
U1M6IFJlc3VtZWQuCitQQVNTOiBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBj
b3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0
Lk9ic2VydmFibGU6TWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQu
CitQQVNTOiBSZXN1bWVkLgorUEFTUzogTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNh
bGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5wdXNoCitQQVNTOiBQYXVzZWQuCitQQVNT
OiBSZXN1bWVkLgorUEFTUzogQXJyYXkucHJvdG90eXBlWyJwdXNoIl0gY2FsbCBjb3VudCBzaG91
bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFi
bGU6U2V0LnByb3RvdHlwZS5hZGQKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNT
OiBTZXQucHJvdG90eXBlWyJhZGQiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmcKK1BBU1M6IFBh
dXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBTdHJpbmcgY2FsbCBjb3VudCBzaG91bGQgYmUg
MS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJy
YXkucHJvdG90eXBlLmluZGV4CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzog
QXJyYXkucHJvdG90eXBlWyI0MiJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUu
ZGVzdHJ1Y3R1cmVkUHJvcGVydHkKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNT
OiBPYmplY3QucHJvdG90eXBlWyJmZXRjaFN0YXJ0Il0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNl
cnZhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2Vy
dmFibGUuaHRtbAppbmRleCA0ZDhkNjZlNTJmYmNiMTcxYWIxYzkwYTc2NThkOWQ5M2M4NDdkNjk1
Li5lMWI2YjQ0N2VjZjcwOTg5ZGQ5NTAxNmZlZDYxMjg3MjIwNGZiMjRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbApA
QCAtMywzMiArMyw1NiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
Ci0vLyBOT1RFOiBNb3JlIGNhc2VzIHNob3VsZCBiZSB0ZXN0ZWQgYW5kIGFkZHJlc3NlZCBieToK
LS8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIElu
amVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVz
ZXItb3ZlcnJpZGVuIGJ1aWx0LWlucwotCi1mdW5jdGlvbiB0cmlnZ2VySXRlcmF0aW9uKCkgewor
ZnVuY3Rpb24gcmVwbGFjZUFuZFRlc3RQcm90b3R5cGVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3Bl
cnR5LCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbikgeworICAgIHRyeSB7CiAgICAg
bGV0IGNhbGxDb3VudCA9IDA7Ci0KLSAgICBjb25zdCBvcmlnaW5hbEl0ZXJhdG9yID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRv
cik7Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0
ZXJhdG9yLCB7CisgICAgCisgICAgbGV0IG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90b3R5cGUsIHByb3BlcnR5KTsKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgewogICAgICAgICBnZXQo
KSB7CiAgICAgICAgICAgICArK2NhbGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBvcmlnaW5h
bEl0ZXJhdG9yLnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHJvcGVydHlEZXNj
cmlwdG9yPy52YWx1ZTsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107
Ci0KICAgICBkZWJ1Z2dlcjsKIAogICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgogICAgIGNvbnNv
bGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgLy8gVXNlIEFycmF5IEl0ZXJhdG9yIGF0
IGxlYXN0IG9uY2UuCi0gICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisgICAgaW52b2tlT3Zl
cnJpZGRlblByb3BlcnR5RnVuY3Rpb24oKTsKKworICAgIGlmIChvcmlnaW5hbFByb3BlcnR5RGVz
Y3JpcHRvcikKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVy
dHksIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yKTsKKyAgICBlbHNlCisgICAgICAgIGRlbGV0
ZSBwcm90b3R5cGVbcHJvcGVydHldOworCisgICAgcmV0dXJuIGNhbGxDb3VudDsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHJldHVybiBTdHJpbmcoZSk7CisgICAgfQorfQorCitmdW5jdGlv
biByZXBsYWNlQW5kVGVzdE9iamVjdChvYmplY3RTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5PYmpl
Y3RGdW5jdGlvbikgeworICAgIGxldCBjYWxsQ291bnQgPSAwOworICAgIAorICAgIGxldCBvcmln
aW5hbE9iamVjdCA9IGV2YWwob2JqZWN0U3RyaW5nKTsKKyAgICBldmFsKGAKKyAgICAgICAgJHtv
YmplY3RTdHJpbmd9ID0gKCkgPT4geworICAgICAgICAgICAgKytjYWxsQ291bnQ7CisgICAgICAg
ICAgICByZXR1cm4gb3JpZ2luYWxPYmplY3QoLi4uYXJndW1lbnRzKTsKKyAgICAgICAgfTsKKyAg
ICBgKTsKKworICAgIGRlYnVnZ2VyOworCisgICAgLy8gUHJldmlldyBhbiBvYmplY3QuCisgICAg
Y29uc29sZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7CiAKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IsIG9yaWdpbmFsSXRlcmF0b3IpOwor
ICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbigpOwogCisgICAgZXZhbChgJHtvYmpl
Y3RTdHJpbmd9ID0gb3JpZ2luYWxPYmplY3Q7YCk7CisgICAgY29uc29sZS5sb2coImNvdW50IG9m
ICIgKyBjYWxsQ291bnQpOwogICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CiAKQEAgLTM2LDMwICs2
MCwxNDggQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0
Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcs
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHko
JHtwcm90b3R5cGVTdHJpbmd9LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVu
UHJvcGVydHlGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAk
e3Byb3RvdHlwZVN0cmluZ31bJHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJl
IDEuYCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVz
dW1lZC4iKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0p
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlw
dGlvbiwgb2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7Cisg
ICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAg
ICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RP
YmplY3QoIiR7b2JqZWN0U3RyaW5nfSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9u
LnRvU3RyaW5nKCl9KTtgLCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBj
YWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygi
UGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1l
KCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRl
c3RDYXNlKHsKICAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXku
cHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5
IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwK
LSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9
PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEs
ICJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LiIpOwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2Ny
aXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6
ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVy
YXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7
CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbImEiLCAiYiIsICJjIl07CisgICAgICAgICAgICBm
b3IgKGxldCB4IG9mIGFycmF5KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkp
OworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlv
biBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmlu
ZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1
bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldChbImEiLCAiYiIs
ICJjIl0pOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBzZXQpIHsgfQorCisgICAgICAgICAg
ICBjb25zb2xlLmxvZyhzZXQpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiTWFwIGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNl
cnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIk1hcC5wcm90b3R5cGUiLAorICAg
ICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92
ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgbWFwID0g
bmV3IE1hcChbWyJhIiwgIjEiXSwgWyJiIiwgIjIiXSwgWyJjIiwgIjMiXV0pOworICAgICAgICAg
ICAgZm9yIChsZXQgeCBvZiBtYXApIHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhtYXAp
OworICAgICAgICB9LAogICAgIH0pOwogCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3Rv
dHlwZS5wdXNoIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheS5wdXNoIGluIEluamVjdGVk
IFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3Ry
aW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcInB1c2hc
IiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7Cisg
ICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1c2goNDIpOwor
ICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUu
YWRkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTZXQuYWRkIGluIEluamVjdGVkIFNjcmlwdCBz
aG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiU2V0
LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJhZGRcIiIsCisgICAgICAg
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBs
ZXQgc2V0ID0gbmV3IFNldDsKKyAgICAgICAgICAgIHNldC5hZGQoNDIpOworICAgICAgICB9LAor
ICAgIH0pOworCisgICAgYWRkT2JqZWN0VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmciLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN0cmlu
ZyBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IG9iamVjdFN0cmluZzogIlN0cmluZyIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFuc3dlciA9IFN0cmluZyg0Mik7Cisg
ICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBl
LmluZGV4IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJPdmVycmlkZW4gaW5kZXhlcyBpbiBBcnJh
eSBwcm90b3R5cGUgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4i
LAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBw
cm9wZXJ0eVN0cmluZzogIlwiNDJcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0
eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAg
ICAgIGFycmF5LnB1c2goImhlbGxvIik7CisgICAgICAgICAgICBjb25zb2xlLmxvZyhhcnJheSk7
CisgICAgICAgICAgICBhcnJheVs0Ml07CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQ
cm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0
Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5kZXN0cnVjdHVyZWRQcm9wZXJ0eSIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiT2JqZWN0IGRlc3RydWN0dXJpbmcgKGZvciBgb3B0aW9uc2AgcGFy
YW1ldGVycykgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAor
ICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJPYmplY3QucHJvdG90eXBlIiwKKyAgICAgICAgcHJv
cGVydHlTdHJpbmc6ICJcImZldGNoU3RhcnRcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgeCA9IHt9LmZldGNoU3Rh
cnQ7CisgICAgICAgIH0sCisgICAgfSk7CisKKworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KLTxwPlRlc3QgdGhhdCBjZXJ0YWluIEluamVjdGVkU2NyaXB0U291cmNlIG9wZXJhdGlvbnMg
YXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+Cis8cD5UZXN0IHRoYXQgSW5qZWN0
ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9k
ZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZDQ0MjE3ZDM2
MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUyMzgxNi4uYWZiZDMyZDUwMzdlNTJhZTkwYzIzM2Yy
MmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMzEsNyArMzEs
NyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IFtdLngueDsgfSBjYXRjaCAoZSkg
eyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIs
CiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBj
b2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBD
YWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2
ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTcwLDcg
KzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBldmFsKCJpZigpIik7IH0g
Y2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUi
OiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6
ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJl
dmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVF4oCmdGl2
ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAg
fQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtMTA0LDcgKzEwNCw3IEBAIEVYUFJF
U1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLnNw
bGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAg
ICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtu
YXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0
QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU+KApnRpdmUgY29kZV1c
bkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0sCiAgICAg
ICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2RlIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CmluZGV4IGJmY2FjOTg5
ZWFjMGZiZDgwZTg1YWNjNjNjNGU3YzI4NmI4N2EzODUuLjEyMzNlYjM5NDgxNzNiNDA3NmQzMzA5
YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjQsOCArNjQsOCBAQCBQQVNT
OiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAog
ICAgICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgICAgICJzY3JpcHRJZCI6ICI8Zmls
dGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAg
ICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIs
CkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAg
ImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2Ny
aXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAg
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9
CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3
LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6
ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRl
cmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51
bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAg
ICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAg
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmluZGV4IDY3MmIzNTMzODAwY2JlMjU5ZWU4ODg3YWJl
MTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0ZTQ1NWQ4NjkzYzhkYWJlNDI5NTY0MzFkOTUxMzgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1s
CkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAvLyBUbyBhdm9pZCBm
bGFraW5lc3MgcHJpbnQgb25seSBldmVudHMgdGhhdCB3ZSBhbHdheXMgZXhwZWN0LgogICAgIGNv
bnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNldChbIlJlbmRlcmluZ0ZyYW1lIiwgIkNvbnNvbGVQ
cm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAiRnVuY3Rpb25DYWxsIl0pOworCisgICAgLy8gVGhl
IGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgY2FsbCBmcmFtZShzKSBoYXZlIGRpZmZlcmVudCBs
aW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMuIFdlIG9ubHkKKyAg
ICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2YWx1ZXMgZm9yIHRob3NlIHNwZWNpZmljIGNhbGwg
ZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBvdGhlciBsaW5lL2NvbHVtbiBudW1iZXJzIHJlbWFp
biBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9uTmFtZUxlbmd0aCA9IDA7CisgICAgbGV0IHVybExl
bmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAg
IGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUiKSB7CisgICAgICAgICAgICBmdW5jdGlvbk5hbWVM
ZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGlmIChrZXkgPT09ICJjaGlsZHJlbiIgJiYgdGhpcy5zdGFy
dFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGUgPT4gZXZlbnRBbGxvd2xp
c3QuaGFzKGUudHlwZSkpOwogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBrZXkg
PT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJZCIp
CiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworICAgICAgICBpZiAoKGtleSA9PT0g
ImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNvbHVtbk51bWJlciIpICYmICFmdW5jdGlvbk5hbWVM
ZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRlcmVkPiI7CisK
KyAgICAgICAgaWYgKGtleSA9PT0gInVybCIpCisgICAgICAgICAgICB1cmxMZW5ndGggPSB2YWx1
ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiIHx8IGtleSA9PT0gInNjcmlwdE5h
bWUiKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL14uK0xheW91dFRlc3RzXC9p
bnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBjOTYyZDY4MTAxY2Y0NzMxNWQ1ZTAxZGMzZjBk
M2ZlMzU5ZDYyNTQ3Li41NmQxODQwOGJkZGU5YTdiMDcwMjM5NmI5NGY5Nzk3NmNmM2JkYWVkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjAsOCArNjAsOCBA
QCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIs
CiAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+
IiwKLSAgICAgICAgICAibGluZU51bWJlciI6IDE0MSwKLSAgICAgICAgICAiY29sdW1uTnVtYmVy
IjogOTcKKyAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAi
Y29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAi
ZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTExMyw4ICsxMTMsOCBAQCBQQVNTOiBDYXB0dXJp
bmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwK
ICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQx
LAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTY1LDggKzE2NSw4IEBAIFBBU1M6IENhcHR1
cmluZyBzdGFydGVkLgogICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgInVybCI6ICIi
LAogICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgImxpbmVOdW1iZXIiOiAx
NDEsCi0gICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0
ZXJlZD4iLAorICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgIH0KICAgXSwK
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458826</attachid>
            <date>2022-05-04 14:34:21 -0700</date>
            <delta_ts>2022-05-04 19:44:19 -0700</delta_ts>
            <desc>Patch v1.8.1 - For Windows EWS</desc>
            <filename>bug-152294-20220504143420.patch</filename>
            <type>text/plain</type>
            <size>156449</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDM5MTg2YjI1NmZmNjlmZmE3MWMzZGMxNTVmNzRhNzg2MTAyMTRhLi43YTkzZWNhZTlmNzUyZTQ2
NTAwYTc5YWNlNzc2YTBkMDQyODYyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBqc21pbiB0byAzLjAuMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGY5ZDlhYWU2YmEyOTM0OGRmOGViZWVhZWQwNzUzZDE0MDg0OTZkM2MuLjMz
Y2RkNzRlY2MyMjIzNzlhN2FlNjc0N2E0MjQ0Zjk0NWNhMjk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
LSBCdWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBh
cyBhIHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAg
ICAgLSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9m
IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3Bl
cnRpZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1
c2UgYSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNl
ci1wcm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFu
cyB0aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRo
ZW0gaW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1
cHBvcnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5v
IG1vcmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTA0ICBaaXJhbiBTdW4g
IDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gU2VsZWN0aW9uIGFm
dGVyIHR5cGUgY2hhbmdlIG5lZWRzIHRvIGZvbGxvdyBIVE1MIHNwZWNpZmljYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZl
YWI4NmQyNDFjNTFhZDg5Li5lNmVkN2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21f
Y29tbWFuZCgKQEAgLTE0MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NC
dWlsdGlucy5oCiApCiAKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQot
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pz
bWluLnB5IDwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyA+PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgKLSAgICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgpCi0KIGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9U
IEVOQUJMRV9DX0xPT1ApCiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCA4ZDU0MGJkNTE5MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYx
ZDMwNjA3ZThhNmZiNTE0M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsy
MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9HZW5lcmF0ZWRXYXNtT3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNt
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5p
dFdhc20uYXNtCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4
YTFiYTEzYzA5NWY3ZTE1NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0
ZjBkNDRlNWIzNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTY4LDcgKzY4LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFT
Y3JpcHRDb3JlKS9TY3JpcHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVk
U2NyaXB0U291cmNlLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmgg
XAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvV2ViQXNzZW1ibHkuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRl
cGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywg
c28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwp
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5w
bCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZp
bmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4g
Li9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkk
KFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlw
dFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BD
T0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4
YjIzMGY1OTI3MWNmZmQxNy4uMjRkNGJlODZiOWMxNWZkYzZkMjdkNzNiYTkwZWZhODk5MDM0ZDJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJ
CUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0Mw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oICovOyB9OwogCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5oICovOyB9OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICov
OyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVD
OTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAw
RjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0Qy
MTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NTEsNiArMzc1MCw3IEBACiAJ
CTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRG
OUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQy
ODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmlu
aXRpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBl
RGVmaW5pdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBD
NEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwNyw3ICs0NzA3LDYgQEAKIAkJ
QTUxM0U1QkMxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1
QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5q
ZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkU2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
Mjg0LDcgKzcyODMsNiBAQAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJ
bml0Qnl0ZWNvZGVzLmFzbSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CkBAIC05MzYzLDYgKzkzNjEsNyBAQAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVE
MDA1NDUyNEQgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQx
ODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMw
MDAzNzFBMjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1
RDlCMTAwOURCMUVGIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2
NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUw
NDUxQjFDMjVCNEIxMDBCQjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTIs
NyArMTA0NTEsNiBAQAogCQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3
QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1t
aW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1
QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDhBN0JGMDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyMzgwLDcgKzEyMzc4LDYgQEAKIAkJCQk1MzZCMzE3QTFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTEwNy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyNzFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzZCMzEyQzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlFMzExMzVDQTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJC
YXNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTExMC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE4
MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEyNDA5LDcgKzEyNDA2LDYgQEAKIAkJCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTEzNS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzVDMjQ2QzFGN0ExNzc4
MDA2RUM0MEUgLyogVW5pZmllZFNvdXJjZTEzNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBB
NjZCQzFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFMzExMzVDQjI4MUI1QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxMzguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UxMzkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkYxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MjQyMCw3ICsxMjQxNiw2IEBACiAJCQkJNTMwQTY2QzQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjIyNjhGQkM3QjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUUy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRTMxMTM1QzkyODFCNUIwMDAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291
cmNlcyAqLywKIAkJCQk1MzhGMTVFNzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0
OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVGMDI2OEZCQkI2MDBENjAxQzQgLyogVW5p
ZmllZFNvdXJjZTE0OS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFQjI2OEZCQkI2MDBE
NjAxQzQgLyogVW5pZmllZFNvdXJjZTE1MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDMwLDYg
KzEyNDI1LDkgQEAKIAkJCQk1MzhGMTVFQTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFRjI2OEZCQkI2MDBENjAxQzQgLyog
VW5pZmllZFNvdXJjZTE1NS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjVDOUNERjIyMDI4NTgz
MDA4MkRCRkQgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MTEzNUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5j
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9y
bWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVk
YzE1Y2NhZGY1ZjAwYTZmMmY0OTAxMDczMDE5NzlhODZkMTY4Ny4uMzg3NGRkNDJmMjc2MGYzNGU4
NmQ4ZGM4MTg2MWE1MmVjODhmZTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1
Miw3IEBAIGZ1bmN0aW9uSXNBc3luY1JlZ0V4cCA9IHJlLmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1
bmN0aW9uIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5j
b21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxM
KQogZnVuY3Rpb25PdmVycmlkZGVuTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJp
ZGRlbk5hbWU9KFwiLitcIikkIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/
Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxU
SUxJTkUgfCByZS5ET1RBTEwpCitmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBp
bGUociIsXHMqKD8hW157fV0qXH0pIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0
aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICAgICAgaXNfbmFrZWRfY29uc3RydWN0b3IgPSBm
dW5jdGlvbk5ha2VkQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBO
b25lCiAgICAgICAgIGlmIGlzX25ha2VkX2NvbnN0cnVjdG9yOgogICAgICAgICAgICAgaXNfY29u
c3RydWN0b3IgPSBUcnVlCi0gICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGlu
IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxp
dCgnLCcpXQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlcnNTcGxpdHRlci5zcGxpdChmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxs
KGZ1bmN0aW9uX3NvdXJjZSlbMF0pXQogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0g
MDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBj
bGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAg
ICAgICAgc3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4g
bWF0Y2hlczoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAg
aWYgc3RhcnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVu
ZCA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAg
ICAgICAgICAgZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAg
ICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0
aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAg
ICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q2hhcmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5n
Q2hhcmFjdGVyOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAg
ICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3Rl
ciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAg
IGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFj
dGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVy
ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAg
IyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFp
bmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAg
ICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2Fu
IGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAg
ICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVz
ZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAg
ICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxs
IHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAg
ICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0
IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAg
ICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4K
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlm
IGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAx
CisgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAg
ICAgICAgICAgICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlv
blN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBm
dW5jdGlvbkJvdW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODg4YzhiYWU0MzVmODg2M2Y0ODBkZDgxZTQ1
NTY2ZDc4YjYxZWZhNy4uNzA5OTI2YWU3Mzg2OTA3ZGJkNDliMWQwZjVkNTM2MTVmMzRlODVlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IHBhcmFtZXRlcnNTdGFydCArIDE7CiAgICAgICAg
IHVuc2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJvb2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9
IGZhbHNlOwogICAgICAgICBib29sIHNhd09uZVBhcmFtID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
aGFzUmVzdFBhcmFtID0gZmFsc2U7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xMTMsNyAr
MTE0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnKScpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlm
IChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09
ICd9JykKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CisgICAg
ICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNr
ZXRzKSB7CisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKICAgICAgICAgICAgICAgICArK2NvbW1h
czsKICAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFy
YWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFl
NzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uNGVkYTgxOGE0ZDI5Y2ExNGQ0MmY4MWQy
MzU0YWNlZjE3OTIzNjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24p
IFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhzdWJzdHIpIFwKKyAgICBtYWNy
byhlbmRzV2l0aCkgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5RGVzY3JpcHRvcikgXAorICAg
IG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKKyAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eVN5
bWJvbHMpIFwKKyAgICBtYWNybyhoYXNPd24pIFwKKyAgICBtYWNybyhpbmRleE9mKSBcCisgICAg
bWFjcm8ocG9wKSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKaW5kZXggMjYzZTQzYmZjMGU4
MzExNjA1MDJhOTg1ZTI0MWFlMDdjNzdlZTJmNC4uYjE5ODZlODg1MzBjZWM2NjJjMTlmZmVhZTc1
YTM0Yjc1ZTg2ZmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0l0ZXJhdG9ySGVscGVycy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
SXRlcmF0b3JIZWxwZXJzLmpzCkBAIC01MSwzICs1MSw0MyBAQCBmdW5jdGlvbiBwZXJmb3JtSXRl
cmF0aW9uKGl0ZXJhYmxlKQogICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBpbmRleCsr
LCBpdGVtLnZhbHVlKTsKICAgICB9CiB9CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiB3cmFw
cGVkSXRlcmF0b3IoaXRlcmF0b3IpCit7CisgICAgbGV0IHdyYXBwZXIgPSBAT2JqZWN0LkBjcmVh
dGUobnVsbCk7CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
dGVyYXRvcjsgfQorICAgIHJldHVybiB3cmFwcGVyOworfQorCitAZ2xvYmFsUHJpdmF0ZQorZnVu
Y3Rpb24gYnVpbHRpblNldEl0ZXJhYmxlKHNldCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAg
CisgICAgaWYgKCFAaXNTZXQoc2V0KSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJidWlsdGlu
U2V0SXRlcmFibGUgY2FsbGVkIHdpdGggbm9uLVNldCBvYmplY3QuIik7CisKKyAgICAvLyBVc2lu
ZyB0aGUgcHJpdmF0ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRoZSBzeW1ib2wg
aXRzZWxmIGhhcyBub3QgYmVlbiBtb2RpZmllZCwgYnV0IGRvZXMgbm90IHByb3RlY3QKKyAgICAv
LyBhZ2FpbnN0IHRoZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5nIGJlZW4gcmVwbGFjZWQuIEZvciBT
ZXRzLCBgQHZhbHVlc2AgaGFzIGEgY29weSBvZiB0aGUgZnVuY3Rpb24gb3JpZ2luYWxseQorICAg
IC8vIHBsYWNlZCBhdCBgU3ltYm9sLml0ZXJhdG9yYC4KKyAgICBsZXQgaXRlcmF0b3JGdW5jdGlv
biA9IHNldC5AdmFsdWVzOworICAgIAorICAgIHJldHVybiBAd3JhcHBlZEl0ZXJhdG9yKGl0ZXJh
dG9yRnVuY3Rpb24uQGNhbGwoc2V0KSk7Cit9CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBi
dWlsdGluTWFwSXRlcmFibGUobWFwKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAgICBp
ZiAoIUBpc01hcChtYXApKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5NYXBJdGVy
YWJsZSBjYWxsZWQgd2l0aCBub24tTWFwIG9iamVjdC4iKTsKKworICAgIC8vIFVzaW5nIHRoZSBw
cml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRoYXQgdGhlIHN5bWJvbCBpdHNlbGYg
aGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3QgcHJvdGVjdAorICAgIC8vIGFnYWlu
c3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiByZXBsYWNlZC4gRm9yIE1hcHMsIGBA
ZW50cmllc2AgaGFzIGEgY29weSBvZiB0aGUgZnVuY3Rpb24gb3JpZ2luYWxseQorICAgIC8vIHBs
YWNlZCBhdCBgU3ltYm9sLml0ZXJhdG9yYC4KKyAgICBsZXQgaXRlcmF0b3JGdW5jdGlvbiA9IG1h
cC5AZW50cmllczsKKworICAgIHJldHVybiBAd3JhcHBlZEl0ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rp
b24uQGNhbGwobWFwKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4NjkwOGI5MGY5OWNiMGNlNzQ2ZjAx
OWJkM2VkNzIzLi44OWVkM2E1ZTg1ZmJkYjU1NGI1OGFiYTFkMjAzZDRjMGIxN2EwYzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgK
QEAgLTEyMiw2ICsxMjIsMTIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihhcnJheVNv
cnQsIG51bGxwdHIpIFwKIAogCisvLyAgICB2KGpzb25QYXJzZSwgbnVsbHB0cikKKy8vICAgIHYo
anNvblN0cmluZ2lmeSwgbnVsbHB0cikgCisKKy8vICAgIHYoU3RyaW5nLCBudWxscHRyKQorCisK
ICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKIGVu
dW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3QgewogICAgIEpTQ19GT1JFQUNIX0xJ
TktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAKaW5kZXggY2IwNjM0MDJiZjEyMmVhZTE2OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJk
MWJjZTdlYWIwZmFmMTU0ZTA4NzViN2MwYzc2ZGNkYmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0TWFuYWdlci5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVk
ZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1
ICsxMzUsMTggQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFs
dWUoKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5jbGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAK
LVN0cmluZyBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsK
LSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3Jp
cHRTb3VyY2VfanMsIHNpemVvZihJbmplY3RlZFNjcmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBl
Y3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKK0V4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8
RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNv
ZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgeyB9KTsKICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1
ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFs
dWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFs
dWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFuZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNv
ZGUsIGdsb2JhbFRoaXNWYWx1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1
YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICBhdXRvKiBmdW5jdGlvblZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24q
PihnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRl
SW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOworICAgIGlmICghZnVuY3Rpb25W
YWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlND
OjpnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBD
YWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAgLTE2Niw3ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVj
dCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTYwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0
YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2Vw
dGlvbigpKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcg
KzE3Niw3IEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRT
Y3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBJbmplY3Rl
ZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0
ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFsT2JqZWN0LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1
bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChnbG9iYWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNy
ZWF0ZVJlc3VsdCkgewogICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigp
OwogICAgICAgICBBU1NFUlQoZXJyb3IpOwpAQCAtMTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRT
Y3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAg
ICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBX
VEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6
JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5k
YXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVj
dGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oCmluZGV4IDFmNzQwYzQwNjg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5
NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIyZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaApAQCAtNzUsOCArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgaW50PiBtX3NjcmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBT
dHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0
KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7CisgICAgRXhwZWN0
ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JF
bnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAgICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBt
X2luamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJl
ZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWExMS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVk
MGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIElu
amVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TQogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAg
ICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAg
IFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9y
ICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUo
KS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEo
KSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4o
KSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7
CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoSlNDOjpKU1ZhbHVlKGluamVjdE1vZHVsZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmds
b2JhbE9iamVjdCgpKSkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAg
ICAgICAgYXV0byBpbmplY3RNb2R1bGVSZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwogICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJl
c3VsdCkgewpAQCAtOTIsNyArOTEsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1
cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAg
ICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29t
cHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiRXJyb3Igd2hlbiBjYWxsaW5nICdpbmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQp
XG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5q
ZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7
Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggMjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1
ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZhMDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmpl
Y3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAgIH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVk
U2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDQ4YmFlZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhj
NDkyNWY2YzQuLjQ0MDMzMDY3NWQ1MGUwNzdiOTFjNTE2ODUyNDRkYjY2ZmRiOWUyMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0yNywxNiArMjcsMzggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVS
TD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0
ZQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEs
IGtleTIsIHZhbHVlMiwgLi4uICovKQoreworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAh
PT0gMCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGVgIHJlcXVpcmVzIHRoYXQgZWFjaCBrZXkgYXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2
YWx1ZSwgcmVzdWx0aW5nIGluIGFuIGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAg
IGxldCBvYmplY3QgPSBAT2JqZWN0LkBjcmVhdGUobnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkgKz0gMikKKyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tp
XV0gPSBhcmd1bWVudHNbaSArIDFdOwogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwg
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9i
amVjdDsKK30KIAotLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJ
bnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0
IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRl
CitmdW5jdGlvbiBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIs
IC4uLiAqLykKK3sKKyAgICBsZXQgYXJyYXkgPSBuZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgp
OworICAgIGFycmF5Ll9fcHJvdG9fXyA9IG51bGw7CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFy
Z3VtZW50c1tpXSk7CisgICAgCisgICAgcmV0dXJuIGFycmF5OworfQogCi12YXIgT2JqZWN0ID0g
e30uY29uc3RydWN0b3I7CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9y
SW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qs
IGluamVjdGVkU2NyaXB0SWQpCit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsKKy8vICAg
IHJldHVybiAiIiArIG9iajsKICAgICByZXR1cm4gU3RyaW5nKG9iaik7CiB9CiAKQEAgLTkzLDYg
KzExNSwxNSBAQCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogfQorICAgIAorZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHNPYmplY3QpIHsKKyAgICBsZXQgaXRlcmF0
b3JGdW5jdGlvbiA9IGFyZ3VtZW50c09iamVjdC5AQGl0ZXJhdG9yOworICAgIHJldHVybiBAd3Jh
cHBlZEl0ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoYXJndW1lbnRzT2JqZWN0KSk7Cit9
CisKK2Z1bmN0aW9uIG1heChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7Cit9CiAK
IC8vIC0tLS0tLS0KIApAQCAtMTAxLDEyICsxMzIsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0
aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2Jq
ZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsKLSAgICAg
ICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMuX21vZHVsZXMgPSB7fTsK
KyAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgpOworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fbW9kdWxlcyA9IEBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX25leHRTYXZlZFJl
c3VsdEluZGV4ID0gMTsKLSAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAg
ICB9CiAKICAgICAvLyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCkBAIC0xMTUsNyArMTQ2LDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgKCkgPT4gewogICAgICAgICAgICAgY29uc3Qg
aXNFdmFsT25DYWxsRnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFs
dWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5q
ZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1
ZGVDb21tYW5kTGluZUFQSSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25D
YWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuQGFwcGx5KEB1bmRlZmluZWQsIGFyZ3Mp
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTEzNiwxNiArMTY3LDE2IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZSkp
IHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIEBQcm9taXNlKSkgewog
ICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlkIGlzIG5vdCBhIFByb21p
c2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGxldCByZXNv
bHZlID0gKHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAg
ICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBS
ZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGxl
dCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAg
ICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJlc3VsdCIsIFJl
bW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5hbWUsIHJldHVybkJ5
VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBp
ZiAoc2F2ZVJlc3VsdCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgg
PSAwOwpAQCAtMTU5LDcgKzE5MCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9PiB7CiAgICAgICAgICAg
ICBjYWxsYmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24sIHByb21pc2VPYmplY3RH
cm91cE5hbWUpKTsKICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9iamVjdC50aGVuKHJlc29s
dmUsIHJlamVjdCk7CisgICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4ocmVzb2x2ZSwgcmVqZWN0
KTsKICAgICB9CiAKICAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENhbGxGcmFtZSwgY2FsbEZy
YW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTE4MCw3ICsyMTEs
NyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBp
ZiAoIWlzRGVmaW5lZChvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmlu
ZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CiAKLSAgICAgICAgbGV0IHJlc29sdmVkQXJncyA9IFtd
OworICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlw
ZSgpOwogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAgICAgbGV0IGNhbGxBcmdzID0gSW5q
ZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewpAQCAtMTk3LDEwICsyMjgsMTAgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGlmICh0
eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICByZXR1cm4gIkdpdmVu
IGV4cHJlc3Npb24gZG9lcyBub3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlvbiI7CiAKLSAgICAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5hcHBseShvYmplY3QsIHJl
c29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2
aWV3KQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAg
ICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5AYXBwbHkob2Jq
ZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVy
YXRlUHJldmlldyksCisgICAgICAgICAgICApOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1l
KTsKICAgICAgICAgfQpAQCAtMjMzLDEzICsyNjQsMjIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICBnZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBvd25Qcm9w
ZXJ0aWVzLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewog
ICAgICAgICBsZXQgY29sbGVjdGlvbk1vZGUgPSBvd25Qcm9wZXJ0aWVzID8gSW5qZWN0ZWRTY3Jp
cHQuQ29sbGVjdGlvbk1vZGUuT3duUHJvcGVydGllcyA6IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rp
b25Nb2RlLkFsbFByb3BlcnRpZXM7Ci0gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVz
KG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVy
YXRlUHJldmlld30pOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJ
ZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAgImZldGNoQ291bnQi
LCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIsIGdlbmVyYXRlUHJl
dmlldywKKyAgICAgICAgKSk7CiAgICAgfQogCiAgICAgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVz
KG9iamVjdElkLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAg
ewogICAgICAgICBsZXQgY29sbGVjdGlvbk1vZGUgPSBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9u
TW9kZS5Pd25Qcm9wZXJ0aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuTmF0aXZl
R2V0dGVyUHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2Jq
ZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQ
cmV2aWV3LCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJmZXRjaFN0YXJ0IiwgZmV0Y2hTdGFydCwK
KyAgICAgICAgICAgICJmZXRjaENvdW50IiwgZmV0Y2hDb3VudCwKKyAgICAgICAgICAgICJnZW5l
cmF0ZVByZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsCisgICAgICAgICAgICAibmF0aXZlR2V0dGVy
c0FzVmFsdWVzIiwgdHJ1ZSwKKyAgICAgICAgKSk7CiAgICAgfQogCiAgICAgZ2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKG9iamVjdElkLCBnZW5lcmF0ZVByZXZpZXcpCkBAIC0yNTYsNyArMjk2LDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQg
ZGVzY3JpcHRvcnMgPSB0aGlzLl9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsK
ICAgICAgICAgaWYgKCFkZXNjcmlwdG9ycykKLSAgICAgICAgICAgIHJldHVybiBbXTsKKyAgICAg
ICAgICAgIHJldHVybiBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKICAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBkZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgbGV0IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yc1tpXTsKQEAgLTI4MCwxMiArMzIwLDEzIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgbGV0IGVudHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5q
ZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7
Ci0gICAgICAgIHJldHVybiBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxl
dCBlbnRyeSA9IGVudHJpZXNbaV07CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9i
amVjdC5jcmVhdGUoZW50cnkudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwog
ICAgICAgICAgICAgaWYgKCJrZXkiIGluIGVudHJ5KQogICAgICAgICAgICAgICAgIGVudHJ5Lmtl
eSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZW50cnkua2V5LCBvYmplY3RHcm91cE5hbWUsIGZhbHNl
LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CiAgICAgfQogCiAgICAgc2F2ZVJlc3VsdChjYWxs
QXJndW1lbnRKU09OKQpAQCAtMzA2LDEwICszNDcsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQg
cmVzdWx0ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBsZXQgZGVw
dGggPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CisgICAgICAgICAg
ICBAYXJyYXlQdXNoKHJlc3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRl
cHRoKyssIGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNh
bGxlcjsKICAgICAgICAgfSB3aGlsZSAoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTM0MywxMiArMzg0LDEyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAgICAgaWYg
KHR5cGVvZiBjb2x1bW5zID09PSAic3RyaW5nIikKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbY29s
dW1uc107CisgICAgICAgICAgICBjb2x1bW5zID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlw
ZShjb2x1bW5zKTsKIAogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29s
dW1ucykgPT09ICJhcnJheSIpIHsKLSAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gW107CisgICAg
ICAgICAgICBjb2x1bW5OYW1lcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKKyAgICAg
ICAgICAgICAgICBAYXJyYXlQdXNoKGNvbHVtbk5hbWVzLCB0b1N0cmluZyhjb2x1bW5zW2ldKSk7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwg
ImNvbnNvbGUiLCBmYWxzZSwgdHJ1ZSwgY29sdW1uTmFtZXMpOwpAQCAtMzk2LDcgKzQzNyw3IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChv
YmplY3RHcm91cE5hbWUgPT09ICJjb25zb2xlIikgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2xhc3RSZXN1bHQ7CiAgICAgICAgICAgICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7
Ci0gICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMu
X3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAg
fQogCiAgICAgICAgIGxldCBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5h
bWVdOwpAQCAtNDI5LDE0ICs0NzAsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgcmV0dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CiAgICAgfQog
Ci0gICAgaW5qZWN0TW9kdWxlKG5hbWUsIHNvdXJjZSwgaG9zdCkKKyAgICBpbmplY3RNb2R1bGUo
bmFtZSwgbW9kdWxlRnVuY3Rpb24sIGhvc3QpCiAgICAgewogICAgICAgICB0aGlzLl9tb2R1bGVz
W25hbWVdID0gZmFsc2U7CiAKLSAgICAgICAgbGV0IG1vZHVsZUZ1bmN0aW9uID0gSW5qZWN0ZWRT
Y3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIHNvdXJjZSArICIpIik7CiAgICAgICAgIGlmICh0eXBl
b2YgbW9kdWxlRnVuY3Rpb24gIT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aHJvdyAiRXJy
b3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVuY3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1
bGUiOwotICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29t
bWFuZExpbmVBUEl9LCBob3N0KTsKKyAgICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3Jp
cHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIEBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIlJlbW90ZU9iamVjdCIs
IFJlbW90ZU9iamVjdCwKKyAgICAgICAgICAgICJDb21tYW5kTGluZUFQSSIsIENvbW1hbmRMaW5l
QVBJLAorICAgICAgICApLCBob3N0KTsKIAogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0g
dHJ1ZTsKICAgICB9CkBAIC00NzAsMTAgKzUxMywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAob2JqZWN0R3JvdXBOYW1lKSB7CiAgICAg
ICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsK
ICAgICAgICAgICAgIGlmICghZ3JvdXApIHsKLSAgICAgICAgICAgICAgICBncm91cCA9IFtdOwor
ICAgICAgICAgICAgICAgIGdyb3VwID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwog
ICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0gZ3Jv
dXA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBncm91cC5wdXNoKGlkKTsKKyAgICAgICAg
ICAgIEBhcnJheVB1c2goZ3JvdXAsIGlkKTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9PYmplY3RH
cm91cE5hbWVbaWRdID0gb2JqZWN0R3JvdXBOYW1lOwogICAgICAgICB9CiAKQEAgLTQ4OCw4ICs1
MzEsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAg
X2ZhbGxiYWNrV3JhcHBlcihvYmplY3QpCiAgICAgewotICAgICAgICBsZXQgcmVzdWx0ID0ge307
Ci0gICAgICAgIHJlc3VsdC50eXBlID0gdHlwZW9mIG9iamVjdDsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ0eXBlIiwgdHlwZW9mIG9iamVjdCk7
CiAgICAgICAgIGlmIChpc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCiAgICAgICAgICAgICByZXN1
bHQudmFsdWUgPSBvYmplY3Q7CiAgICAgICAgIGVsc2UKQEAgLTUxNSw3ICs1NTcsNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmVkQXJnOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAg
ICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93blZhbHVl
KHZhbHVlLCBvYmplY3RHcm91cCkKQEAgLTUyNCwxMCArNTY2LDEwIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBy
ZW1vdGVPYmplY3QuZGVzY3JpcHRpb24gPSB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKTsKICAg
ICAgICAgfSBjYXRjaCB7IH0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHdhc1Rocm93
bjogdHJ1ZSwKLSAgICAgICAgICAgIHJlc3VsdDogcmVtb3RlT2JqZWN0Ci0gICAgICAgIH07Cisg
ICAgICAgIHJldHVybiBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICJ3YXNUaHJvd24iLCB0cnVlLAorICAgICAgICAgICAgInJlc3VsdCIsIHJlbW90ZU9iamVjdCwK
KyAgICAgICAgKTsKICAgICB9CiAKICAgICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlvbiwg
b2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVz
dWx0KQpAQCAtNTUyLDEwICs1OTQsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0
SW5kZXggPSAwOwogCi0gICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAg
ICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVP
YmplY3QuY3JlYXRlKGZ1bmMoKSwgb2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRl
UHJldmlldykKLSAgICAgICAgICAgIH07CisgICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0g
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93
biIsIGZhbHNlLAorICAgICAgICAgICAgICAgICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRl
KGZ1bmMoKSwgb2JqZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisg
ICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCAmJiB0aGlzLl9zYXZl
ZFJlc3VsdEluZGV4KQogICAgICAgICAgICAgICAgIHJldHVybk9iamVjdC5zYXZlZFJlc3VsdElu
ZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRJbmRleDsKQEAgLTU3MSw3ICs2MTMsNyBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgY29tbWFuZExp
bmVBUEkgPSBudWxsOwogICAgICAgICBpZiAoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKQogICAgICAg
ICAgICAgY29tbWFuZExpbmVBUEkgPSB0aGlzLmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KGlz
RXZhbE9uQ2FsbEZyYW1lID8gb2JqZWN0IDogbnVsbCk7Ci0gICAgICAgIHJldHVybiBldmFsRnVu
Y3Rpb24uY2FsbChvYmplY3QsIGV4cHJlc3Npb24sIGNvbW1hbmRMaW5lQVBJKTsKKyAgICAgICAg
cmV0dXJuIGV2YWxGdW5jdGlvbi5AY2FsbChvYmplY3QsIGV4cHJlc3Npb24sIGNvbW1hbmRMaW5l
QVBJKTsKICAgICB9CiAKICAgICBfY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJh
bWVJZCkKQEAgLTYwNyw3ICs2NDksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAvLyBBbHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVu
ZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBmZXRjaC4KICAgICAgICAgbGV0IGluY2x1ZGVQcm90
byA9ICFzdGFydDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0
IGRlc2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB0
aGlzLl9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgY29sbGVjdGlvbk1vZGUsIChk
ZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPiAwKSB7CiAgICAgICAgICAg
ICAgICAgLS1zdGFydDsKQEAgLTYyMiwxMyArNjY0LDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9
IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVzY3JpcHRvci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBm
YWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgICAgIGlmICgic3ltYm9sIiBpbiBkZXNj
cmlwdG9yKQogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJvbCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAg
IGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGRl
c2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKIAogICAgICAgICAgICAgaWYgKGluY2x1ZGVQcm90byAm
JiBjb3VudCAmJiBkZXNjcmlwdG9ycy5sZW5ndGggPj0gY291bnQgJiYgZGVzY3JpcHRvci5uYW1l
ICE9PSAiX19wcm90b19fIikKICAgICAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwogCiAgICAgICAgICAgICByZXR1cm4gKGNvdW50ICYm
IGRlc2NyaXB0b3JzLmxlbmd0aCA+PSBjb3VudCkgPyBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZl
dGNoQWN0aW9uLlN0b3AgOiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRp
bnVlOwotICAgICAgICB9LCB7bmF0aXZlR2V0dGVyc0FzVmFsdWVzLCBpbmNsdWRlUHJvdG99KTsK
KyAgICAgICAgfSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAi
bmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwgbmF0aXZlR2V0dGVyc0FzVmFsdWVzLAorICAgICAgICAg
ICAgImluY2x1ZGVQcm90byIsIGluY2x1ZGVQcm90bywKKyAgICAgICAgKSk7CiAgICAgICAgIHJl
dHVybiBkZXNjcmlwdG9yczsKICAgICB9CiAKQEAgLTYzOCwxMyArNjgzLDE2IEBAIGxldCBJbmpl
Y3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmICghaW50ZXJuYWxQ
cm9wZXJ0aWVzKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgbGV0IGRlc2Ny
aXB0b3JzID0gW107CisgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IEBjcmVhdGVBcnJheVdpdGhv
dXRQcm90b3R5cGUoKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3Bl
cnRpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGludGVybmFs
UHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0ge25hbWU6IHByb3Bl
cnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0eS52YWx1ZX07CisgICAgICAgICAgICBsZXQgZGVzY3Jp
cHRvciA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJu
YW1lIiwgcHJvcGVydHkubmFtZSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCBwcm9wZXJ0eS52
YWx1ZSwKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9y
KQogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAg
ZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVz
Y3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBkZXNjcmlw
dG9yczsKICAgICB9CkBAIC02NTQsMTUgKzcwMiwxOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5
cGUob2JqZWN0KSA9PT0gInByb3h5IikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBs
ZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBTZXQ7CisgICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0g
bmV3IEBTZXQ7CiAKICAgICAgICAgLy8gSGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9g
LgotICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZCgiX19wcm90b19fIik7CisgICAgICAgIG5hbWVQ
cm9jZXNzZWQuQGFkZCgiX19wcm90b19fIik7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlRmFr
ZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHks
IHBvc3NpYmxlTmF0aXZlQmluZGluZ0dldHRlcikKICAgICAgICAgewogICAgICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IG9i
amVjdFtuYW1lXX07CisgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0W25hbWVdLAorICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWtlRGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7CkBAIC02NzgsMTEgKzcyOSwxNSBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAg
IGlmIChzeW1ib2wpCiAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9
IHN5bWJvbDsKICAgICAgICAgICAgICAgICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRs
ZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBjcmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFj
Y2Vzc29yIHdpdGggYSB3cm9uZyB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFr
ZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9z
dC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0
b3IudmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRj
aChmdW5jdGlvbigpe30pOworICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1
ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWpl
Y3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAg
ICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5AY2F0Y2goZnVuY3Rpb24oKXt9
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFrZURlc2NyaXB0b3I7CiAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IHtuYW1l
LCB2YWx1ZTogZSwgd2FzVGhyb3duOiB0cnVlfTsKKyAgICAgICAgICAgICAgICBsZXQgZXJyb3JE
ZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAg
ICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgInZhbHVlIiwgZSwKKyAg
ICAgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIHRydWUsCisgICAgICAgICAgICAgICAgKTsK
ICAgICAgICAgICAgICAgICBpZiAoaXNPd25Qcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JEZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9s
KQpAQCAtNzEwLDE1ICs3NjUsMTUgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgICAgICBmdW5jdGlvbiBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlO
YW1lLCBpc093blByb3BlcnR5KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobmFtZVByb2Nl
c3NlZC5oYXMocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLkBo
YXMocHJvcGVydHlOYW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAotICAgICAgICAgICAgbmFtZVByb2Nlc3Nl
ZC5hZGQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZChwcm9w
ZXJ0eU5hbWUpOwogCiAgICAgICAgICAgICBsZXQgbmFtZSA9IHRvU3RyaW5nKHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgICAgICBsZXQgc3ltYm9sID0gaXNTeW1ib2wocHJvcGVydHlOYW1lKSA/IHBy
b3BlcnR5TmFtZSA6IG51bGw7CiAKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmICghZGVzY3JpcHRvcikgewogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBCYWQgZGVzY3JpcHRvci4gQ2FuIHdlIGdldCBoZXJlPwogICAgICAgICAg
ICAgICAgIC8vIEZhbGwgYmFjayB0byB2ZXJ5IHJlc3RyaWN0aXZlIHNldHRpbmdzLgpAQCAtNzI3
LDcgKzc4Miw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMpIHsK
LSAgICAgICAgICAgICAgICBpZiAoU3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25h
dGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Q
cm9wZXJ0eSgiZ2V0IikgJiYgIWRlc2NyaXB0b3Iuc2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJv
cGVydHkoInNldCIpKSkgeworICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5n
ZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYg
QE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3IsICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYg
QE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3IsICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gRGV2ZWxvcGVycyBtYXkgY3JlYXRlIHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91
bGQgYmUgcmVzaWxpZW50OgogICAgICAgICAgICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoeCwgInAiLCB7Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHgsICJwIikKICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VE
ZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2Ny
aXB0b3IsIGlzT3duUHJvcGVydHksIHRydWUpOwpAQCAtNzQ1LDEwICs4MDAsMTAgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJh
eUxpa2UgPSBmYWxzZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0g
UmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmpl
Y3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtl
ID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUo
b2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxlbmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9
CiAKLSAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0
LmdldFByb3RvdHlwZU9mKG8pKSB7CisgICAgICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVm
aW5lZChvKTsgbyA9IEBPYmplY3QuQGdldFByb3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBs
ZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09IG9iamVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRC
cmVhayA9IGZhbHNlOwogCkBAIC03NjQsNyArODE5LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0
IHByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAg
ICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMo
byk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJv
cGVydHkobywgcHJvcGVydHlOYW1lc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZl
dGNoQWN0aW9uLlN0b3A7CkBAIC03NzYsMTQgKzgzMSwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scykgewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8pOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBp
c093blByb3BlcnR5KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQg
PT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBP
YmplY3QuQGdldE93blByb3BlcnR5U3ltYm9scyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3du
UHJvcGVydHkpOworICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmpl
Y3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYg
KHNob3VsZEJyZWFrKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQpAQCAtNzk2LDIzICs4NDksMjggQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1
ZGVQcm90bykgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0
Ll9fcHJvdG9fXykKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3Rv
X18iLCB2YWx1ZTogb2JqZWN0Ll9fcHJvdG9fXywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSwgaXNPd246IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAibmFt
ZSIsICJfX3Byb3RvX18iLAorICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0
Ll9fcHJvdG9fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiY29uZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJpc093biIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICkpOwogICAg
ICAgICAgICAgfSBjYXRjaCB7IH0KICAgICAgICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRy
aWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBl
bnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFBy
b3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhl
IHBhZ2Ugb3ZlcnJpZGVzIFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAg
Zm9yIChsZXQgdmFsdWUgb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBi
dWlsdGluU2V0SXRlcmFibGUob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQg
PiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVl
fSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKCJ2YWx1ZSIsIHZhbHVlKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50
ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtODIzLDE2ICs4ODEsMTggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgIF9nZXRNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hD
b3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRy
aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1F
OiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVb
U3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVj
dCkgeworICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJs
ZShvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAg
ICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAg
ICAgICAgQGFycmF5UHVzaChlbnRyaWVzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgK
KyAgICAgICAgICAgICAgICAia2V5Iiwga2V5LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZh
bHVlLAorICAgICAgICAgICAgKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVu
dHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
ODc2LDEwICs5MzYsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3Jp
cHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAg
aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYg
KHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMu
aW5kZXhPZihyZXN1bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90
b3R5cGUuQGluZGV4T2YuQGNhbGwodGhpcy5fc2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAg
ICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0SW5kZXggPSBleGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2
ICs5NTQsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAg
ICB9CiB9OwogCi1JbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9w
ZXJ0aWVzOiAxIDw8IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdl
dHRlclByb3BlcnRpZXM6IDEgPDwgMSwgLy8gbmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRo
ZSBwcm90b3R5cGUgY2hhaW4uCi0gICAgQWxsUHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAv
LyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2Ny
aXB0LkNvbGxlY3Rpb25Nb2RlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
Ik93blByb3BlcnRpZXMiLCAxIDw8IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAg
ICJOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzIiwgMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3Bl
cnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwg
MiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7
CiAKLUluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6
IFN5bWJvbCgiY29udGludWUiKSwKLSAgICBTdG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVj
dGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3Rv
dHlwZSgKKyAgICAiQ29udGludWUiLCBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwK
KyAgICAiU3RvcCIsIEBjcmVhdGVQcml2YXRlU3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5q
ZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIyLDcgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJv
eHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9z
c2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMu
cHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1u
TmFtZXMpOworICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJl
dmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtOTc3LDcgKzEwMzcsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVt
b3RlT2JqZWN0LmRlc2NyaWJlKGUpOwogICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAg
ICAgICAgICAgICBhbGVydChleC5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS5lcnJvcihleC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBk
ZXNjcmlwdGlvbiA9ICI8ZmFpbGVkIHRvIGNvbnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3Jp
cHRpb24pOwpAQCAtOTg2LDcgKzEwNDYsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAKICAgICBzdGF0aWMgY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVl
LCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90
ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3QodmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVy
YXRlUHJldmlldywgY29sdW1uTmFtZXMpOworICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3
IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpOwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAg
ICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQp
OwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVj
dC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkKQEAgLTEwMTEsNyArMTA3MSw3IEBAIGxldCBSZW1v
dGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJy
YXkgZGV0ZWN0aW9uLgogICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1
ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAg
ICAgICAgIGlmICh0eXBlb2YgdmFsdWUuc3BsaWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0
ZSh2YWx1ZS5sZW5ndGgpKQogICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAg
ICB9IGNhdGNoIHsgfQogCkBAIC0xMDUwLDggKzExMTAsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAg
ICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsKIAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0
ZXJhdG9yIiAmJiBTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1
cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJp
dGVyYXRvciIgJiYgQEB0b1N0cmluZ1RhZyBpbiB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5AQHRvU3RyaW5nVGFnOwogCiAgICAgICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1
bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVv
ZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKQEAgLTEwNjksNiArMTEyOSw3IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2Rl
KQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3Rl
ZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJDb3JlIGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1M
RG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1s
VmVyc2lvbjsKICAgICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9k
ZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjEs
MTcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRp
YWxQcmV2aWV3KCkKICAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAg
dHlwZTogdGhpcy50eXBlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRp
b24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSksCi0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwK
LSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgKKyAgICAgICAgICAgICJ0eXBlIiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIiwgdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAg
ICAgICAgICAgICJsb3NzbGVzcyIsIHRydWUsCisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRo
aXMuc3VidHlwZSkgewogICAgICAgICAgICAgcHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBl
OwogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAg
ICAgICAgcHJldmlldy5vdmVyZmxvdyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcu
cHJvcGVydGllcyA9IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CkBAIC0xMTI2LDcgKzExODcsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBl
ID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUg
PT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAg
ICAgIGlmICh0aGlzLnNpemUpIHsKLSAgICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBb
XTsKKyAgICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0
UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpA
QCAtMTE0MSwyMyArMTIwMiwyMyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgIGxldCBpc1RhYmxlUm93c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09
IG51bGwgfHwgc2Vjb25kTGV2ZWxLZXlzOwogICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3Vu
dCA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAg
ICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50
KSwKLSAgICAgICAgICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRo
Lm1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHBy
b3BlcnRpZXNUaHJlc2hvbGQgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBm
aXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAgICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NS
ZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7
CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRv
cnMgaGF2ZSBlbnRyaWVzLgogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIg
fHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRv
ciIpCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHBy
ZXZpZXcpOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAg
ICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsK
IAogICAgICAgICAgICAgLy8gSW50ZXJuYWwgUHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBp
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMgPSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3JzKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3Qs
IHByZXZpZXcsIGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVz
aG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7
CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVBy
ZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHBy
b3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVh
dGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJpbnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlv
bi5TdG9wKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTE2OSw3ICsxMjMwLDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBp
bmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVk
U2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3Qs
IHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlz
LCBzZWNvbmRMZXZlbEtleXMpOwotICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVl
czogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVlfSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1
ZXMiLCB0cnVlLAorICAgICAgICAgICAgICAgICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAg
ICAgICAgKSk7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVz
cyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMTc3LDcgKzEyNDEsNyBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0K
IAotICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9y
LCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7
aW50ZXJuYWx9ID0ge30pCisgICAgX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZp
ZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNv
bmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgp
KQogICAgIHsKICAgICAgICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRl
c2NyaXB0b3Iud2FzVGhyb3duKSB7CkBAIC0xMTkwLDkgKzEyNTQsOSBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19f
IikgewogICAgICAgICAgICAgLy8gTm9uIGJhc2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZl
IGludGVyZXN0aW5nLCBub24tZW51bWVyYWJsZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAg
ICAgaWYgKGRlc2NyaXB0b3IudmFsdWUgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3Rvcgot
ICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVj
dAotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFy
cmF5Ci0gICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0g
UmVnRXhwKQorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3Ig
IT09IEBPYmplY3QKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVj
dG9yICE9PSBAQXJyYXkKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0
cnVjdG9yICE9PSBAUmVnRXhwKQogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBm
YWxzZTsKICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0
aW9uLkNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMjA5LDcgKzEyNzMsNyBAQCBsZXQgUmVtb3Rl
T2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZp
bHRlciwgb25seSBzaG93IHByb3BlcnRpZXMgaW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB0aGVzZSBmaWx0ZXJzIGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0g
ICAgICAgIGlmIChmaXJzdExldmVsS2V5cyAmJiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFt
ZSkpCisgICAgICAgIGlmIChmaXJzdExldmVsS2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5j
bHVkZXMuQGNhbGwoZmlyc3RMZXZlbEtleXMsIG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVu
Y3Rpb24gYXBwZW5kUHJldmlldyhwcm9wZXJ0eSkgewpAQCAtMTIyNywyMCArMTI5MSwyOCBAQCBs
ZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50
ZXJuYWwpCiAgICAgICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAg
ICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBA
YXJyYXlQdXNoKHByZXZpZXcucHJvcGVydGllcywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBHZXR0ZXIvc2V0dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGlu
IGRlc2NyaXB0b3IpKSB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0g
ICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0p
OworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAg
ICJ0eXBlIiwgImFjY2Vzc29yIiwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gTnVsbCB2YWx1ZS4KICAgICAgICAgbGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsK
ICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFBy
ZXZpZXcoe25hbWUsIHR5cGU6ICJvYmplY3QiLCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVs
bCJ9KTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAg
ICAgICAidHlwZSIsICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwi
LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAg
ICAgICAgIC8vIElnbm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0
eXBlID0gdHlwZW9mIHZhbHVlOwpAQCAtMTI1OCw3ICsxMzMwLDExIEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2Fi
YnJldmlhdGVTdHJpbmcodmFsdWUsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAg
cHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9u
KHZhbHVlKX0pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAg
ICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmlu
Z0Rlc2NyaXB0aW9uKHZhbHVlKSwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gU3ltYm9sLgpAQCAtMTI2OCwxMSArMTM0NCwxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5f
YWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJpbmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAg
ICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJp
bmd9KTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAg
ICAgICAidHlwZSIsIHR5cGUsCisgICAgICAgICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5n
LAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAg
ICAgIGxldCBwcm9wZXJ0eSA9IHtuYW1lLCB0eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0g
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUs
CisgICAgICAgICAgICAidHlwZSIsIHR5cGUsCisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0
eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUodmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkK
ICAgICAgICAgICAgIHByb3BlcnR5LnN1YnR5cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk2
LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAg
IGVudHJpZXMucG9wKCk7CisgICAgICAgICAgICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwo
ZW50cmllcyk7CiAgICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAg
ICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA2
LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAg
ICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZp
ZXcuZW50cmllcyA9IGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZp
ZXcuZW50cmllcyA9IEBBcnJheS5wcm90b3R5cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlv
bihlbnRyeSkgewogICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRl
T2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0
KTsKICAgICAgICAgICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAg
ICAgIGlmICgia2V5IiBpbiBlbnRyeSkgewpAQCAtMTMzNiw4ICsxNDE5LDggQEAgbGV0IFJlbW90
ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3Qo
dmFsdWUsIG9iamVjdCkKICAgICB7Ci0gICAgICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAg
ICBzZXQuYWRkKG9iamVjdCk7CisgICAgICAgIGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAg
c2V0LkBhZGQob2JqZWN0KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9i
amVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEpOwogICAgIH0KQEAgLTEzNTcsMTEgKzE0NDAsMTEg
QEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93
bk9iamVjdHMuaGFzKG9iamVjdCkpCisgICAgICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmpl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAg
ICAgIGtub3duT2JqZWN0cy5hZGQob2JqZWN0KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQo
b2JqZWN0KTsKIAogICAgICAgICAvLyBBcnJheXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBv
ciBsZXNzIHNpbXBsZSBvYmplY3RzLgogICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVj
dC5zdWJ0eXBlKG9iamVjdCk7CkBAIC0xMzgxLDEyICsxNDY0LDEyIEBAIGxldCBSZW1vdGVPYmpl
Y3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICAvLyBPYmplY3RzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUg
dmFsdWUgcHJvcGVydGllcy4KLSAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1l
cyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93
blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAg
ICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBP
YmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAmJiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1By
ZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2JqZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0
cywgZGVwdGgpKQpAQCAtMTQwNCw2NiArMTQ4Nyw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlmIChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBs
ZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAxOwogICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1h
eExlbmd0aCAtIGxlZnRIYWxmIC0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3Ry
KDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsgc3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0g
cmlnaHRIYWxmLCByaWdodEhhbGYpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3Ry
KDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsgc3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAt
IHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJp
bmcuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAiXHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmlu
Zy5Ac3Vic3RyKDAsIG1heExlbmd0aCkgKyAiXHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0t
LS0tCiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwg
Y2FsbEZyYW1lKQotewotICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGlu
YWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5m
dW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24g
PSB7c2NyaXB0SWQ6IFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxs
RnJhbWUubGluZSwgY29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNj
b3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhp
cyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2Ui
KTsKLSAgICB0aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07
CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsK
KyAgICBjb25zdHJ1Y3RvcihvcmRpbmFsLCBjYWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlz
LmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6
JHtpbmplY3RlZFNjcmlwdElkfX1gOworICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxG
cmFtZS5mdW5jdGlvbk5hbWU7CisKKyAgICAgICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgInNjcmlwdElkIiwgU3RyaW5nKGNhbGxG
cmFtZS5zb3VyY2VJRCksCisgICAgICAgICAgICAibGluZU51bWJlciIsIGNhbGxGcmFtZS5saW5l
LAorICAgICAgICAgICAgImNvbHVtbk51bWJlciIsIGNhbGxGcmFtZS5jb2x1bW4sCisgICAgICAg
ICk7CisKKyAgICAgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2Fs
bEZyYW1lKTsKKyAgICAgICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJh
bWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOworICAgICAgICB0aGlzLmlzVGFpbERlbGV0ZWQg
PSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKKyAgICB9CiAKLUluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICBfd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKQog
ICAgIHsKICAgICAgICAgbGV0IHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKICAg
ICAgICAgbGV0IHNjb3BlRGVzY3JpcHRpb25zID0gY2FsbEZyYW1lLnNjb3BlRGVzY3JpcHRpb25z
KCk7CiAKLSAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IFtdOworICAgICAgICBsZXQgc2Nv
cGVDaGFpblByb3h5ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBz
Y29wZUNoYWluUHJveHlbaV0gPSBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRl
U2NvcGVKc29uKHNjb3BlQ2hhaW5baV0sIHNjb3BlRGVzY3JpcHRpb25zW2ldLCAiYmFja3RyYWNl
Iik7CiAgICAgICAgIHJldHVybiBzY29wZUNoYWluUHJveHk7CiAgICAgfQotfTsKIAotSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gewotICAgIDA6ICJnbG9i
YWwiLCAvLyBHTE9CQUxfU0NPUEUKLSAgICAxOiAid2l0aCIsIC8vIFdJVEhfU0NPUEUKLSAgICAy
OiAiY2xvc3VyZSIsIC8vIENMT1NVUkVfU0NPUEUKLSAgICAzOiAiY2F0Y2giLCAvLyBDQVRDSF9T
Q09QRQotICAgIDQ6ICJmdW5jdGlvbk5hbWUiLCAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCi0gICAg
NTogImdsb2JhbExleGljYWxFbnZpcm9ubWVudCIsIC8vIEdMT0JBTF9MRVhJQ0FMX0VOVklST05N
RU5UX1NDT1BFCi0gICAgNjogIm5lc3RlZExleGljYWwiLCAvLyBORVNURURfTEVYSUNBTF9TQ09Q
RQotfTsKKyAgICBzdGF0aWMgX2NyZWF0ZVNjb3BlSnNvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBs
b2NhdGlvbn0sIGdyb3VwSWQpCisgICAgeworICAgICAgICBsZXQgc2NvcGUgPSBAY3JlYXRlT2Jq
ZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJvYmplY3QiLCBSZW1vdGVPYmplY3Qu
Y3JlYXRlKG9iamVjdCwgZ3JvdXBJZCksCisgICAgICAgICAgICAidHlwZSIsIEluamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1t0eXBlXSwKKyAgICAgICAgKTsKIAot
SW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9u
KG9iamVjdCwge25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJZCkKLXsKLSAgICBsZXQgc2Nv
cGUgPSB7Ci0gICAgICAgIG9iamVjdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3Vw
SWQpLAotICAgICAgICB0eXBlOiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVU
eXBlTmFtZXNbdHlwZV0sCi0gICAgfTsKKyAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICBz
Y29wZS5uYW1lID0gbmFtZTsKIAotICAgIGlmIChuYW1lKQotICAgICAgICBzY29wZS5uYW1lID0g
bmFtZTsKKyAgICAgICAgaWYgKGxvY2F0aW9uKQorICAgICAgICAgICAgc2NvcGUubG9jYXRpb24g
PSBsb2NhdGlvbjsKIAotICAgIGlmIChsb2NhdGlvbikKLSAgICAgICAgc2NvcGUubG9jYXRpb24g
PSBsb2NhdGlvbjsKKyAgICAgICAgaWYgKGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKKyAgICAgICAg
ICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsKIAotICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkp
Ci0gICAgICAgIHNjb3BlLmVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHNjb3BlOworICAg
IH0KK307CiAKLSAgICByZXR1cm4gc2NvcGU7Ci19CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eS5fc2NvcGVUeXBlTmFtZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAwLCAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCisgICAgMSwgIndpdGgiLCAvLyBXSVRIX1ND
T1BFCisgICAgMiwgImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BFCisgICAgMywgImNhdGNoIiwg
Ly8gQ0FUQ0hfU0NPUEUKKyAgICA0LCAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9T
Q09QRQorICAgIDUsICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNB
TF9FTlZJUk9OTUVOVAorICAgIDYsICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxf
U0NPUEUKKyk7CiAKIC8vIC0tLS0tLS0KIApAQCAtMTQ3Nyw5ICsxNTY2LDkgQEAgZnVuY3Rpb24g
Q29tbWFuZExpbmVBUEkoY2FsbEZyYW1lKQogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigp
IHsgcmV0dXJuIG9yaWdpbmFsVmFsdWU7IH07CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9f
ZGVmaW5lR2V0dGVyX18oIiQiICsga2V5LCB2YWx1ZSk7CisgICAgICAgIEBPYmplY3QuQGRlZmlu
ZVByb3BlcnR5KHRoaXMsICIkIiArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
ImdldCIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChzYXZlZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVz
dWx0QWxpYXMgIT09ICIkIikKLSAgICAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZl
ZFJlc3VsdEFsaWFzICsga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBAT2JqZWN0LkBkZWZpbmVQ
cm9wZXJ0eSh0aGlzLCBzYXZlZFJlc3VsdEFsaWFzICsga2V5LCBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgiZ2V0IiwgdmFsdWUpKTsKICAgICB9OwogCiAgICAgaWYgKCJfbGFzdFJlc3Vs
dCIgaW4gaW5qZWN0ZWRTY3JpcHQpCkBAIC0xNTAyLDQ4ICsxNTkxLDQ4IEBAIGZ1bmN0aW9uIENv
bW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkKICAgICAgICAgdGhpc1tuYW1lXSA9IENvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbbmFtZV07CiB9CiAKLUNvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSB7fTsKK0Nv
bW1hbmRMaW5lQVBJLmdldHRlcnMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwog
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzID0ge307CitDb21tYW5kTGluZUFQSS5tZXRob2RzID0g
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sia2V5cyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3Qp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3Qp
IHsgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmpl
Y3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQ
SS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3Rl
ZFNjcmlwdEhvc3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qu
cXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVy
cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJz
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9i
amVjdCkgeyByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9Owog
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5kaXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5kaXJ4bWwoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmVycm9yKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91
cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5n
cm91cCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xs
YXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZ3JvdXBDb2xsYXBzZWQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmdyb3VwRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRo
b2RzWyJpbmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLmluZm8oLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxv
ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5s
b2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmls
ZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9m
aWxlRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVj
b3JkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVj
b3JkRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5z
aG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnNjcmVlbnNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRh
YmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRhYmxlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVh
cFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGltZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS50aW1lRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLnRpbWVMb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS50aW1lU3RhbXAoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLnRyYWNlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ3
YXJuIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lndhcm4oLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFzc2VydCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5hc3Nl
cnQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVu
dHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNsZWFyKC4uLmNyZWF0ZUl0ZXJh
YmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuY29uc29sZS5jb3VudCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5
cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
Y291bnRSZXNldCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5jb3VudFJlc2V0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21B
cmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1
ZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5jcmVhdGVJdGVyYWJsZVdp
dGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVG
cm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJy
b3IiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
ZXJyb3IoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5jcmVhdGVJ
dGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuaW5mbyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5j
cmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLmNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5yZWNvcmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVu
ZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5y
ZWNvcmRFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hv
dCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uY3JlYXRlSXRlcmFi
bGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5jcmVhdGVJ
dGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3Rv
dHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJ0aW1lRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLnRpbWVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxv
ZyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUud2FybiguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OwogCiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1l
dGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBB
UEldIH0iOyB9OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19KQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZj
N2UzOWQ5OTk1OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEzYmY0ODkwNDFiOTNjNmFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgICAgICBpZiAoIXJlc3Vs
dCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcg
YnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdl
KCksICIgb24gbGluZSAiLCBlcnJvci5saW5lKCksICIuIik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5
OWVlMTlmMTNlNzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJkZWZhYzUwYmIxYTAzZjM2NzBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKIAog
I2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAKQEAgLTU3
LDYgKzU4LDggQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheVByb3RvdHlw
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2ll
c1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisKKyAgICBK
U0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3JGcm9tQ29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVhM2FhYTkxZTYyNzI4YzJjYTlmYWVm
NTYxZDJmYWJlZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4MGMwZThhNTBmMTBmN2Y4ZjZhYmY5
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKQEAgLTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH0KICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFBy
aXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZm9yRWFjaFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQcml2YXRlTmFtZSgpLCBn
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVi
bGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHVibGljTmFtZSgpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5rZXlzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1Ymxp
Y05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVl
c1ByaXZhdGVOYW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIAog
ICAgIEpTT2JqZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9i
YWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZDE0NDEyNDhm
NmUyZjI2ZmVjODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uOGQ1NjAyYmJkODc5MzM1YzMyMDU0MDZl
ZDJmZmUzOTlkOTY1ODU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4IEBAIEZPUl9FQUNIX0xBWllfQlVJ
TFRJTl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisvL3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzb25QYXJzZSk7CisvL3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzb25TdHJpbmdpZnkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxl
U3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVT
dXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpv
Yik7CkBAIC0zNjEsNiArMzYzLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQ
cml2YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6
OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOwogfQogCisvL0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc29uUGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCisvL3sKKy8vICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKy8v
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKy8vICAgIGF1dG8ganNv
biA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKy8v
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisvLworLy8gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU09OUGFyc2UoZ2xvYmFsT2JqZWN0LCBqc29uKSk7CisvL30KKy8vCisv
L0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29uU3RyaW5naWZ5LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorLy97CisvLyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisvLyAgICBhdXRvIHJlc3VsdCA9IEpTT05TdHJpbmdpZnko
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKTsKKy8vICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkp
OworLy99CisKICNpZiBBU1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFz
c2VydENhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCiB7CkBAIC0xMDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
IAogICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVj
dG9yKTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworLy8gICAgbV9zdHJpbmdDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0
aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2
bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwotICAgIAorLy8gICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U3Ry
aW5nKV0uc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2YWxFcnJv
clN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6Oklu
aXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVy
cm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1Myw2ICsx
NTc0LDE0IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAgIH0pOwog
CisgICAgLy8gSlNPTiBoZWxwZXJzCisvLyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpqc29uUGFyc2UpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKy8vICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAxLCBTdHJpbmcoKSwganNvblBhcnNlKSk7CisvLyAgICAgICAgfSk7CisvLyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojpqc29uU3RyaW5naWZ5KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisvLyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCks
IGpzb25TdHJpbmdpZnkpKTsKKy8vICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwog
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OmNyZWF0ZVJlbW90ZUZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBjcmVhdGVSZW1vdGVGdW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3Ry
dWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IpOworLy8gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdHJpbmdD
b25zdHJ1Y3Rvcik7CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggYTBhYWVkMzQ3ODdhZjY2YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uOWM3NWM2NWQ2
ODc5YjhlZjcxOWY4YjU0M2ExOGI2OGQ4ZmE0ZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3Mg
U2V0SXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VD
b2RlOwogY2xhc3MgU291cmNlT3JpZ2luOworLy9jbGFzcyBTdHJpbmdDb25zdHJ1Y3RvcjsKIGNs
YXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52aXJv
bm1lbnQ7CiBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKQEAgLTMyMCw2ICszMjEsNyBAQCBw
dWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25D
b25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJv
bWlzZUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU0ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yPiBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yOworLy8gICAgV3JpdGVCYXJyaWVy
PFN0cmluZ0NvbnN0cnVjdG9yPiBtX3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0
dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAK
aW5kZXggYTg2ZGU5Nzc2NGVjNGY1ZDE3N2ZiMWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0
ZDU5NGY0ZjcyZmRlN2ZkOTM2ZWE1MTQzMGNiYTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFw
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKICAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmll
c0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNm
OWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2Ez
OTg3MDQxNWVlZjM3Y2JlMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2Jq
ZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9m
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0
T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZh
dGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmRlZmluZVByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JEZWZpbmVQcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigp
KQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVj
dG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSk7CisKKyAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFz
T3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNP
d25Qcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8g
RVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZk
NWQ0YTk1ZGQ0ODcxLi5mN2Y5YzE0MThiZjdjY2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAg
LTY4LDYgKzY4LDcgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVu
Y1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNO
YW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDUwNjcyMzJjZDY2Zjk5MTNiOTUz
MmYwOWY2ODAzMWJlZWQwNGNmOTMuLjMxYThmOWU3ZDdiYmQzMjY1MGMwY2IyOTgyNjlhOTM1ZWQw
Y2NjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcApAQCAtMTY0LDYgKzE2NCw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNG
dW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9y
LCBOb0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5zdWJzdHJQcml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbmRzV2l0aFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNX
aXRoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Mik7CisKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIg
U3RyaW5nQ29uc3RydWN0b3IgaGFzIGJlZW4gYnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBmYTA0YjdlY2ViYmU4M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi43OTJhNjcwMTYy
N2MxZWEzYzg5YmRlYTVjOGNmM2IyMmNmY2RkZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MjEyOSwxOCArMjEyOSw2IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VC
S0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURF
X0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmgKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwot
ICAgIE1BSU5fREVQRU5ERU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9D
T01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNP
UkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5q
cwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0g
ICAgVkVSQkFUSU0pCi1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9I
QVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRh
LmNwcCkKIApAQCAtMjM1Miw2ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNF
UwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VC
Q09SRV9ESVJ9L2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNf
R0VORVJBVE9SX1NDUklQVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4
MTJiOS4uZjU2NzdlMmU0NTI1MzU2MmJkMmYwYzkwMmQ1NjI3NmU2MGY3MzFmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyAr
OCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0
eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VC
dWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01DbGllbnRJc29TdWJz
cGFjZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2ODRkMWMw
Zjg4MGZiN2NmOTYxZmM2ZmE0MjE2ZTQ2Yy4uYjEyM2FiZjkzZTI3NThkMjExNDhjMTAxYzlkMTcz
NGQwNDk2ZjlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjE5LDE2ICsy
MjE5LDYgQEAgaWZuZXEgKCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1ZGUgJChK
U19ET01fSEVBREVSUzouaD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0b3IgaW50ZXJmYWNlcwot
Ci1hbGwgOiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmggOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcwotCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMK
LQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKFdl
YkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCSQo
REVMRVRFKSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQogIyBXZWJDb3JlIEpT
IEJ1aWx0aW5zCiAKIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKQEAgLTIyNTIsNiArMjI0
Miw3IEBAIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9U
ZXh0RGVjb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXJTdHJl
YW0uanMgXAogICAgICQoV2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxz
LmpzIFwKKyAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5qcyBcCiAjCiAKIEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggZDA2MGFkOWYzMWFkMmU2MTQ4Mzc5NTIzNzBiYTUwMDExOWQwYWFjNC4uNTc4MjBi
NzczZjA0OTAxNjQ5YTc3Yjk4YjBkNWMzY2RiMDU0YjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0yMDY4LDYgKzIwNjgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5o
CiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1ZhbHVlS2V5d29yZHMuaAor
ICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRJ
bnRlcmZhY2VzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRUYXJn
ZXRJbnRlcmZhY2VzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSFRNTEVs
ZW1lbnRUeXBlSGVscGVycy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWJhMWI4MjAzNTJjMTRkOTYwNjYzM2YzMDFmOWQ0NTM3
MjhlMmUyNS4uZDNmOGQ1NDU0NDUwNDkxYzVjZDcyMGQwYjMzNjZiMzg3NmE4ZGI0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
ODk5LDYgKzg5OSw3IEBACiAJCTJFMzAxQkU4Mjc0NTk0NzIwMEMwNTY0RiAvKiBDb21waWxlZFNl
bGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDQ1MTA3NzIwMkM3RTAxMDA2NTdEMzMgLyogQ29tcGlsZWRTZWxlY3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFMzdERkRCMTJEQkFGQjgw
MEE2QjIzMyAvKiBET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMzdERkQ4MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCAqLzsgfTsKIAkJ
MkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyog
SlNET01VUkwuaCAqLzsgfTsKKwkJMkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0OTBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM3MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9i
YWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwpAQCAtMzUx
Nyw3ICszNTE4LDYgQEAKIAkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJv
bWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1NzhGNDNFMURFMEI2MkIwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4MUVE
MTMxRkIyODhDRjAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4MUVEMTAxRkIyODhDODAwQ0VENEVD
IC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oICovOyB9OwogCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNC
MTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0
ZWRTY3JpcHRIb3N0LmggKi87IH07Ci0JCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmggKi87IH07CiAJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
LmggKi87IH07CiAJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAq
LzsgfTsKIAkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMzIx
ODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwpAQCAtODIwNCw2
ICs4MjA0LDggQEAKIAkJMkUzN0RGRDkxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NVVJMLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkUzN0UwMDMxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NVVJMLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJFNDM0NjMzMEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzQwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2VyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTQxLDcgKzEzOTQzLDYgQEAKIAkJ
QTU4MUVEMTIxRkIyODhDOTAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUyMjE4N0I4QUMyMDA4NDNCMTAgLyog
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0Ix
MCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkExODYzODcwRjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDQyOSw3ICsyMDQzMCw2IEBACiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJ
bnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
ICovLAogCQkJCUE1ODRGRTM5MTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAgKi8sCiAJCQkJQTU4NEZFM0ExODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVB
UElIb3N0LmggKi8sCiAJCQkJOTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLywKQEAgLTIzNTg3LDYgKzIzNTg3LDggQEAK
IAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAw
OUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovLAorCQkJCTJFM0FF
RkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5z
LmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0
ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3Vu
dFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAwNzEw
QkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovLApAQCAtMzQwODUsNyArMzQwODcsNyBAQAog
CQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYxODYzN0RB
QjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgx
IC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOUM2OUQwMjgxMEQxMUQwMEU2OUJB
RCAvKiBDb21tb25BdG9tU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTcz
NzAzMzAwNzY1NTM2IC8qIENvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNw
cAppbmRleCBkNzdjNzNkOGFlNDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5kNDFmY2Qz
NWNhOWUzZjUwM2NkNDczODk0NWI0OWI3OWZkZWEzMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgog
Ci0jaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJKU0RP
TUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0NywxNCBA
QCBDb21tYW5kTGluZUFQSU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQogewogfQogCi1T
dHJpbmcgQ29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0aW9uKiBD
b21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nSW1w
bDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMsIHNp
emVvZihDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChhdXRvKiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0
KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25z
KCkuY29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdl
dCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVg
IGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2Jh
bE9iamVjdGAuIik7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1ZSBDb21tYW5kTGluZUFQSU1vZHVsZTo6aG9zdChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCmluZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGViZGVkYWNm
N2ZjNmI0MmQyZGY3NGIuLjBhNTBkNGE1ZjMzM2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5o
CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDogcHVi
bGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAgIENvbW1h
bmRMaW5lQVBJTW9kdWxlKCk7CiAKLSAgICBTdHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0TWFuYWdlciosIGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcwppbmRleCBmNTFlMzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi5h
MTg3NDY3ZGI0NDlhMjY5ODYzNTVjNWEzMjgwOWUwZTUwNDZiOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMTEgKzI2LDEyIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19Jbmpl
Y3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworLy8gQGludGVybmFsCiAK
LShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGlu
amVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGlu
ZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkgeworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVj
dGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBp
bmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGlu
ZUFQSUhvc3QpCit7CiAKLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBX
ZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRv
IGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCisvLyBGSVhNRTog
PHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUg
YnVpbHQtaW5zLgogCiBpbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9i
amVjdCkgewogICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNzAsMTIgKzcxLDEy
IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVjdCkgewog
ICAgIGVsc2UgaWYgKGluamVjdGVkU2NyaXB0LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAg
ICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9
PT0gInN5bWJvbCIpCi0gICAgICAgIHN0cmluZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJp
bmcob2JqZWN0KTsKKyAgICAgICAgc3RyaW5nID0gU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBp
ZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBv
YmplY3Q7CiAgICAgZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsK
KyAgICAgICAgICAgIHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAg
ICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAg
IH0KQEAgLTg5LDIzICs5MCwyOCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExp
c3RlbmVycyJdID0gZnVuY3Rpb24odGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVF
dmVudFR5cGVzKHR5cGVzKSB7Ci0gICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAg
IHR5cGVzID0gWyJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJi
bHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJy
b3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJj
aCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVu
ZGVmaW5lZCkKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCJt
b3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5n
ZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMi
LCAibG9hZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3Qi
LCAic3VibWl0IiwgInVubG9hZCIpOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0
cmluZyIpCi0gICAgICAgIHR5cGVzID0gW3R5cGVzXTsKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRl
QXJyYXlXaXRob3V0UHJvdG90eXBlKHR5cGVzKTsKKworICAgIGxldCByZXN1bHQgPSBuZXcgQFNl
dDsKKyAgICBmdW5jdGlvbiBhZGRUeXBlc1RvUmVzdWx0KCkgeworICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5AYWRk
KGFyZ3VtZW50c1tpXSk7CisgICAgfQogCi0gICAgbGV0IHJlc3VsdCA9IFtdOwogICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKHR5cGVzW2ld
ID09PSAibW91c2UiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNr
IiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1v
dXNldXAiLCAibW91c2V3aGVlbCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiY2xp
Y2siLCAiZGJsY2xpY2siLCAibW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJt
b3VzZW92ZXIiLCAibW91c2V1cCIsICJtb3VzZXdoZWVsIik7CiAgICAgICAgIGVsc2UgaWYgKHR5
cGVzW2ldID09PSAia2V5IikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtl
eXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jl
c3VsdCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAg
ICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVz
aCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsK
KyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwg
InRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09
PSAiY29udHJvbCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgiYmx1ciIsICJjaGFuZ2UiLCAi
Zm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0Iiwg
Inpvb20iKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImJsdXIiLCAiY2hhbmdlIiwg
ImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIs
ICJ6b29tIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ld
KTsKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTExOCwxOSArMTI0LDE3IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50
KQogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2Jq
ZWN0LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5l
ciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0
eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExp
c3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2Yg
QGJ1aWx0aW5TZXRJdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpIHsKKyAgICAg
ICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAg
ICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAg
ICB9CiB9OwogCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1
bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2
ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1
cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZl
bnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBl
IG9mIEBidWlsdGluU2V0SXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAg
ICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwog
fTsKIAogaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuTm9kZSkgewpAQCAtMTU4LDkgKzE2MiwxMCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgfTsK
IAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwg
c3RhcnQpIHsKKyAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBo
ZXJlIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFy
cmF5LgogICAgICAgICBpZiAoY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAgICAg
ICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVlcnlT
ZWxlY3RvckFsbChzZWxlY3RvcikpOwotICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LkFycmF5LmZyb20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oc3RhcnQu
cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOworICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9t
KGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9y
KSk7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlv
bih4cGF0aCwgY29udGV4dCkgewpAQCAtMTc1LDEwICsxODAsMTEgQEAgaWYgKGluc3BlY3RlZEds
b2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBsZXQgbm9kZXMgPSBbXTsKKyAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVz
cyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEg
bm9ybWFsIEFycmF5LgorICAgICAgICBsZXQgbm9kZXMgPSBuZXcgQEFycmF5OwogICAgICAgICBs
ZXQgbm9kZSA9IG51bGw7CiAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0
KCkpCi0gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVz
aChub2Rlcywgbm9kZSk7CiAgICAgICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2
LDQgKzE5Miw0IEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVj
dGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEku
bWV0aG9kcykKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVu
Y3Rpb24oKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5l
IEFQSV0gfSI7IH07CiAKLX0pCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjkzMzY3ZjRjOWI5MmJhMDI2YWIwYjczOGRj
OWUxMWFhOWRlNGVjNi4uYTc0MzExNmEzODhiYWMzM2UwNjYxODFlYjU2M2Q4ZDVmN2Q0Y2M0MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA1LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlw
dFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRl
biBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGluc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sOgor
ICAgICAgICAtIEFkZCBzZXZlcmFsIG1vcmUgdGVzdCBjYXNlcyBmb3Igb3ZlcnJpZGluZyBmdW5j
dGlvbnMgYW5kIGVudGlyZSBvYmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbDoKKyAgICAgICAg
LSBDaGFuZ2VkIHRvIHRlc3QgYSBjdXN0b20gaW50ZXJuYWwgc2NyaXB0IHNuaXBwZXQgc2luY2Ug
dGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgaXMgbm93IGEgYnVpbHRpbi4KKworICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbDoKKyAgICAgICAgLSBUaGUg
aW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCAoYW5kIG1vZHVsZXMpIHdpbGwgbm8gbG9uZ2VyIGFw
cGVhciBhcyBzY3JpcHRzIGluIFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
bW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVs
aW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgLSBJbnNw
ZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGxpbmUgbnVtYmVycyBhcmUgZGlmZmVyZW50IGJldHdlZW4g
cmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLCBzbyBmaWx0ZXIgdGhvc2Ugb3V0LgorCiAyMDIyLTA1
LTA0ICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBd
IGZhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9pbnB1dC1hdXRvLWZpbGwtYnV0dG9uLmh0bWwg
aXMgYSBjb25zaXN0ZW50IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhw
ZWN0ZWQudHh0CmluZGV4IDFlYjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQu
LjU5MzdmYWU5N2Y4OTU4ODQ3Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZv
ci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2MCBAQAotQ09OU09M
RSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25z
b2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBX
aW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FH
RTogc3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGlu
dG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzLgorQ2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNj
cmlwdHMgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUg
b2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAogPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogLS0gUnVubmlu
ZyB0ZXN0IHNldHVwLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29u
c29sZUxvZykKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNU
RVBTOiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50
KQotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxz
Y3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcg
ICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0g
ICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNv
bGUubG9nKCJzdHJpbmciKTsKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAg
ICAyMiAgICB9CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmpl
Y3QoKSB7CisgLT4gIDI1ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1v
dmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0g
ICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRl
YnVnZ2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAg
ICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJz
dHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1
CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7Cisg
ICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50
ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjgg
ICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBz
dGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAgNiAgICBmdW5jdGlv
biBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDgg
ICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8Y29uc29sZS5sb2co
Y29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDEx
ICAgIH0KLSAgICAgMTIKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjg6NQorICAgICAy
NCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVi
dWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworIC0+ICAyNyAg
ICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElPTjogc3RlcC1pbgot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwot
ICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNv
bGUubG9nKGNvbnNvbGUpOwotIC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsK
LSAgICAgMTEgICAgfQotICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KK1BBVVNFIEFU
IGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAg
IDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJu
YWxPYmplY3QudGVzdCgyKTsKKyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDMp
OworICAgICAyOSAgICB9CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQogCiBBQ1RJ
T046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0gICAgICA4ICAgICAg
ICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29s
ZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gLT4gIDExICAgIH18
Ci0gICAgIDEyCi0gICAgIDEzICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAorUEFVU0UgQVQgZW50
cnlJbnRlcm5hbE9iamVjdDozMDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18CisgICAgIDMwCisgICAg
IDMxICAgIC8vIC0tLS0tLS0tLQorICAgICAzMgogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApA
QCAtNjgsNTcgKzYyLDU3IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAt
LSBSdW5uaW5nIHRlc3Qgc2V0dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0
UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChl
bnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmpl
Y3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0
YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAg
NSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0g
LT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2
OjUKKyAgICAgMjIgICAgfQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVy
bmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRl
c3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046
IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2Ny
aXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAg
ICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAg
ICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xl
LmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmpl
Y3Q6Mjc6NQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0
KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxP
YmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7Cisg
ICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFD
VElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAg
PHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAg
NyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsK
LSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29u
c29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFs
T2JqZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxP
YmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVy
bmFsT2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgy
KTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0K
IAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAg
NSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0g
ICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50
ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRl
cm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkg
ICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0g
ICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygp
IHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8
KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAg
ICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50
cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRy
eUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAg
ICAyOSAgICB9CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0
cy5odG1sCmluZGV4IGQxNjhhNzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLmU1
YjBkOWM4YjcxOGUxYjI1NmVhZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwt
c2NyaXB0cy5odG1sCkBAIC00LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci1mdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBpbnRlcm5hbE9iamVj
dCA9IHsgdGVzdDogZnVuY3Rpb24oKSB7fSB9OworCitpZiAod2luZG93LmludGVybmFscykgewor
ICAgIGludGVybmFsT2JqZWN0ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0ZUluV29ybGRJZ25v
cmluZ0V4Y2VwdGlvbigidGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwgYAorICAgICAgICAv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LmpzCisgICAgICAgIGxldCBJbnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVybmFsT2JqZWN0IHsK
KyAgICAgICAgICAgIHRlc3QoaW52b2NhdGlvbk51bWJlcikgeworICAgICAgICAgICAgICAgIGxl
dCBhID0gNjsKKyAgICAgICAgICAgICAgICBsZXQgYiA9IDc7CisgICAgICAgICAgICAgICAgbGV0
IGFuc3dlciA9IGEgKiBiOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG5l
dyBJbnRlcm5hbE9iamVjdDsKKyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9i
amVjdCgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKKyAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDEpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgaW50
ZXJuYWxPYmplY3QudGVzdCgzKTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0yMSwzMSArMzksMzEg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAg
bmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAg
ICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNv
bGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4i
LAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRl
bWVudHMgd2hpY2ggdXNlIGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhw
cmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBD
YWxsIG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3
YXkgdG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0
aW5nLgogICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5z
ZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAg
ICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2co
d2luZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKGNvbnNvbGUpCi0g
ICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2coInN0cmluZyIpCisgICAgICAgICAg
ICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJp
biIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBp
bnRlcm5hbE9iamVjdC50ZXN0KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQog
ICAgIH0pOwogCiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1
Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3Jp
cHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50
cyB3aGljaCB1c2UgdGhlIEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJl
c3Npb246ICJzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRl
cm5hbCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0
KGVudHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8g
dGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNv
bW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6
IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHModHJ1ZSk7IH0sCiAgICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBE
ZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAg
ICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAv
LyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVy
ZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBb
U29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAgICAgICAgICAgICJp
biIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBb
U29tZXdoZXJlIGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAgICAgICAgICAgICAg
ICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCiAgICAg
ICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcsNiArNzUsNiBAQCBm
dW5jdGlvbiB0ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotPHA+Q2hlY2tpbmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRv
IG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvcklu
dGVybmFsU2NyaXB0cy48L3A+Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5h
bCkgc2NyaXB0cyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2
YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2Ny
aXB0UGFyc2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVlOWM4NjE1OGNjZWNk
MmM3M2RiZmY5ZjAxODguLjYzYTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4YTdmNTI5YjRlN2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQ
YXJzZWQtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91bGQgZmluZCBFeHRl
cm5hbCBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQu
CiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlw
dC4KIFBBU1M6IFNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5z
cGVjdG9yIEluamVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIElu
c3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBTaG91bGQgbm90IHJl
Y2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2ODJmYzRlMTVjNTAw
MzQ0NWE2YmExZDEzNTQ5ZDlhNWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmExNTZjZTJmMTkxYWJh
MTE0OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQ
YXJzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFy
c2VkLmh0bWwKQEAgLTE5LDE0ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyAgIC0g
aW5saW5lIDxzY3JpcHQ+ICh0aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAgICAvLyAgIC0gaW5s
aW5lIGJvZHkgb25sb2FkIGV2ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8Ym9keT4gbGluZSBi
ZWxvdwogICAgIC8vICAgLSBldmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcKLSAgICAvLyAgIC0g
aW5zcGVjdG9yIGludGVybmFsIHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVybmFsU2NyaXB0ID0g
ZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0gZmFsc2U7CiAgICAg
bGV0IGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IGZhbHNlOwogICAg
IGxldCBmb3VuZEV2YWxTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJbmplY3RlZFNjcmlw
dFNvdXJjZVNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNl
U2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IGZhbHNlOwog
CiAgICAgZnVuY3Rpb24gaXNFeHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAgLTQyLDIxICszOSwx
MyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0lubGluZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBpc0lubGlu
ZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAvLyBFc3RpbWF0ZSBv
ZiA8Ym9keT4gYmVsb3cuCisgICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYm
IHBhcmFtcy5zdGFydExpbmUgPj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KICAg
ICB9CiAKICAgICBmdW5jdGlvbiBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAgICAgICAgIHJldHVy
biBwYXJhbXMuc291cmNlVVJMID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24g
aXNJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBh
cmFtcy5zb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBwYXJhbXMu
c291cmNlVVJMLmVuZHNXaXRoKCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbW1h
bmRMaW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNv
dXJjZVVSTC5pbmRleE9mKCJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIpICE9PSAtMTsKLSAg
ICB9Ci0KICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJFbmFibGVEZWJ1
Z2dlckRvbWFpbkFuZENoZWNrSW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewpAQCAtNzksMTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRFdmFsU2NyaXB0ICYmIGlz
RXZhbFNjcmlwdChwYXJhbXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRFdmFsU2Ny
aXB0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kQ29tbWFuZExp
bmVBUElTb3VyY2VTY3JpcHQgJiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMp
KQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlw
dCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEluamVjdGVkU2Ny
aXB0U291cmNlU2NyaXB0ICYmIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFByb3RvY29sVGVzdC5sb2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsgSlNPTi5zdHJpbmdp
ZnkobWVzc2FnZU9iamVjdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRVbmV4cGVj
dGVkU2NyaXB0ID0gdHJ1ZTsKQEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVTY3JpcHRUYWdT
Y3JpcHQsICJTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuIik7CiAgICAgICAg
ICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0
ZW5lciBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQo
Zm91bmRFdmFsU2NyaXB0LCAiU2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7Ci0gICAgICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNj
cmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQu
Iik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRDb21tYW5k
TGluZUFQSVNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQ
SVNvdXJjZSBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRo
YXQoIWZvdW5kVW5leHBlY3RlZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBl
Y3RlZCBzY3JpcHRzLiIpOwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJs
ZS1leHBlY3RlZC50eHQKaW5kZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMwNjBiZTY4NjQyY2Iw
M2FiNy4uNDlmNGFmMmMxMzg0YTQ2NjdiN2ZiZThiYzhlMWZlOGQ3ZWZlNTA5MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2Vy
dmFibGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMTcgQEAKIENPTlNPTEUgTUVTU0FHRTogW29i
amVjdCBPYmplY3RdCi1UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVy
YXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05TT0xFIE1FU1NBR0U6
IGEsYixjCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IFNldF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgTWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0K
K0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBjb3VudCBvZiAxCitDT05TT0xFIE1FU1NBR0U6
IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBoZWxsbworQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IE9iamVjdF0KK1Rlc3QgdGhhdCBJbmplY3RlZCBTY3JpcHQgb3BlcmF0aW9ucyBh
cmUgbm90IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZQpAQCAtOCwzICsyMCwzOCBAQCBQQVNTOiBQYXVz
ZWQuCiBQQVNTOiBSZXN1bWVkLgogUEFTUzogQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRv
cl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVj
dGVkU2NyaXB0Lk9ic2VydmFibGU6U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNT
OiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQor
UEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IE1hcC5wcm90b3R5cGVbU3ltYm9s
Lml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaAorUEFTUzog
UGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNh
bGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBS
ZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUg
MS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3Ry
aW5nCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291
bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRleAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVz
dW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsiNDIiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpPYmpl
Y3QucHJvdG90eXBlLmRlc3RydWN0dXJlZFByb3BlcnR5CitQQVNTOiBQYXVzZWQuCitQQVNTOiBS
ZXN1bWVkLgorUEFTUzogT2JqZWN0LnByb3RvdHlwZVsiZmV0Y2hTdGFydCJdIGNhbGwgY291bnQg
c2hvdWxkIGJlIDEuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3Rl
ZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVk
LXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4
ZDlkOTNjODQ3ZDY5NS4uZTFiNmI0NDdlY2Y3MDk4OWRkOTUwMTZmZWQ2MTI4NzIyMDRmYjI0ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZh
YmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNl
cnZhYmxlLmh0bWwKQEAgLTMsMzIgKzMsNTYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgotLy8gTk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBh
ZGRyZXNzZWQgYnk6Ci0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVj
dG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFy
YW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0
ZXJhdGlvbigpIHsKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJv
dG90eXBlLCBwcm9wZXJ0eSwgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKKyAg
ICB0cnkgewogICAgIGxldCBjYWxsQ291bnQgPSAwOwotCi0gICAgY29uc3Qgb3JpZ2luYWxJdGVy
YXRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCBT
eW1ib2wuaXRlcmF0b3IpOwotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5
cGUsIFN5bWJvbC5pdGVyYXRvciwgeworICAgIAorICAgIGxldCBvcmlnaW5hbFByb3BlcnR5RGVz
Y3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBwcm9w
ZXJ0eSk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHsK
ICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgKytjYWxsQ291bnQ7Ci0gICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWxJdGVyYXRvci52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5h
bFByb3BlcnR5RGVzY3JpcHRvcj8udmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxl
dCBhcnJheSA9IFtdOwotCiAgICAgZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFuIG9iamVj
dC4KICAgICBjb25zb2xlLmxvZyh7YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVzZSBBcnJh
eSBJdGVyYXRvciBhdCBsZWFzdCBvbmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQor
ICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uKCk7CisKKyAgICBpZiAob3JpZ2lu
YWxQcm9wZXJ0eURlc2NyaXB0b3IpCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90
b3R5cGUsIHByb3BlcnR5LCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQor
ICAgICAgICBkZWxldGUgcHJvdG90eXBlW3Byb3BlcnR5XTsKKworICAgIHJldHVybiBjYWxsQ291
bnQ7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0K
K30KKworZnVuY3Rpb24gcmVwbGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VP
dmVycmlkZGVuT2JqZWN0RnVuY3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAK
KyAgICBsZXQgb3JpZ2luYWxPYmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChg
CisgICAgICAgICR7b2JqZWN0U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENv
dW50OworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7Cisg
ICAgICAgIH07CisgICAgYCk7CisKKyAgICBkZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4g
b2JqZWN0LgorICAgIGNvbnNvbGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5h
bEl0ZXJhdG9yKTsKKyAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb24oKTsKIAorICAg
IGV2YWwoYCR7b2JqZWN0U3RyaW5nfSA9IG9yaWdpbmFsT2JqZWN0O2ApOworICAgIGNvbnNvbGUu
bG9nKCJjb3VudCBvZiAiICsgY2FsbENvdW50KTsKICAgICByZXR1cm4gY2FsbENvdW50OwogfQog
CkBAIC0zNiwzMCArNjAsMTQ4IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9
IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZSIpOwogCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9uIGFkZFByb3RvdHlw
ZVByb3BlcnR5VGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5cGVTdHJpbmcsIHBy
b3BlcnR5U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbn0pIHsKKyAgICAg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNlQW5kVGVzdFByb3Rv
dHlwZVByb3BlcnR5KCR7cHJvdG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0cmluZ30sICR7aW52
b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2AsIChlcnJvciwgcmVz
dWx0KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
cmVzdWx0LCAxLCBgJHtwcm90b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJpbmd9XSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2lu
Z2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2Vk
LiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0
Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmplY3RUZXN0Q2FzZSh7
bmFtZSwgZGVzY3JpcHRpb24sIG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1
bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1l
LAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJl
cGxhY2VBbmRUZXN0T2JqZWN0KCIke29iamVjdFN0cmluZ30iLCAke2ludm9rZU92ZXJyaWRkZW5P
YmplY3RGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke29i
amVjdFN0cmluZ30gY2FsbCBjb3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnBhc3MoIlBhdXNlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAgICAgICAgZGVzY3Jp
cHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUg
b2JzZXJ2YWJsZSIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0aW9uKClgLCAoZXJy
b3IsIHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwocmVzdWx0LCAxLCAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3Vu
dCBzaG91bGQgYmUgMS4iKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwotICAgICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4gewotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9CisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkgaXRlcmF0aW9uIGlu
IEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJv
dG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6
ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5j
dGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwgImIiLCAiYyJdOwor
ICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAgICAgICAgIGNvbnNv
bGUubG9nKGFycmF5KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVBy
b3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlNldCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJs
ZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBlIiwKKyAgICAgICAg
cHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBT
ZXQoWyJhIiwgImIiLCAiYyJdKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0K
KworICAgICAgICAgICAgY29uc29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwor
ICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIk1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJNYXAucHJv
dG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAg
ICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAg
ICAgbGV0IG1hcCA9IG5ldyBNYXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0sIFsiYyIsICIzIl1d
KTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2YgbWFwKSB7IH0KKworICAgICAgICAgICAgY29u
c29sZS5sb2cobWFwKTsKKyAgICAgICAgfSwKICAgICB9KTsKIAorICAgIGFkZFByb3RvdHlwZVBy
b3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpBcnJheS5wcm90b3R5cGUucHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkucHVz
aCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IHByb3RvdHlwZVN0cmluZzogIkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3Ry
aW5nOiAiXCJwdXNoXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlv
bjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJh
eS5wdXNoKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3Bl
cnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpT
ZXQucHJvdG90eXBlLmFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBpbiBJbmpl
Y3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlw
ZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiYWRk
XCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4gewor
ICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRkKDQyKTsK
KyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJTdHJpbmcgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJs
ZS4iLAorICAgICAgICBvYmplY3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZva2VPdmVy
cmlkZGVuT2JqZWN0RnVuY3Rpb246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBT
dHJpbmcoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVy
dHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFy
cmF5LnByb3RvdHlwZS5pbmRleCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT3ZlcnJpZGVuIGlu
ZGV4ZXMgaW4gQXJyYXkgcHJvdG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJl
IG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBl
IiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAgICBpbnZva2VPdmVy
cmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0g
W107CisgICAgICAgICAgICBhcnJheS5wdXNoKCJoZWxsbyIpOworICAgICAgICAgICAgY29uc29s
ZS5sb2coYXJyYXkpOworICAgICAgICAgICAgYXJyYXlbNDJdOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJv
cGVydHkiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVjdHVyaW5nIChmb3Ig
YG9wdGlvbnNgIHBhcmFtZXRlcnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9i
c2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0LnByb3RvdHlwZSIs
CisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAorICAgICAgICBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHgg
PSB7fS5mZXRjaFN0YXJ0OworICAgICAgICB9LAorICAgIH0pOworCisKKwogICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJj
ZSBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgorPHA+VGVz
dCB0aGF0IEluamVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1
c2VyIGNvZGUuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0Cmlu
ZGV4IGQ0NDIxN2QzNjJlYTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3
ZTUyYWU5MGMyMzNmMjJiNTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQK
QEAgLTMxLDcgKzMxLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7
IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25h
bWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1
ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29k
ZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dy
YXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBu
dWxsCkBAIC03MCw3ICs3MCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZh
bCgiaWYoKSIpOyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAg
ICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAg
ICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAg
ICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0
aFNjb3BlReKApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBj
b2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsx
MDQsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCIiKS5zcGxpdFRleHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUi
OiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6
ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVl
IjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPi
gKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAg
ICAgICB9LAogICAgICAgewogICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApp
bmRleCBiZmNhYzk4OWVhYzBmYmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li4xMjMzZWIzOTQ4
MTczYjQwNzZkMzMwOWIzMDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDgg
KzY0LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlv
bk5hbWUiOiAiIiwKICAgICAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2Ny
aXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAot
ICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1i
ZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRl
cmVkPiIKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjog
IjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVk
LgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAg
ICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVy
IjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVt
YmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVk
PiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApA
QCAtMTc3LDggKzE3Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJm
dW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlw
dElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJl
ZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQog
ICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJiMzUzMzgwMGNi
ZTI1OWVlODg4N2FiZTE4ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5M2M4ZGFiZTQy
OTU2NDMxZDk1MTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGlu
ZS1jb2x1bW4uaHRtbApAQCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
Ly8gVG8gYXZvaWQgZmxha2luZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2UgYWx3YXlzIGV4
cGVjdC4KICAgICBjb25zdCBldmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5kZXJpbmdGcmFt
ZSIsICJDb25zb2xlUHJvZmlsZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9uQ2FsbCJdKTsK
KworICAgIC8vIFRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJhbWUocykgaGF2
ZSBkaWZmZXJlbnQgbGluZSBudW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRz
LiBXZSBvbmx5CisgICAgLy8gd2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZvciB0aG9zZSBz
cGVjaWZpYyBjYWxsIGZyYW1lcyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGluZS9jb2x1bW4g
bnVtYmVycyByZW1haW4gc3RhYmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5ndGggPSAwOwor
ICAgIGxldCB1cmxMZW5ndGggPSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1
ZSkgeworICAgICAgICBpZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAgICAgICAgICAg
ZnVuY3Rpb25OYW1lTGVuZ3RoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAiY2hpbGRyZW4i
ICYmIHRoaXMuc3RhcnRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihlID0+
IGV2ZW50QWxsb3dsaXN0LmhhcyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9PT0gInN0YXJ0
VGltZSIgfHwga2V5ID09PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8IGtleSA9
PT0gImZyYW1lSWQiKQogICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAg
aWYgKChrZXkgPT09ICJsaW5lTnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1iZXIiKSAmJiAh
ZnVuY3Rpb25OYW1lTGVuZ3RoICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gIjxm
aWx0ZXJlZD4iOworCisgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAgICAgICAgdXJs
TGVuZ3RoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJsIiB8fCBrZXkg
PT09ICJzY3JpcHROYW1lIikKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9eLitM
YXlvdXRUZXN0c1wvaW5zcGVjdG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGlu
ZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYzk2MmQ2ODEwMWNmNDcz
MTVkNWUwMWRjM2YwZDNmZTM1OWQ2MjU0Ny4uNTZkMTg0MDhiZGRlOWE3YjA3MDIzOTZiOTRmOTc5
NzZjZjNiZGFlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAg
LTYwLDggKzYwLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0
aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQi
OiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAgICAgICAg
ImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAg
ICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCArMTEzLDggQEAg
UEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAg
ICAidXJsIjogIiIsCiAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAibGlu
ZU51bWJlciI6IDE0MSwKLSAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgImxpbmVOdW1i
ZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAg
ICAgfQogICBdLAogICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4ICsxNjUsOCBA
QCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAg
ICAgICJ1cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJs
aW5lTnVtYmVyIjogMTQxLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51
bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIK
ICAgICB9CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>
<flag name="commit-queue"
          id="487800"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458840</attachid>
            <date>2022-05-04 18:51:54 -0700</date>
            <delta_ts>2022-05-05 09:02:31 -0700</delta_ts>
            <desc>Patch v1.8.2 - For Windows EWS</desc>
            <filename>bug-152294-20220504185153.patch</filename>
            <type>text/plain</type>
            <size>156830</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDM5MTg2YjI1NmZmNjlmZmE3MWMzZGMxNTVmNzRhNzg2MTAyMTRhLi43YTkzZWNhZTlmNzUyZTQ2
NTAwYTc5YWNlNzc2YTBkMDQyODYyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBqc21pbiB0byAzLjAuMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGY5ZDlhYWU2YmEyOTM0OGRmOGViZWVhZWQwNzUzZDE0MDg0OTZkM2MuLjMz
Y2RkNzRlY2MyMjIzNzlhN2FlNjc0N2E0MjQ0Zjk0NWNhMjk3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMi0wNS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
LSBCdWlsZCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBhcyBhIGJ1aWx0aW4sIG5vdCBh
cyBhIHBsYWluIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgaXRzIHNvdXJjZSBjb2RlLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RNb2R1bGVGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDoKKyAgICAg
ICAgLSBQcm92aWRlIGEgSlNGdW5jdGlvbiBmb3IgbW9kdWxlIGluamVjdGlvbiBpbnN0ZWFkIG9m
IHJhdyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qczoKKyAgICAgICAgLSBTaW1pbGFyIHRvIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcywgdXNlIHByaXZhdGUgbmFtZXMgZm9yIHByb3Bl
cnRpZXMgYW5kIGZ1bmN0aW9ucworICAgICAgICB0aHJvdWdob3V0IHRvIGdldCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0aW5zLgorICAgICAgICAtIEluIGBub3JtYWxpemVFdmVudFR5cGVzYCB1
c2UgYSBTZXQgaW5zdGVhZCBvZiBhbiBhcnJheSwgc2luY2Ugd2UgYXJlIHByb2Nlc3NpbmcgdXNl
ci1wcm92aWRlZCB0eXBlcyB0aGF0IG1heQorICAgICAgICBiZSByZXBlYXRlZC4gVGhpcyBtZWFu
cyB0aGF0IHdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgdG8gaW5zZXJ0IHRo
ZW0gaW4gdGhlIHNldCwgYnV0IHNpbmNlCisgICAgICAgIGBAYXJyYXlQdXNoYCBkb2Vzbid0IHN1
cHBvcnQgcHVzaGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgdGhlIHNhbWUgdGltZSB0aGlzIGlzIG5v
IG1vcmUgd29yayB0aGFuIHVzaW5nIGFuIEFycmF5LgorCiAyMDIyLTA1LTA0ICBaaXJhbiBTdW4g
IDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0lucHV0RWxlbWVudF0gU2VsZWN0aW9uIGFm
dGVyIHR5cGUgY2hhbmdlIG5lZWRzIHRvIGZvbGxvdyBIVE1MIHNwZWNpZmljYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdiMWE3NjRiMTc2NmI1YmFjMTA1MjZl
YWI4NmQyNDFjNTFhZDg5Li5lNmVkN2VkNDA2MzdiYTUyZjEyNTIwODdjYmY5NmEyODhmNWI0Y2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNjQsNiArMzY0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvV2ViQXNzZW1ibHkuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCiApCiAKIGFkZF9jdXN0b21f
Y29tbWFuZCgKQEAgLTE0MDUsMTcgKzE0MDYsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9KU0NC
dWlsdGlucy5oCiApCiAKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQot
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4gJHtKYXZhU2NyaXB0Q29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pz
bWluLnB5IDwgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcyA+PiAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVk
U2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAk
e0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgKLSAgICBWRVJCQVRJTSkKLQotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2Ny
aXB0U291cmNlLmgpCi0KIGlmIChXVEZfQ1BVX1g4Nl82NCkKICAgICBpZiAoTVNWQyBBTkQgTk9U
IEVOQUJMRV9DX0xPT1ApCiAgICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCA4ZDU0MGJkNTE5MjE3YjU1MmJmMDYwOThjOWRkYzJhMjc0ZjMzNDBiLi5mN2IzZGI3YjYx
ZDMwNjA3ZThhNmZiNTE0M2E0YzI0ZWFkMjI4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yMSw3ICsy
MSw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9HZW5lcmF0ZWRXYXNtT3BzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRCeXRlY29kZXMuYXNt
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5p
dFdhc20uYXNtCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENv
bGxhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjY3ZjJjNjg1NGY4
YTFiYTEzYzA5NWY3ZTE1NGY2OGU5N2NiZjM5MS4uMWZiNjIzY2Q2ZjZlOGQ4OTg3Zjk0ODA0NTQ0
ZjBkNDRlNWIzNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTY4LDcgKzY4LDYgQEAgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFT
Y3JpcHRDb3JlKS9TY3JpcHRzCiAKIC5QSE9OWSA6IGFsbAogYWxsIDogXAotICAgIEluamVjdGVk
U2NyaXB0U291cmNlLmggXAogICAgIExleGVyLmx1dC5oIFwKICAgICBLZXl3b3JkTG9va3VwLmgg
XAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvV2ViQXNzZW1ibHkuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBcCiAjCiAKICMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRl
cGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywg
c28KQEAgLTM2OCwxMiArMzY4LDYgQEAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyA6IENvbWJpbmVkRG9tYWlucy5qc29uICQoSU5TUEVDVE9SX0dFTkVSQVQKIAkkKFBFUkwp
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vcHJlcHJvY2Vzcy5w
bCAtLWlucHV0IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4gLS1kZWZp
bmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpIiAtLW91dHB1dCBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAJJChERUxFVEUpIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMuaW4KIAotSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9qc21pbi5weSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwKLQllY2hvICIv
LyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMiID4g
Li9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgPj4gLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQkk
KFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBJbmplY3RlZFNjcmlw
dFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oCi0JJChERUxFVEUpIEluamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCiBBSVJfT1BD
T0RFX0ZJTEVTID0gXAogICAgIEFpck9wY29kZS5oIFwKICAgICBBaXJPcGNvZGVVdGlscy5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjJkMDkxMzIwZDE2ZTdjOTFkMDM2OGE4
YjIzMGY1OTI3MWNmZmQxNy4uMjRkNGJlODZiOWMxNWZkYzZkMjdkNzNiYTkwZWZhODk5MDM0ZDJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDUsNyArMTQ0NSw2IEBACiAJ
CUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0Mw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJ
bmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oICovOyB9OwogCQlBNTEzRTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5oICovOyB9OwotCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICov
OyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVD
OTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVBNjg0NDAw
RjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NUZGM0Qy
MTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NTEsNiArMzc1MCw3IEBACiAJ
CTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW51bWVyYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBREZBMjYyMThFRjM1NDAwMDRG
OUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUYwMEQy
ODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtVHlwZURlZmlu
aXRpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UeXBl
RGVmaW5pdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE3NzBD
NEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwNyw3ICs0NzA3LDYgQEAKIAkJ
QTUxM0U1QkMxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1
QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUMzMTg1RjkyQzkwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
amVjdGVkU2NyaXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5q
ZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkU2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
Mjg0LDcgKzcyODMsNiBAQAogCQkJCTk5NkI3MzA5MUJEOUZBMkMwMDMzMUI4NCAvKiBFcnJvclBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQk3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJh
dG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCTY1MTRGMjE4MThCM0UxNjcwMDk4RkY4QiAvKiBJ
bml0Qnl0ZWNvZGVzLmFzbSAqLywKLQkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CkBAIC05MzYzLDYgKzkzNjEsNyBAQAogCQkJCTg0OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk1MzREOUJGODIzNjNDNTVE
MDA1NDUyNEQgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNzAzNTU4N0QxQzQx
ODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLywKKwkJCQkyRTNBRjAwRDI4MTcxQUMw
MDAzNzFBMjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNjAxQjY1
RDlCMTAwOURCMUVGIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzYxMUI2
NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQlBMUUw
NDUxQjFDMjVCNEIxMDBCQjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovLApAQCAtMTA0NTIs
NyArMTA0NTEsNiBAQAogCQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTIxMTg3
QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1t
aW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1
QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDhBN0JGMDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyMzgwLDcgKzEyMzc4LDYgQEAKIAkJCQk1MzZCMzE3QTFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTEwNy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEyNzFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MzZCMzEyQzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlFMzExMzVDQTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJC
YXNlLmMgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTExMC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE3NzFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE4
MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEyNDA5LDcgKzEyNDA2LDYgQEAKIAkJCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTEzNS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzVDMjQ2QzFGN0ExNzc4
MDA2RUM0MEUgLyogVW5pZmllZFNvdXJjZTEzNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBB
NjZCQzFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzNy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlFMzExMzVDQjI4MUI1QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJJbnRlbC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxMzguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UxMzkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkYxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MjQyMCw3ICsxMjQxNiw2IEBACiAJCQkJNTMwQTY2QzQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjIyNjhGQkM3QjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUUy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRTMxMTM1QzkyODFCNUIwMDAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291
cmNlcyAqLywKIAkJCQk1MzhGMTVFNzI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0
OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVGMDI2OEZCQkI2MDBENjAxQzQgLyogVW5p
ZmllZFNvdXJjZTE0OS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFQjI2OEZCQkI2MDBE
NjAxQzQgLyogVW5pZmllZFNvdXJjZTE1MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDMwLDYg
KzEyNDI1LDkgQEAKIAkJCQk1MzhGMTVFQTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFRjI2OEZCQkI2MDBENjAxQzQgLyog
VW5pZmllZFNvdXJjZTE1NS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjVDOUNERjIyMDI4NTgz
MDA4MkRCRkQgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MTEzNUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5j
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9y
bWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKaW5kZXggNjVk
YzE1Y2NhZGY1ZjAwYTZmMmY0OTAxMDczMDE5NzlhODZkMTY4Ny4uMzg3NGRkNDJmMjc2MGYzNGU4
NmQ4ZGM4MTg2MWE1MmVjODhmZTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC01Miw2ICs1
Miw3IEBAIGZ1bmN0aW9uSXNBc3luY1JlZ0V4cCA9IHJlLmNvbXBpbGUociIoYXN5bmMpP1xzKmZ1
bmN0aW9uIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UCiBmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5j
b21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxM
KQogZnVuY3Rpb25PdmVycmlkZGVuTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIuKl5Ab3ZlcnJp
ZGRlbk5hbWU9KFwiLitcIikkIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmFzeW5jXHMrKT9mdW5jdGlvblxzKyg/
Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxU
SUxJTkUgfCByZS5ET1RBTEwpCitmdW5jdGlvblBhcmFtZXRlcnNTcGxpdHRlciA9IHJlLmNvbXBp
bGUociIsXHMqKD8hW157fV0qXH0pIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQogCiBtdWx0
aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElM
SU5FIHwgcmUuRE9UQUxMKQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQpAQCAtMTQ1LDcgKzE0Niw3IEBA
IGNsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKICAgICAgICAgaXNfbmFrZWRfY29uc3RydWN0b3IgPSBm
dW5jdGlvbk5ha2VkQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBO
b25lCiAgICAgICAgIGlmIGlzX25ha2VkX2NvbnN0cnVjdG9yOgogICAgICAgICAgICAgaXNfY29u
c3RydWN0b3IgPSBUcnVlCi0gICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGlu
IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxp
dCgnLCcpXQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlcnNTcGxpdHRlci5zcGxpdChmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxs
KGZ1bmN0aW9uX3NvdXJjZSlbMF0pXQogICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0g
MDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQogCkBAIC0zMDMsMjEgKzMwNCw1NSBAQCBj
bGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KICAg
ICAgICAgc3RhcnQgPSAwCiAgICAgICAgIGVuZCA9IDAKKwogICAgICAgICBmb3IgbWF0Y2ggaW4g
bWF0Y2hlczoKICAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQogICAgICAgICAgICAg
aWYgc3RhcnQgPCBlbmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVu
ZCA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQogICAg
ICAgICAgICAgZGVwdGggPSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAg
ICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFsc2UKKyAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdT
dGFydENoYXJhY3RlciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAg
ICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgICAgICBkZXB0
aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKLSAg
ICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q2hhcmFjdGVyID0gdGV4dFtlbmRdCisKKyAgICAgICAgICAgICAgICBpZiBpc0VzY2FwaW5n
Q2hhcmFjdGVyOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVyID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRDaGFyYWN0ZXIgaW4gImAnXCIiOgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAg
ICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09IGN1cnJlbnRTdHJpbmdTdGFydENoYXJh
Y3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3Rl
ciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAg
IGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyBhbmQgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFj
dGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpc0VzY2FwaW5nQ2hhcmFjdGVy
ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAg
IyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk4MTc+IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY29udGFp
bmluZyB1bmJhbGFuY2VkIHF1b3RhdGlvbiBtYXJrcyAobGlrZSB0aGUgb25lCisgICAgICAgICAg
ICAgICAgIyBmb3VuZCBpbiBgU3RyaW5nUHJvdG90eXBlLmpzYCdzIGBjcmVhdGVIVE1MYCkgY2Fu
IGNvbmZ1c2UgdGhlIHN0YXRlIG9mIHRyYWNraW5nIG91ciBiZWluZworICAgICAgICAgICAgICAg
ICMgaW5zaWRlL291dHNpZGUgYSBzdHJpbmcuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIGp1c3QgcmVz
ZXQgb3VyIHN0cmluZyBzdGF0ZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZQorICAgICAgICAgICAg
ICAgICMgKHVubGVzcyB3ZSBhcmUgaW5zaWRlIGEgdGVtcGxhdGUgc3RyaW5nKS4gVGhpcyB3aWxs
IHdvcmsgdW5sZXNzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zCisgICAgICAgICAgICAg
ICAgIyB1bmJhbGFuY2VkIGN1cmx5IGJyYWNrZXRzIG9yIGEgY2xvc2luZyBjdXJseSBicmFja2V0
IHdlIGNhcmUgYWJvdXQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgZWFybGllcgorICAgICAg
ICAgICAgICAgICMgcmVndWxhciBleHByZXNzaW9uIHdpdGggYW4gdW5iYWxhbmNlZCBxdW90ZS4K
KyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcbicgYW5kIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciAhPSAnYCc6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
dHJpbmdTdGFydENoYXJhY3RlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlm
IGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCArPSAx
CisgICAgICAgICAgICAgICAgZWxpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd9JzoKKyAgICAgICAg
ICAgICAgICAgICAgZGVwdGggLT0gMQorCisgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICAg
ICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKIAogICAgICAgICBmdW5jdGlv
blN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBm
dW5jdGlvbkJvdW5kc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODg4YzhiYWU0MzVmODg2M2Y0ODBkZDgxZTQ1
NTY2ZDc4YjYxZWZhNy4uNzA5OTI2YWU3Mzg2OTA3ZGJkNDliMWQwZjVkNTM2MTVmMzRlODVlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IHBhcmFtZXRlcnNTdGFydCArIDE7CiAgICAgICAg
IHVuc2lnbmVkIGNvbW1hcyA9IDA7CisgICAgICAgIGJvb2wgaW5zaWRlQ3VybHlCcmFja2V0cyA9
IGZhbHNlOwogICAgICAgICBib29sIHNhd09uZVBhcmFtID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
aGFzUmVzdFBhcmFtID0gZmFsc2U7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xMTMsNyAr
MTE0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnKScpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlm
IChjaGFyYWN0ZXJzW2ldID09ICcsJykKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID09
ICd9JykKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFsc2U7CisgICAg
ICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICd7JyB8fCBpbnNpZGVDdXJseUJyYWNr
ZXRzKSB7CisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjaGFyYWN0ZXJzW2ldID09ICcsJykKICAgICAgICAgICAgICAgICArK2NvbW1h
czsKICAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFy
YWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTQ4M2U4NzFl
NzQzYTlhMTJiMmNlMzBkZGZjMmEwMGM1MmFlYmM1ZC4uYzA0N2ZjNjk3MTQ5NjA4NWI1OTcwYzJi
ZmViOTU2YzgwNWI5NDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMTkyLDYgKzE5MiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhjcmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24p
IFwKICAgICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNy
byhzdWJzdHIpIFwKKyAgICBtYWNybyhlbmRzV2l0aCkgXAorICAgIG1hY3JvKGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKKyAgICBt
YWNybyhnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIFwKKyAgICBtYWNybyhoYXNPd24pIFwKKyAgICBt
YWNybyhpbmRleE9mKSBcCisgICAgbWFjcm8ocG9wKSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVs
cGVycy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMu
anMKaW5kZXggMjYzZTQzYmZjMGU4MzExNjA1MDJhOTg1ZTI0MWFlMDdjNzdlZTJmNC4uYjE5ODZl
ODg1MzBjZWM2NjJjMTlmZmVhZTc1YTM0Yjc1ZTg2ZmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCkBAIC01MSwzICs1MSw0MyBA
QCBmdW5jdGlvbiBwZXJmb3JtSXRlcmF0aW9uKGl0ZXJhYmxlKQogICAgICAgICBAcHV0QnlWYWxE
aXJlY3QocmVzdWx0LCBpbmRleCsrLCBpdGVtLnZhbHVlKTsKICAgICB9CiB9CisKK0BnbG9iYWxQ
cml2YXRlCitmdW5jdGlvbiB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3IpCit7CisgICAgbGV0IHdy
YXBwZXIgPSBAT2JqZWN0LkBjcmVhdGUobnVsbCk7CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpdGVyYXRvcjsgfQorICAgIHJldHVybiB3cmFwcGVyOworfQor
CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gYnVpbHRpblNldEl0ZXJhYmxlKHNldCkKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisgICAgCisgICAgaWYgKCFAaXNTZXQoc2V0KSkKKyAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJidWlsdGluU2V0SXRlcmFibGUgY2FsbGVkIHdpdGggbm9uLVNldCBvYmpl
Y3QuIik7CisKKyAgICAvLyBVc2luZyB0aGUgcHJpdmF0ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFu
dGVlcyB0aGF0IHRoZSBzeW1ib2wgaXRzZWxmIGhhcyBub3QgYmVlbiBtb2RpZmllZCwgYnV0IGRv
ZXMgbm90IHByb3RlY3QKKyAgICAvLyBhZ2FpbnN0IHRoZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5n
IGJlZW4gcmVwbGFjZWQuIEZvciBTZXRzLCBgQHZhbHVlc2AgaGFzIGEgY29weSBvZiB0aGUgZnVu
Y3Rpb24gb3JpZ2luYWxseQorICAgIC8vIHBsYWNlZCBhdCBgU3ltYm9sLml0ZXJhdG9yYC4KKyAg
ICBsZXQgaXRlcmF0b3JGdW5jdGlvbiA9IHNldC5AdmFsdWVzOworICAgIAorICAgIHJldHVybiBA
d3JhcHBlZEl0ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoc2V0KSk7Cit9CisKK0BnbG9i
YWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGluTWFwSXRlcmFibGUobWFwKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICAKKyAgICBpZiAoIUBpc01hcChtYXApKQorICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoImJ1aWx0aW5NYXBJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tTWFwIG9iamVjdC4iKTsK
KworICAgIC8vIFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRo
YXQgdGhlIHN5bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3Qg
cHJvdGVjdAorICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiBy
ZXBsYWNlZC4gRm9yIE1hcHMsIGBAZW50cmllc2AgaGFzIGEgY29weSBvZiB0aGUgZnVuY3Rpb24g
b3JpZ2luYWxseQorICAgIC8vIHBsYWNlZCBhdCBgU3ltYm9sLml0ZXJhdG9yYC4KKyAgICBsZXQg
aXRlcmF0b3JGdW5jdGlvbiA9IG1hcC5AZW50cmllczsKKworICAgIHJldHVybiBAd3JhcHBlZEl0
ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwobWFwKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4
NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi5kNWVjZGM4ODUyZjMzYjAyMTQ4NmIxNWU5
MmUzM2VmMjIwMGNhMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw4ICsxMjAsMTIgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiAgICAgdihjcmVhdGVSZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaXNS
ZW1vdGVGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoYXJyYXlTb3J0LCBudWxscHRyKSBcCisg
ICAgdihTdHJpbmcsIG51bGxwdHIpIFwKIAogCisvLyAgICB2KGpzb25QYXJzZSwgbnVsbHB0cikK
Ky8vICAgIHYoanNvblN0cmluZ2lmeSwgbnVsbHB0cikKKwogI2RlZmluZSBERUNMQVJFX0xJTktf
VElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLAogZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0
YW50IDogaW50MzJfdCB7CiAgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhERUNM
QVJFX0xJTktfVElNRV9DT05TVEFOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBjYjA2MzQwMmJm
MTIyZWFlMTY5OGViYTJhN2JiN2Y0ZDc2ZWY5NzcwLi4yMmQxYmNlN2VhYjBmYWYxNTRlMDg3NWI3
YzBjNzZkY2RiZDFjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAK
KyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0xMzUsMjUgKzEzNSwxOCBAQCB2b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiAgICAgICAgIGluamVjdGVk
U2NyaXB0LmNsZWFyRXhjZXB0aW9uVmFsdWUoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkU2NyaXB0
TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewotICAgIHJldHVybiBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhJbmplY3RlZFNjcmlwdFNvdXJjZV9qcywgc2l6ZW9mKElu
amVjdGVkU2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLUV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQ
dHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50
IGlkKQorRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGludCBpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNl
LCB7IH0pOwogICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxUaGlzKCk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247
Ci0gICAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJv
bm1lbnQuZXZhbHVhdGVIYW5kbGVyKCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZh
bHVhdGVIYW5kbGVyKGdsb2JhbE9iamVjdCwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlLCBl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKLSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8q
IGZ1bmN0aW9uVmFsdWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdsb2JhbE9iamVjdC0+bGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlw
dCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3Bl
LmV4Y2VwdGlvbigpKSk7CisgICAgaWYgKCFmdW5jdGlvblZhbHVlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9u
VmFsdWUpOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQpA
QCAtMTY2LDcgKzE1OSw3IEBAIEV4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9u
Pj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjCiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChn
bG9iYWxPYmplY3QsIGZ1bmN0aW9uVmFsdWUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFy
Z3MpOwotICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICByZXR1cm4g
cmVzdWx0LmdldE9iamVjdCgpOwogfQogCkBAIC0xODMsNyArMTc2LDcgQEAgSW5qZWN0ZWRTY3Jp
cHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQg
aWQgPSBpbmplY3RlZFNjcmlwdElkRm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBjcmVhdGVS
ZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBnbG9i
YWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KGdsb2JhbE9iamVjdCwgaWQpOwogICAgIGlmICghY3JlYXRlUmVzdWx0KSB7CiAgICAgICAg
IGF1dG8mIGVycm9yID0gY3JlYXRlUmVzdWx0LmVycm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJv
cik7CkBAIC0xOTcsMTIgKzE5MCwxMCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5l
QW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hl
biBjcmVhdGluZyBpbmplY3RlZCBzY3JpcHQ6ICVzICglZDolZClcbiIsIGVycm9yLT52YWx1ZSgp
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQudmFsdWUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMo
Ik1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IG9iamVjdCIpOwotICAgICAgICBXVEZMb2dBbHdheXMo
IiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXgg
MWY3NDBjNDA2ODQ1MzY2YTc1OWJhMGFmNGM4YzMyNzc3NDk1NDhlYS4uYjU0MTAxMmVmNGJiNGJm
MjJlN2FlMzgyYmZmMTU5ODVhYzk5YTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC03NSw4ICs3NSw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPEpTQzo6SlNHbG9iYWxPYmplY3QqLCBpbnQ+IG1f
c2NyaXB0U3RhdGVUb0lkOwogCiBwcml2YXRlOgotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNv
dXJjZSgpOwotICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgaW50IGlkKTsKKyAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgaW50IGlkKTsKIAogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25t
ZW50OwogICAgIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2Yjg5NzQxMmY0OGZkNWU5
YTExLi4wYjY3NWU4NDQ2NjkwNjAyMTIzODdmZGI0YmFkNWQwYTY1NzhmODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmNwcApAQCAtNzQsMTMgKzc0LDEyIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVu
c3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAg
ICAgIGlmIChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxp
bmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3
aGVuIGNhbGxpbmcgJ2hhc0luamVjdGVkTW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwg
bmFtZSgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpKS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmpl
Y3RlZE1vZHVsZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVs
ZVJlc3VsdC52YWx1ZSgpLmFzQm9vbGVhbigpKSB7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAiaW5qZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVu
dmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQobmFtZSgpKTsKLSAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291
cmNlKCkpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUoaW5q
ZWN0TW9kdWxlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAg
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBp
bmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpOwogICAgICAgICBhdXRvIGluamVjdE1vZHVs
ZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5j
dGlvbik7CiAgICAgICAgIGlmICghaW5qZWN0TW9kdWxlUmVzdWx0KSB7CkBAIC05Miw3ICs5MSw2
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgp
ID4gMCkKICAgICAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVtbihsaW5l
LCBjb2x1bW4pOwogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNhbGxpbmcg
J2luamVjdE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0
YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmpl
Y3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRl
eCAyNzliYWU0ZWJhZTRjMTg1NDQ4YzY5N2U5YTAzYmVkYjVlYWY4NThiLi5hNGJlZDk2OTJiNzQ1
NmEwMDVkNzZkZjRmZTQ4NTE2MWY5NWU0ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluamVjdGVkU2NyaXB0TW9kdWxlIDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJs
aWM6CiAgICAgfkluamVjdGVkU2NyaXB0TW9kdWxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBT
dHJpbmcgc291cmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSlNDOjpKU0Z1bmN0aW9uKiBp
bmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5k
ZXggNDhiYWVkNmExYjdmZmFkNDUzMzc5YTJmMWViNzFiOGM0OTI1ZjZjNC4uNTg1NjMxMzgyYzky
ZjQ5MjEwZjg2OTQ1MGVkMDYwMDg4ZmI5ZmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE3ICsyNywzOCBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKC8qIGtleTEsIHZhbHVlMSwga2V5MiwgdmFsdWUyLCAuLi4gKi8p
Cit7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJSAyICE9PSAwKQorICAgICAgICBAdGhyb3dS
YW5nZUVycm9yKCJgY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZWAgcmVxdWlyZXMgdGhhdCBl
YWNoIGtleSBhcmd1bWVudCBiZSBmb2xsb3dlZCBieSBhIHZhbHVlLCByZXN1bHRpbmcgaW4gYW4g
ZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpOworCisgICAgbGV0IG9iamVjdCA9IEBPYmplY3Qu
QGNyZWF0ZShudWxsKQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSArPSAyKQorICAgICAgICBvYmplY3RbYXJndW1lbnRzW2ldXSA9IGFyZ3VtZW50c1tpICsgMV07
CiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qs
IGluamVjdGVkU2NyaXB0SWQpIHsKKyAgICByZXR1cm4gb2JqZWN0OworfQogCi0vLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0
ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1v
dmVycmlkZGVuIGJ1aWx0LWlucworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5
V2l0aG91dFByb3RvdHlwZSgvKiB2YWx1ZTEsIHZhbHVlMiwgLi4uICovKQoreworICAgIGxldCBh
cnJheSA9IG5ldyBAQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7CisgICAgYXJyYXkuX19wcm90b19f
ID0gbnVsbDsKKyAgICAKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7
ICsraSkKKyAgICAgICAgQGFycmF5UHVzaChhcnJheSwgYXJndW1lbnRzW2ldKTsKKyAgICAKKyAg
ICByZXR1cm4gYXJyYXk7Cit9CiAKLXZhciBPYmplY3QgPSB7fS5jb25zdHJ1Y3RvcjsKK0BnbG9i
YWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVJbnNwZWN0b3JJbmplY3RlZFNjcmlwdChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkKK3sK
IAogZnVuY3Rpb24gdG9TdHJpbmcob2JqKQogewotICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAg
ICByZXR1cm4gQFN0cmluZyhvYmopOwogfQogCiBmdW5jdGlvbiB0b1N0cmluZ0Rlc2NyaXB0aW9u
KG9iaikKQEAgLTkzLDYgKzExNCwxNSBAQCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQorICAgIAorZnVuY3Rpb24gY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHNPYmplY3QpIHsK
KyAgICBsZXQgaXRlcmF0b3JGdW5jdGlvbiA9IGFyZ3VtZW50c09iamVjdC5AQGl0ZXJhdG9yOwor
ICAgIHJldHVybiBAd3JhcHBlZEl0ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoYXJndW1l
bnRzT2JqZWN0KSk7Cit9CisKK2Z1bmN0aW9uIG1heChhLCBiKSB7CisgICAgcmV0dXJuIGEgPiBi
ID8gYSA6IGI7Cit9CiAKIC8vIC0tLS0tLS0KIApAQCAtMTAxLDEyICsxMzEsMTIgQEAgbGV0IElu
amVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICBjb25zdHJ1Y3RvcigpCiAg
ICAgewogICAgICAgICB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCA9IDE7Ci0gICAgICAgIHRoaXMu
X2lkVG9XcmFwcGVkT2JqZWN0ID0ge307Ci0gICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5h
bWUgPSB7fTsKLSAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307Ci0gICAgICAgIHRoaXMu
X21vZHVsZXMgPSB7fTsKKyAgICAgICAgdGhpcy5faWRUb1dyYXBwZWRPYmplY3QgPSBAY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOworICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBO
YW1lID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5fb2Jq
ZWN0R3JvdXBzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhp
cy5fbW9kdWxlcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRo
aXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRz
ID0gW107CisgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUoKTsKICAgICB9CiAKICAgICAvLyBJbmplY3RlZFNjcmlwdCBDKysgQVBJCkBAIC0x
MTUsNyArMTQ1LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cmFwQW5kU2F2ZUNhbGwob2JqZWN0R3JvdXAs
IHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgKCkgPT4gewogICAg
ICAgICAgICAgY29uc3QgaXNFdmFsT25DYWxsRnJhbWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0cmluZywgaXNFdmFsT25D
YWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZU9uKEluamVjdGVkU2NyaXB0SG9zdC5l
dmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jdGlvblN0
cmluZywgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSkuQGFwcGx5KEB1
bmRlZmluZWQsIGFyZ3MpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTEzNiwxNiArMTY2LDE2
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3Rh
bmNlb2YgUHJvbWlzZSkpIHsKKyAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9m
IEBQcm9taXNlKSkgewogICAgICAgICAgICAgY2FsbGJhY2soIk9iamVjdCB3aXRoIGdpdmVuIGlk
IGlzIG5vdCBhIFByb21pc2UiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGxldCByZXNvbHZlID0gKHZhbHVlKSA9PiB7Ci0gICAgICAgICAgICBsZXQgcmV0dXJu
T2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAg
ICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3Jv
dXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAotICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3Rv
dHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAg
ICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91
cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwog
CiAgICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3Nh
dmVkUmVzdWx0SW5kZXggPSAwOwpAQCAtMTU5LDcgKzE4OSw3IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCByZWplY3QgPSAocmVhc29uKSA9
PiB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShyZWFzb24s
IHByb21pc2VPYmplY3RHcm91cE5hbWUpKTsKICAgICAgICAgfTsKLSAgICAgICAgcHJvbWlzZU9i
amVjdC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgIHByb21pc2VPYmplY3QuQHRoZW4o
cmVzb2x2ZSwgcmVqZWN0KTsKICAgICB9CiAKICAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lKHRvcENh
bGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkK
QEAgLTE4MCwxNCArMjEwLDE0IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmICghaXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKIAotICAgICAgICBsZXQg
cmVzb2x2ZWRBcmdzID0gW107CisgICAgICAgIGxldCByZXNvbHZlZEFyZ3MgPSBAY3JlYXRlQXJy
YXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGlmIChhcmdzKSB7CiAgICAgICAgICAgICBs
ZXQgY2FsbEFyZ3MgPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoYXJncyk7CiAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxBcmdzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzW2ldID0gdGhp
cy5fcmVzb2x2ZUNhbGxBcmd1bWVudChjYWxsQXJnc1tpXSk7CiAgICAgICAgICAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE5NywxMCArMjI3LDEwIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMg
IT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJHaXZlbiBleHByZXNzaW9u
IGRvZXMgbm90IGV2YWx1YXRlIHRvIGEgZnVuY3Rpb24iOwogCi0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVz
dWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuYXBwbHkob2JqZWN0LCByZXNvbHZlZEFyZ3Mp
LCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKLSAgICAg
ICAgICAgIH07CisgICAgICAgICAgICByZXR1cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAg
ICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMuQGFwcGx5KG9iamVjdCwgcmVzb2x2
ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcp
LAorICAgICAgICAgICAgKTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2NyZWF0ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwTmFtZSk7CiAgICAgICAg
IH0KQEAgLTIzMywxMyArMjYzLDIyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgb3duUHJvcGVydGllcywgZmV0
Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgbGV0
IGNvbGxlY3Rpb25Nb2RlID0gb3duUHJvcGVydGllcyA/IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rp
b25Nb2RlLk93blByb3BlcnRpZXMgOiBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5BbGxQ
cm9wZXJ0aWVzOwotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwg
Y29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXd9
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJmZXRj
aFN0YXJ0IiwgZmV0Y2hTdGFydCwKKyAgICAgICAgICAgICJmZXRjaENvdW50IiwgZmV0Y2hDb3Vu
dCwKKyAgICAgICAgICAgICJnZW5lcmF0ZVByZXZpZXciLCBnZW5lcmF0ZVByZXZpZXcsCisgICAg
ICAgICkpOwogICAgIH0KIAogICAgIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhvYmplY3RJZCwg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAg
bGV0IGNvbGxlY3Rpb25Nb2RlID0gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuT3duUHJv
cGVydGllcyB8IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk5hdGl2ZUdldHRlclByb3Bl
cnRpZXM7Ci0gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xs
ZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldywgbmF0
aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlfSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9w
ZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAiZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAg
ICAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQsCisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3
IiwgZ2VuZXJhdGVQcmV2aWV3LAorICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIs
IHRydWUsCisgICAgICAgICkpOwogICAgIH0KIAogICAgIGdldEludGVybmFsUHJvcGVydGllcyhv
YmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3KQpAQCAtMjU2LDcgKzI5NSw3IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGRlc2NyaXB0b3Jz
ID0gdGhpcy5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CiAgICAgICAgIGlm
ICghZGVzY3JpcHRvcnMpCi0gICAgICAgICAgICByZXR1cm4gW107CisgICAgICAgICAgICByZXR1
cm4gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgZGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBkZXNj
cmlwdG9yID0gZGVzY3JpcHRvcnNbaV07CkBAIC0yODAsMTIgKzMxOSwxMyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGxldCBlbnRyaWVzID0gdGhpcy5fZW50cmllcyhvYmplY3QsIEluamVjdGVkU2NyaXB0
SG9zdC5zdWJ0eXBlKG9iamVjdCksIGZldGNoU3RhcnQsIGZldGNoQ291bnQpOwotICAgICAgICBy
ZXR1cm4gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgZW50cnkgPSBl
bnRyaWVzW2ldOwogICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRl
KGVudHJ5LnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAg
IGlmICgia2V5IiBpbiBlbnRyeSkKICAgICAgICAgICAgICAgICBlbnRyeS5rZXkgPSBSZW1vdGVP
YmplY3QuY3JlYXRlKGVudHJ5LmtleSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgICAgIH0pOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBlbnRyaWVzOwogICAgIH0KIAogICAgIHNhdmVSZXN1bHQoY2FsbEFyZ3VtZW50SlNP
TikKQEAgLTMwNiwxMCArMzQ2LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgbGV0IGRlcHRoID0gMDsKICAg
ICAgICAgZG8gewotICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IEluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFtZSkpOworICAgICAgICAgICAgQGFycmF5UHVz
aChyZXN1bHQsIG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxs
RnJhbWUpKTsKICAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAg
ICAgIH0gd2hpbGUgKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNDMs
MTIgKzM4MywxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
CiAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBlb2YgY29s
dW1ucyA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICBjb2x1bW5zID0gW2NvbHVtbnNdOworICAg
ICAgICAgICAgY29sdW1ucyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoY29sdW1ucyk7
CiAKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKGNvbHVtbnMpID09PSAi
YXJyYXkiKSB7Ci0gICAgICAgICAgICBjb2x1bW5OYW1lcyA9IFtdOworICAgICAgICAgICAgY29s
dW1uTmFtZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAg
Y29sdW1uTmFtZXMucHVzaCh0b1N0cmluZyhjb2x1bW5zW2ldKSk7CisgICAgICAgICAgICAgICAg
QGFycmF5UHVzaChjb2x1bW5OYW1lcywgdG9TdHJpbmcoY29sdW1uc1tpXSkpOwogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdC5jcmVhdGUodGFibGUsICJjb25zb2xlIiwg
ZmFsc2UsIHRydWUsIGNvbHVtbk5hbWVzKTsKQEAgLTM5Niw3ICs0MzYsNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAob2JqZWN0R3JvdXBO
YW1lID09PSAiY29uc29sZSIpIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0UmVzdWx0
OwogICAgICAgICAgICAgdGhpcy5fbmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAgICAg
ICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gW107CisgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3Vs
dHMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBsZXQgZ3JvdXAgPSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKQEAgLTQy
OSwxNCArNDY5LDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgICAgIHJldHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAgIH0KIAotICAgIGluamVj
dE1vZHVsZShuYW1lLCBzb3VyY2UsIGhvc3QpCisgICAgaW5qZWN0TW9kdWxlKG5hbWUsIG1vZHVs
ZUZ1bmN0aW9uLCBob3N0KQogICAgIHsKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IGZh
bHNlOwogCi0gICAgICAgIGxldCBtb2R1bGVGdW5jdGlvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5l
dmFsdWF0ZSgiKCIgKyBzb3VyY2UgKyAiKSIpOwogICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUZ1
bmN0aW9uICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBXZWIgSW5z
cGVjdG9yOiBhIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBmb3IgaW5qZWN0TW9kdWxlIjsKLSAgICAg
ICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJ
fSwgaG9zdCk7CisgICAgICAgIG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJSZW1vdGVPYmplY3QiLCBSZW1vdGVPYmpl
Y3QsCisgICAgICAgICAgICAiQ29tbWFuZExpbmVBUEkiLCBDb21tYW5kTGluZUFQSSwKKyAgICAg
ICAgKSwgaG9zdCk7CiAKICAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IHRydWU7CiAgICAg
fQpAQCAtNDcwLDEwICs1MTIsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgewogICAgICAgICAgICAgbGV0
IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CiAgICAgICAgICAg
ICBpZiAoIWdyb3VwKSB7Ci0gICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKKyAgICAgICAgICAg
ICAgICBncm91cCA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAg
ICAgICB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAgICAgICBAYXJyYXlQ
dXNoKGdyb3VwLCBpZCk7CiAgICAgICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lk
XSA9IG9iamVjdEdyb3VwTmFtZTsKICAgICAgICAgfQogCkBAIC00ODgsOCArNTMwLDcgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9mYWxsYmFja1dy
YXBwZXIob2JqZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwotICAgICAgICBy
ZXN1bHQudHlwZSA9IHR5cGVvZiBvYmplY3Q7CisgICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgidHlwZSIsIHR5cGVvZiBvYmplY3QpOwogICAgICAgICBp
ZiAoaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0g
b2JqZWN0OwogICAgICAgICBlbHNlCkBAIC01MTUsNyArNTU2LDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZEFy
ZzsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIHJldHVy
biBAdW5kZWZpbmVkOwogICAgIH0KIAogICAgIF9jcmVhdGVUaHJvd25WYWx1ZSh2YWx1ZSwgb2Jq
ZWN0R3JvdXApCkBAIC01MjQsMTAgKzU2NSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICB0cnkgewogICAgICAgICAgICAgcmVtb3RlT2JqZWN0
LmRlc2NyaXB0aW9uID0gdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSk7CiAgICAgICAgIH0gY2F0
Y2ggeyB9Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB3YXNUaHJvd246IHRydWUsCi0g
ICAgICAgICAgICByZXN1bHQ6IHJlbW90ZU9iamVjdAotICAgICAgICB9OworICAgICAgICByZXR1
cm4gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAid2FzVGhyb3du
IiwgdHJ1ZSwKKyAgICAgICAgICAgICJyZXN1bHQiLCByZW1vdGVPYmplY3QsCisgICAgICAgICk7
CiAgICAgfQogCiAgICAgX2V2YWx1YXRlQW5kV3JhcChldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhw
cmVzc2lvbiwgb2JqZWN0R3JvdXAsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCkKQEAgLTU1
MiwxMCArNTkzLDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0
CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsK
IAotICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB3YXNU
aHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0
ZShmdW5jKCksIG9iamVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0g
ICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IEBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwK
KyAgICAgICAgICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jKCksIG9i
amVjdEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAg
KTsKIAogICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQgJiYgdGhpcy5fc2F2ZWRSZXN1bHRJbmRl
eCkKICAgICAgICAgICAgICAgICByZXR1cm5PYmplY3Quc2F2ZWRSZXN1bHRJbmRleCA9IHRoaXMu
X3NhdmVkUmVzdWx0SW5kZXg7CkBAIC01NzEsNyArNjEyLDcgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IGNvbW1hbmRMaW5lQVBJID0gbnVs
bDsKICAgICAgICAgaWYgKGluY2x1ZGVDb21tYW5kTGluZUFQSSkKICAgICAgICAgICAgIGNvbW1h
bmRMaW5lQVBJID0gdGhpcy5jcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdChpc0V2YWxPbkNhbGxG
cmFtZSA/IG9iamVjdCA6IG51bGwpOwotICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLmNhbGwo
b2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CisgICAgICAgIHJldHVybiBldmFs
RnVuY3Rpb24uQGNhbGwob2JqZWN0LCBleHByZXNzaW9uLCBjb21tYW5kTGluZUFQSSk7CiAgICAg
fQogCiAgICAgX2NhbGxGcmFtZUZvcklkKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpCkBAIC02
MDcsNyArNjQ4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgLy8gQWx3YXlzIGluY2x1ZGUgX19wcm90b19fIGF0IHRoZSBlbmQsIGJ1dCBvbmx5
IGZvciB0aGUgZmlyc3QgZmV0Y2guCiAgICAgICAgIGxldCBpbmNsdWRlUHJvdG8gPSAhc3RhcnQ7
CiAKLSAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxldCBkZXNjcmlwdG9y
cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgdGhpcy5fZm9yRWFj
aFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGNvbGxlY3Rpb25Nb2RlLCAoZGVzY3JpcHRvcikg
PT4gewogICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIC0tc3Rh
cnQ7CkBAIC02MjIsMTMgKzY2MywxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBSZW1vdGVPYmpl
Y3QuY3JlYXRlKGRlc2NyaXB0b3IudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIGdlbmVy
YXRlUHJldmlldyk7CiAgICAgICAgICAgICBpZiAoInN5bWJvbCIgaW4gZGVzY3JpcHRvcikKICAg
ICAgICAgICAgICAgICBkZXNjcmlwdG9yLnN5bWJvbCA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVz
Y3JpcHRvci5zeW1ib2wsIG9iamVjdEdyb3VwTmFtZSk7Ci0gICAgICAgICAgICBkZXNjcmlwdG9y
cy5wdXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywg
ZGVzY3JpcHRvcik7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8gJiYgY291bnQgJiYg
ZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50ICYmIGRlc2NyaXB0b3IubmFtZSAhPT0gIl9fcHJv
dG9fXyIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0
Y2hBY3Rpb24uU3RvcDsKIAogICAgICAgICAgICAgcmV0dXJuIChjb3VudCAmJiBkZXNjcmlwdG9y
cy5sZW5ndGggPj0gY291bnQpID8gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5T
dG9wIDogSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKLSAgICAg
ICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlcywgaW5jbHVkZVByb3RvfSk7CisgICAgICAgIH0s
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIm5hdGl2ZUdldHRl
cnNBc1ZhbHVlcyIsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlcywKKyAgICAgICAgICAgICJpbmNsdWRl
UHJvdG8iLCBpbmNsdWRlUHJvdG8sCisgICAgICAgICkpOwogICAgICAgICByZXR1cm4gZGVzY3Jp
cHRvcnM7CiAgICAgfQogCkBAIC02MzgsMTMgKzY4MiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWludGVybmFsUHJvcGVydGllcykK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtd
OworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBl
KCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0aWVzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHkgPSBpbnRlcm5hbFByb3BlcnRpZXNb
aV07Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IHtuYW1lOiBwcm9wZXJ0eS5uYW1lLCB2
YWx1ZTogcHJvcGVydHkudmFsdWV9OworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAY3Jl
YXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFtZSIsIHByb3Bl
cnR5Lm5hbWUsCisgICAgICAgICAgICAgICAgInZhbHVlIiwgcHJvcGVydHkudmFsdWUsCisgICAg
ICAgICAgICApOwogICAgICAgICAgICAgaWYgKGNvbXBsZXRlRGVzY3JpcHRvcikKICAgICAgICAg
ICAgICAgICBkZXNjcmlwdG9yLmlzT3duID0gdHJ1ZTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3Jz
LnB1c2goZGVzY3JpcHRvcik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBk
ZXNjcmlwdG9yKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnM7CiAgICAg
fQpAQCAtNjU0LDE1ICs3MDEsMTggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgaWYgKEluamVjdGVkU2NyaXB0SG9zdC5zdWJ0eXBlKG9iamVjdCkg
PT09ICJwcm94eSIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IG5hbWVQcm9j
ZXNzZWQgPSBuZXcgU2V0OworICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBAU2V0Owog
CiAgICAgICAgIC8vIEhhbmRsZWQgYmVsb3cgd2hlbiBgaW5jbHVkZVByb3RvYC4KLSAgICAgICAg
bmFtZVByb2Nlc3NlZC5hZGQoIl9fcHJvdG9fXyIpOworICAgICAgICBuYW1lUHJvY2Vzc2VkLkBh
ZGQoIl9fcHJvdG9fXyIpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VWYWx1ZURlc2Ny
aXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCBwb3NzaWJsZU5h
dGl2ZUJpbmRpbmdHZXR0ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBvYmplY3RbbmFtZV19
OworICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICJ2YWx1ZSIsIG9iamVjdFtuYW1lXSwKKyAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChkZXNjcmlwdG9yLndyaXRhYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2Ny
aXB0b3Iud3JpdGFibGUgPSB0cnVlOwpAQCAtNjc4LDExICs3MjgsMTUgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9s
KQogICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci5zeW1ib2wgPSBzeW1ib2w7CiAg
ICAgICAgICAgICAgICAgLy8gU2lsZW5jZSBhbnkgcG9zc2libGUgdW5oYW5kbGVkcmVqZWN0aW9u
IGV4Y2VwdGlvbnMgY3JlYXRlZCBmcm9tIGFjY2Vzc2luZyBhIG5hdGl2ZSBhY2Nlc3NvciB3aXRo
IGEgd3JvbmcgdGhpcyBvYmplY3QuCi0gICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9y
LnZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNl
UmVqZWN0ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkK
LSAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3IudmFsdWUuY2F0Y2goZnVuY3Rpb24o
KXt9KTsKKyAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFuY2Vv
ZiBAUHJvbWlzZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0
aXZlR2V0dGVyVHlwZUVycm9yKGZha2VEZXNjcmlwdG9yLnZhbHVlKSkKKyAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3IudmFsdWUuQGNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZha2VEZXNjcmlwdG9yOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IGUs
IHdhc1Rocm93bjogdHJ1ZX07CisgICAgICAgICAgICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICAgICAibmFt
ZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIsIGUsCisgICAgICAgICAgICAg
ICAgICAgICJ3YXNUaHJvd24iLCB0cnVlLAorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAg
ICAgICAgaWYgKGlzT3duUHJvcGVydHkpCiAgICAgICAgICAgICAgICAgICAgIGVycm9yRGVzY3Jp
cHRvci5pc093biA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKQEAgLTcxMCwx
NSArNzY0LDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAK
ICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZSwgaXNPd25Q
cm9wZXJ0eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuaGFzKHBy
b3BlcnR5TmFtZSkpCisgICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5AaGFzKHByb3BlcnR5
TmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0
Y2hBY3Rpb24uQ29udGludWU7CiAKLSAgICAgICAgICAgIG5hbWVQcm9jZXNzZWQuYWRkKHByb3Bl
cnR5TmFtZSk7CisgICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLkBhZGQocHJvcGVydHlOYW1lKTsK
IAogICAgICAgICAgICAgbGV0IG5hbWUgPSB0b1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICAgICAgbGV0IHN5bWJvbCA9IGlzU3ltYm9sKHByb3BlcnR5TmFtZSkgPyBwcm9wZXJ0eU5hbWUg
OiBudWxsOwogCi0gICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlw
dG9yID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQmFkIGRlc2NyaXB0b3IuIENhbiB3ZSBnZXQgaGVyZT8KICAgICAgICAgICAgICAgICAvLyBG
YWxsIGJhY2sgdG8gdmVyeSByZXN0cmljdGl2ZSBzZXR0aW5ncy4KQEAgLTcyNyw3ICs3ODEsNyBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAobmF0aXZlR2V0dGVyc0FzVmFsdWVzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKFN0cmluZyhkZXNjcmlwdG9yLmdldCkuZW5kc1dpdGgoIltuYXRpdmUgY29kZV1c
bn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdl
dCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQi
KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQFN0cmluZyhkZXNjcmlwdG9yLmdldCkuQGVuZHNX
aXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBAT2JqZWN0LkBo
YXNPd24oZGVzY3JpcHRvciwgImdldCIpICYmICFkZXNjcmlwdG9yLnNldCAmJiBAT2JqZWN0LkBo
YXNPd24oZGVzY3JpcHRvciwgInNldCIpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEZXZl
bG9wZXJzIG1heSBjcmVhdGUgc3VjaCBhIGRlc2NyaXB0b3IsIHNvIHdlIHNob3VsZCBiZSByZXNp
bGllbnQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIGxldCB4ID0ge307IE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh4LCAicCIsIHtnZXQ6dW5kZWZpbmVkfSk7IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoeCwgInAiKQogICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3Ig
PSBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNP
d25Qcm9wZXJ0eSwgdHJ1ZSk7CkBAIC03NDUsMTAgKzc5OSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBpc0FycmF5TGlrZSA9IGZh
bHNlOwogICAgICAgICB0cnkgewotICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVPYmpl
Y3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIGlzRmluaXRlKG9iamVjdC5sZW5ndGgp
ICYmIG9iamVjdC5sZW5ndGggPiAwOworICAgICAgICAgICAgaXNBcnJheUxpa2UgPSBSZW1vdGVP
YmplY3Quc3VidHlwZShvYmplY3QpID09PSAiYXJyYXkiICYmIEBpc0Zpbml0ZShvYmplY3QubGVu
Z3RoKSAmJiBvYmplY3QubGVuZ3RoID4gMDsKICAgICAgICAgfSBjYXRjaCB7IH0KIAotICAgICAg
ICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBPYmplY3QuZ2V0UHJvdG90
eXBlT2YobykpIHsKKyAgICAgICAgZm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBv
ID0gQE9iamVjdC5AZ2V0UHJvdG90eXBlT2YobykpIHsKICAgICAgICAgICAgIGxldCBpc093blBy
b3BlcnR5ID0gbyA9PT0gb2JqZWN0OwogICAgICAgICAgICAgbGV0IHNob3VsZEJyZWFrID0gZmFs
c2U7CiAKQEAgLTc2NCw3ICs4MTgsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOworICAgICAgICAgICAgICAgIGxl
dCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKICAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBw
cm9wZXJ0eU5hbWVzW2ldLCBpc093blByb3BlcnR5KTsKICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24u
U3RvcDsKQEAgLTc3NiwxNCArODMwLDEyIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgICAgICBpZiAoc2hvdWxkQnJlYWspCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMobyk7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBw
cm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVy
dHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkQnJlYWspCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gQE9iamVjdC5AZ2V0
T3duUHJvcGVydHlTeW1ib2xzKG8pOworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBw
cm9wZXJ0eVN5bWJvbHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnJl
YWspCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoc2hvdWxkQnJlYWspCkBAIC03OTYsMjMgKzg0OCwyOCBAQCBsZXQgSW5qZWN0ZWRT
Y3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoaW5jbHVkZVByb3RvKSB7
CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGlmIChvYmplY3QuX19wcm90b19f
KQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh7bmFtZTogIl9fcHJvdG9fXyIsIHZhbHVl
OiBvYmplY3QuX19wcm90b19fLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBp
c093bjogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgIl9fcHJv
dG9fXyIsCisgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiLCBvYmplY3QuX19wcm90b19f
LAorICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJjb25maWd1cmFibGUiLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgImlzT3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICB9
IGNhdGNoIHsgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgX2dldFNldEVudHJpZXMob2JqZWN0
LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAgIHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBb
XTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7
CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVy
cmlkZXMgU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLgotICAgICAgICBmb3IgKGxldCB2
YWx1ZSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgQGJ1aWx0aW5TZXRJ
dGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAg
ICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJpZXMucHVzaCh7dmFsdWV9KTsKKyAgICAg
ICAgICAgIEBhcnJheVB1c2goZW50cmllcywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
InZhbHVlIiwgdmFsdWUpKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmll
cy5sZW5ndGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMs
MTYgKzg4MCwxOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
CiAgICAgX2dldE1hcEVudHJpZXMob2JqZWN0LCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KQogICAg
IHsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKKyAgICAgICAgbGV0IGVudHJpZXMgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
b2JzZXJ2YWJsZSBpZiB0aGUgcGFnZSBvdmVycmlkZXMgTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdLgotICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygb2JqZWN0KSB7CisgICAg
ICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBAYnVpbHRpbk1hcEl0ZXJhYmxlKG9iamVjdCkp
IHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIGZl
dGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgZW50cmllcy5wdXNoKHtrZXksIHZhbHVlfSk7CisgICAgICAgICAgICBAYXJy
YXlQdXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAg
ICAgICAgICJrZXkiLCBrZXksCisgICAgICAgICAgICAgICAgInZhbHVlIiwgdmFsdWUsCisgICAg
ICAgICAgICApKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoQ291bnQgJiYgZW50cmllcy5sZW5n
dGggPT09IGZldGNoQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NzYsMTAgKzkz
NSwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHsK
ICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAotICAgICAgICBpZiAocmVzdWx0
ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBudWxsKQorICAgICAgICBpZiAocmVzdWx0ID09
PSBAdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IHRoaXMuX3NhdmVkUmVzdWx0cy5pbmRleE9mKHJl
c3VsdCk7CisgICAgICAgIGxldCBleGlzdGluZ0luZGV4ID0gQEFycmF5LnByb3RvdHlwZS5AaW5k
ZXhPZi5AY2FsbCh0aGlzLl9zYXZlZFJlc3VsdHMsIHJlc3VsdCk7CiAgICAgICAgIGlmIChleGlz
dGluZ0luZGV4ICE9PSAtMSkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9
IGV4aXN0aW5nSW5kZXg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC04OTQsMTYgKzk1MywxNiBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIH0KIH07CiAK
LUluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gewotICAgIE93blByb3BlcnRpZXM6IDEg
PDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCi0gICAgTmF0aXZlR2V0dGVyUHJvcGVy
dGllczogMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlw
ZSBjaGFpbi4KLSAgICBBbGxQcm9wZXJ0aWVzOiAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9w
ZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi19OworSW5qZWN0ZWRTY3JpcHQuQ29sbGVj
dGlvbk1vZGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiT3duUHJvcGVy
dGllcyIsIDEgPDwgMCwgICAgICAgICAgLy8gb3duIHByb3BlcnRpZXMuCisgICAgIk5hdGl2ZUdl
dHRlclByb3BlcnRpZXMiLCAxIDw8IDEsIC8vIG5hdGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0
aGUgcHJvdG90eXBlIGNoYWluLgorICAgICJBbGxQcm9wZXJ0aWVzIiwgMSA8PCAyLCAgICAgICAg
ICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorKTsKIAotSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbiA9IHsKLSAgICBDb250aW51ZTogU3ltYm9sKCJj
b250aW51ZSIpLAotICAgIFN0b3A6IFN5bWJvbCgic3RvcCIpLAotfQorSW5qZWN0ZWRTY3JpcHQu
UHJvcGVydHlGZXRjaEFjdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICJDb250aW51ZSIsIEBjcmVhdGVQcml2YXRlU3ltYm9sKCJjb250aW51ZSIpLAorICAgICJTdG9w
IiwgQGNyZWF0ZVByaXZhdGVTeW1ib2woInN0b3AiKSwKKyk7CiAKIHZhciBpbmplY3RlZFNjcmlw
dCA9IG5ldyBJbmplY3RlZFNjcmlwdDsKIApAQCAtOTYyLDcgKzEwMjEsNyBAQCBsZXQgUmVtb3Rl
T2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3
ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KEluamVjdGVkU2NyaXB0SG9zdC5wcm94eVRhcmdldFZh
bHVlKG9iamVjdCkpOwogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldy5sb3NzbGVzcyA9IGZh
bHNlOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0g
dGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVjdCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdGhpcy5fZ2VuZXJhdGVQcmV2aWV3KG9iamVj
dCwgQHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05Nzcs
NyArMTAzNiw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBSZW1vdGVPYmplY3Qu
ZGVzY3JpYmUoZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChleCkgewotICAgICAgICAgICAgICAg
IGFsZXJ0KGV4Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmVycm9yKGV4Lm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
ID0gIjxmYWlsZWQgdG8gY29udmVydCBleGNlcHRpb24gdG8gc3RyaW5nPiI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbW90ZU9iamVjdChkZXNjcmlwdGlvbik7CkBA
IC05ODYsNyArMTA0NSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
IAogICAgIHN0YXRpYyBjcmVhdGVPYmplY3RQcmV2aWV3Rm9yVmFsdWUodmFsdWUsIGdlbmVyYXRl
UHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewotICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0g
bmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3
LCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2Jq
ZWN0KHZhbHVlLCBAdW5kZWZpbmVkLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1bW5OYW1l
cyk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Qub2JqZWN0SWQpCiAgICAgICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7CiAgICAgICAg
IGlmIChyZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5cGUgJiYgcmVtb3RlT2JqZWN0LmNsYXNzUHJv
dG90eXBlLm9iamVjdElkKQpAQCAtMTAxMSw3ICsxMDcwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8vIEZpcmVCdWcncyBhcnJheSBkZXRlY3Rp
b24uCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnNwbGljZSA9
PT0gImZ1bmN0aW9uIiAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQorICAgICAgICAgICAgaWYg
KHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYgQGlzRmluaXRlKHZhbHVlLmxl
bmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIH0gY2F0Y2gg
eyB9CiAKQEAgLTEwNTAsOCArMTEwOSw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJhcnJheSIpCiAgICAgICAgICAgICBy
ZXR1cm4gY2xhc3NOYW1lOwogCi0gICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYm
IFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZVtT
eW1ib2wudG9TdHJpbmdUYWddOworICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAm
JiBAQHRvU3RyaW5nVGFnIGluIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLkBAdG9T
dHJpbmdUYWc7CiAKICAgICAgICAgLy8gTm9kZUxpc3QgaW4gSlNDIGlzIGEgZnVuY3Rpb24sIGNo
ZWNrIGZvciBhcnJheSBwcmlvciB0byB0aGlzLgogICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09
PSAiZnVuY3Rpb24iKQpAQCAtMTA2OSw2ICsxMTI4LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGljIG5vZGVQcmV2aWV3KG5vZGUpCiAgICAgewor
ICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBz
aG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogICAgICAgICBsZXQgaXNYTUxEb2N1bWVudCA9
IG5vZGUub3duZXJEb2N1bWVudCAmJiAhIW5vZGUub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOwog
ICAgICAgICBsZXQgbm9kZU5hbWUgPSBpc1hNTERvY3VtZW50ID8gbm9kZS5ub2RlTmFtZSA6IG5v
ZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKIApAQCAtMTEwMCwxNyArMTE2MCwxNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaW5pdGlhbFByZXZpZXco
KQogICAgIHsKLSAgICAgICAgbGV0IHByZXZpZXcgPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlz
LnR5cGUsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0
cmluZyh0aGlzLnZhbHVlKSwKLSAgICAgICAgICAgIGxvc3NsZXNzOiB0cnVlLAotICAgICAgICB9
OworICAgICAgICBsZXQgcHJldmlldyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAor
ICAgICAgICAgICAgInR5cGUiLCB0aGlzLnR5cGUsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
LCB0aGlzLmRlc2NyaXB0aW9uIHx8IHRvU3RyaW5nKHRoaXMudmFsdWUpLAorICAgICAgICAgICAg
Imxvc3NsZXNzIiwgdHJ1ZSwKKyAgICAgICAgKTsKIAogICAgICAgICBpZiAodGhpcy5zdWJ0eXBl
KSB7CiAgICAgICAgICAgICBwcmV2aWV3LnN1YnR5cGUgPSB0aGlzLnN1YnR5cGU7CiAgICAgICAg
ICAgICBpZiAodGhpcy5zdWJ0eXBlICE9PSAibnVsbCIpIHsKICAgICAgICAgICAgICAgICBwcmV2
aWV3Lm92ZXJmbG93ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVz
ID0gW107CisgICAgICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5
V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTExMjYs
NyArMTE4Niw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAg
ICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJzZXQi
IHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWtz
ZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikgewogICAgICAgICAgICAgaWYgKHRo
aXMuc2l6ZSkgewotICAgICAgICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IFtdOworICAgICAg
ICAgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUo
KTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMTQxLDIz
ICsxMjAxLDIzIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAg
ICAgbGV0IGlzVGFibGVSb3dzUmVxdWVzdCA9IHNlY29uZExldmVsS2V5cyA9PT0gbnVsbCB8fCBz
ZWNvbmRMZXZlbEtleXM7CiAgICAgICAgIGxldCBmaXJzdExldmVsS2V5c0NvdW50ID0gZmlyc3RM
ZXZlbEtleXMgPyBmaXJzdExldmVsS2V5cy5sZW5ndGggOiAwOwogCi0gICAgICAgIGxldCBwcm9w
ZXJ0aWVzVGhyZXNob2xkID0gewotICAgICAgICAgICAgcHJvcGVydGllczogaXNUYWJsZVJvd3NS
ZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDUsIGZpcnN0TGV2ZWxLZXlzQ291bnQpLAotICAgICAg
ICAgICAgaW5kZXhlczogaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IE1hdGgubWF4KDEwLCBm
aXJzdExldmVsS2V5c0NvdW50KQotICAgICAgICB9OworICAgICAgICBsZXQgcHJvcGVydGllc1Ro
cmVzaG9sZCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgInBy
b3BlcnRpZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogbWF4KDUsIGZpcnN0TGV2ZWxL
ZXlzQ291bnQpLAorICAgICAgICAgICAgImluZGV4ZXMiLCBpc1RhYmxlUm93c1JlcXVlc3QgPyAx
MDAwIDogbWF4KDEwLCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAgICAgKTsKIAogICAgICAg
ICB0cnkgewogICAgICAgICAgICAgLy8gTWFwcywgU2V0cywgYW5kIEl0ZXJhdG9ycyBoYXZlIGVu
dHJpZXMuCiAgICAgICAgICAgICBpZiAodGhpcy5zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLnN1
YnR5cGUgPT09ICJzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIndlYWttYXAiIHx8IHRoaXMuc3Vi
dHlwZSA9PT0gIndlYWtzZXQiIHx8IHRoaXMuc3VidHlwZSA9PT0gIml0ZXJhdG9yIikKICAgICAg
ICAgICAgICAgICB0aGlzLl9hcHBlbmRFbnRyeVByZXZpZXdzKG9iamVjdCwgcHJldmlldyk7CiAK
LSAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAgICAgcHJldmll
dy5wcm9wZXJ0aWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCiAgICAgICAg
ICAgICAvLyBJbnRlcm5hbCBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgbGV0IGludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9ycyA9IGluamVjdGVkU2NyaXB0Ll9pbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcnMob2JqZWN0LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChpbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcnMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywg
aW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJz
dExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWw6IHRydWV9KTsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmpl
Y3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1Ro
cmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywgQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoImludGVybmFsIiwgdHJ1ZSkpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3ApCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICAgICAgICAgICAgICB9
CkBAIC0xMTY5LDcgKzEyMjksMTAgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogICAgICAgICAgICAgLy8gUHJvcGVydGllcy4KICAgICAgICAgICAgIGluamVjdGVkU2Ny
aXB0Ll9mb3JFYWNoUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHQuQ29s
bGVjdGlvbk1vZGUuQWxsUHJvcGVydGllcywgKGRlc2NyaXB0b3IpID0+IHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywg
ZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExl
dmVsS2V5cyk7Ci0gICAgICAgICAgICB9LCB7bmF0aXZlR2V0dGVyc0FzVmFsdWVzOiB0cnVlLCBp
bmNsdWRlUHJvdG86IHRydWV9KQorICAgICAgICAgICAgfSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hdGl2ZUdldHRlcnNBc1ZhbHVlcyIsIHRydWUs
CisgICAgICAgICAgICAgICAgImluY2x1ZGVQcm90byIsIHRydWUsCisgICAgICAgICAgICApKTsK
ICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7
CiAgICAgICAgIH0KQEAgLTExNzcsNyArMTI0MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgfQogCi0gICAgX2Fw
cGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRp
ZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0g
PSB7fSkKKyAgICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3Jp
cHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5
cywge2ludGVybmFsfSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCkpCiAgICAgewog
ICAgICAgICAvLyBFcnJvciBpbiBkZXNjcmlwdG9yLgogICAgICAgICBpZiAoZGVzY3JpcHRvci53
YXNUaHJvd24pIHsKQEAgLTExOTAsOSArMTI1Myw5IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKICAgICAgICAgaWYgKG5hbWUgPT09ICJfX3Byb3RvX18iKSB7CiAgICAg
ICAgICAgICAvLyBOb24gYmFzaWMgX19wcm90b19fIG9iamVjdHMgbWF5IGhhdmUgaW50ZXJlc3Rp
bmcsIG5vbi1lbnVtZXJhYmxlLCBtZXRob2RzIHRvIHNob3cuCiAgICAgICAgICAgICBpZiAoZGVz
Y3JpcHRvci52YWx1ZSAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yCi0gICAgICAgICAg
ICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0Ci0gICAgICAg
ICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkKLSAgICAg
ICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBSZWdFeHApCisg
ICAgICAgICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQE9iamVj
dAorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBB
cnJheQorICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09
IEBSZWdFeHApCiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAg
ICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGlu
dWU7CiAgICAgICAgIH0KQEAgLTEyMDksNyArMTI3Miw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBj
bGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVyLCBvbmx5
IHNob3cgcHJvcGVydGllcyBpbiB0aGUgZmlsdGVyLgogICAgICAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IHRoZXNlIGZpbHRlcnMgZG8gbm90aGluZyBvbiB0aGUgYmFja2VuZC4KLSAgICAgICAgaWYg
KGZpcnN0TGV2ZWxLZXlzICYmICFmaXJzdExldmVsS2V5cy5pbmNsdWRlcyhuYW1lKSkKKyAgICAg
ICAgaWYgKGZpcnN0TGV2ZWxLZXlzICYmICFAQXJyYXkucHJvdG90eXBlLkBpbmNsdWRlcy5AY2Fs
bChmaXJzdExldmVsS2V5cywgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKIAogICAgICAgICBmdW5jdGlvbiBhcHBl
bmRQcmV2aWV3KHByb3BlcnR5KSB7CkBAIC0xMjI3LDIwICsxMjkwLDI4IEBAIGxldCBSZW1vdGVP
YmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIGlmIChpbnRlcm5hbCkKICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eS5pbnRlcm5hbCA9IHRydWU7CiAKLSAgICAgICAgICAgIHBy
ZXZpZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2go
cHJldmlldy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEdldHRlci9zZXR0ZXIuCiAgICAgICAgIGlmICghKCJ2YWx1ZSIgaW4gZGVzY3JpcHRv
cikpIHsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKLSAgICAgICAgICAg
IHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAiYWNjZXNzb3IifSk7CisgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgK
KyAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCAi
YWNjZXNzb3IiLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOdWxs
IHZhbHVlLgogICAgICAgICBsZXQgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlOwogICAgICAgICBp
ZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyh7bmFt
ZSwgdHlwZTogIm9iamVjdCIsIHN1YnR5cGU6ICJudWxsIiwgdmFsdWU6ICJudWxsIn0pOworICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBl
IiwgIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInN1YnR5cGUiLCAibnVsbCIsCisgICAgICAg
ICAgICAgICAgInZhbHVlIiwgIm51bGwiLAorICAgICAgICAgICAgKSk7CiAKICAgICAgICAgLy8g
SWdub3JlIG5vbi1lbnVtZXJhYmxlIGZ1bmN0aW9ucy4KICAgICAgICAgbGV0IHR5cGUgPSB0eXBl
b2YgdmFsdWU7CkBAIC0xMjU4LDcgKzEzMjksMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fYWJicmV2aWF0ZVN0
cmluZyh2YWx1ZSwgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxv
c3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5k
UHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpfSk7
CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgKKyAgICAgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAg
InR5cGUiLCB0eXBlLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHRvU3RyaW5nRGVzY3JpcHRp
b24odmFsdWUpLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTeW1i
b2wuCkBAIC0xMjY4LDExICsxMzQzLDE4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgICAgICAgICBzeW1ib2xTdHJpbmcgPSB0aGlzLl9hYmJyZXZpYXRl
U3RyaW5nKHN5bWJvbFN0cmluZywgbWF4TGVuZ3RoLCB0cnVlKTsKICAgICAgICAgICAgICAgICBw
cmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZSwgdmFsdWU6IHN5bWJvbFN0cmluZ30pOworICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBl
IiwgdHlwZSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCBzeW1ib2xTdHJpbmcsCisgICAgICAg
ICAgICApKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9iamVjdC4KLSAgICAgICAgbGV0IHBy
b3BlcnR5ID0ge25hbWUsIHR5cGV9OworICAgICAgICBsZXQgcHJvcGVydHkgPSBAY3JlYXRlT2Jq
ZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAg
ICAgICJ0eXBlIiwgdHlwZSwKKyAgICAgICAgKTsKICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1v
dGVPYmplY3Quc3VidHlwZSh2YWx1ZSk7CiAgICAgICAgIGlmIChzdWJ0eXBlKQogICAgICAgICAg
ICAgcHJvcGVydHkuc3VidHlwZSA9IHN1YnR5cGU7CkBAIC0xMzEzLDcgKzEzOTUsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gNSkgewotICAgICAgICAgICAgZW50cmllcy5w
b3AoKTsKKyAgICAgICAgICAgIEBBcnJheS5wcm90b3R5cGUuQHBvcC5AY2FsbChlbnRyaWVzKTsK
ICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgcHJldmll
dy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMzIzLDcgKzE0MDUsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICAgICAgcHJldmll
dy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlldy5lbnRyaWVz
ID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgcHJldmlldy5lbnRyaWVz
ID0gQEFycmF5LnByb3RvdHlwZS5AbWFwLkBjYWxsKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7
CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGVPYmplY3RQcmV2
aWV3Rm9yVmFsdWUoZW50cnkudmFsdWUsIGVudHJ5LnZhbHVlICE9PSBvYmplY3QpOwogICAgICAg
ICAgICAgdXBkYXRlTWFpblByZXZpZXcoZW50cnkudmFsdWUpOwogICAgICAgICAgICAgaWYgKCJr
ZXkiIGluIGVudHJ5KSB7CkBAIC0xMzM2LDggKzE0MTgsOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0g
Y2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBfaXNQcmV2aWV3YWJsZU9iamVjdCh2YWx1ZSwgb2Jq
ZWN0KQogICAgIHsKLSAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7Ci0gICAgICAgIHNldC5hZGQo
b2JqZWN0KTsKKyAgICAgICAgbGV0IHNldCA9IG5ldyBAU2V0OworICAgICAgICBzZXQuQGFkZChv
YmplY3QpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJu
YWwodmFsdWUsIHNldCwgMSk7CiAgICAgfQpAQCAtMTM1NywxMSArMTQzOSwxMSBAQCBsZXQgUmVt
b3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICAvLyBDeWNsaWMgb2JqZWN0cy4KLSAgICAgICAgaWYgKGtub3duT2JqZWN0cy5o
YXMob2JqZWN0KSkKKyAgICAgICAgaWYgKGtub3duT2JqZWN0cy5AaGFzKG9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgKytkZXB0aDsKLSAgICAgICAga25vd25P
YmplY3RzLmFkZChvYmplY3QpOworICAgICAgICBrbm93bk9iamVjdHMuQGFkZChvYmplY3QpOwog
CiAgICAgICAgIC8vIEFycmF5cyBhcmUgc2ltcGxlIGlmIHRoZXkgaGF2ZSA1IG9yIGxlc3Mgc2lt
cGxlIG9iamVjdHMuCiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
b2JqZWN0KTsKQEAgLTEzODEsMTIgKzE0NjMsMTIgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIE9i
amVjdHMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgMyBvciBsZXNzIHNpbXBsZSB2YWx1ZSBwcm9w
ZXJ0aWVzLgotICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCk7CisgICAgICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gQE9iamVj
dC5AZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOwogICAgICAgICBpZiAob3duUHJvcGVydHlO
YW1lcy5sZW5ndGggPiAzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IG93blByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQE9iamVjdC5AZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yICYmICEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJldmlld2FibGVP
YmplY3RJbnRlcm5hbChvYmplY3RbcHJvcGVydHlOYW1lXSwga25vd25PYmplY3RzLCBkZXB0aCkp
CkBAIC0xNDA0LDY2ICsxNDg2LDcyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKICAgICAgICAgaWYgKG1pZGRsZSkgewogICAgICAgICAgICAgbGV0IGxlZnRIYWxmID0g
bWF4TGVuZ3RoID4+IDE7CiAgICAgICAgICAgICBsZXQgcmlnaHRIYWxmID0gbWF4TGVuZ3RoIC0g
bGVmdEhhbGYgLSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgbGVmdEhh
bGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuc3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYs
IHJpZ2h0SGFsZik7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIoMCwgbGVmdEhh
bGYpICsgIlx1MjAyNiIgKyBzdHJpbmcuQHN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxm
LCByaWdodEhhbGYpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIo
MCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOworICAgICAgICByZXR1cm4gc3RyaW5nLkBzdWJzdHIo
MCwgbWF4TGVuZ3RoKSArICJcdTIwMjYiOwogICAgIH0KIH07CiAKIC8vIC0tLS0tLS0KIAotSW5q
ZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUp
Ci17Ci0gICAgdGhpcy5jYWxsRnJhbWVJZCA9IGB7Im9yZGluYWwiOiR7b3JkaW5hbH0sImluamVj
dGVkU2NyaXB0SWQiOiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsKLSAgICB0aGlzLmZ1bmN0aW9uTmFt
ZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7Ci0gICAgdGhpcy5sb2NhdGlvbiA9IHtzY3JpcHRJ
ZDogU3RyaW5nKGNhbGxGcmFtZS5zb3VyY2VJRCksIGxpbmVOdW1iZXI6IGNhbGxGcmFtZS5saW5l
LCBjb2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1bW59OwotICAgIHRoaXMuc2NvcGVDaGFpbiA9
IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAgdGhpcy50aGlzID0gUmVtb3Rl
T2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09iamVjdCwgImJhY2t0cmFjZSIpOwotICAgIHRo
aXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxldGVkOwotfTsKK0luamVjdGVk
U2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gY2xhc3MgQ2FsbEZyYW1lUHJveHkgeworICAgIGNvbnN0
cnVjdG9yKG9yZGluYWwsIGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2FsbEZyYW1l
SWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2luamVjdGVk
U2NyaXB0SWR9fWA7CisgICAgICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1bmN0
aW9uTmFtZTsKKworICAgICAgICB0aGlzLmxvY2F0aW9uID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAic2NyaXB0SWQiLCBAU3RyaW5nKGNhbGxGcmFtZS5zb3Vy
Y2VJRCksCisgICAgICAgICAgICAibGluZU51bWJlciIsIGNhbGxGcmFtZS5saW5lLAorICAgICAg
ICAgICAgImNvbHVtbk51bWJlciIsIGNhbGxGcmFtZS5jb2x1bW4sCisgICAgICAgICk7CisKKyAg
ICAgICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKTsK
KyAgICAgICAgdGhpcy50aGlzID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShjYWxsRnJhbWUudGhpc09i
amVjdCwgImJhY2t0cmFjZSIpOworICAgICAgICB0aGlzLmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJh
bWUuaXNUYWlsRGVsZXRlZDsKKyAgICB9CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5
LnByb3RvdHlwZSA9IHsKICAgICBfd3JhcFNjb3BlQ2hhaW4oY2FsbEZyYW1lKQogICAgIHsKICAg
ICAgICAgbGV0IHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKICAgICAgICAgbGV0
IHNjb3BlRGVzY3JpcHRpb25zID0gY2FsbEZyYW1lLnNjb3BlRGVzY3JpcHRpb25zKCk7CiAKLSAg
ICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IFtdOworICAgICAgICBsZXQgc2NvcGVDaGFpblBy
b3h5ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBzY29wZUNoYWlu
UHJveHlbaV0gPSBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29u
KHNjb3BlQ2hhaW5baV0sIHNjb3BlRGVzY3JpcHRpb25zW2ldLCAiYmFja3RyYWNlIik7CiAgICAg
ICAgIHJldHVybiBzY29wZUNoYWluUHJveHk7CiAgICAgfQotfTsKIAotSW5qZWN0ZWRTY3JpcHQu
Q2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gewotICAgIDA6ICJnbG9iYWwiLCAvLyBH
TE9CQUxfU0NPUEUKLSAgICAxOiAid2l0aCIsIC8vIFdJVEhfU0NPUEUKLSAgICAyOiAiY2xvc3Vy
ZSIsIC8vIENMT1NVUkVfU0NPUEUKLSAgICAzOiAiY2F0Y2giLCAvLyBDQVRDSF9TQ09QRQotICAg
IDQ6ICJmdW5jdGlvbk5hbWUiLCAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCi0gICAgNTogImdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCIsIC8vIEdMT0JBTF9MRVhJQ0FMX0VOVklST05NRU5UX1NDT1BF
Ci0gICAgNjogIm5lc3RlZExleGljYWwiLCAvLyBORVNURURfTEVYSUNBTF9TQ09QRQotfTsKKyAg
ICBzdGF0aWMgX2NyZWF0ZVNjb3BlSnNvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2NhdGlvbn0s
IGdyb3VwSWQpCisgICAgeworICAgICAgICBsZXQgc2NvcGUgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJvYmplY3QiLCBSZW1vdGVPYmplY3QuY3JlYXRlKG9i
amVjdCwgZ3JvdXBJZCksCisgICAgICAgICAgICAidHlwZSIsIEluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1t0eXBlXSwKKyAgICAgICAgKTsKIAotSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKG9iamVjdCwg
e25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJZCkKLXsKLSAgICBsZXQgc2NvcGUgPSB7Ci0g
ICAgICAgIG9iamVjdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAotICAg
ICAgICB0eXBlOiBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVUeXBlTmFtZXNb
dHlwZV0sCi0gICAgfTsKKyAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICBzY29wZS5uYW1l
ID0gbmFtZTsKIAotICAgIGlmIChuYW1lKQotICAgICAgICBzY29wZS5uYW1lID0gbmFtZTsKKyAg
ICAgICAgaWYgKGxvY2F0aW9uKQorICAgICAgICAgICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlv
bjsKIAotICAgIGlmIChsb2NhdGlvbikKLSAgICAgICAgc2NvcGUubG9jYXRpb24gPSBsb2NhdGlv
bjsKKyAgICAgICAgaWYgKGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgICAgIHNjb3Bl
LmVtcHR5ID0gdHJ1ZTsKIAotICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkpCi0gICAgICAg
IHNjb3BlLmVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHNjb3BlOworICAgIH0KK307CiAK
LSAgICByZXR1cm4gc2NvcGU7Ci19CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2Nv
cGVUeXBlTmFtZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAwLCAiZ2xv
YmFsIiwgLy8gR0xPQkFMX1NDT1BFCisgICAgMSwgIndpdGgiLCAvLyBXSVRIX1NDT1BFCisgICAg
MiwgImNsb3N1cmUiLCAvLyBDTE9TVVJFX1NDT1BFCisgICAgMywgImNhdGNoIiwgLy8gQ0FUQ0hf
U0NPUEUKKyAgICA0LCAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQorICAg
IDUsICJnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9O
TUVOVAorICAgIDYsICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKKyk7
CiAKIC8vIC0tLS0tLS0KIApAQCAtMTQ3Nyw5ICsxNTY1LDkgQEAgZnVuY3Rpb24gQ29tbWFuZExp
bmVBUEkoY2FsbEZyYW1lKQogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IG9yaWdpbmFsVmFsdWU7IH07CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9fZGVmaW5lR2V0
dGVyX18oIiQiICsga2V5LCB2YWx1ZSk7CisgICAgICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5
KHRoaXMsICIkIiArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChzYXZlZFJlc3VsdEFsaWFzICYmIHNhdmVkUmVzdWx0QWxpYXMg
IT09ICIkIikKLSAgICAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhzYXZlZFJlc3VsdEFs
aWFzICsga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0
aGlzLCBzYXZlZFJlc3VsdEFsaWFzICsga2V5LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgiZ2V0IiwgdmFsdWUpKTsKICAgICB9OwogCiAgICAgaWYgKCJfbGFzdFJlc3VsdCIgaW4gaW5q
ZWN0ZWRTY3JpcHQpCkBAIC0xNTAyLDQ4ICsxNTkwLDQ4IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5l
QVBJKGNhbGxGcmFtZSkKICAgICAgICAgdGhpc1tuYW1lXSA9IENvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbbmFtZV07CiB9CiAKLUNvbW1hbmRMaW5lQVBJLmdldHRlcnMgPSB7fTsKK0NvbW1hbmRMaW5l
QVBJLmdldHRlcnMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogCi1Db21tYW5k
TGluZUFQSS5tZXRob2RzID0ge307CitDb21tYW5kTGluZUFQSS5tZXRob2RzID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJd
ID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJu
IE9iamVjdC52YWx1ZXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMi
XSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5Aa2V5cyhvYmplY3QpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidmFsdWVzIl0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0
dXJuIEBPYmplY3QuQHZhbHVlcyhvYmplY3QpOyB9OwogCi1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInF1ZXJ5T2JqZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QucXVlcnlJbnN0YW5jZXMoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QucXVlcnlIb2xkZXJzKC4uLmFyZ3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeUluc3RhbmNlcyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QucXVlcnlJbnN0YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5T2Jq
ZWN0cyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlJbnN0
YW5jZXMoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SG9sZGVycyJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QucXVlcnlIb2xkZXJzKC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CiAK
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluc3BlY3QiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyBy
ZXR1cm4gaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChvYmplY3QpOyB9OwogCi1Db21tYW5k
TGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9i
YWxPYmplY3QuY29uc29sZS5jbGVhciguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuY291bnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuZGVidWcoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5kaXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnht
bCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5k
aXJ4bWwoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9y
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBD
b2xsYXBzZWQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3Vw
RW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZv
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmlu
Zm8oLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlRW5kKC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNo
b3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNuYXBzaG90
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRh
a2VIZWFwU25hcHNob3QoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUudGltZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVu
ZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50
aW1lRW5kKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9n
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRp
bWVMb2coLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFt
cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50
aW1lU3RhbXAoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRyYWNl
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRy
YWNlKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4u
YXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImFzc2VydCJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5hc3NlcnQoLi4uY3Jl
YXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsK
K0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNsZWFyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJjb3VudCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5jb3VudCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNl
dCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5j
b3VudFJlc2V0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1ZyJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kZWJ1ZyguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1siZGlyeG1sIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlLmRpcnhtbCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5jcmVhdGVJdGVyYWJsZVdp
dGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImluZm8iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuaW5mbyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5jcmVhdGVJdGVy
YWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFBy
b3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJl
Y29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5yZWNvcmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhh
cmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQo
Li4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hvdCguLi5jcmVhdGVJdGVyYWJsZVdp
dGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1sidGltZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21B
cmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5k
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRp
bWVFbmQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndh
cm4iXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
d2FybiguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3Vt
ZW50cykpOyB9OwogCiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAg
ICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9
OwogCiByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Ci19KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1
OC4uYmMyMzdhMWY0ZjQwYjY1ODc0YTU4OGEzYmY0ODkwNDFiOTNjNmFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgIGlm
IChlcnJvci50eXBlKCkgIT0gUGFyc2VyRXJyb3I6OlN0YWNrT3ZlcmZsb3cpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjog
IiwgZXJyb3IubWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4
cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNzYWdlKCksICIgb24g
bGluZSAiLCBlcnJvci5saW5lKCksICIuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcAppbmRleCBmYzc4ODk0NjUxZTlkNzY5NzdmNzk1YzQ1NGQ5OWVlMTlmMTNl
NzljLi5mZmM5YzljMjMzMWRhZTNkNmE2NWJkZWZhYzUwYmIxYTAzZjM2NzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUg
IkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCiAKQEAgLTU3LDYgKzU4LDgg
QEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNz
b3JXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwg
c3BlY2llc1N5bWJvbCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aXNB
cnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisKKyAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZnJvbVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3JGcm9tQ29kZUdlbmVyYXRv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDVhM2FhYTkxZTYyNzI4YzJjYTlmYWVmNTYxZDJmYWJl
ZGU3MDU5NWUuLjUxNWM4NWZkN2QzMWUxMzU4MGMwZThhNTBmMTBmN2Y4ZjZhYmY5NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAg
LTEzMCw3ICsxMzAsMTEgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIH0KICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50
cmllc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFjaFByaXZhdGVOYW1l
KCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZm9yRWFj
aFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbmRleE9mUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmRleE9mUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlz
UHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5rZXlzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQcml2YXRlTmFtZSgpLCBnZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFB1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucG9wUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5wb3BQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVO
YW1lKCksIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKIAogICAgIEpTT2Jq
ZWN0KiB1bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3Qt
Pm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZDE0NDEyNDhmNmUyZjI2ZmVj
ODNjOTVmYzY3MTZiYzBkMjE0MzQxOS4uOWMzOTNiMDY5ZWY0NDQxODc2MDBlZmFmOWIxNDU4NDhi
N2EwOWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMjc1LDYgKzI3NSw4IEBAIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBF
KENIRUNLX0ZFQVRVUkVfRkxBR19UWVBFKQogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04obWFrZUJvdW5kRnVuY3Rpb24pOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
aGFzT3duTGVuZ3RoUHJvcGVydHkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisvL3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzb25QYXJzZSk7CisvL3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJp
bmdpZnkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxlU3VwZXJTYW1w
bGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVTdXBlclNhbXBs
ZXIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpvYik7CkBAIC0z
NjEsNiArMzYzLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3lt
Ym9sLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51
bGxTeW1ib2woKS5nZXQoKSkpOwogfQogCisvL0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29u
UGFyc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCisvL3sKKy8vICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKy8vICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKy8vICAgIGF1dG8ganNvbiA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKy8vICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisvLworLy8gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU09OUGFyc2UoZ2xvYmFsT2JqZWN0LCBqc29uKSk7CisvL30KKy8vCisvL0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc29uU3RyaW5naWZ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorLy97CisvLyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisvLyAgICBhdXRvIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKy8v
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkpOworLy99CisK
ICNpZiBBU1NFUlRfRU5BQkxFRAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFzc2VydENhbGws
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7
CkBAIC0xMDc0LDkgKzEwOTMsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1f
cHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAg
ICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IpOworICAgIG1fc3RyaW5nQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBz
dHJpbmdDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlz
ZUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGlu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICAKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTdHJpbmcpXS5zZXQodm0s
IHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKKwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmlu
aXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGlu
aXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3Rv
cjxFcnJvclR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC0xNTUzLDYgKzE1NzQsMTQgQEAgY2Fw
aXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1
cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBKU09O
IGhlbHBlcnMKKy8vICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25QYXJzZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworLy8gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCBqc29uUGFyc2UpKTsKKy8vICAgICAgICB9KTsKKy8vICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25TdHJp
bmdpZnkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
Ky8vICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lm
eSkpOworLy8gICAgICAgIH0pOworCiAgICAgLy8gU2hhZG93UmVhbG1zCiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRl
UmVtb3RlRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0
ZVJlbW90ZUZ1bmN0aW9uKSk7CkBAIC0yMTg0LDYgKzIyMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdHJpbmdDb25zdHJ1Y3Rvcik7CiAK
ICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBhYWVkMzQ3
ODdhZjY2YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uZTk0ODYwM2UyY2VjYTI5NTVhMmVkMjcx
NTRiYjNiMDE0OTcxYWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0SXRlcmF0b3JQcm90
b3R5cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291
cmNlT3JpZ2luOworY2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7CiBjbGFzcyBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFj
dGl2YXRpb25TdGFja05vZGU7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHVibGljOgogICAgIFdyaXRl
QmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAg
V3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U3RyaW5nQ29uc3RydWN0b3I+
IG1fc3RyaW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAppbmRleCBhODZkZTk3NzY0ZWM0
ZjVkMTc3ZmIxYmMwN2E4YzgwOWE2ZWZjMmIwLi4xNzIzNjkyNDRkNTk0ZjRmNzJmZGU3ZmQ5MzZl
YTUxNDMwY2JhMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVu
Y3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJp
bmcoKSwgbWFwUHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0
ZU5hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJ
VEhPVVRfVFJBTlNJVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA4Y2Y5ZTE3OGZiMWM3NzczOGFhNjQ2
NTY2MTRlYWFiZDhhZDE0Ny4uYmI2YWYyNTRmNDk2NzlmNTE3YTM5ODcwNDE1ZWVmMzdjYmUxY2U5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcApAQCAtOTksOSArOTksMTkgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKIAog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogCisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSgpLCBvYmpl
Y3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJp
dmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlTeW1ib2xzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHJp
dmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVm
aW5lUHJvcGVydHlQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMyk7
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY3JlYXRlUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0
b3JDcmVhdGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAyKTsKLSAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpCisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKKworICAgIGlm
IChPcHRpb25zOjp1c2VIYXNPd24oKSkgewogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd24sIG9iamVjdENvbnN0cnVj
dG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMik7CisgICAgICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093blByaXZhdGVOYW1lKCksIG9i
amVjdENvbnN0cnVjdG9ySGFzT3duLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgfQogfQogCiAvLyBFUyAxOS4xLjEuMSBPYmplY3Qo
W3ZhbHVlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCmluZGV4IDFlNmJjMWVlOGJiMzdmNWYxMzU3NmNlYTJhNmQ1ZDRhOTVkZDQ4NzEuLmY3Zjlj
MTQxOGJmN2NjZjNhNGY1MDM0NGU0MmE0ZjIzMGEwNTc0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNjgsNiArNjgsNyBAQCB2b2lk
IFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiAgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZh
bHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzLCBKU1NldFZhbHVl
c0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgp
LCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKaW5kZXggNTA2NzIzMmNkNjZmOTkxM2I5NTMyZjA5ZjY4MDMxYmVlZDA0Y2Y5
My4uMzFhOGY5ZTdkN2JiZDMyNjUwYzBjYjI5ODI2OWE5MzVlZDBjY2NmZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNjQs
NiArMTY0LDkgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9s
Lml0ZXJhdG9yXSJfcywgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN1YnN0clByaXZh
dGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVuZHNX
aXRoUHJpdmF0ZU5hbWUoKSwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKwogICAgIC8vIFRoZSBj
b25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBo
YXMgYmVlbiBidWlsdAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhMDRiN2VjZWJiZTgz
ZjdkNzI0NzkzNGM5ODhkZWY0ZmZjMWM4Y2EuLjc5MmE2NzAxNjI3YzFlYTNjODliZGVhNWM4Y2Yz
YjIyY2ZjZGRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMTI5LDE4ICsyMTI5LDYgQEAg
V0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmUpCiBXRUJLSVRfRlJBTUVXT1JLX0RFQ0xB
UkUoV2ViQ29yZVRlc3RTdXBwb3J0KQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VY
SVNUUygpCiAKLSMgR2VuZXJhdGUgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgTUFJTl9ERVBFTkRFTkNZ
IGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotICAgIERFUEVORFMgJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9L2pzbWluLnB5Ci0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8v
IyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
cyIgPiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BF
UkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKLWxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKLQotCiBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db2xvckRhdGEuY3BwKQogCkBAIC0yMzUyLDYg
KzIzNDAsNyBAQCBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vZG9tL1RleHRF
bmNvZGVyU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvSlNET01CaW5k
aW5nSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmpzCiApCiAKIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUz
NTYyYmQyZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9w
ZXJ0eU5hbWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NTU1ZhbHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5
QnVpbHRpbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQy
MTZlNDZjLi5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChO
T19TVVBQTEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5k
ZXApCiBlbmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2Vi
Q29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8j
IHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
IiA+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
Lm1pbi5qcwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlM
VElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpz
IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJD
b3JlKS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJ
TlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMDYwYWQ5ZjMx
YWQyZTYxNDgzNzk1MjM3MGJhNTAwMTE5ZDBhYWM0Li41NzgyMGI3NzNmMDQ5MDE2NDlhNzdiOThi
MGQ1YzNjZGIwNTRiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2OCw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAg
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAg
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5YmExYjgyMDM1MmMxNGQ5NjA2NjMzZjMwMWY5ZDQ1MzcyOGUyZTI1Li5kM2Y4ZDU0NTQ0
NTA0OTFjNWNkNzIwZDBiMzM2NmIzODc2YThkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJ
MkUzMDFCRTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1
N0QzMyAvKiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgx
MkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9Owor
CQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyRTQzNDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyLmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXJHbG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlB
NTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYy
QjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMg
LyogU2VydmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFn
ZW50LmggKi87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsg
fTsKLQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsg
fTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4
NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZF
MzAxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4
NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3
REZEOTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBET01VUkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJD
NUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3
RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUz
QUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRp
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM5NDEsNyArMTM5NDMsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBD
RUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhv
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdC
OEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRG
RTI3MTg2MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVB
UElNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI5LDcgKzIwNDMw
LDYgQEAKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkx
ODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0
RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5
MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwICovLApAQCAtMjM1ODcsNiArMjM1ODcsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNG
RkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAog
CQkJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
QnVpbHRpbnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRh
LmNwcCAqLywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBG
NjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8s
CiAJCQkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnMuaCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlO
YW1lcy5jcHAgKi8sCkBAIC0zNDA4NSw3ICszNDA4Nyw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJE
RDAwN0I4NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYx
MUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJp
bmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29t
bW9uQ3J5cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0
OTUwMTY3NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1
YjQ5Yjc5ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9k
dWxlOjpDb21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQ
SU1vZHVsZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxl
OjppbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dB
bHdheXMoIkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29t
bWFuZExpbmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBK
U1ZhbHVlIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmgKaW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1
MGQ0YTVmMzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAg
Y2xhc3MgQ29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsK
IAotICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rp
b24qIGluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVy
cmlkZTsKICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFu
YWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRp
YyB2b2lkIGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
Y29uc3QgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUz
NTE5Y2NiMTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLjJiNjE5ZGI0YWVjZDEyMWVkNTZm
NTVlNmMxNDg0MDg4N2RlNzNlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3Rl
ZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5q
ZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVB
UElIb3N0KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVt
b3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sKIAotLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNl
IEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9u
LXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3
ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAKIGluamVj
dGVkU2NyaXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFy
Z3VtZW50cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0
ZWRTY3JpcHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcgPSAiIiAr
IG9iamVjdDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAg
ICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOworICAgICAg
ICBzdHJpbmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9
PT0gImZ1bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7
CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuSlNPTi5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0cmlu
ZyA9IEpTT04uc3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewogICAg
ICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5MCwy
OCBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVuY3Rp
b24odGFyZ2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7
Ci0gICAgaWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3VzZSIs
ICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJk
ZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9h
ZCIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3Vi
bWl0IiwgInVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAg
dHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCJtb3VzZSIsICJrZXkiLCAidG91
Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24i
LCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIs
ICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9h
ZCIpOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgIHR5
cGVzID0gW3R5cGVzXTsKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90
eXBlKHR5cGVzKTsKKworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBh
ZGRUeXBlc1RvUmVzdWx0KCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKGFyZ3VtZW50c1tpXSk7Cisg
ICAgfQogCi0gICAgbGV0IHJlc3VsdCA9IFtdOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlw
ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAg
ICAgICAgICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJt
b3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVl
bCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiY2xpY2siLCAiZGJsY2xpY2siLCAi
bW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1
cCIsICJtb3VzZXdoZWVsIik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwg
InRleHRJbnB1dCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgia2V5ZG93biIsICJr
ZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5jZWwiLCAi
dG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgICAgIGFkZFR5
cGVzVG9SZXN1bHQoInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3Vj
aHN0YXJ0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCi0gICAg
ICAgICAgICByZXN1bHQucHVzaCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAi
cmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAg
ICAgIGFkZFR5cGVzVG9SZXN1bHQoImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0Iiwg
InJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAgIHJl
c3VsdC5AYWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEx
OCwxOSArMTI0LDE3IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAg
IGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92
ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2
ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2
ZW50LCBmYWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBs
b2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJs
ZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2
ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFkZEV2
ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlw
ZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBu
b3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVz
Lmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tp
XSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0SXRl
cmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewpA
QCAtMTU4LDkgKzE2MiwxMCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYm
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2ZWxv
cGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgogICAgICAgICBpZiAo
Y2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVj
dGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rv
cikpOwotICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsK
KyAgICAgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChz
ZWxlY3RvcikpOworICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKGluc3BlY3RlZEdsb2JhbE9i
amVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgfTsKIAogICAg
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlvbih4cGF0aCwgY29udGV4dCkg
ewpAQCAtMTc1LDEwICsxODAsMTEgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5ib29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbm9kZXMgPSBbXTsK
KyAgICAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRo
YXQgZGV2ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgorICAg
ICAgICBsZXQgbm9kZXMgPSBuZXcgQEFycmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7CiAg
ICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAgICBu
b2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAg
ICAgICAgIHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5Miw0IEBAIGlmIChp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5v
ZGUpIHsKIGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21t
YW5kTGluZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAi
ZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0p
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZjkzMzY3ZjRjOWI5MmJhMDI2YWIwYjczOGRjOWUxMWFhOWRlNGVjNi4uYTc0
MzExNmEzODhiYWMzM2UwNjYxODFlYjU2M2Q4ZDVmN2Q0Y2M0MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDIyLTA1LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0
LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
aW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sOgorICAgICAgICAtIEFkZCBzZXZl
cmFsIG1vcmUgdGVzdCBjYXNlcyBmb3Igb3ZlcnJpZGluZyBmdW5jdGlvbnMgYW5kIGVudGlyZSBv
YmplY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5h
bC1zY3JpcHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbDoKKyAgICAgICAgLSBDaGFuZ2VkIHRvIHRlc3Qg
YSBjdXN0b20gaW50ZXJuYWwgc2NyaXB0IHNuaXBwZXQgc2luY2UgdGhlIGluc3BlY3RvciBpbmpl
Y3RlZCBzY3JpcHQgaXMgbm93IGEgYnVpbHRpbi4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQuaHRtbDoKKyAgICAgICAgLSBUaGUgaW5zcGVjdG9yIGluamVjdGVk
IHNjcmlwdCAoYW5kIG1vZHVsZXMpIHdpbGwgbm8gbG9uZ2VyIGFwcGVhciBhcyBzY3JpcHRzIGlu
IFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVj
dC9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUt
Y29sdW1uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgLSBJbnNwZWN0b3IgaW5qZWN0ZWQgc2Ny
aXB0IGxpbmUgbnVtYmVycyBhcmUgZGlmZmVyZW50IGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcg
YnVpbGRzLCBzbyBmaWx0ZXIgdGhvc2Ugb3V0LgorCiAyMDIyLTA1LTA0ICBLYXJsIFJhY2tsZXIg
IDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBdIGZhc3QvZm9ybXMvYXV0by1m
aWxsLWJ1dHRvbi9pbnB1dC1hdXRvLWZpbGwtYnV0dG9uLmh0bWwgaXMgYSBjb25zaXN0ZW50IGZh
aWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1m
b3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4IDFl
YjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZmNTI3ZGZkODVjOGQuLjU5MzdmYWU5N2Y4OTU4ODQ3
Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRz
LWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0
IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNT
QUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2lu
ZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRp
bmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgor
Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBw
ZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1Z2dl
ci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogLS0gUnVubmluZyB0ZXN0IHNldHVwLgogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRp
c2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJFU1NJ
T046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwgaW4s
IGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVz
ZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAg
IGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsK
LSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25z
b2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsK
K1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAgIDIz
CisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1ICAg
ICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOwor
ICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRy
eUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9u
IGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAg
ICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhj
b25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEg
ICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAgIDI0
ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1
Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2co
KSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEw
ICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKK1BB
VVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjg6NQorICAgICAyNCAgICBmdW5jdGlvbiBlbnRy
eUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworIC0+ICAyNyAgICAgICAgfGludGVybmFsT2Jq
ZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAg
ICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25z
b2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29u
c29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwot
IC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAg
ICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0tLS0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmpl
Y3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9Cisg
ICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gLT4gIDExICAgIH18Ci0gICAgIDEyCi0gICAgIDEz
ICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoz
MDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0t
LQorICAgICAzMgogCiBBQ1RJT046IHJlc3VtZQogUkVTVU1FRApAQCAtNjgsNTcgKzYyLDU3IEBA
IFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qgc2V0
dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitF
WFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3Zlciwg
aW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9s
b2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVi
dWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQor
ICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+
ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0Ug
QVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBm
dW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAt
PiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29s
ZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0g
ICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMwor
ICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAg
ICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAg
ICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1
ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQK
KyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAg
ICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0
ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+
Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAg
IGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5
ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoy
NzoyNAorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkg
eworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAg
IDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElP
TjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmluZGV4IGQxNjhh
NzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDczOGZiYzMxZTMuLmU1YjBkOWM4YjcxOGUxYjI1NmVh
ZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCkBAIC00
LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBpbnRlcm5hbE9iamVjdCA9IHsgdGVzdDogZnVuY3Rp
b24oKSB7fSB9OworCitpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFsT2JqZWN0
ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigidGVz
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwgYAorICAgICAgICAvLyMgc291cmNlVVJMPV9fSW5q
ZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLmpzCisgICAgICAgIGxldCBJ
bnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVybmFsT2JqZWN0IHsKKyAgICAgICAgICAgIHRlc3Qo
aW52b2NhdGlvbk51bWJlcikgeworICAgICAgICAgICAgICAgIGxldCBhID0gNjsKKyAgICAgICAg
ICAgICAgICBsZXQgYiA9IDc7CisgICAgICAgICAgICAgICAgbGV0IGFuc3dlciA9IGEgKiBiOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG5ldyBJbnRlcm5hbE9iamVjdDsK
KyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKICAgICBkZWJ1
Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgIGNvbnNvbGUubG9nKGNvbnNvbGUp
OwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgz
KTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0yMSwzMSArMzksMzEgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNl
dFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246
ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMg
d2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNz
aW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNlIGlu
dGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVv
dXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3RseSB0
byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0aGUg
Y29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBzZXR1
cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFs
U2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIs
Ci0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAgICAg
ICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKGNvbnNvbGUpCi0gICAgICAgICAgICAgICAgImlu
IiwgLy8gY29uc29sZS5sb2coInN0cmluZyIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50
ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2Jq
ZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0
KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwogCiAgICAgYWRk
U3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZvcklu
dGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUg
YWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhlIElu
dGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0
KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxl
IHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBzY3Jp
cHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmpl
Y3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2Ug
dGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNo
YW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0
dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCiAg
ICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNlKTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAgICAg
ICAgICAgICJvdmVyIiwKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5k
b3cpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5s
b2cod2luZG93KV0KLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBj
b25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2Jq
ZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBp
bnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hl
cmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRlc3QoMSldCiAgICAgICAgICAgICAicmVzdW1lIiwK
ICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcsNiArNzUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Q2hlY2tpbmcg
d2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5n
IG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+
Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUg
c3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5n
cy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0
ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODguLjYz
YTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0
CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQQVNT
OiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmlu
ZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBm
aW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2Ny
aXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGlu
ZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0
ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5ZDlh
NWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5LDE0
ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+ICh0
aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAgICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2FkIGV2
ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAgLSBl
dmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcKLSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVybmFs
IHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVybmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZv
dW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lQXR0
cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxTY3Jp
cHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IGZh
bHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7CiAg
ICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24gaXNF
eHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAgLTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJT
Y3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYm
IHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCisg
ICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUg
Pj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5jdGlv
biBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAgICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJM
ID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlwdFNv
dXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuc3Rh
cnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNXaXRo
KCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNlU2Ny
aXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9mKCJD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENoZWNr
SW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAtNzks
MTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICghZm91bmRFdmFsU2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJhbXMp
KQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQg
JiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ICYm
IGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5s
b2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1ZTsK
QEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgUHJvdG9j
b2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQgZmlu
ZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0LCAi
U2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7CiAg
ICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0LCAi
U2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0
LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5k
IEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAgICAg
ICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlw
dCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuIik7
CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBlY3Rl
ZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIpOwog
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKaW5k
ZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMwNjBiZTY4NjQyY2IwM2FiNy4uNDlmNGFmMmMxMzg0
YTQ2NjdiN2ZiZThiYzhlMWZlOGQ3ZWZlNTA5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0
CkBAIC0xLDUgKzEsMTcgQEAKIENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCi1UZXN0
IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2Jz
ZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05TT0xFIE1FU1NBR0U6IGEsYixjCitDT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFNldF0KK0NP
TlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3Qg
TWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTog
W29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09M
RSBNRVNTQUdFOiBjb3VudCBvZiAxCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQor
Q09OU09MRSBNRVNTQUdFOiBoZWxsbworQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0K
K1Rlc3QgdGhhdCBJbmplY3RlZCBTY3JpcHQgb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFibGUg
YnkgdXNlciBjb2RlLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZQpAQCAtOCwzICsyMCwzOCBAQCBQQVNTOiBQYXVzZWQuCiBQQVNTOiBSZXN1bWVk
LgogUEFTUzogQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91
bGQgYmUgMS4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFi
bGU6U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNTOiBS
ZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQg
c2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFT
UzogUmVzdW1lZC4KK1BBU1M6IE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVz
dW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxkIGJl
IDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNl
dC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0
LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVzZWQu
CitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3RyaW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnBy
b3RvdHlwZS5pbmRleAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5
LnByb3RvdHlwZVsiNDIiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpPYmplY3QucHJvdG90eXBlLmRlc3Ry
dWN0dXJlZFByb3BlcnR5CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogT2Jq
ZWN0LnByb3RvdHlwZVsiZmV0Y2hTdGFydCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJs
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxl
Lmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4uZTFi
NmI0NDdlY2Y3MDk4OWRkOTUwMTZmZWQ2MTI4NzIyMDRmYjI0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAgLTMs
MzIgKzMsNTYgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotLy8g
Tk9URTogTW9yZSBjYXNlcyBzaG91bGQgYmUgdGVzdGVkIGFuZCBhZGRyZXNzZWQgYnk6Ci0vLyA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92
ZXJyaWRlbiBidWlsdC1pbnMKLQotZnVuY3Rpb24gdHJpZ2dlckl0ZXJhdGlvbigpIHsKK2Z1bmN0
aW9uIHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwg
aW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24pIHsKKyAgICB0cnkgewogICAgIGxldCBj
YWxsQ291bnQgPSAwOwotCi0gICAgY29uc3Qgb3JpZ2luYWxJdGVyYXRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IpOwot
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRv
ciwgeworICAgIAorICAgIGxldCBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBwcm9wZXJ0eSk7CisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHsKICAgICAgICAgZ2V0KCkgewog
ICAgICAgICAgICAgKytjYWxsQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxJdGVy
YXRvci52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRv
cj8udmFsdWU7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIGxldCBhcnJheSA9IFtdOwotCiAg
ICAgZGVidWdnZXI7CiAKICAgICAvLyBQcmV2aWV3IGFuIG9iamVjdC4KICAgICBjb25zb2xlLmxv
Zyh7YToxLCBiOjIsIGM6e319KTsKIAotICAgIC8vIFVzZSBBcnJheSBJdGVyYXRvciBhdCBsZWFz
dCBvbmNlLgotICAgIGZvciAobGV0IHggb2YgYXJyYXkpIHsgfQorICAgIGludm9rZU92ZXJyaWRk
ZW5Qcm9wZXJ0eUZ1bmN0aW9uKCk7CisKKyAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0
b3IpCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBv
cmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgcHJv
dG90eXBlW3Byb3BlcnR5XTsKKworICAgIHJldHVybiBjYWxsQ291bnQ7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0KK30KKworZnVuY3Rpb24gcmVw
bGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVu
Y3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBsZXQgb3JpZ2luYWxP
YmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAgICAgICR7b2JqZWN0
U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50OworICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAgYCk7
CisKKyAgICBkZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgorICAgIGNvbnNv
bGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFy
cmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAgICBp
bnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb24oKTsKIAorICAgIGV2YWwoYCR7b2JqZWN0U3Ry
aW5nfSA9IG9yaWdpbmFsT2JqZWN0O2ApOworICAgIGNvbnNvbGUubG9nKCJjb3VudCBvZiAiICsg
Y2FsbENvdW50KTsKICAgICByZXR1cm4gY2FsbENvdW50OwogfQogCkBAIC0zNiwzMCArNjAsMTQ4
IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZSIpOwogCi0gICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9uIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uo
e25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5cGVTdHJpbmcsIHByb3BlcnR5U3RyaW5nLCBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNlQW5kVGVzdFByb3RvdHlwZVByb3BlcnR5KCR7cHJv
dG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0cmluZ30sICR7aW52b2tlT3ZlcnJpZGRlblByb3Bl
cnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2AsIChlcnJvciwgcmVzdWx0KSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtwcm90
b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJpbmd9XSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmAp
OworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xl
RmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQu
Iik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmplY3RUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24s
IG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9ufSkgeworICAgICAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0T2JqZWN0
KCIke29iamVjdFN0cmluZ30iLCAke2ludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50b1N0
cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke29iamVjdFN0cmluZ30gY2FsbCBj
b3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBhdXNl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNh
dGNoKHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3Rv
dHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVy
YXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0gICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0aW9uKClgLCAoZXJyb3IsIHJlc3VsdCkgPT4gewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAiQXJy
YXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4iKTsK
LSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Cisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkgaXRlcmF0aW9uIGluIEluamVjdGVkIFNjcmlwdCBz
aG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJy
YXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3Ii
LAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAg
ICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwgImIiLCAiYyJdOworICAgICAgICAgICAgZm9yIChs
ZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGFycmF5KTsKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5
bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNldCBpdGVyYXRpb24gaW4g
SW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90
b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJT
eW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlv
bjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQoWyJhIiwgImIiLCAiYyJd
KTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Ygc2V0KSB7IH0KKworICAgICAgICAgICAgY29u
c29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVBy
b3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjog
Ik1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJs
ZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJNYXAucHJvdG90eXBlIiwKKyAgICAgICAg
cHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IG1hcCA9IG5ldyBN
YXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0sIFsiYyIsICIzIl1dKTsKKyAgICAgICAgICAgIGZv
ciAobGV0IHggb2YgbWFwKSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2cobWFwKTsKKyAg
ICAgICAgfSwKICAgICB9KTsKIAorICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUu
cHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3Jp
cHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzog
IkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAor
ICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAg
ICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAg
ICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxk
IG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90
b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNl
dCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9
KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2Ny
aXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4g
SW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmpl
Y3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rp
b246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAg
ICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRl
eCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT3ZlcnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkgcHJv
dG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAg
ICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVy
dHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5j
dGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBh
cnJheS5wdXNoKCJoZWxsbyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAg
ICAgICAgICAgYXJyYXlbNDJdOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJvcGVydHkiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVjdHVyaW5nIChmb3IgYG9wdGlvbnNgIHBhcmFtZXRl
cnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAg
ICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5
U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVy
dHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0Owor
ICAgICAgICB9LAorICAgIH0pOworCisKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08
cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBu
b3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgorPHA+VGVzdCB0aGF0IEluamVjdGVkIFNj
cmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Jl
bW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21v
ZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJlYTRm
OWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJiNTM5
Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAg
RVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsgZXJy
b3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAg
ICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBc
bmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAi
CisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29k
ZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3MCw3
IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNhdGNo
IChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0
YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZXZh
bEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
QFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZhbEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUgY29k
ZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAg
ICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNTSU9O
OiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxpdFRl
eHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAg
ICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2
ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZl
IGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0
aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5AW25h
dGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAgICAgewog
ICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVhYzBm
YmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIzMDMz
YTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzogQ2Fw
dHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAg
ICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVk
PiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAgICAiY29s
dW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgICAg
IH0KICAgICAgICAgICBdLAogICAgICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAt
MTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5j
dGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElk
IjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4i
LAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAg
ICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4IEBA
IFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwK
ICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4i
LAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIi
OiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJj
b2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJm
cmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJiMzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4ODc4
MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApAQCAt
NDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgLy8gVG8gYXZvaWQgZmxha2lu
ZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2UgYWx3YXlzIGV4cGVjdC4KICAgICBjb25zdCBl
dmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5kZXJpbmdGcmFtZSIsICJDb25zb2xlUHJvZmls
ZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9uQ2FsbCJdKTsKKworICAgIC8vIFRoZSBpbnNw
ZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQgbGluZSBu
dW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVidWcgYnVpbGRzLiBXZSBvbmx5CisgICAgLy8g
d2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZvciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZyYW1l
cyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGluZS9jb2x1bW4gbnVtYmVycyByZW1haW4gc3Rh
YmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5ndGggPSAwOworICAgIGxldCB1cmxMZW5ndGgg
PSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAo
a2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAgICAgICAgICAgZnVuY3Rpb25OYW1lTGVuZ3Ro
ID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAiY2hpbGRyZW4iICYmIHRoaXMuc3RhcnRUaW1l
KQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihlID0+IGV2ZW50QWxsb3dsaXN0Lmhh
cyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9PT0gInN0YXJ0VGltZSIgfHwga2V5ID09PSAi
ZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQiIHx8IGtleSA9PT0gImZyYW1lSWQiKQogICAg
ICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgaWYgKChrZXkgPT09ICJsaW5l
TnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVuZ3Ro
ICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisgICAg
ICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAgICAgICAgdXJsTGVuZ3RoID0gdmFsdWUubGVu
Z3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJsIiB8fCBrZXkgPT09ICJzY3JpcHROYW1lIikK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wvaW5zcGVj
dG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi1leHBlY3RlZC50eHQKaW5kZXggYzk2MmQ2ODEwMWNmNDczMTVkNWUwMWRjM2YwZDNmZTM1
OWQ2MjU0Ny4uNTZkMTg0MDhiZGRlOWE3YjA3MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKQEAgLTYwLDggKzYwLDggQEAgUEFT
UzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAg
ICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0g
ICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3
CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVt
bk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1l
SWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCArMTEzLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0
YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIsCiAgICAgICAidXJsIjogIiIsCiAgICAg
ICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAibGluZU51bWJlciI6IDE0MSwKLSAg
ICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgfQogICBdLAogICAiZnJh
bWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJpbmcg
c3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQxLAot
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+
IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJm
cmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458877</attachid>
            <date>2022-05-05 09:02:35 -0700</date>
            <delta_ts>2022-05-05 17:25:28 -0700</delta_ts>
            <desc>Patch v1.9 - Only a LinkTimeConstant</desc>
            <filename>bug-152294-20220505090235.patch</filename>
            <type>text/plain</type>
            <size>4387</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDM5MTg2YjI1NmZmNjlmZmE3MWMzZGMxNTVmNzRhNzg2MTAyMTRhLi4wMmM2ZTkxNDI5MWVlN2U3
MmQzYWU4YjY3NGQ3M2U0ZmQ0OTU0ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNS0wNSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBqc21pbiB0byAzLjAuMQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0ODNlODcxZTc0M2E5
YTEyYjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjY4MDlmMjBjNGIwZmYyMTI1NjE5MDYxMTcyMzA5
MzM4MjViMjJmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgKQEAgLTE5Miw2ICsxOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhj
cmVhdGVSZW1vdGVGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUmVtb3RlRnVuY3Rpb24pIFwKICAg
ICBtYWNybyhhcnJheVNvcnQpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKIAogCiBuYW1lc3BhY2Ug
U3ltYm9scyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
a1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4NjkwOGI5MGY5OWNiMGNlNzQ2ZjAxOWJkM2VkNzIz
Li5hZTY2ZDk1YzVjYTBiNTNmM2E5M2E1MTAwMGEzNTJlZTU5NzUzZTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEyMCw2
ICsxMjAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGNyZWF0ZVJlbW90ZUZ1bmN0
aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1JlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAg
dihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KFN0cmluZywgbnVsbHB0cikgXAogCiAKICNk
ZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBk
MTQ0MTI0OGY2ZTJmMjZmZWM4M2M5NWZjNjcxNmJjMGQyMTQzNDE5Li5jNzkzNWYyODY2OTYxMTBh
NWY1MTQ0NmIzMWRjMWY1YjM1NjJlY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMDc0LDggKzEwNzQsMTAgQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fc3RyaW5n
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UHJv
bWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnRlcm5h
bFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpTdHJpbmcpXS5zZXQodm0sIHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAKICAg
ICBtX2V2YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NT
dHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CkBAIC0yMTg0LDYgKzIxODYsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0
cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1
Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdHJpbmdDb25z
dHJ1Y3Rvcik7CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNp
dG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggYTBhYWVkMzQ3ODdhZjY2YTRlYzI4MzJjYjc4NDdmYWYyOGE0ZmE5Yi4uZTk0ODYwM2UyY2Vj
YTI5NTVhMmVkMjcxNTRiYjNiMDE0OTcxYWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgU2V0
SXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2Rl
OwogY2xhc3MgU291cmNlT3JpZ2luOworY2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7CiBjbGFzcyBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50
Owogc3RydWN0IEFjdGl2YXRpb25TdGFja05vZGU7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHVibGlj
OgogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VD
b25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
cj4gbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8U3RyaW5n
Q29uc3RydWN0b3I+IG1fc3RyaW5nQ29uc3RydWN0b3I7CiAKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458928</attachid>
            <date>2022-05-05 17:25:32 -0700</date>
            <delta_ts>2022-05-06 13:51:30 -0700</delta_ts>
            <desc>Patch v1.10 - This seems to actually pass the tests on Windows - still needs cleanup</desc>
            <filename>bug-152294-20220505172531.patch</filename>
            <type>text/plain</type>
            <size>155405</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGFmMzcwNWZjNTU3ZDczMjNmNGJmMGVjZjA0ZTIzYzI4NjlkMWM1Li4xOWVjYmZmNzU2ZDE2ZmJl
NmVhZDZiNmM2N2IwZjJhNDQ2MzlkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wNSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBwYXJ0aWFsIHJldmVydCBvZiByMjkzODEzIGJl
Y2F1c2Ugb2YgcHJvcG9zYWwncyBpc3N1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMDg1MjFkOTIwOTlhMzYx
MWRmODdlZTg4NTBhZTlkYTRmNWVkYWQ4Li41NGFmYmJkMzNiZWE5MzIxNDZmY2U3OTBkYjRmMDlj
MWE1ZThjNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDUtMDUgIFBhdHJp
Y2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBh
cnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQg
bm9uLXVzZXItb3ZlcnJpZGVuIEpTQyBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IERl
dmluIFJvdXNzby4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBjb250YWlu
aW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5q
ZWN0TW9kdWxlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVB
UElNb2R1bGU6OnNvdXJjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlLmg6CisgICAgICAgIC0gUHJvdmlkZSBhIEpTRnVuY3Rpb24gZm9y
IG1vZHVsZSBpbmplY3Rpb24gaW5zdGVhZCBvZiByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM6CisgICAgICAgIC0gU2lt
aWxhciB0byBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMs
IHVzZSBwcml2YXRlIG5hbWVzIGZvciBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMKKyAgICAgICAg
dGhyb3VnaG91dCB0byBnZXQgbm9uLXVzZXItb3ZlcnJpZGRlbiBidWlsdGlucy4KKyAgICAgICAg
LSBJbiBgbm9ybWFsaXplRXZlbnRUeXBlc2AgdXNlIGEgU2V0IGluc3RlYWQgb2YgYW4gYXJyYXks
IHNpbmNlIHdlIGFyZSBwcm9jZXNzaW5nIHVzZXItcHJvdmlkZWQgdHlwZXMgdGhhdCBtYXkKKyAg
ICAgICAgYmUgcmVwZWF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3Zl
ciBhbGwgdGhlIHR5cGVzIHRvIGluc2VydCB0aGVtIGluIHRoZSBzZXQsIGJ1dCBzaW5jZQorICAg
ICAgICBgQGFycmF5UHVzaGAgZG9lc24ndCBzdXBwb3J0IHB1c2hpbmcgbXVsdGlwbGUgdmFsdWVz
IGF0IHRoZSBzYW1lIHRpbWUgdGhpcyBpcyBubyBtb3JlIHdvcmsgdGhhbiB1c2luZyBhbiBBcnJh
eS4KKwogMjAyMi0wNS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYWxscyB0byBDYWNoZWRSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyIGFuZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE1N2IxYTc2NGIxNzY2YjViYWMxMDUyNmVhYjg2
ZDI0MWM1MWFkODkuLmU2ZWQ3ZWQ0MDYzN2JhNTJmMTI1MjA4N2NiZjk2YTI4OGY1YjRjZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM2NCw2ICszNjQsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9XZWJBc3NlbWJseS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKICkKIAogYWRkX2N1c3RvbV9jb21t
YW5kKApAQCAtMTQwNSwxNyArMTQwNiw2IEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hF
QURFUlMKICAgICAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0pTQ0J1aWx0
aW5zLmgKICkKIAotYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLmggJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMK
LSAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcwotICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUn0veHhkLnBsICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2pzbWluLnB5Ci0gICAg
Q09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3Rl
ZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAke0phdmFTY3JpcHRDb3JlX0RFUklW
RURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAgIENPTU1BTkQg
JHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4u
cHkgPCAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzID4+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0veHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzICR7SmF2
YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaAotICAgIFZFUkJBVElNKQotCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFE
RVJTICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaCkKLQogaWYgKFdURl9DUFVfWDg2XzY0KQogICAgIGlmIChNU1ZDIEFORCBOT1QgRU5B
QkxFX0NfTE9PUCkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IDhkNTQwYmQ1MTkyMTdiNTUyYmYwNjA5OGM5ZGRjMmEyNzRmMzM0MGIuLmY3YjNkYjdiNjFkMzA2
MDdlOGE2ZmI1MTQzYTRjMjRlYWQyMjg4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTIxLDcgKzIxLDYg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0dl
bmVyYXRlZFdhc21PcHMuYXNtCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5pdEJ5dGVjb2Rlcy5hc20KICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0V2Fz
bS5hc20KLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjdmMmM2ODU0ZjhhMWJh
MTNjMDk1ZjdlMTU0ZjY4ZTk3Y2JmMzkxLi4xZmI2MjNjZDZmNmU4ZDg5ODdmOTQ4MDQ1NDRmMGQ0
NGU1YjM1ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtNjgsNyArNjgsNiBAQCBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlw
dENvcmUpL1NjcmlwdHMKIAogLlBIT05ZIDogYWxsCiBhbGwgOiBcCi0gICAgSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuaCBcCiAgICAgTGV4ZXIubHV0LmggXAogICAgIEtleXdvcmRMb29rdXAuaCBcCiAg
ICAgUmVnRXhwSml0VGFibGVzLmggXApAQCAtMTM4LDYgKzEzNyw3IEBAIEphdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlw
ZWRBcnJheUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9U
eXBlZEFycmF5UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9X
ZWJBc3NlbWJseS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzIFwKICMKIAogIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5k
cyBvbiB0aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbwpA
QCAtMzY4LDEyICszNjgsNiBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpz
IDogQ29tYmluZWREb21haW5zLmpzb24gJChJTlNQRUNUT1JfR0VORVJBVAogCSQoUEVSTCkgJChK
YXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9wcmVwcm9jZXNzLnBsIC0t
aW5wdXQgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcy5pbiAtLWRlZmluZXMg
IiQoRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykiIC0tb3V0cHV0IGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIAkkKERFTEVURSkgaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcy5pbgogCi1JbmplY3RlZFNjcmlwdFNvdXJjZS5oIDogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pz
bWluLnB5ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAotCWVjaG8gIi8vIyBz
b3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyIgPiAuL0lu
amVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9qc21pbi5weSA8ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyA+PiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotCSQoUEVS
TCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIEluamVjdGVkU2NyaXB0U291
cmNlX2pzIC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzIEluamVjdGVkU2NyaXB0U291cmNl
LmgKLQkkKERFTEVURSkgSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0KIEFJUl9PUENPREVf
RklMRVMgPSBcCiAgICAgQWlyT3Bjb2RlLmggXAogICAgIEFpck9wY29kZVV0aWxzLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMmQwOTEzMjBkMTZlN2M5MWQwMzY4YThiMjMw
ZjU5MjcxY2ZmZDE3Li4yNGQ0YmU4NmI5YzE1ZmRjNmQyN2Q3M2JhOTBlZmE4OTkwMzRkMmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAKIAkJQTUx
M0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QjkxODVCRkFDQzAwN0U5
NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
Ki87IH07CiAJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUxM0U1QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmggKi87IH07Ci0JCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07
CiAJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1
Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3
Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTE0QjJDMTE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTUyQzk1RkYyMTU5RDQzMjAwN0Q4QUMwIC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzRDIxNTlE
NDFFMDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc1MSw2ICszNzUwLDcgQEAKIAkJMkFE
MkVERkExOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbnVtZXJhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9uU2NvcGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFERkEyNjIxOEVGMzU0MDAwNEY5RkND
IC8qIEdDTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
Q0xvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRjAwRDI4MTcx
QUMwMDAzNzFBMjUgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBTaGFkb3dSZWFsbVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21UeXBlRGVmaW5pdGlv
bklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVR5cGVEZWZp
bml0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTc3MEM0RjI3
Qjk0Q0U0MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzA3LDcgKzQ3MDcsNiBAQAogCQlBNTEz
RTVCQzE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVCRDE4
NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1QzMxODVGOTJDOTAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MTNFNUM2
MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNF
NUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTRCMkMwMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5q
ZWN0ZWRTY3JpcHRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyODQs
NyArNzI4Myw2IEBACiAJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90
eXBlLmx1dC5oICovLAogCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQ
cm90b3R5cGUubHV0LmggKi8sCiAJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRC
eXRlY29kZXMuYXNtICovLAotCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEw
MjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExNTg3RDczMUI0REMx
QzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAg
LTkzNjMsNiArOTM2MSw3IEBACiAJCQkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8qIFJlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTUzNEQ5QkY4MjM2M0M1NUQwMDU0
NTI0RCAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKIAkJCQk3MDM1NTg3RDFDNDE4NDE5
MDA0QkQ3QkYgLyogU2V0UHJvdG90eXBlLmpzICovLAorCQkJCTJFM0FGMDBEMjgxNzFBQzAwMDM3
MUEyNSAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM2MDFCNjVEOUIx
MDA5REIxRUYgLyogU3RyaW5nQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNjExQjY1RDlC
MTAwOURCMUVGIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCUExRTA0NTFC
MUMyNUI0QjEwMEJCNjYzQyAvKiBTdHJpbmdQcm90b3R5cGUuanMgKi8sCkBAIC0xMDQ1Miw3ICsx
MDQ1MSw2IEBACiAJCQkJQTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjExODdCN0I4
NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlB
NTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5NTlFOTMyMUJEMTgyNzkwMDFBQTQxMyAvKiBpbmxpbmUtYW5kLW1pbmlm
eS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTc5MDVCQjY5
MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
OEE3QkYwMUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
LApAQCAtMTIzODAsNyArMTIzNzgsNiBAQAogCQkJCTUzNkIzMTdBMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMTA3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTI3MUY3MUM1
OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTA4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUz
NkIzMTJDMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTA5LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2Uu
YyBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTc0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlMTEwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTc3MUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMTExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTgwMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTEyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTI0MDksNyArMTI0MDYsNiBAQAogCQkJCTUzNkIzMTlEMUY3MzVFN0QwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMTM1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNUMyNDZDMUY3QTE3NzgwMDZF
QzQwRSAvKiBVbmlmaWVkU291cmNlMTM2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJD
MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM3LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4g
U291cmNlcyAqLywKIAkJCQk1MzBBNjZCRDFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJj
ZTEzOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBBNjZCRTFGQTNFNzhCMDAyNkE1NDUgLyog
VW5pZmllZFNvdXJjZTEzOS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzBBNjZCRjFGQTNFNzhC
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0MC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEyNDIw
LDcgKzEyNDE2LDYgQEAKIAkJCQk1MzBBNjZDNDFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTE0NS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVGMjI2OEZCQzdCMDBENjAxQzQg
LyogVW5pZmllZFNvdXJjZTE0Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTVFRTI2OEZC
QkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0Ny5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlF
MzExMzVDOTI4MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEYxNUU3MjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ4LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYwMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVk
U291cmNlMTQ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVCMjY4RkJCQjYwMEQ2MDFD
NCAvKiBVbmlmaWVkU291cmNlMTUwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MzAsNiArMTI0
MjUsOSBAQAogCQkJCTUzOEYxNUVBMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTU0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVGMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlm
aWVkU291cmNlMTU1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNUM5Q0RGMjIwMjg1ODMwMDgy
REJGRCAvKiBXYXNtQWlySVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxMTM1
QzkyODFCNUIwMDAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgaW4gU291cmNlcyAqLywK
KwkJCQlFMzExMzVDQTI4MUI1QjAzMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJCYXNlLmMgaW4g
U291cmNlcyAqLywKKwkJCQlFMzExMzVDQjI4MUI1QjA1MDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0
ZXJJbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQppbmRleCA2NWRjMTVj
Y2FkZjVmMDBhNmYyZjQ5MDEwNzMwMTk3OWE4NmQxNjg3Li4zODc0ZGQ0MmYyNzYwZjM0ZTg2ZDhk
YzgxODYxYTUyZWM4OGZlM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKQEAgLTUyLDYgKzUyLDcg
QEAgZnVuY3Rpb25Jc0FzeW5jUmVnRXhwID0gcmUuY29tcGlsZShyIihhc3luYyk/XHMqZnVuY3Rp
b24iLCByZS5NVUxUSUxJTkUgfCByZS5ET1QKIGZ1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBp
bGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiBm
dW5jdGlvbk92ZXJyaWRkZW5OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIi4qXkBvdmVycmlkZGVu
TmFtZT0oXCIuK1wiKSQiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiBmdW5jdGlvblBhcmFt
ZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeKD86YXN5bmNccyspP2Z1bmN0aW9uXHMrKD86XHcr
KVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElO
RSB8IHJlLkRPVEFMTCkKK2Z1bmN0aW9uUGFyYW1ldGVyc1NwbGl0dGVyID0gcmUuY29tcGlsZShy
IixccyooPyFbXnt9XSpcfSkiLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCiAKIG11bHRpbGlu
ZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUg
fCByZS5ET1RBTEwpCiBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wv
Lio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCkBAIC0xNDUsNyArMTQ2LDcgQEAgY2xh
c3MgQnVpbHRpbkZ1bmN0aW9uOgogICAgICAgICBpc19uYWtlZF9jb25zdHJ1Y3RvciA9IGZ1bmN0
aW9uTmFrZWRDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbl9zb3VyY2UpICE9IE5vbmUK
ICAgICAgICAgaWYgaXNfbmFrZWRfY29uc3RydWN0b3I6CiAgICAgICAgICAgICBpc19jb25zdHJ1
Y3RvciA9IFRydWUKLSAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVu
Y3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdLnNwbGl0KCcs
JyldCisgICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFy
YW1ldGVyc1NwbGl0dGVyLnNwbGl0KGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVu
Y3Rpb25fc291cmNlKVswXSldCiAgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgog
ICAgICAgICAgICAgcGFyYW1ldGVycyA9IFtdCiAKQEAgLTMwMywyMSArMzA0LDU1IEBAIGNsYXNz
IEJ1aWx0aW5zQ29sbGVjdGlvbjoKICAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQogICAgICAg
ICBzdGFydCA9IDAKICAgICAgICAgZW5kID0gMAorCiAgICAgICAgIGZvciBtYXRjaCBpbiBtYXRj
aGVzOgogICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCiAgICAgICAgICAgICBpZiBz
dGFydCA8IGVuZDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZW5kID0g
bWF0Y2guZW5kKCkKICAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6Ci0gICAgICAg
ICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAg
ICAgICBkZXB0aCA9IDEKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGlz
RXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQorICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0
Q2hhcmFjdGVyID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgotICAgICAgICAg
ICAgICAgIGlmIHRleHRbZW5kXSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0g
ZGVwdGggKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgotICAgICAg
ICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgICAgICAgICBlbmQgKz0gMQorICAgICAgICAgICAgICAgIGN1cnJlbnRD
aGFyYWN0ZXIgPSB0ZXh0W2VuZF0KKworICAgICAgICAgICAgICAgIGlmIGlzRXNjYXBpbmdDaGFy
YWN0ZXI6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBGYWxzZQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgY3VycmVu
dENoYXJhY3RlciBpbiAiYCdcIiI6CisgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRTdHJp
bmdTdGFydENoYXJhY3RlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dFN0cmluZ1N0YXJ0Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAg
ICAgICBlbGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVy
OgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYg
Y3VycmVudENoYXJhY3RlciA9PSAnXFwnIGFuZCBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBpbmdDaGFyYWN0ZXIgPSBU
cnVlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzIzOTgxNz4gUmVndWxhciBleHByZXNzaW9ucyBjb250YWluaW5n
IHVuYmFsYW5jZWQgcXVvdGF0aW9uIG1hcmtzIChsaWtlIHRoZSBvbmUKKyAgICAgICAgICAgICAg
ICAjIGZvdW5kIGluIGBTdHJpbmdQcm90b3R5cGUuanNgJ3MgYGNyZWF0ZUhUTUxgKSBjYW4gY29u
ZnVzZSB0aGUgc3RhdGUgb2YgdHJhY2tpbmcgb3VyIGJlaW5nCisgICAgICAgICAgICAgICAgIyBp
bnNpZGUvb3V0c2lkZSBhIHN0cmluZy4gVG8gd29yayBhcm91bmQgdGhpcywganVzdCByZXNldCBv
dXIgc3RyaW5nIHN0YXRlIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lCisgICAgICAgICAgICAgICAg
IyAodW5sZXNzIHdlIGFyZSBpbnNpZGUgYSB0ZW1wbGF0ZSBzdHJpbmcpLiBUaGlzIHdpbGwgd29y
ayB1bmxlc3MgYSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMKKyAgICAgICAgICAgICAgICAj
IHVuYmFsYW5jZWQgY3VybHkgYnJhY2tldHMgb3IgYSBjbG9zaW5nIGN1cmx5IGJyYWNrZXQgd2Ug
Y2FyZSBhYm91dCBpcyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBlYXJsaWVyCisgICAgICAgICAg
ICAgICAgIyByZWd1bGFyIGV4cHJlc3Npb24gd2l0aCBhbiB1bmJhbGFuY2VkIHF1b3RlLgorICAg
ICAgICAgICAgICAgIGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xuJyBhbmQgY3VycmVudFN0cmlu
Z1N0YXJ0Q2hhcmFjdGVyICE9ICdgJzoKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmlu
Z1N0YXJ0Q2hhcmFjdGVyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgY3Vy
cmVudENoYXJhY3RlciA9PSAneyc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKyAg
ICAgICAgICAgICAgICBlbGlmIGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ30nOgorICAgICAgICAgICAg
ICAgICAgICBkZXB0aCAtPSAxCisKKyAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAgICAgICBm
dW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQogCiAgICAgICAgIGZ1bmN0aW9uU3Ry
aW5ncyA9IFt0ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0
aW9uQm91bmRzXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA4ODhjOGJhZTQzNWY4ODYzZjQ4MGRkODFlNDU1NjZk
NzhiNjFlZmE3Li43MDk5MjZhZTczODY5MDdkYmQ0OWIxZDBmNWQ1MzYxNWYzNGU4NWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBpID0gcGFyYW1ldGVyc1N0YXJ0ICsgMTsKICAgICAgICAgdW5z
aWduZWQgY29tbWFzID0gMDsKKyAgICAgICAgYm9vbCBpbnNpZGVDdXJseUJyYWNrZXRzID0gZmFs
c2U7CiAgICAgICAgIGJvb2wgc2F3T25lUGFyYW0gPSBmYWxzZTsKICAgICAgICAgYm9vbCBoYXNS
ZXN0UGFyYW0gPSBmYWxzZTsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTExMyw3ICsxMTQs
MTMgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJz
W2ldID09ICcpJykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYgKGNo
YXJhY3RlcnNbaV0gPT0gJywnKQorICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJ30n
KQorICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJ3snIHx8IGluc2lkZUN1cmx5QnJhY2tldHMp
IHsKKyAgICAgICAgICAgICAgICBpbnNpZGVDdXJseUJyYWNrZXRzID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJywnKQogICAgICAgICAgICAgICAgICsrY29tbWFzOwog
ICAgICAgICAgICAgZWxzZSBpZiAoIUxleGVyPExDaGFyPjo6aXNXaGl0ZVNwYWNlKGNoYXJhY3Rl
cnNbaV0pKQogICAgICAgICAgICAgICAgIHNhd09uZVBhcmFtID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA1NDgzZTg3MWU3NDNh
OWExMmIyY2UzMGRkZmMyYTAwYzUyYWViYzVkLi43MjkxZmEyZDViMmZiMWExNzU3ZTFlMTA1Y2Vj
MzFiOTRjYTRkZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCkBAIC0xOTIsNiArMTkyLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oaXNSZW1vdGVGdW5jdGlvbikgXAog
ICAgIG1hY3JvKGFycmF5U29ydCkgXAorICAgIG1hY3JvKGpzb25QYXJzZSkgXAorICAgIG1hY3Jv
KGpzb25TdHJpbmdpZnkpIFwKKyAgICBtYWNybyhTdHJpbmcpIFwKKyAgICBtYWNybyhzdWJzdHIp
IFwKKyAgICBtYWNybyhlbmRzV2l0aCkgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcikgXAorICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKKyAgICBtYWNybyhnZXRP
d25Qcm9wZXJ0eVN5bWJvbHMpIFwKKyAgICBtYWNybyhoYXNPd24pIFwKKyAgICBtYWNybyhpbmRl
eE9mKSBcCisgICAgbWFjcm8ocG9wKSBcCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKaW5kZXgg
MjYzZTQzYmZjMGU4MzExNjA1MDJhOTg1ZTI0MWFlMDdjNzdlZTJmNC4uYjE5ODZlODg1MzBjZWM2
NjJjMTlmZmVhZTc1YTM0Yjc1ZTg2ZmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCkBAIC01MSwzICs1MSw0MyBAQCBmdW5jdGlv
biBwZXJmb3JtSXRlcmF0aW9uKGl0ZXJhYmxlKQogICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVz
dWx0LCBpbmRleCsrLCBpdGVtLnZhbHVlKTsKICAgICB9CiB9CisKK0BnbG9iYWxQcml2YXRlCitm
dW5jdGlvbiB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3IpCit7CisgICAgbGV0IHdyYXBwZXIgPSBA
T2JqZWN0LkBjcmVhdGUobnVsbCk7CisgICAgd3JhcHBlci5AQGl0ZXJhdG9yID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpdGVyYXRvcjsgfQorICAgIHJldHVybiB3cmFwcGVyOworfQorCitAZ2xvYmFs
UHJpdmF0ZQorZnVuY3Rpb24gYnVpbHRpblNldEl0ZXJhYmxlKHNldCkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisgICAgCisgICAgaWYgKCFAaXNTZXQoc2V0KSkKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJidWlsdGluU2V0SXRlcmFibGUgY2FsbGVkIHdpdGggbm9uLVNldCBvYmplY3QuIik7CisK
KyAgICAvLyBVc2luZyB0aGUgcHJpdmF0ZSBAQGl0ZXJhdG9yIG9ubHkgZ3VhcmFudGVlcyB0aGF0
IHRoZSBzeW1ib2wgaXRzZWxmIGhhcyBub3QgYmVlbiBtb2RpZmllZCwgYnV0IGRvZXMgbm90IHBy
b3RlY3QKKyAgICAvLyBhZ2FpbnN0IHRoZSBpdGVyYXRvciBpdHNlbGYgaGF2aW5nIGJlZW4gcmVw
bGFjZWQuIEZvciBTZXRzLCBgQHZhbHVlc2AgaGFzIGEgY29weSBvZiB0aGUgZnVuY3Rpb24gb3Jp
Z2luYWxseQorICAgIC8vIHBsYWNlZCBhdCBgU3ltYm9sLml0ZXJhdG9yYC4KKyAgICBsZXQgaXRl
cmF0b3JGdW5jdGlvbiA9IHNldC5AdmFsdWVzOworICAgIAorICAgIHJldHVybiBAd3JhcHBlZEl0
ZXJhdG9yKGl0ZXJhdG9yRnVuY3Rpb24uQGNhbGwoc2V0KSk7Cit9CisKK0BnbG9iYWxQcml2YXRl
CitmdW5jdGlvbiBidWlsdGluTWFwSXRlcmFibGUobWFwKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KyAgICAKKyAgICBpZiAoIUBpc01hcChtYXApKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoImJ1
aWx0aW5NYXBJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tTWFwIG9iamVjdC4iKTsKKworICAgIC8v
IFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRoYXQgdGhlIHN5
bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3QgcHJvdGVjdAor
ICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiByZXBsYWNlZC4g
Rm9yIE1hcHMsIGBAZW50cmllc2AgaGFzIGEgY29weSBvZiB0aGUgZnVuY3Rpb24gb3JpZ2luYWxs
eQorICAgIC8vIHBsYWNlZCBhdCBgU3ltYm9sLml0ZXJhdG9yYC4KKyAgICBsZXQgaXRlcmF0b3JG
dW5jdGlvbiA9IG1hcC5AZW50cmllczsKKworICAgIHJldHVybiBAd3JhcHBlZEl0ZXJhdG9yKGl0
ZXJhdG9yRnVuY3Rpb24uQGNhbGwobWFwKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYzQ3ZWVlYmE4NjkwOGI5MGY5
OWNiMGNlNzQ2ZjAxOWJkM2VkNzIzLi5iODY1M2U4NjU2OTkzMWZjYmI2ZTJmNGI0MjU0OGM0YjBj
NmUxMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgKQEAgLTEyMCw2ICsxMjAsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAg
ICB2KGNyZWF0ZVJlbW90ZUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihpc1JlbW90ZUZ1bmN0
aW9uLCBudWxscHRyKSBcCiAgICAgdihhcnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KGpzb25Q
YXJzZSwgbnVsbHB0cikgXAorICAgIHYoanNvblN0cmluZ2lmeSwgbnVsbHB0cikgXAorICAgIHYo
U3RyaW5nLCBudWxscHRyKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFO
VChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGNiMDYzNDAyYmYxMjJl
YWUxNjk4ZWJhMmE3YmI3ZjRkNzZlZjk3NzAuLjIyZDFiY2U3ZWFiMGZhZjE1NGUwODc1YjdjMGM3
NmRjZGJkMWMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAorI2lu
Y2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5o
IgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlNvdXJjZUNvZGUuaCIKQEAgLTEzNSwyNSArMTM1LDE4IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjbGVhckV4Y2VwdGlvblZhbHVlKCkKICAgICAgICAgaW5qZWN0ZWRTY3Jp
cHQuY2xlYXJFeGNlcHRpb25WYWx1ZSgpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVkU2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0
ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxF
eGNlcHRpb24+PiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNv
bnN0IFN0cmluZyYgc291cmNlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgaWQp
CitFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0
TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgaW50IGlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0gbWFrZVNvdXJjZShzb3VyY2UsIHsg
fSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbFRo
aXMoKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAg
ICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyID0gbV9lbnZpcm9ubWVu
dC5ldmFsdWF0ZUhhbmRsZXIoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBldmFsdWF0
ZUhhbmRsZXIoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1
YXRpb25FeGNlcHRpb24pOwotICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byogZnVu
Y3Rpb25WYWx1ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0KSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbWFrZVVuZXhwZWN0ZWQoc2NvcGUuZXhj
ZXB0aW9uKCkpKTsKKyAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb25WYWx1
ZSk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCkBAIC0x
NjYsNyArMTU5LDcgQEAgRXhwZWN0ZWQ8SlNPYmplY3QqLCBOYWtlZFB0cjxFeGNlcHRpb24+PiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2MKICAgICBBU1NFUlQoIWFyZ3Mu
aGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7
Ci0gICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJldHVybiByZXN1
bHQuZ2V0T2JqZWN0KCk7CiB9CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBJbmplY3RlZFNjcmlwdCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAogICAgIGludCBpZCA9
IGluamVjdGVkU2NyaXB0SWRGb3IoZ2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIGNyZWF0ZVJlc3Vs
dCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGdsb2JhbE9i
amVjdCwgaWQpOworICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQo
Z2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgaWYgKCFjcmVhdGVSZXN1bHQpIHsKICAgICAgICAgYXV0
byYgZXJyb3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJUKGVycm9yKTsK
QEAgLTE5NywxMiArMTkwLDEwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGlm
IChzdGFjay5zaXplKCkgPiAwKQogICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRD
b2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciB3aGVuIGNy
ZWF0aW5nIGluamVjdGVkIHNjcmlwdDogJXMgKCVkOiVkKVxuIiwgZXJyb3ItPnZhbHVlKCkudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzXG4iLCBpbmplY3RlZFNjcmlwdFNvdXJjZSgpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAg
ICBpZiAoIWNyZWF0ZVJlc3VsdC52YWx1ZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiTWlz
c2luZyBpbmplY3RlZCBzY3JpcHQgb2JqZWN0Iik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNc
biIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCAxZjc0
MGM0MDY4NDUzNjZhNzU5YmEwYWY0YzhjMzI3Nzc0OTU0OGVhLi5iNTQxMDEyZWY0YmI0YmYyMmU3
YWUzODJiZmYxNTk4NWFjOTlhMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTc1LDggKzc1LDcgQEAg
cHJvdGVjdGVkOgogICAgIEhhc2hNYXA8SlNDOjpKU0dsb2JhbE9iamVjdCosIGludD4gbV9zY3Jp
cHRTdGF0ZVRvSWQ7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNl
KCk7Ci0gICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
Pj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBpbnQgaWQpOworICAgIEV4cGVjdGVkPEpTQzo6SlNPYmplY3QqLCBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4+IGNyZWF0ZUluamVjdGVkU2NyaXB0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBpbnQgaWQpOwogCiAgICAgSW5zcGVjdG9yRW52aXJvbm1lbnQmIG1fZW52aXJvbm1lbnQ7
CiAgICAgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEyZWQ2ZmJlODZiODk3NDEyZjQ4ZmQ1ZTlhMTEu
LjBiNjc1ZTg0NDY2OTA2MDIxMjM4N2ZkYjRiYWQ1ZDBhNjU3OGY4MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwCkBAIC03NCwxMyArNzQsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJl
SW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAg
aWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFu
ZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4g
Y2FsbGluZyAnaGFzSW5qZWN0ZWRNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1l
KCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3Jp
cHQuZ2xvYmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiJXNcbiIsIHNvdXJjZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBpZiAoIWhhc0luamVjdGVk
TW9kdWxlUmVzdWx0LnZhbHVlKCkuaXNCb29sZWFuKCkgfHwgIWhhc0luamVjdGVkTW9kdWxlUmVz
dWx0LnZhbHVlKCkuYXNCb29sZWFuKCkpIHsKICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJpbmplY3RNb2R1bGUiX3MsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJv
bm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChuYW1lKCkpOwotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2Uo
KSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZShpbmplY3RN
b2R1bGVGdW5jdGlvbihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsKICAgICAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGluamVj
dGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0TW9kdWxlUmVz
dWx0ID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9u
KTsKICAgICAgICAgaWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKQEAgLTkyLDcgKzkxLDYgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgICAgIGlmIChzdGFjay5zaXplKCkgPiAw
KQogICAgICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNv
bHVtbik7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY2FsbGluZyAnaW5q
ZWN0TW9kdWxlJyBmb3IgJyVzJzogJXMgKCVkOiVkKVxuIiwgbmFtZSgpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLT52YWx1ZSgpLnRvV1RGU3RyaW5nKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgp
KS51dGY4KCkuZGF0YSgpLCBsaW5lLCBjb2x1bW4pOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCmluZGV4IDI3
OWJhZTRlYmFlNGMxODU0NDhjNjk3ZTlhMDNiZWRiNWVhZjg1OGIuLmE0YmVkOTY5MmI3NDU2YTAw
NWQ3NmRmNGZlNDg1MTYxZjk1ZTRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsKIHB1YmxpYzoK
ICAgICB+SW5qZWN0ZWRTY3JpcHRNb2R1bGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTRnVuY3Rpb24qIGluamVj
dE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBKU0M6OkpTVmFsdWUgaG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCA0
OGJhZWQ2YTFiN2ZmYWQ0NTMzNzlhMmYxZWI3MWI4YzQ5MjVmNmM0Li4wMDgwMzY2NjI4YzY2YTVi
ZTA0MDI0YWE1NjBlMGQ4MTJjMjc4ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTcgKzI3LDM4IEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcworQGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoLyoga2V5MSwgdmFsdWUxLCBrZXkyLCB2YWx1ZTIsIC4uLiAqLykKK3sK
KyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAlIDIgIT09IDApCisgICAgICAgIEB0aHJvd1Jhbmdl
RXJyb3IoImBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlYCByZXF1aXJlcyB0aGF0IGVhY2gg
a2V5IGFyZ3VtZW50IGJlIGZvbGxvd2VkIGJ5IGEgdmFsdWUsIHJlc3VsdGluZyBpbiBhbiBldmVu
IG51bWJlciBvZiBhcmd1bWVudHMuIik7CisKKyAgICBsZXQgb2JqZWN0ID0gQE9iamVjdC5AY3Jl
YXRlKG51bGwpCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpICs9
IDIpCisgICAgICAgIG9iamVjdFthcmd1bWVudHNbaV1dID0gYXJndW1lbnRzW2kgKyAxXTsKIAot
KGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5q
ZWN0ZWRTY3JpcHRJZCkgeworICAgIHJldHVybiBvYmplY3Q7Cit9CiAKLS8vIEZJWE1FOiA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNj
cmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJy
aWRkZW4gYnVpbHQtaW5zCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlQXJyYXlXaXRo
b3V0UHJvdG90eXBlKC8qIHZhbHVlMSwgdmFsdWUyLCAuLi4gKi8pCit7CisgICAgbGV0IGFycmF5
ID0gbmV3IEBBcnJheShhcmd1bWVudHMubGVuZ3RoKTsKKyAgICBhcnJheS5fX3Byb3RvX18gPSBu
dWxsOworICAgIAorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytp
KQorICAgICAgICBAYXJyYXlQdXNoKGFycmF5LCBhcmd1bWVudHNbaV0pOworICAgIAorICAgIHJl
dHVybiBhcnJheTsKK30KIAotdmFyIE9iamVjdCA9IHt9LmNvbnN0cnVjdG9yOworQGdsb2JhbFBy
aXZhdGUKK2Z1bmN0aW9uIGNyZWF0ZUluc3BlY3RvckluamVjdGVkU2NyaXB0KEluamVjdGVkU2Ny
aXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKQorewogCiBm
dW5jdGlvbiB0b1N0cmluZyhvYmopCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhvYmopOworICAgIHJl
dHVybiBAU3RyaW5nKG9iaik7CiB9CiAKIGZ1bmN0aW9uIHRvU3RyaW5nRGVzY3JpcHRpb24ob2Jq
KQpAQCAtOTMsNiArMTE0LDE1IEBAIGZ1bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFsdWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CisgICAgCitmdW5jdGlvbiBjcmVhdGVJdGVy
YWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50c09iamVjdCkgeworICAg
IGxldCBpdGVyYXRvckZ1bmN0aW9uID0gYXJndW1lbnRzT2JqZWN0LkBAaXRlcmF0b3I7CisgICAg
cmV0dXJuIEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChhcmd1bWVudHNP
YmplY3QpKTsKK30KKworZnVuY3Rpb24gbWF4KGEsIGIpIHsKKyAgICByZXR1cm4gYSA+IGIgPyBh
IDogYjsKK30KIAogLy8gLS0tLS0tLQogCkBAIC0xMDEsMTIgKzEzMSwxMiBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2xhc3RCb3VuZE9iamVjdElkID0gMTsKLSAgICAgICAgdGhpcy5faWRU
b1dyYXBwZWRPYmplY3QgPSB7fTsKLSAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9
IHt9OwotICAgICAgICB0aGlzLl9vYmplY3RHcm91cHMgPSB7fTsKLSAgICAgICAgdGhpcy5fbW9k
dWxlcyA9IHt9OworICAgICAgICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IEBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUg
PSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOworICAgICAgICB0aGlzLl9vYmplY3RH
cm91cHMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOworICAgICAgICB0aGlzLl9t
b2R1bGVzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgdGhpcy5f
bmV4dFNhdmVkUmVzdWx0SW5kZXggPSAxOwotICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBb
XTsKKyAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3Rv
dHlwZSgpOwogICAgIH0KIAogICAgIC8vIEluamVjdGVkU2NyaXB0IEMrKyBBUEkKQEAgLTExNSw3
ICsxNDUsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBBbmRTYXZlQ2FsbChvYmplY3RHcm91cCwgcmV0
dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0LCAoKSA9PiB7CiAgICAgICAg
ICAgICBjb25zdCBpc0V2YWxPbkNhbGxGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5nLCBpc0V2YWxPbkNhbGxG
cmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmN0aW9uU3RyaW5n
LCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJKS5AYXBwbHkoQHVuZGVm
aW5lZCwgYXJncyk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTM2LDE2ICsxNjYsMTYgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2Vv
ZiBQcm9taXNlKSkgeworICAgICAgICBpZiAoIShwcm9taXNlT2JqZWN0IGluc3RhbmNlb2YgQFBy
b21pc2UpKSB7CiAgICAgICAgICAgICBjYWxsYmFjaygiT2JqZWN0IHdpdGggZ2l2ZW4gaWQgaXMg
bm90IGEgUHJvbWlzZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgbGV0IHJlc29sdmUgPSAodmFsdWUpID0+IHsKLSAgICAgICAgICAgIGxldCByZXR1cm5PYmpl
Y3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAg
ICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUodmFsdWUsIHByb21pc2VPYmplY3RHcm91cE5h
bWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCi0gICAgICAgICAgICB9OworICAg
ICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAi
cmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFt
ZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAKICAg
ICAgICAgICAgIGlmIChzYXZlUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZWRS
ZXN1bHRJbmRleCA9IDA7CkBAIC0xNTksNyArMTg5LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgbGV0IHJlamVjdCA9IChyZWFzb24pID0+IHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2NyZWF0ZVRocm93blZhbHVlKHJlYXNvbiwgcHJv
bWlzZU9iamVjdEdyb3VwTmFtZSkpOwogICAgICAgICB9OwotICAgICAgICBwcm9taXNlT2JqZWN0
LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgcHJvbWlzZU9iamVjdC5AdGhlbihyZXNv
bHZlLCByZWplY3QpOwogICAgIH0KIAogICAgIGV2YWx1YXRlT25DYWxsRnJhbWUodG9wQ2FsbEZy
YW1lLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQpAQCAt
MTgwLDE0ICsyMTAsMTQgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3Jp
cHQKICAgICAgICAgaWYgKCFpc0RlZmluZWQob2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiAi
Q291bGQgbm90IGZpbmQgb2JqZWN0IHdpdGggZ2l2ZW4gaWQiOwogCi0gICAgICAgIGxldCByZXNv
bHZlZEFyZ3MgPSBbXTsKKyAgICAgICAgbGV0IHJlc29sdmVkQXJncyA9IEBjcmVhdGVBcnJheVdp
dGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgaWYgKGFyZ3MpIHsKICAgICAgICAgICAgIGxldCBj
YWxsQXJncyA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZShhcmdzKTsKICAgICAgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbEFyZ3MubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEFyZ3NbaV0gPSB0aGlzLl9y
ZXNvbHZlQ2FsbEFyZ3VtZW50KGNhbGxBcmdzW2ldKTsKICAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBAU3RyaW5nKGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMTk3LDEwICsyMjcsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0g
ImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICByZXR1cm4gIkdpdmVuIGV4cHJlc3Npb24gZG9l
cyBub3QgZXZhbHVhdGUgdG8gYSBmdW5jdGlvbiI7CiAKLSAgICAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6
IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5hcHBseShvYmplY3QsIHJlc29sdmVkQXJncyksIG9i
amVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgK
KyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAgInJl
c3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYy5AYXBwbHkob2JqZWN0LCByZXNvbHZlZEFy
Z3MpLCBvYmplY3RHcm91cE5hbWUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisg
ICAgICAgICAgICApOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fY3JlYXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICAgICAgfQpA
QCAtMjMzLDEzICsyNjMsMjIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICBnZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBvd25Qcm9wZXJ0aWVzLCBmZXRjaFN0
YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICBsZXQgY29s
bGVjdGlvbk1vZGUgPSBvd25Qcm9wZXJ0aWVzID8gSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1v
ZGUuT3duUHJvcGVydGllcyA6IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFByb3Bl
cnRpZXM7Ci0gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xs
ZWN0aW9uTW9kZSwge2ZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlld30pOwor
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1v
ZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgImZldGNoU3Rh
cnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAgImZldGNoQ291bnQiLCBmZXRjaENvdW50LAor
ICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIsIGdlbmVyYXRlUHJldmlldywKKyAgICAgICAg
KSk7CiAgICAgfQogCiAgICAgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKG9iamVjdElkLCBmZXRj
aFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewogICAgICAgICBsZXQg
Y29sbGVjdGlvbk1vZGUgPSBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0
aWVzIHwgSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuTmF0aXZlR2V0dGVyUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3LCBuYXRpdmVH
ZXR0ZXJzQXNWYWx1ZXM6IHRydWV9KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRp
ZXMob2JqZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgKKyAgICAgICAgICAgICJmZXRjaFN0YXJ0IiwgZmV0Y2hTdGFydCwKKyAgICAgICAgICAgICJm
ZXRjaENvdW50IiwgZmV0Y2hDb3VudCwKKyAgICAgICAgICAgICJnZW5lcmF0ZVByZXZpZXciLCBn
ZW5lcmF0ZVByZXZpZXcsCisgICAgICAgICAgICAibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwgdHJ1
ZSwKKyAgICAgICAgKSk7CiAgICAgfQogCiAgICAgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKG9iamVj
dElkLCBnZW5lcmF0ZVByZXZpZXcpCkBAIC0yNTYsNyArMjk1LDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSB0
aGlzLl9pbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsKICAgICAgICAgaWYgKCFk
ZXNjcmlwdG9ycykKLSAgICAgICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAgIHJldHVybiBA
Y3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBkZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IGRlc2NyaXB0
b3IgPSBkZXNjcmlwdG9yc1tpXTsKQEAgLTI4MCwxMiArMzE5LDEzIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgbGV0IGVudHJpZXMgPSB0aGlzLl9lbnRyaWVzKG9iamVjdCwgSW5qZWN0ZWRTY3JpcHRIb3N0
LnN1YnR5cGUob2JqZWN0KSwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCk7Ci0gICAgICAgIHJldHVy
biBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJp
ZXNbaV07CiAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZW50
cnkudmFsdWUsIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCJrZXkiIGluIGVudHJ5KQogICAgICAgICAgICAgICAgIGVudHJ5LmtleSA9IFJlbW90ZU9iamVj
dC5jcmVhdGUoZW50cnkua2V5LCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCB0cnVlKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGVudHJpZXM7CiAgICAgfQogCiAgICAgc2F2ZVJlc3VsdChjYWxsQXJndW1lbnRKU09OKQpA
QCAtMzA2LDEwICszNDYsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBsZXQgZGVwdGggPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZy
YW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJl
c3VsdCwgbmV3IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5KGRlcHRoKyssIGNhbGxGcmFt
ZSkpOwogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAg
fSB3aGlsZSAoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNiw3ICsz
NjYsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgIHdy
YXBKU09OU3RyaW5nKGpzb25TdHJpbmcsIGdyb3VwTmFtZSwgZ2VuZXJhdGVQcmV2aWV3KQogICAg
IHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLndyYXBPYmplY3QoSlNP
Ti5wYXJzZShqc29uU3RyaW5nKSwgZ3JvdXBOYW1lLCB0cnVlLCBnZW5lcmF0ZVByZXZpZXcpOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChAanNvblBhcnNlKGpzb25TdHJpbmcp
LCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIH0gY2F0Y2ggewog
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KQEAgLTM0MywxMiArMzgzLDEyIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0
IGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5zID09PSAic3Ry
aW5nIikKLSAgICAgICAgICAgIGNvbHVtbnMgPSBbY29sdW1uc107CisgICAgICAgICAgICBjb2x1
bW5zID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZShjb2x1bW5zKTsKIAogICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKLSAg
ICAgICAgICAgIGNvbHVtbk5hbWVzID0gW107CisgICAgICAgICAgICBjb2x1bW5OYW1lcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgY29sdW1ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5w
dXNoKHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKKyAgICAgICAgICAgICAgICBAYXJyYXlQdXNoKGNv
bHVtbk5hbWVzLCB0b1N0cmluZyhjb2x1bW5zW2ldKSk7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gUmVtb3RlT2JqZWN0LmNyZWF0ZSh0YWJsZSwgImNvbnNvbGUiLCBmYWxzZSwgdHJ1ZSwg
Y29sdW1uTmFtZXMpOwpAQCAtMzk2LDcgKzQzNiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNs
YXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUgPT09ICJjb25z
b2xlIikgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RSZXN1bHQ7CiAgICAgICAgICAg
ICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgICAgICB0aGlzLl9zYXZl
ZFJlc3VsdHMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IEBjcmVhdGVB
cnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBncm91cCA9
IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwpAQCAtNDI5LDE0ICs0NjksMTYg
QEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgcmV0
dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CiAgICAgfQogCi0gICAgaW5qZWN0TW9kdWxlKG5hbWUs
IHNvdXJjZSwgaG9zdCkKKyAgICBpbmplY3RNb2R1bGUobmFtZSwgbW9kdWxlRnVuY3Rpb24sIGhv
c3QpCiAgICAgewogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gZmFsc2U7CiAKLSAgICAg
ICAgbGV0IG1vZHVsZUZ1bmN0aW9uID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiAr
IHNvdXJjZSArICIpIik7CiAgICAgICAgIGlmICh0eXBlb2YgbW9kdWxlRnVuY3Rpb24gIT09ICJm
dW5jdGlvbiIpCiAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IFdlYiBJbnNwZWN0b3I6IGEgZnVu
Y3Rpb24gd2FzIGV4cGVjdGVkIGZvciBpbmplY3RNb2R1bGUiOwotICAgICAgICBtb2R1bGVGdW5j
dGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRT
Y3JpcHRJZCwgdGhpcywge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBob3N0KTsKKyAg
ICAgICAgbW9kdWxlRnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QsIGluamVjdGVkU2NyaXB0SWQsIHRoaXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKAorICAgICAgICAgICAgIlJlbW90ZU9iamVjdCIsIFJlbW90ZU9iamVjdCwKKyAgICAgICAg
ICAgICJDb21tYW5kTGluZUFQSSIsIENvbW1hbmRMaW5lQVBJLAorICAgICAgICApLCBob3N0KTsK
IAogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gdHJ1ZTsKICAgICB9CkBAIC00NzAsMTAg
KzUxMiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICBpZiAob2JqZWN0R3JvdXBOYW1lKSB7CiAgICAgICAgICAgICBsZXQgZ3JvdXAgPSB0aGlz
Ll9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKICAgICAgICAgICAgIGlmICghZ3JvdXAp
IHsKLSAgICAgICAgICAgICAgICBncm91cCA9IFtdOworICAgICAgICAgICAgICAgIGdyb3VwID0g
QGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgICAgIHRoaXMuX29i
amVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0gZ3JvdXA7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBncm91cC5wdXNoKGlkKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZ3JvdXAsIGlk
KTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWVbaWRdID0gb2JqZWN0R3Jv
dXBOYW1lOwogICAgICAgICB9CiAKQEAgLTQ4OCw4ICs1MzAsNyBAQCBsZXQgSW5qZWN0ZWRTY3Jp
cHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgX2ZhbGxiYWNrV3JhcHBlcihvYmplY3Qp
CiAgICAgewotICAgICAgICBsZXQgcmVzdWx0ID0ge307Ci0gICAgICAgIHJlc3VsdC50eXBlID0g
dHlwZW9mIG9iamVjdDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKCJ0eXBlIiwgdHlwZW9mIG9iamVjdCk7CiAgICAgICAgIGlmIChpc1ByaW1pdGl2
ZVZhbHVlKG9iamVjdCkpCiAgICAgICAgICAgICByZXN1bHQudmFsdWUgPSBvYmplY3Q7CiAgICAg
ICAgIGVsc2UKQEAgLTUxNSw3ICs1NTYsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQXJnOwogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuIEB1bmRlZmluZWQ7
CiAgICAgfQogCiAgICAgX2NyZWF0ZVRocm93blZhbHVlKHZhbHVlLCBvYmplY3RHcm91cCkKQEAg
LTUyNCwxMCArNTY1LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICByZW1vdGVPYmplY3QuZGVzY3JpcHRpb24g
PSB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKTsKICAgICAgICAgfSBjYXRjaCB7IH0KLSAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHdhc1Rocm93bjogdHJ1ZSwKLSAgICAgICAgICAgIHJl
c3VsdDogcmVtb3RlT2JqZWN0Ci0gICAgICAgIH07CisgICAgICAgIHJldHVybiBAY3JlYXRlT2Jq
ZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJ3YXNUaHJvd24iLCB0cnVlLAorICAg
ICAgICAgICAgInJlc3VsdCIsIHJlbW90ZU9iamVjdCwKKyAgICAgICAgKTsKICAgICB9CiAKICAg
ICBfZXZhbHVhdGVBbmRXcmFwKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmpl
Y3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0KQpAQCAtNTUyLDEwICs1OTMsMTAg
QEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSAwOwogCi0gICAgICAgICAg
ICBsZXQgcmV0dXJuT2JqZWN0ID0gewotICAgICAgICAgICAgICAgIHdhc1Rocm93bjogZmFsc2Us
Ci0gICAgICAgICAgICAgICAgcmVzdWx0OiBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMoKSwgb2Jq
ZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKLSAgICAgICAgICAgIH07
CisgICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAg
ICAgICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKGZ1bmMoKSwgb2JqZWN0R3JvdXAsIHJl
dHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldyksCisgICAgICAgICAgICApOwogCiAgICAgICAg
ICAgICBpZiAoc2F2ZVJlc3VsdCAmJiB0aGlzLl9zYXZlZFJlc3VsdEluZGV4KQogICAgICAgICAg
ICAgICAgIHJldHVybk9iamVjdC5zYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRJ
bmRleDsKQEAgLTU3MSw3ICs2MTIsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICBsZXQgY29tbWFuZExpbmVBUEkgPSBudWxsOwogICAgICAgICBp
ZiAoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKQogICAgICAgICAgICAgY29tbWFuZExpbmVBUEkgPSB0
aGlzLmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KGlzRXZhbE9uQ2FsbEZyYW1lID8gb2JqZWN0
IDogbnVsbCk7Ci0gICAgICAgIHJldHVybiBldmFsRnVuY3Rpb24uY2FsbChvYmplY3QsIGV4cHJl
c3Npb24sIGNvbW1hbmRMaW5lQVBJKTsKKyAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5AY2Fs
bChvYmplY3QsIGV4cHJlc3Npb24sIGNvbW1hbmRMaW5lQVBJKTsKICAgICB9CiAKICAgICBfY2Fs
bEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCkKQEAgLTYwNyw3ICs2NDgsNyBA
QCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAvLyBB
bHdheXMgaW5jbHVkZSBfX3Byb3RvX18gYXQgdGhlIGVuZCwgYnV0IG9ubHkgZm9yIHRoZSBmaXJz
dCBmZXRjaC4KICAgICAgICAgbGV0IGluY2x1ZGVQcm90byA9ICFzdGFydDsKIAotICAgICAgICBs
ZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gQGNyZWF0ZUFy
cmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB0aGlzLl9mb3JFYWNoUHJvcGVydHlEZXNj
cmlwdG9yKG9iamVjdCwgY29sbGVjdGlvbk1vZGUsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAg
ICAgICBpZiAoc3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgLS1zdGFydDsKQEAgLTYyMiwx
MyArNjYzLDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IFJlbW90ZU9iamVjdC5jcmVhdGUoZGVz
Y3JpcHRvci52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgZ2VuZXJhdGVQcmV2aWV3KTsK
ICAgICAgICAgICAgIGlmICgic3ltYm9sIiBpbiBkZXNjcmlwdG9yKQogICAgICAgICAgICAgICAg
IGRlc2NyaXB0b3Iuc3ltYm9sID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlwdG9yLnN5bWJv
bCwgb2JqZWN0R3JvdXBOYW1lKTsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3Jp
cHRvcik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsK
IAogICAgICAgICAgICAgaWYgKGluY2x1ZGVQcm90byAmJiBjb3VudCAmJiBkZXNjcmlwdG9ycy5s
ZW5ndGggPj0gY291bnQgJiYgZGVzY3JpcHRvci5uYW1lICE9PSAiX19wcm90b19fIikKICAgICAg
ICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9w
OwogCiAgICAgICAgICAgICByZXR1cm4gKGNvdW50ICYmIGRlc2NyaXB0b3JzLmxlbmd0aCA+PSBj
b3VudCkgPyBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3AgOiBJbmplY3Rl
ZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwotICAgICAgICB9LCB7bmF0aXZl
R2V0dGVyc0FzVmFsdWVzLCBpbmNsdWRlUHJvdG99KTsKKyAgICAgICAgfSwgQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwg
bmF0aXZlR2V0dGVyc0FzVmFsdWVzLAorICAgICAgICAgICAgImluY2x1ZGVQcm90byIsIGluY2x1
ZGVQcm90bywKKyAgICAgICAgKSk7CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9
CiAKQEAgLTYzOCwxMyArNjgyLDE2IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgIGlmICghaW50ZXJuYWxQcm9wZXJ0aWVzKQogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAKLSAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gW107CisgICAgICAgIGxl
dCBkZXNjcmlwdG9ycyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHsKICAg
ICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGludGVybmFsUHJvcGVydGllc1tpXTsKLSAgICAgICAg
ICAgIGxldCBkZXNjcmlwdG9yID0ge25hbWU6IHByb3BlcnR5Lm5hbWUsIHZhbHVlOiBwcm9wZXJ0
eS52YWx1ZX07CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJuYW1lIiwgcHJvcGVydHkubmFtZSwKKyAg
ICAgICAgICAgICAgICAidmFsdWUiLCBwcm9wZXJ0eS52YWx1ZSwKKyAgICAgICAgICAgICk7CiAg
ICAgICAgICAgICBpZiAoY29tcGxldGVEZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlw
dG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9CkBAIC02NTQsMTUg
KzcwMSwxOCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICBpZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnN1YnR5cGUob2JqZWN0KSA9PT0gInByb3h5IikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgbmFtZVByb2Nlc3NlZCA9IG5ldyBT
ZXQ7CisgICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IEBTZXQ7CiAKICAgICAgICAgLy8g
SGFuZGxlZCBiZWxvdyB3aGVuIGBpbmNsdWRlUHJvdG9gLgotICAgICAgICBuYW1lUHJvY2Vzc2Vk
LmFkZCgiX19wcm90b19fIik7CisgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZCgiX19wcm90b19f
Iik7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBz
eW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHBvc3NpYmxlTmF0aXZlQmluZGluZ0dl
dHRlcikKICAgICAgICAgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBsZXQg
ZmFrZURlc2NyaXB0b3IgPSB7bmFtZSwgdmFsdWU6IG9iamVjdFtuYW1lXX07CisgICAgICAgICAg
ICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
InZhbHVlIiwgb2JqZWN0W25hbWVdLAorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAg
ICAgaWYgKGRlc2NyaXB0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
d3JpdGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWtlRGVzY3JpcHRvci53cml0YWJs
ZSA9IHRydWU7CkBAIC02NzgsMTEgKzcyOCwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCiAgICAgICAgICAg
ICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnN5bWJvbCA9IHN5bWJvbDsKICAgICAgICAgICAgICAg
ICAvLyBTaWxlbmNlIGFueSBwb3NzaWJsZSB1bmhhbmRsZWRyZWplY3Rpb24gZXhjZXB0aW9ucyBj
cmVhdGVkIGZyb20gYWNjZXNzaW5nIGEgbmF0aXZlIGFjY2Vzc29yIHdpdGggYSB3cm9uZyB0aGlz
IG9iamVjdC4KLSAgICAgICAgICAgICAgICBpZiAoZmFrZURlc2NyaXB0b3IudmFsdWUgaW5zdGFu
Y2VvZiBQcm9taXNlICYmIEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhO
YXRpdmVHZXR0ZXJUeXBlRXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQotICAgICAgICAgICAg
ICAgICAgICBmYWtlRGVzY3JpcHRvci52YWx1ZS5jYXRjaChmdW5jdGlvbigpe30pOworICAgICAg
ICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9mIEBQcm9taXNlICYm
IEluamVjdGVkU2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBl
RXJyb3IoZmFrZURlc2NyaXB0b3IudmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBmYWtlRGVz
Y3JpcHRvci52YWx1ZS5AY2F0Y2goZnVuY3Rpb24oKXt9KTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFrZURlc2NyaXB0b3I7CiAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICAgICAgbGV0IGVycm9yRGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogZSwgd2FzVGhyb3duOiB0
cnVlfTsKKyAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgInZhbHVlIiwgZSwKKyAgICAgICAgICAgICAgICAgICAgIndhc1Ro
cm93biIsIHRydWUsCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICBpZiAoaXNP
d25Qcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjcmlwdG9yLmlzT3duID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQpAQCAtNzEwLDE1ICs3NjQsMTUgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBmdW5j
dGlvbiBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lLCBpc093blByb3BlcnR5KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAobmFtZVByb2Nlc3NlZC5oYXMocHJvcGVydHlOYW1lKSkK
KyAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLkBoYXMocHJvcGVydHlOYW1lKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250
aW51ZTsKIAotICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5hZGQocHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIG5hbWVQcm9jZXNzZWQuQGFkZChwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgICAg
ICBsZXQgbmFtZSA9IHRvU3RyaW5nKHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBsZXQgc3lt
Ym9sID0gaXNTeW1ib2wocHJvcGVydHlOYW1lKSA/IHByb3BlcnR5TmFtZSA6IG51bGw7CiAKLSAg
ICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAT2JqZWN0
LkBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IGlmICghZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBCYWQgZGVzY3Jp
cHRvci4gQ2FuIHdlIGdldCBoZXJlPwogICAgICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byB2
ZXJ5IHJlc3RyaWN0aXZlIHNldHRpbmdzLgpAQCAtNzI3LDcgKzc4MSw3IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoU3Ry
aW5nKGRlc2NyaXB0b3IuZ2V0KS5lbmRzV2l0aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVz
Y3JpcHRvci5nZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikgJiYgIWRlc2Ny
aXB0b3Iuc2V0ICYmIGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSkgeworICAgICAg
ICAgICAgICAgIGlmIChAU3RyaW5nKGRlc2NyaXB0b3IuZ2V0KS5AZW5kc1dpdGgoIltuYXRpdmUg
Y29kZV1cbn0iKSB8fCAoIWRlc2NyaXB0b3IuZ2V0ICYmIEBPYmplY3QuQGhhc093bihkZXNjcmlw
dG9yLCAiZ2V0IikgJiYgIWRlc2NyaXB0b3Iuc2V0ICYmIEBPYmplY3QuQGhhc093bihkZXNjcmlw
dG9yLCAic2V0IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIERldmVsb3BlcnMgbWF5IGNy
ZWF0ZSBzdWNoIGEgZGVzY3JpcHRvciwgc28gd2Ugc2hvdWxkIGJlIHJlc2lsaWVudDoKICAgICAg
ICAgICAgICAgICAgICAgLy8gbGV0IHggPSB7fTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJw
Iiwge2dldDp1bmRlZmluZWR9KTsgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih4LCAi
cCIpCiAgICAgICAgICAgICAgICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IGNyZWF0ZUZha2VW
YWx1ZURlc2NyaXB0b3IobmFtZSwgc3ltYm9sLCBkZXNjcmlwdG9yLCBpc093blByb3BlcnR5LCB0
cnVlKTsKQEAgLTc0NSwxMCArNzk5LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAKICAgICAgICAgbGV0IGlzQXJyYXlMaWtlID0gZmFsc2U7CiAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICBpc0FycmF5TGlrZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9i
amVjdCkgPT09ICJhcnJheSIgJiYgaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxl
bmd0aCA+IDA7CisgICAgICAgICAgICBpc0FycmF5TGlrZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBl
KG9iamVjdCkgPT09ICJhcnJheSIgJiYgQGlzRmluaXRlKG9iamVjdC5sZW5ndGgpICYmIG9iamVj
dC5sZW5ndGggPiAwOwogICAgICAgICB9IGNhdGNoIHsgfQogCi0gICAgICAgIGZvciAobGV0IG8g
PSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKSkgewor
ICAgICAgICBmb3IgKGxldCBvID0gb2JqZWN0OyBpc0RlZmluZWQobyk7IG8gPSBAT2JqZWN0LkBn
ZXRQcm90b3R5cGVPZihvKSkgewogICAgICAgICAgICAgbGV0IGlzT3duUHJvcGVydHkgPSBvID09
PSBvYmplY3Q7CiAgICAgICAgICAgICBsZXQgc2hvdWxkQnJlYWsgPSBmYWxzZTsKIApAQCAtNzY0
LDcgKzgxOCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMobyk7CisgICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFt
ZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG8pOwogICAgICAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vzc1Byb3BlcnR5KG8sIHByb3BlcnR5TmFtZXNb
aV0sIGlzT3duUHJvcGVydHkpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVhayA9IHJl
c3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wOwpAQCAtNzc2
LDE0ICs4MzAsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgICAgIGlmIChzaG91bGRCcmVhaykKICAgICAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKLSAgICAgICAg
ICAgICAgICBsZXQgcHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cyhvKTsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9s
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJvY2Vz
c1Byb3BlcnR5KG8sIHByb3BlcnR5U3ltYm9sc1tpXSwgaXNPd25Qcm9wZXJ0eSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9w
ZXJ0eUZldGNoQWN0aW9uLlN0b3A7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRCcmVh
aykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eVN5
bWJvbHMobyk7CisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnR5U3ltYm9s
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJv
cGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCcmVhayA9IHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRj
aEFjdGlvbi5TdG9wOworICAgICAgICAgICAgICAgIGlmIChzaG91bGRCcmVhaykKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChzaG91
bGRCcmVhaykKQEAgLTc5NiwyMyArODQ4LDI4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNz
IEluamVjdGVkU2NyaXB0CiAgICAgICAgIGlmIChpbmNsdWRlUHJvdG8pIHsKICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdC5fX3Byb3RvX18pCi0gICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHtuYW1lOiAiX19wcm90b19fIiwgdmFsdWU6IG9iamVjdC5fX3By
b3RvX18sIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGlzT3duOiB0cnVlfSk7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKAorICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCAiX19wcm90b19fIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIsIG9iamVjdC5fX3Byb3RvX18sCisgICAgICAgICAg
ICAgICAgICAgICAgICAid3JpdGFibGUiLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ImNvbmZpZ3VyYWJsZSIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAiaXNPd24iLCB0
cnVlLAorICAgICAgICAgICAgICAgICAgICApKTsKICAgICAgICAgICAgIH0gY2F0Y2ggeyB9CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBfZ2V0U2V0RW50cmllcyhvYmplY3QsIGZldGNoU3RhcnQs
IGZldGNoQ291bnQpCiAgICAgewotICAgICAgICBsZXQgZW50cmllcyA9IFtdOworICAgICAgICBs
ZXQgZW50cmllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAotICAgICAgICAv
LyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlmIHRoZSBwYWdlIG92ZXJyaWRlcyBTZXQucHJv
dG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCi0gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIG9iamVj
dCkgeworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiBAYnVpbHRpblNldEl0ZXJhYmxlKG9iamVj
dCkpIHsKICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAg
IGZldGNoU3RhcnQtLTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgZW50cmllcy5wdXNoKHt2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5
UHVzaChlbnRyaWVzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgidmFsdWUiLCB2YWx1
ZSkpOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0g
ZmV0Y2hDb3VudCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgyMywxNiArODgwLDE4IEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZ2V0TWFw
RW50cmllcyhvYmplY3QsIGZldGNoU3RhcnQsIGZldGNoQ291bnQpCiAgICAgewotICAgICAgICBs
ZXQgZW50cmllcyA9IFtdOworICAgICAgICBsZXQgZW50cmllcyA9IEBjcmVhdGVBcnJheVdpdGhv
dXRQcm90b3R5cGUoKTsKIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvYnNlcnZhYmxlIGlm
IHRoZSBwYWdlIG92ZXJyaWRlcyBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0uCi0gICAg
ICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBvYmplY3QpIHsKKyAgICAgICAgZm9yIChsZXQg
W2tleSwgdmFsdWVdIG9mIEBidWlsdGluTWFwSXRlcmFibGUob2JqZWN0KSkgewogICAgICAgICAg
ICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBl
bnRyaWVzLnB1c2goe2tleSwgdmFsdWV9KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZW50cmll
cywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgImtleSIs
IGtleSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCB2YWx1ZSwKKyAgICAgICAgICAgICkpOwog
CiAgICAgICAgICAgICBpZiAoZmV0Y2hDb3VudCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gZmV0Y2hD
b3VudCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg3NiwxMCArOTM1LDEwIEBAIGxldCBJ
bmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgewogICAgICAgICB0aGlz
Ll9sYXN0UmVzdWx0ID0gcmVzdWx0OwogCi0gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5l
ZCB8fCByZXN1bHQgPT09IG51bGwpCisgICAgICAgIGlmIChyZXN1bHQgPT09IEB1bmRlZmluZWQg
fHwgcmVzdWx0ID09PSBudWxsKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBl
eGlzdGluZ0luZGV4ID0gdGhpcy5fc2F2ZWRSZXN1bHRzLmluZGV4T2YocmVzdWx0KTsKKyAgICAg
ICAgbGV0IGV4aXN0aW5nSW5kZXggPSBAQXJyYXkucHJvdG90eXBlLkBpbmRleE9mLkBjYWxsKHRo
aXMuX3NhdmVkUmVzdWx0cywgcmVzdWx0KTsKICAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09
IC0xKSB7CiAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gZXhpc3RpbmdJbmRl
eDsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg5NCwxNiArOTUzLDE2IEBAIGxldCBJbmplY3Rl
ZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgfQogfTsKIAotSW5qZWN0ZWRTY3Jp
cHQuQ29sbGVjdGlvbk1vZGUgPSB7Ci0gICAgT3duUHJvcGVydGllczogMSA8PCAwLCAgICAgICAg
ICAvLyBvd24gcHJvcGVydGllcy4KLSAgICBOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzOiAxIDw8IDEs
IC8vIG5hdGl2ZSBnZXR0ZXIgcHJvcGVydGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgotICAg
IEFsbFByb3BlcnRpZXM6IDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRpZXMgaW4gdGhl
IHByb3RvdHlwZSBjaGFpbi4KLX07CitJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZSA9IEBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICJPd25Qcm9wZXJ0aWVzIiwgMSA8PCAw
LCAgICAgICAgICAvLyBvd24gcHJvcGVydGllcy4KKyAgICAiTmF0aXZlR2V0dGVyUHJvcGVydGll
cyIsIDEgPDwgMSwgLy8gbmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUg
Y2hhaW4uCisgICAgIkFsbFByb3BlcnRpZXMiLCAxIDw8IDIsICAgICAgICAgIC8vIGFsbCBwcm9w
ZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCispOwogCi1JbmplY3RlZFNjcmlwdC5Qcm9w
ZXJ0eUZldGNoQWN0aW9uID0gewotICAgIENvbnRpbnVlOiBTeW1ib2woImNvbnRpbnVlIiksCi0g
ICAgU3RvcDogU3ltYm9sKCJzdG9wIiksCi19CitJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIkNvbnRpbnVlIiwg
QGNyZWF0ZVByaXZhdGVTeW1ib2woImNvbnRpbnVlIiksCisgICAgIlN0b3AiLCBAY3JlYXRlUHJp
dmF0ZVN5bWJvbCgic3RvcCIpLAorKTsKIAogdmFyIGluamVjdGVkU2NyaXB0ID0gbmV3IEluamVj
dGVkU2NyaXB0OwogCkBAIC05NjIsNyArMTAyMSw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0aGlzLl9nZW5l
cmF0ZVByZXZpZXcoSW5qZWN0ZWRTY3JpcHRIb3N0LnByb3h5VGFyZ2V0VmFsdWUob2JqZWN0KSk7
CiAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0aGlzLl9nZW5lcmF0
ZVByZXZpZXcob2JqZWN0LCB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLnByZXZpZXcgPSB0aGlzLl9nZW5lcmF0ZVByZXZpZXcob2JqZWN0LCBAdW5kZWZpbmVk
LCBjb2x1bW5OYW1lcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk3Nyw3ICsxMDM2LDcgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFJlbW90ZU9iamVjdC5kZXNjcmliZShlKTsK
ICAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoZXgubWVz
c2FnZSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJy
b3IoZXgubWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiPGZhaWxlZCB0
byBjb252ZXJ0IGV4Y2VwdGlvbiB0byBzdHJpbmc+IjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBuZXcgUmVtb3RlT2JqZWN0KGRlc2NyaXB0aW9uKTsKQEAgLTk4Niw3ICsxMDQ1
LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgc3RhdGlj
IGNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZSh2YWx1ZSwgZ2VuZXJhdGVQcmV2aWV3LCBjb2x1
bW5OYW1lcykKICAgICB7Ci0gICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBuZXcgUmVtb3RlT2Jq
ZWN0KHZhbHVlLCB1bmRlZmluZWQsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVz
KTsKKyAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3QodmFsdWUsIEB1
bmRlZmluZWQsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5hbWVzKTsKICAgICAgICAg
aWYgKHJlbW90ZU9iamVjdC5vYmplY3RJZCkKICAgICAgICAgICAgIGluamVjdGVkU2NyaXB0LnJl
bGVhc2VPYmplY3QocmVtb3RlT2JqZWN0Lm9iamVjdElkKTsKICAgICAgICAgaWYgKHJlbW90ZU9i
amVjdC5jbGFzc1Byb3RvdHlwZSAmJiByZW1vdGVPYmplY3QuY2xhc3NQcm90b3R5cGUub2JqZWN0
SWQpCkBAIC0xMDExLDcgKzEwNzAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAKICAgICAgICAgLy8gRmlyZUJ1ZydzIGFycmF5IGRldGVjdGlvbi4KICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUuc3BsaWNlID09PSAiZnVuY3Rpb24i
ICYmIGlzRmluaXRlKHZhbHVlLmxlbmd0aCkpCisgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVl
LnNwbGljZSA9PT0gImZ1bmN0aW9uIiAmJiBAaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gImFycmF5IjsKICAgICAgICAgfSBjYXRjaCB7IH0KIApAQCAtMTA1
MCw4ICsxMTA5LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAg
ICAgICBpZiAoc3VidHlwZSA9PT0gImFycmF5IikKICAgICAgICAgICAgIHJldHVybiBjbGFzc05h
bWU7CiAKLSAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYgU3ltYm9sLnRvU3Ry
aW5nVGFnIGluIHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIHZhbHVlW1N5bWJvbC50b1N0cmlu
Z1RhZ107CisgICAgICAgIGlmIChzdWJ0eXBlID09PSAiaXRlcmF0b3IiICYmIEBAdG9TdHJpbmdU
YWcgaW4gdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUuQEB0b1N0cmluZ1RhZzsKIAog
ICAgICAgICAvLyBOb2RlTGlzdCBpbiBKU0MgaXMgYSBmdW5jdGlvbiwgY2hlY2sgZm9yIGFycmF5
IHByaW9yIHRvIHRoaXMuCiAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJmdW5jdGlvbiIp
CkBAIC0xMDY5LDYgKzExMjgsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAKICAgICBzdGF0aWMgbm9kZVByZXZpZXcobm9kZSkKICAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4gSW5qZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2Vi
Q29yZSBidWlsdC1pbnMuCiAgICAgICAgIGxldCBpc1hNTERvY3VtZW50ID0gbm9kZS5vd25lckRv
Y3VtZW50ICYmICEhbm9kZS5vd25lckRvY3VtZW50LnhtbFZlcnNpb247CiAgICAgICAgIGxldCBu
b2RlTmFtZSA9IGlzWE1MRG9jdW1lbnQgPyBub2RlLm5vZGVOYW1lIDogbm9kZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpOwogCkBAIC0xMTAwLDE3ICsxMTYwLDE3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgIF9pbml0aWFsUHJldmlldygpCiAgICAgewotICAg
ICAgICBsZXQgcHJldmlldyA9IHsKLSAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSwKLSAgICAg
ICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uIHx8IHRvU3RyaW5nKHRoaXMudmFs
dWUpLAotICAgICAgICAgICAgbG9zc2xlc3M6IHRydWUsCi0gICAgICAgIH07CisgICAgICAgIGxl
dCBwcmV2aWV3ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAi
dHlwZSIsIHRoaXMudHlwZSwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIsIHRoaXMuZGVzY3Jp
cHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSksCisgICAgICAgICAgICAibG9zc2xlc3MiLCB0
cnVlLAorICAgICAgICApOwogCiAgICAgICAgIGlmICh0aGlzLnN1YnR5cGUpIHsKICAgICAgICAg
ICAgIHByZXZpZXcuc3VidHlwZSA9IHRoaXMuc3VidHlwZTsKICAgICAgICAgICAgIGlmICh0aGlz
LnN1YnR5cGUgIT09ICJudWxsIikgewogICAgICAgICAgICAgICAgIHByZXZpZXcub3ZlcmZsb3cg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAg
ICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90
eXBlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTEyNiw3ICsxMTg2LDcgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIGlmICh0aGlz
LnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNldCIgfHwgdGhpcy5zdWJ0
eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha3NldCIgfHwgdGhpcy5z
dWJ0eXBlID09PSAiaXRlcmF0b3IiKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5zaXplKSB7Ci0g
ICAgICAgICAgICAgICAgcHJldmlldy5lbnRyaWVzID0gW107CisgICAgICAgICAgICAgICAgcHJl
dmlldy5lbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAg
ICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBwcmV2aWV3
Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTExNDEsMjMgKzEyMDEsMjMgQEAg
bGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICBsZXQgaXNUYWJs
ZVJvd3NSZXF1ZXN0ID0gc2Vjb25kTGV2ZWxLZXlzID09PSBudWxsIHx8IHNlY29uZExldmVsS2V5
czsKICAgICAgICAgbGV0IGZpcnN0TGV2ZWxLZXlzQ291bnQgPSBmaXJzdExldmVsS2V5cyA/IGZp
cnN0TGV2ZWxLZXlzLmxlbmd0aCA6IDA7CiAKLSAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJlc2hv
bGQgPSB7Ci0gICAgICAgICAgICBwcm9wZXJ0aWVzOiBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAw
IDogTWF0aC5tYXgoNSwgZmlyc3RMZXZlbEtleXNDb3VudCksCi0gICAgICAgICAgICBpbmRleGVz
OiBpc1RhYmxlUm93c1JlcXVlc3QgPyAxMDAwIDogTWF0aC5tYXgoMTAsIGZpcnN0TGV2ZWxLZXlz
Q291bnQpCi0gICAgICAgIH07CisgICAgICAgIGxldCBwcm9wZXJ0aWVzVGhyZXNob2xkID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAicHJvcGVydGllcyIsIGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBtYXgoNSwgZmlyc3RMZXZlbEtleXNDb3VudCksCisg
ICAgICAgICAgICAiaW5kZXhlcyIsIGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBtYXgoMTAs
IGZpcnN0TGV2ZWxLZXlzQ291bnQpLAorICAgICAgICApOwogCiAgICAgICAgIHRyeSB7CiAgICAg
ICAgICAgICAvLyBNYXBzLCBTZXRzLCBhbmQgSXRlcmF0b3JzIGhhdmUgZW50cmllcy4KICAgICAg
ICAgICAgIGlmICh0aGlzLnN1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuc3VidHlwZSA9PT0gInNl
dCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vha21hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAid2Vh
a3NldCIgfHwgdGhpcy5zdWJ0eXBlID09PSAiaXRlcmF0b3IiKQogICAgICAgICAgICAgICAgIHRo
aXMuX2FwcGVuZEVudHJ5UHJldmlld3Mob2JqZWN0LCBwcmV2aWV3KTsKIAotICAgICAgICAgICAg
cHJldmlldy5wcm9wZXJ0aWVzID0gW107CisgICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAKICAgICAgICAgICAgIC8vIEludGVy
bmFsIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBsZXQgaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0
b3JzID0gaW5qZWN0ZWRTY3JpcHQuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3Qs
IHRydWUpOwogICAgICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycykgewog
ICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0
aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBz
ZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbDogdHJ1ZX0pOworICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3KG9iamVjdCwgcHJldmlldywg
aW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzW2ldLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJz
dExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgiaW50ZXJuYWwiLCB0cnVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09
IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgICAgICAgICAgICAgIH0KQEAgLTExNjksNyAr
MTIyOSwxMCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICAvLyBQcm9wZXJ0aWVzLgogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuX2ZvckVhY2hQ
cm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5B
bGxQcm9wZXJ0aWVzLCAoZGVzY3JpcHRvcikgPT4gewogICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBw
cm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzKTsKLSAg
ICAgICAgICAgIH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXM6IHRydWUsIGluY2x1ZGVQcm90bzog
dHJ1ZX0pCisgICAgICAgICAgICB9LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAibmF0aXZlR2V0dGVyc0FzVmFsdWVzIiwgdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAiaW5jbHVkZVByb3RvIiwgdHJ1ZSwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9IGNh
dGNoIHsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTE3Nyw3ICsxMjQwLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICB9CiAKLSAgICBfYXBwZW5kUHJvcGVydHlQ
cmV2aWV3KG9iamVjdCwgcHJldmlldywgZGVzY3JpcHRvciwgcHJvcGVydGllc1RocmVzaG9sZCwg
Zmlyc3RMZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsfSA9IHt9KQorICAgIF9h
cHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0
aWVzVGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9
ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKSkKICAgICB7CiAgICAgICAgIC8vIEVy
cm9yIGluIGRlc2NyaXB0b3IuCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLndhc1Rocm93bikgewpA
QCAtMTE5MCw5ICsxMjUzLDkgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogICAgICAgICBpZiAobmFtZSA9PT0gIl9fcHJvdG9fXyIpIHsKICAgICAgICAgICAgIC8vIE5v
biBiYXNpYyBfX3Byb3RvX18gb2JqZWN0cyBtYXkgaGF2ZSBpbnRlcmVzdGluZywgbm9uLWVudW1l
cmFibGUsIG1ldGhvZHMgdG8gc2hvdy4KICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVl
ICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IKLSAgICAgICAgICAgICAgICAmJiBkZXNj
cmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBPYmplY3QKLSAgICAgICAgICAgICAgICAmJiBk
ZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBBcnJheQotICAgICAgICAgICAgICAgICYm
IGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IFJlZ0V4cCkKKyAgICAgICAgICAgICAg
ICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAT2JqZWN0CisgICAgICAgICAg
ICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQEFycmF5CisgICAgICAg
ICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gQFJlZ0V4cCkKICAg
ICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5Db250aW51ZTsKICAgICAgICAg
fQpAQCAtMTIwOSw3ICsxMjcyLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9i
amVjdAogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0ZXIsIG9ubHkgc2hvdyBwcm9wZXJ0
aWVzIGluIHRoZSBmaWx0ZXIuCiAgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhlc2UgZmls
dGVycyBkbyBub3RoaW5nIG9uIHRoZSBiYWNrZW5kLgotICAgICAgICBpZiAoZmlyc3RMZXZlbEtl
eXMgJiYgIWZpcnN0TGV2ZWxLZXlzLmluY2x1ZGVzKG5hbWUpKQorICAgICAgICBpZiAoZmlyc3RM
ZXZlbEtleXMgJiYgIUBBcnJheS5wcm90b3R5cGUuQGluY2x1ZGVzLkBjYWxsKGZpcnN0TGV2ZWxL
ZXlzLCBuYW1lKSkKICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZl
dGNoQWN0aW9uLkNvbnRpbnVlOwogCiAgICAgICAgIGZ1bmN0aW9uIGFwcGVuZFByZXZpZXcocHJv
cGVydHkpIHsKQEAgLTEyMjcsMjAgKzEyOTAsMjggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgaWYgKGludGVybmFsKQogICAgICAgICAgICAgICAg
IHByb3BlcnR5LmludGVybmFsID0gdHJ1ZTsKIAotICAgICAgICAgICAgcHJldmlldy5wcm9wZXJ0
aWVzLnB1c2gocHJvcGVydHkpOworICAgICAgICAgICAgQGFycmF5UHVzaChwcmV2aWV3LnByb3Bl
cnRpZXMsIHByb3BlcnR5KTsKICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9w
ZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR2V0dGVy
L3NldHRlci4KICAgICAgICAgaWYgKCEoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSkgewogICAgICAg
ICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIGFwcGVu
ZFByZXZpZXcoe25hbWUsIHR5cGU6ICJhY2Nlc3NvciJ9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsICJhY2Nlc3NvciIsCisg
ICAgICAgICAgICApKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE51bGwgdmFsdWUuCiAgICAg
ICAgIGxldCB2YWx1ZSA9IGRlc2NyaXB0b3IudmFsdWU7CiAgICAgICAgIGlmICh2YWx1ZSA9PT0g
bnVsbCkKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1lLCB0eXBlOiAib2Jq
ZWN0Iiwgc3VidHlwZTogIm51bGwiLCB2YWx1ZTogIm51bGwifSk7CisgICAgICAgICAgICByZXR1
cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAg
ICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCAib2JqZWN0IiwK
KyAgICAgICAgICAgICAgICAic3VidHlwZSIsICJudWxsIiwKKyAgICAgICAgICAgICAgICAidmFs
dWUiLCAibnVsbCIsCisgICAgICAgICAgICApKTsKIAogICAgICAgICAvLyBJZ25vcmUgbm9uLWVu
dW1lcmFibGUgZnVuY3Rpb25zLgogICAgICAgICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKQEAg
LTEyNTgsNyArMTMyOSwxMSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9hYmJyZXZpYXRlU3RyaW5nKHZhbHVlLCBt
YXhMZW5ndGgsIHRydWUpOwogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KHtuYW1l
LCB0eXBlLCB2YWx1ZTogdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSl9KTsKKyAgICAgICAgICAg
IHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsIHR5cGUs
CisgICAgICAgICAgICAgICAgInZhbHVlIiwgdG9TdHJpbmdEZXNjcmlwdGlvbih2YWx1ZSksCisg
ICAgICAgICAgICApKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFN5bWJvbC4KQEAgLTEyNjgs
MTEgKzEzNDMsMTggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAg
ICAgICAgICAgICAgIHN5bWJvbFN0cmluZyA9IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcoc3ltYm9s
U3RyaW5nLCBtYXhMZW5ndGgsIHRydWUpOwogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xl
c3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRQcmV2
aWV3KHtuYW1lLCB0eXBlLCB2YWx1ZTogc3ltYm9sU3RyaW5nfSk7CisgICAgICAgICAgICByZXR1
cm4gYXBwZW5kUHJldmlldyhAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAg
ICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAgICAgInR5cGUiLCB0eXBlLAorICAg
ICAgICAgICAgICAgICJ2YWx1ZSIsIHN5bWJvbFN0cmluZywKKyAgICAgICAgICAgICkpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gT2JqZWN0LgotICAgICAgICBsZXQgcHJvcGVydHkgPSB7bmFt
ZSwgdHlwZX07CisgICAgICAgIGxldCBwcm9wZXJ0eSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJv
dG90eXBlKAorICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgInR5cGUiLCB0
eXBlLAorICAgICAgICApOwogICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0
eXBlKHZhbHVlKTsKICAgICAgICAgaWYgKHN1YnR5cGUpCiAgICAgICAgICAgICBwcm9wZXJ0eS5z
dWJ0eXBlID0gc3VidHlwZTsKQEAgLTEzMTMsNyArMTM5NSw3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
ZW50cmllcy5sZW5ndGggPiA1KSB7Ci0gICAgICAgICAgICBlbnRyaWVzLnBvcCgpOworICAgICAg
ICAgICAgQEFycmF5LnByb3RvdHlwZS5AcG9wLkBjYWxsKGVudHJpZXMpOwogICAgICAgICAgICAg
cHJldmlldy5vdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMjMsNyArMTQwNSw3IEBAIGxldCBSZW1vdGVPYmplY3Qg
PSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0g
ZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBlbnRyaWVzLm1h
cChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBAQXJyYXkucHJv
dG90eXBlLkBtYXAuQGNhbGwoZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAg
IGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZU9iamVjdFByZXZpZXdGb3JWYWx1ZShl
bnRyeS52YWx1ZSwgZW50cnkudmFsdWUgIT09IG9iamVjdCk7CiAgICAgICAgICAgICB1cGRhdGVN
YWluUHJldmlldyhlbnRyeS52YWx1ZSk7CiAgICAgICAgICAgICBpZiAoImtleSIgaW4gZW50cnkp
IHsKQEAgLTEzMzYsOCArMTQxOCw4IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVP
YmplY3QKIAogICAgIF9pc1ByZXZpZXdhYmxlT2JqZWN0KHZhbHVlLCBvYmplY3QpCiAgICAgewot
ICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKLSAgICAgICAgc2V0LmFkZChvYmplY3QpOworICAg
ICAgICBsZXQgc2V0ID0gbmV3IEBTZXQ7CisgICAgICAgIHNldC5AYWRkKG9iamVjdCk7CiAKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2lzUHJldmlld2FibGVPYmplY3RJbnRlcm5hbCh2YWx1ZSwgc2V0
LCAxKTsKICAgICB9CkBAIC0xMzU3LDExICsxNDM5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBj
bGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8v
IEN5Y2xpYyBvYmplY3RzLgotICAgICAgICBpZiAoa25vd25PYmplY3RzLmhhcyhvYmplY3QpKQor
ICAgICAgICBpZiAoa25vd25PYmplY3RzLkBoYXMob2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICArK2RlcHRoOwotICAgICAgICBrbm93bk9iamVjdHMuYWRkKG9i
amVjdCk7CisgICAgICAgIGtub3duT2JqZWN0cy5AYWRkKG9iamVjdCk7CiAKICAgICAgICAgLy8g
QXJyYXlzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDUgb3IgbGVzcyBzaW1wbGUgb2JqZWN0cy4K
ICAgICAgICAgbGV0IHN1YnR5cGUgPSBSZW1vdGVPYmplY3Quc3VidHlwZShvYmplY3QpOwpAQCAt
MTM4MSwxMiArMTQ2MywxMiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gT2JqZWN0cyBhcmUgc2lt
cGxlIGlmIHRoZXkgaGF2ZSAzIG9yIGxlc3Mgc2ltcGxlIHZhbHVlIHByb3BlcnRpZXMuCi0gICAg
ICAgIGxldCBvd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0KTsKKyAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBAT2JqZWN0LkBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCk7CiAgICAgICAgIGlmIChvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aCA+
IDMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgb3duUHJvcGVydHlOYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgbGV0IHByb3Bl
cnR5TmFtZSA9IG93blByb3BlcnR5TmFtZXNbaV07Ci0gICAgICAgICAgICBsZXQgZGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBAT2JqZWN0LkBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKGRlc2NyaXB0
b3IgJiYgISgidmFsdWUiIGluIGRlc2NyaXB0b3IpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGlmICghdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFs
KG9iamVjdFtwcm9wZXJ0eU5hbWVdLCBrbm93bk9iamVjdHMsIGRlcHRoKSkKQEAgLTE0MDQsNjYg
KzE0ODYsNzIgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAg
ICBpZiAobWlkZGxlKSB7CiAgICAgICAgICAgICBsZXQgbGVmdEhhbGYgPSBtYXhMZW5ndGggPj4g
MTsKICAgICAgICAgICAgIGxldCByaWdodEhhbGYgPSBtYXhMZW5ndGggLSBsZWZ0SGFsZiAtIDE7
Ci0gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBsZWZ0SGFsZikgKyAiXHUyMDI2
IiArIHN0cmluZy5zdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsK
KyAgICAgICAgICAgIHJldHVybiBzdHJpbmcuQHN1YnN0cigwLCBsZWZ0SGFsZikgKyAiXHUyMDI2
IiArIHN0cmluZy5Ac3Vic3RyKHN0cmluZy5sZW5ndGggLSByaWdodEhhbGYsIHJpZ2h0SGFsZik7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBtYXhMZW5ndGgp
ICsgIlx1MjAyNiI7CisgICAgICAgIHJldHVybiBzdHJpbmcuQHN1YnN0cigwLCBtYXhMZW5ndGgp
ICsgIlx1MjAyNiI7CiAgICAgfQogfTsKIAogLy8gLS0tLS0tLQogCi1JbmplY3RlZFNjcmlwdC5D
YWxsRnJhbWVQcm94eSA9IGZ1bmN0aW9uKG9yZGluYWwsIGNhbGxGcmFtZSkKLXsKLSAgICB0aGlz
LmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6
JHtpbmplY3RlZFNjcmlwdElkfX1gOwotICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1l
LmZ1bmN0aW9uTmFtZTsKLSAgICB0aGlzLmxvY2F0aW9uID0ge3NjcmlwdElkOiBTdHJpbmcoY2Fs
bEZyYW1lLnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNvbHVtbk51bWJl
cjogY2FsbEZyYW1lLmNvbHVtbn07Ci0gICAgdGhpcy5zY29wZUNoYWluID0gdGhpcy5fd3JhcFNj
b3BlQ2hhaW4oY2FsbEZyYW1lKTsKLSAgICB0aGlzLnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRl
KGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7Ci0gICAgdGhpcy5pc1RhaWxEZWxl
dGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7Ci19OworSW5qZWN0ZWRTY3JpcHQuQ2FsbEZy
YW1lUHJveHkgPSBjbGFzcyBDYWxsRnJhbWVQcm94eSB7CisgICAgY29uc3RydWN0b3Iob3JkaW5h
bCwgY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5jYWxsRnJhbWVJZCA9IGB7Im9yZGlu
YWwiOiR7b3JkaW5hbH0sImluamVjdGVkU2NyaXB0SWQiOiR7aW5qZWN0ZWRTY3JpcHRJZH19YDsK
KyAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lOworCisg
ICAgICAgIHRoaXMubG9jYXRpb24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICJzY3JpcHRJZCIsIEBTdHJpbmcoY2FsbEZyYW1lLnNvdXJjZUlEKSwKKyAgICAg
ICAgICAgICJsaW5lTnVtYmVyIiwgY2FsbEZyYW1lLmxpbmUsCisgICAgICAgICAgICAiY29sdW1u
TnVtYmVyIiwgY2FsbEZyYW1lLmNvbHVtbiwKKyAgICAgICAgKTsKKworICAgICAgICB0aGlzLnNj
b3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOworICAgICAgICB0aGlz
LnRoaXMgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3Ry
YWNlIik7CisgICAgICAgIHRoaXMuaXNUYWlsRGVsZXRlZCA9IGNhbGxGcmFtZS5pc1RhaWxEZWxl
dGVkOworICAgIH0KIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkucHJvdG90eXBlID0g
ewogICAgIF93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBsZXQgc2Nv
cGVDaGFpbiA9IGNhbGxGcmFtZS5zY29wZUNoYWluOwogICAgICAgICBsZXQgc2NvcGVEZXNjcmlw
dGlvbnMgPSBjYWxsRnJhbWUuc2NvcGVEZXNjcmlwdGlvbnMoKTsKIAotICAgICAgICBsZXQgc2Nv
cGVDaGFpblByb3h5ID0gW107CisgICAgICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBAY3JlYXRl
QXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nv
cGVDaGFpbi5sZW5ndGg7IGkrKykKICAgICAgICAgICAgIHNjb3BlQ2hhaW5Qcm94eVtpXSA9IElu
amVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24oc2NvcGVDaGFpbltp
XSwgc2NvcGVEZXNjcmlwdGlvbnNbaV0sICJiYWNrdHJhY2UiKTsKICAgICAgICAgcmV0dXJuIHNj
b3BlQ2hhaW5Qcm94eTsKICAgICB9Ci19OwogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94
eS5fc2NvcGVUeXBlTmFtZXMgPSB7Ci0gICAgMDogImdsb2JhbCIsIC8vIEdMT0JBTF9TQ09QRQot
ICAgIDE6ICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQotICAgIDI6ICJjbG9zdXJlIiwgLy8gQ0xPU1VS
RV9TQ09QRQotICAgIDM6ICJjYXRjaCIsIC8vIENBVENIX1NDT1BFCi0gICAgNDogImZ1bmN0aW9u
TmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKLSAgICA1OiAiZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlRfU0NPUEUKLSAgICA2OiAibmVz
dGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCi19OworICAgIHN0YXRpYyBfY3Jl
YXRlU2NvcGVKc29uKG9iamVjdCwge25hbWUsIHR5cGUsIGxvY2F0aW9ufSwgZ3JvdXBJZCkKKyAg
ICB7CisgICAgICAgIGxldCBzY29wZSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAor
ICAgICAgICAgICAgIm9iamVjdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElk
KSwKKyAgICAgICAgICAgICJ0eXBlIiwgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Nj
b3BlVHlwZU5hbWVzW3R5cGVdLAorICAgICAgICApOwogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eS5fY3JlYXRlU2NvcGVKc29uID0gZnVuY3Rpb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwg
bG9jYXRpb259LCBncm91cElkKQotewotICAgIGxldCBzY29wZSA9IHsKLSAgICAgICAgb2JqZWN0
OiBSZW1vdGVPYmplY3QuY3JlYXRlKG9iamVjdCwgZ3JvdXBJZCksCi0gICAgICAgIHR5cGU6IElu
amVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lc1t0eXBlXSwKLSAgICB9
OworICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgIHNjb3BlLm5hbWUgPSBuYW1lOwogCi0g
ICAgaWYgKG5hbWUpCi0gICAgICAgIHNjb3BlLm5hbWUgPSBuYW1lOworICAgICAgICBpZiAobG9j
YXRpb24pCisgICAgICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0aW9uOwogCi0gICAgaWYg
KGxvY2F0aW9uKQotICAgICAgICBzY29wZS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICBp
ZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQorICAgICAgICAgICAgc2NvcGUuZW1wdHkgPSB0cnVl
OwogCi0gICAgaWYgKGlzRW1wdHlPYmplY3Qob2JqZWN0KSkKLSAgICAgICAgc2NvcGUuZW1wdHkg
PSB0cnVlOworICAgICAgICByZXR1cm4gc2NvcGU7CisgICAgfQorfTsKIAotICAgIHJldHVybiBz
Y29wZTsKLX0KK0luamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgIDAsICJnbG9iYWwiLCAvLyBHTE9C
QUxfU0NPUEUKKyAgICAxLCAid2l0aCIsIC8vIFdJVEhfU0NPUEUKKyAgICAyLCAiY2xvc3VyZSIs
IC8vIENMT1NVUkVfU0NPUEUKKyAgICAzLCAiY2F0Y2giLCAvLyBDQVRDSF9TQ09QRQorICAgIDQs
ICJmdW5jdGlvbk5hbWUiLCAvLyBGVU5DVElPTl9OQU1FX1NDT1BFCisgICAgNSwgImdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCIsIC8vIEdMT0JBTF9MRVhJQ0FMX0VOVklST05NRU5UCisgICAgNiwg
Im5lc3RlZExleGljYWwiLCAvLyBORVNURURfTEVYSUNBTF9TQ09QRQorKTsKIAogLy8gLS0tLS0t
LQogCkBAIC0xNDc3LDkgKzE1NjUsOSBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJh
bWUpCiAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gb3JpZ2luYWxWYWx1
ZTsgfTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBr
ZXksIHZhbHVlKTsKKyAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywgIiQiICsg
a2V5LCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgiZ2V0IiwgdmFsdWUpKTsKICAgICAg
ICAgaWYgKHNhdmVkUmVzdWx0QWxpYXMgJiYgc2F2ZWRSZXN1bHRBbGlhcyAhPT0gIiQiKQotICAg
ICAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKHNhdmVkUmVzdWx0QWxpYXMgKyBrZXksIHZh
bHVlKTsKKyAgICAgICAgICAgIEBPYmplY3QuQGRlZmluZVByb3BlcnR5KHRoaXMsIHNhdmVkUmVz
dWx0QWxpYXMgKyBrZXksIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJnZXQiLCB2YWx1
ZSkpOwogICAgIH07CiAKICAgICBpZiAoIl9sYXN0UmVzdWx0IiBpbiBpbmplY3RlZFNjcmlwdCkK
QEAgLTE1MDIsNDggKzE1OTAsNDggQEAgZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY2FsbEZyYW1l
KQogICAgICAgICB0aGlzW25hbWVdID0gQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXTsKIH0K
IAotQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9IHt9OworQ29tbWFuZExpbmVBUEkuZ2V0dGVycyA9
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHMgPSB7fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFBy
b3RvdHlwZSgpOwogCi1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihv
YmplY3QpIHsgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7IH07Ci1Db21tYW5kTGluZUFQSS5t
ZXRob2RzWyJ2YWx1ZXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LnZhbHVl
cyhvYmplY3QpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sia2V5cyJdID0gZnVuY3Rpb24o
b2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkBrZXlzKG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ2YWx1ZXMiXSA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gQE9iamVjdC5A
dmFsdWVzKG9iamVjdCk7IH07CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SW5zdGFu
Y2VzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3Rh
bmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlPYmpl
Y3RzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3Rh
bmNlcyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlIb2xk
ZXJzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUhvbGRl
cnMoLi4uYXJndW1lbnRzKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInF1ZXJ5SW5zdGFu
Y2VzIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3Rh
bmNlcyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3Vt
ZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlPYmplY3RzIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUluc3RhbmNlcyguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlIb2xkZXJzIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIEluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUhvbGRlcnMoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKIAogQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siaW5zcGVjdCJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBpbmplY3Rl
ZFNjcmlwdC5pbnNwZWN0T2JqZWN0KG9iamVjdCk7IH07CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbImFzc2VydCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5hc3NlcnQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImNsZWFyIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmNsZWFyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3Vu
dCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5j
b3VudCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnRSZXNl
dCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5j
b3VudFJlc2V0KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkZWJ1
ZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5k
ZWJ1ZyguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpciguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGlyeG1sIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRpcnhtbCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZXJyb3IiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3IoLi4uYXJndW1lbnRz
KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwKC4uLmFyZ3VtZW50cyk7IH07
Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cENvbGxhcHNlZCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cENvbGxhcHNlZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBFbmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBFbmQoLi4u
YXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImluZm8iXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuaW5mbyguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sibG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmxvZyguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9maWxlKC4uLmFyZ3VtZW50cyk7IH07Ci1D
b21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGVFbmQoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmQoLi4uYXJndW1lbnRzKTsgfTsK
LUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInJlY29yZEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5yZWNvcmRFbmQoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInNjcmVlbnNob3QiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuc2NyZWVuc2hvdCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFibGUiXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFibGUoLi4uYXJndW1lbnRzKTsg
fTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRha2VIZWFwU25hcHNob3QiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGFrZUhlYXBTbmFwc2hv
dCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZSJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lKC4uLmFy
Z3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVFbmQoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVMb2ciXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUxvZyguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZVN0YW1wIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVTdGFtcCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidHJhY2UiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudHJhY2UoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIndhcm4iXSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUud2FybiguLi5hcmd1bWVudHMpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siYXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmFzc2VydCguLi5jcmVhdGVJdGVyYWJsZVdp
dGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siY2xlYXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuY2xlYXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNv
dW50KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudFJlc2V0Il0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50UmVzZXQoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRlYnVnIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRlYnVnKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJkaXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUuZGlyKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyeG1s
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvciguLi5jcmVhdGVJdGVyYWJs
ZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdy
b3VwQ29sbGFwc2VkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmdyb3VwQ29sbGFwc2VkKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlw
ZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJn
cm91cEVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5ncm91cEVuZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZvKC4uLmNy
ZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFBy
b3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLnByb2ZpbGUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFy
Z3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVF
bmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
cHJvZmlsZUVuZCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRz
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5j
cmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9
OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5jcmVhdGVJdGVy
YWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFu
ZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ0YWJsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50YWJsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhl
YXBTbmFwc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS50YWtlSGVhcFNuYXBzaG90KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlw
ZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0
aW1lIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRpbWUoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUVuZCguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lTG9nKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ0aW1lU3RhbXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LmNvbnNvbGUudGltZVN0YW1wKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3Rv
dHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2Rz
WyJ0cmFjZSJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS50cmFjZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRz
KGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVuY3Rp
b24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CiAK
IGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rp
b24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKIHJldHVybiBp
bmplY3RlZFNjcmlwdDsKLX0pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApp
bmRleCBhNjk4MWJiZjVhZDk0ZjkzZmQ3OTgzZmY2Zjk3NmM3ZTM5ZDk5OTU4Li5iYzIzN2ExZjRm
NDBiNjU4NzRhNTg4YTNiZjQ4OTA0MWI5M2M2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBwYXJzZSgKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnR5cGUo
KSAhPSBQYXJzZXJFcnJvcjo6U3RhY2tPdmVyZmxvdykKLSAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJVbmV4cGVjdGVkIGVycm9yIGNvbXBpbGluZyBidWlsdGluOiAiLCBlcnJvci5tZXNz
YWdlKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3Ig
Y29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2UoKSwgIiBvbiBsaW5lICIsIGVycm9y
LmxpbmUoKSwgIi4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
CmluZGV4IGZjNzg4OTQ2NTFlOWQ3Njk3N2Y3OTVjNDU0ZDk5ZWUxOWYxM2U3OWMuLmZmYzljOWMy
MzMxZGFlM2Q2YTY1YmRlZmFjNTBiYjFhMDNmMzY3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKIApAQCAtNTcsNiArNTgsOCBAQCB2b2lkIEFycmF5
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQXJyYQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9s
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIEpTQ19CVUlMVElOX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5LCBhcnJheUNv
bnN0cnVjdG9ySXNBcnJheUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mcm9tUHJp
dmF0ZU5hbWUoKSwgYXJyYXlDb25zdHJ1Y3RvckZyb21Db2RlR2VuZXJhdG9yLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKaW5kZXggNWEzYWFhOTFlNjI3MjhjMmNhOWZhZWY1NjFkMmZhYmVkZTcwNTk1ZS4uNTE1
Yzg1ZmQ3ZDMxZTEzNTgwYzBlOGE1MGYxMGY3ZjhmNmFiZjk2OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTMwLDcgKzEzMCwx
MSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgfQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHJpdmF0ZU5h
bWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRy
aWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mb3JFYWNoUHVibGljTmFtZSgp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbmNsdWRlc1ByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlu
ZGV4T2ZQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmluZGV4T2ZQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJs
aWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm1hcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wb3BQ
cml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnBvcFB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogCiAgICAgSlNPYmplY3QqIHVuc2NvcGFi
bGVzID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmN2QyN2I5OTU4YmRlNjhjYzU2Y2IxOTdiMGQyMTI1
ZDViMDJlMTQ3Li5kMmU2M2UxNWVmNGI3MmU5MGJkM2RiOGE1ODk1MzE3YjgyYjJiNDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0yNzUsNiArMjc1LDggQEAgRk9SX0VBQ0hfTEFaWV9CVUlMVElOX1RZUEUoQ0hFQ0tfRkVBVFVS
RV9GTEFHX1RZUEUpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihtYWtlQm91bmRG
dW5jdGlvbik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihoYXNPd25MZW5ndGhQ
cm9wZXJ0eSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRl
U3ltYm9sKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25QYXJzZSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc29uU3RyaW5naWZ5KTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGVuYWJsZVN1cGVyU2FtcGxlcik7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihkaXNhYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGVucXVldWVKb2IpOwpAQCAtMzYxLDYgKzM2MywyMyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3JlYXRlUHJpdmF0ZVN5bWJvbCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9s
OjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkp
KTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25QYXJzZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8ganNvbiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZ2xvYmFsT2JqZWN0LCBqc29u
KSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc29uU3RyaW5naWZ5LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHJlc3VsdCA9IEpTT05TdHJpbmdp
ZnkoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCByZXN1bHQp
KTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXNz
ZXJ0Q2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKIHsKQEAgLTEwNzQsOSArMTA5MywxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQog
CiAgICAgbV9wcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0
b3IpOwogICAgIG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBpbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CisgICAgbV9zdHJpbmdDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIHN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlz
LCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwg
dGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwotICAgIAorICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlN0cmluZyld
LnNldCh2bSwgdGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOworCiAgICAgbV9ldmFsRXJyb3JTdHJ1
Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFs
aXplciYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5nbG9iYWwtPmluaXRpYWxpemVFcnJvckNv
bnN0cnVjdG9yPEVycm9yVHlwZTo6RXZhbEVycm9yPihpbml0KTsKQEAgLTE1NTMsNiArMTU3NCwx
NCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
ID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbCkpOwogICAgICAgICB9KTsKIAorICAg
IC8vIEpTT04gaGVscGVycworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25QYXJzZSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAxLCBTdHJpbmcoKSwganNvblBhcnNlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ompzb25TdHJp
bmdpZnkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGpzb25TdHJpbmdpZnkp
KTsKKyAgICAgICAgfSk7CisKICAgICAvLyBTaGFkb3dSZWFsbXMKICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVSZW1v
dGVGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgY3JlYXRlUmVt
b3RlRnVuY3Rpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGEwYWFlZDM0Nzg3YWY2NmE0ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIu
LmU5NDg2MDNlMmNlY2EyOTU1YTJlZDI3MTU0YmIzYjAxNDk3MWFmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTI0LDYgKzEyNCw3
IEBAIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOwogY2xhc3MgU2V0UHJvdG90eXBlOwogY2xh
c3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZU9yaWdpbjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVj
dG9yOwogY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFi
bGVFbnZpcm9ubWVudDsKIHN0cnVjdCBBY3RpdmF0aW9uU3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMy
MSw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9m
dW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rv
cj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVC
YXJyaWVyPFN0cmluZ0NvbnN0cnVjdG9yPiBtX3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9y
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9y
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAKaW5kZXggYTg2ZGU5Nzc2NGVjNGY1ZDE3N2ZiMWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcy
MzY5MjQ0ZDU5NGY0ZjcyZmRlN2ZkOTM2ZWE1MTQzMGNiYTEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZv
aWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAKICAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmVudHJpZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMsIEpTTWFw
RW50cmllc0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJp
ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJp
ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
ICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDYwOGNmOWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5
ZjUxN2EzOTg3MDQxNWVlZjM3Y2JlMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZv
aWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3Rv
dHlwZU9mUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9s
c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmluZVByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0
Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZh
dGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhh
c093bigpKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMSk7CisKKyAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpIHsKICAgICAg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+aGFzT3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5oYXNPd25Qcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIH0KIH0K
IAogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZj
ZWEyYTZkNWQ0YTk1ZGQ0ODcxLi5mN2Y5YzE0MThiZjdjY2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3
NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5j
cHAKQEAgLTY4LDYgKzY4LDcgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24qIHZh
bHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFBy
b3RvRnVuY1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQ
dWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDUwNjcyMzJjZDY2Zjk5
MTNiOTUzMmYwOWY2ODAzMWJlZWQwNGNmOTMuLjMxYThmOWU3ZDdiYmQzMjY1MGMwY2IyOTgyNjlh
OTM1ZWQwY2NjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcApAQCAtMTY0LDYgKzE2NCw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0
ZXJhdG9yLCBOb0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5zdWJzdHJQcml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5lbmRzV2l0aFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVu
Y0VuZHNXaXRoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMik7CisKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwg
YWZ0ZXIgU3RyaW5nQ29uc3RydWN0b3IgaGFzIGJlZW4gYnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBmYTA0YjdlY2ViYmU4M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi43OTJh
NjcwMTYyN2MxZWEzYzg5YmRlYTVjOGNmM2IyMmNmY2RkZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjEyOSwxOCArMjEyOSw2IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3Jl
KQogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9J
TkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgKLWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5w
bCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRI
T05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAk
e1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4g
JHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
Lm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpz
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQog
TUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29s
b3JEYXRhLmNwcCkKIApAQCAtMjM1Miw2ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNf
U09VUkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAg
ICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9E
SVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9E
SVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJ
TFRJTlNfR0VORVJBVE9SX1NDUklQVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhh
ODZlNzA4MTJiOS4uZjU2NzdlMmU0NTI1MzU2MmJkMmYwYzkwMmQ1NjI3NmU2MGY3MzFmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAg
LTgsNyArOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1lcy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3Bw
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01DbGllbnRJ
c29TdWJzcGFjZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2
ODRkMWMwZjg4MGZiN2NmOTYxZmM2ZmE0MjE2ZTQ2Yy4uYjEyM2FiZjkzZTI3NThkMjExNDhjMTAx
YzlkMTczNGQwNDk2ZjlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjE5
LDE2ICsyMjE5LDYgQEAgaWZuZXEgKCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1
ZGUgJChKU19ET01fSEVBREVSUzouaD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0b3IgaW50ZXJm
YWNlcwotCi1hbGwgOiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qcwotCWVjaG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5t
aW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkg
PCAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
aAotCSQoREVMRVRFKSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQogIyBXZWJD
b3JlIEpTIEJ1aWx0aW5zCiAKIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKQEAgLTIyNTIs
NiArMjI0Miw3IEBAIFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUp
L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29k
ZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50
ZXJuYWxzLmpzIFwKKyAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcyBcCiAjCiAKIEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggZWJkNmMzMDBlN2MzMmI3Y2YzZmFkMDcwNDQ4YjA2N2JmYWE5Yjc4Yy4u
MDFlY2E3MDQ0YWQxMmQxOGMwYWEzNDM3MGM1MWYzMjE1NzZiNjQyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0yMDY4LDYgKzIwNjgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlO
YW1lcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1ZhbHVlS2V5d29y
ZHMuaAorICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
RXZlbnRJbnRlcmZhY2VzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZl
bnRUYXJnZXRJbnRlcmZhY2VzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
SFRNTEVsZW1lbnRUeXBlSGVscGVycy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2MzMTljYWUzNzNjYmQxMjI3ZTliMzg0ZmI4
NTNiYjFmNzRmNzA5Mi4uMTFjMTUxMzY0NzRjNTJmOWFhY2NlNmEyZGI4ZTlkZmQxMzQ0MmE2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODk5LDYgKzg5OSw3IEBACiAJCTJFMzAxQkU4Mjc0NTk0NzIwMEMwNTY0RiAvKiBDb21w
aWxlZFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDQ1MTA3NzIwMkM3RTAxMDA2NTdEMzMgLyogQ29tcGlsZWRTZWxlY3Rvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFMzdERkRCMTJE
QkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFMzdERkQ4MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCAqLzsg
fTsKIAkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3RTAwNDEyREJDNUE0MDBBNkIy
MzMgLyogSlNET01VUkwuaCAqLzsgfTsKKwkJMkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0
MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0OTBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM3MEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJHbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQz
NDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwpA
QCAtMzUxNyw3ICszNTE4LDYgQEAKIAkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVj
dGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1NzhGNDNFMURFMEI2MkIwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFj
a2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTU4MUVEMTMxRkIyODhDRjAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4MUVEMTAxRkIyODhDODAw
Q0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oICovOyB9OwogCQlBNTg0MEUyNTE4N0I4QUMy
MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2Vi
SW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07Ci0JCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmggKi87IH07CiAJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlLmggKi87IH07CiAJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCAqLzsgfTsKIAkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4
NEZFMzIxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwpAQCAt
ODIwNCw2ICs4MjA0LDggQEAKIAkJMkUzN0RGRDkxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NVVJMLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkUzN0UwMDMxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVVJMLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJM
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NVVJMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkyRTNBRUZGRDI4MDlGMjExMDAz
NzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlu
cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJFNDM0NjMzMEY1
NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2
MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29y
a2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTQwLDcgKzEzOTQyLDYg
QEAKIAkJQTU4MUVEMTIxRkIyODhDOTAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQWdlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUyMjE4N0I4QUMyMDA4NDNC
MTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlw
dEhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1ODRGRTI1MTg2MzdEQUIw
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkExODYzODcw
RjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDQyOCw3ICsyMDQyOSw2IEBACiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3
OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oICovLAogCQkJCUE1ODRGRTM5MTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5l
QVBJSG9zdC5jcHAgKi8sCiAJCQkJQTU4NEZFM0ExODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFu
ZExpbmVBUElIb3N0LmggKi8sCiAJCQkJOTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLywKQEAgLTIzNTg0LDYgKzIzNTg0
LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyog
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4
MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQyODA5RjIxMTAw
MzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovLAorCQkJ
CTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1
aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWlu
Z1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAv
KiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQxRUEwMzgxMTk4MzZE
QjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovLApAQCAtMzQwODMsNyArMzQwODUs
NyBAQAogCQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0Ix
MCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYx
ODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAw
OTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOUM2OUQwMjgxMEQxMUQw
MEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0
RkMxRTczNzAzMzAwNzY1NTM2IC8qIENvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmNwcAppbmRleCBkNzdjNzNkOGFlNDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5k
NDFmY2QzNWNhOWUzZjUwM2NkNDczODk0NWI0OWI3OWZkZWEzMzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVs
ZS5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0
NywxNCBAQCBDb21tYW5kTGluZUFQSU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQogewog
fQogCi1TdHJpbmcgQ29tbWFuZExpbmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0
aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Vf
anMsIHNpemVvZihDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChhdXRv
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFs
T2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVu
Y3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0
aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RN
b2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RP
TUdsb2JhbE9iamVjdGAuIik7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1ZSBDb21tYW5kTGluZUFQSU1vZHVsZTo6aG9z
dChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCmluZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGVi
ZGVkYWNmN2ZjNmI0MmQyZGY3NGIuLjBhNTBkNGE1ZjMzM2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3
Yjk3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFs
IDogcHVibGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAg
IENvbW1hbmRMaW5lQVBJTW9kdWxlKCk7CiAKLSAgICBTdHJpbmcgc291cmNlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgSlNDOjpKU0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlciosIGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qcwppbmRleCBmNTFlMzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBl
M2VhLi44MTlmYTQ3ZTlkMTBkMGY0YzdlNzFmOTE5NGIwYmY0ZWY3NjYzYjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTEgKzI2LDEyIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9
X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworLy8gQGludGVy
bmFsCiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21t
YW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkgeworZnVuY3Rpb24gaW5qZWN0TW9kdWxl
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21t
YW5kTGluZUFQSUhvc3QpCit7CiAKLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUy
Mjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0
LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCisvLyBG
SVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdl
YkNvcmUgYnVpbHQtaW5zLgogCiBpbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0
aW9uKG9iamVjdCkgewogICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNzAsMTIg
KzcxLDEyIEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgewogICAgIGVsc2UgaWYgKGluamVjdGVkU2NyaXB0LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0
KSkKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9i
amVjdCA9PT0gInN5bWJvbCIpCi0gICAgICAgIHN0cmluZyA9IGluc3BlY3RlZEdsb2JhbE9iamVj
dC5TdHJpbmcob2JqZWN0KTsKKyAgICAgICAgc3RyaW5nID0gQFN0cmluZyhvYmplY3QpOwogICAg
IGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgIHN0cmluZyA9
ICIiICsgb2JqZWN0OwogICAgIGVsc2UgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgc3Ry
aW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkpTT04uc3RyaW5naWZ5KG9iamVjdCwgbnVsbCwg
IiAgIik7CisgICAgICAgICAgICBzdHJpbmcgPSBAanNvblN0cmluZ2lmeShvYmplY3QsICIgICIp
OwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0Owog
ICAgICAgICB9CkBAIC04OSwyMyArOTAsMjggQEAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0
RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdldCkgewogfTsKIAogZnVuY3Rpb24gbm9y
bWFsaXplRXZlbnRUeXBlcyh0eXBlcykgewotICAgIGlmICh0eXBlcyA9PT0gdW5kZWZpbmVkKQot
ICAgICAgICB0eXBlcyA9IFsibW91c2UiLCAia2V5IiwgInRvdWNoIiwgImNvbnRyb2wiLCAiYWJv
cnQiLCAiYmx1ciIsICJjaGFuZ2UiLCAiZGV2aWNlbW90aW9uIiwgImRldmljZW9yaWVudGF0aW9u
IiwgImVycm9yIiwgImZvY3VzIiwgImxvYWQiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIs
ICJzZWFyY2giLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ1bmxvYWQiXTsKKyAgICBpZiAodHlwZXMg
PT09IEB1bmRlZmluZWQpCisgICAgICAgIHR5cGVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3Rv
dHlwZSgibW91c2UiLCAia2V5IiwgInRvdWNoIiwgImNvbnRyb2wiLCAiYWJvcnQiLCAiYmx1ciIs
ICJjaGFuZ2UiLCAiZGV2aWNlbW90aW9uIiwgImRldmljZW9yaWVudGF0aW9uIiwgImVycm9yIiwg
ImZvY3VzIiwgImxvYWQiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWFyY2giLCAi
c2VsZWN0IiwgInN1Ym1pdCIsICJ1bmxvYWQiKTsKICAgICBlbHNlIGlmICh0eXBlb2YgdHlwZXMg
PT09ICJzdHJpbmciKQotICAgICAgICB0eXBlcyA9IFt0eXBlc107CisgICAgICAgIHR5cGVzID0g
QGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSh0eXBlcyk7CisKKyAgICBsZXQgcmVzdWx0ID0g
bmV3IEBTZXQ7CisgICAgZnVuY3Rpb24gYWRkVHlwZXNUb1Jlc3VsdCgpIHsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1
bHQuQGFkZChhcmd1bWVudHNbaV0pOworICAgIH0KIAotICAgIGxldCByZXN1bHQgPSBbXTsKICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlmICh0
eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJjbGljayIsICJk
YmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3Zl
ciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1
bHQoImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2Vv
dXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwogICAgICAgICBlbHNl
IGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgia2V5ZG93
biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKKyAgICAgICAgICAgIGFkZFR5
cGVzVG9SZXN1bHQoImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElucHV0Iik7
CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAidG91Y2giKQotICAgICAgICAgICAgcmVz
dWx0LnB1c2goInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0
YXJ0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJ0b3VjaGNhbmNlbCIsICJ0b3Vj
aGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOwogICAgICAgICBlbHNlIGlmICh0eXBl
c1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImJsdXIiLCAiY2hh
bmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1
Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJibHVyIiwgImNo
YW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJz
dWJtaXQiLCAiem9vbSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQucHVzaCh0
eXBlc1tpXSk7CisgICAgICAgICAgICByZXN1bHQuQGFkZCh0eXBlc1tpXSk7CiAgICAgfQogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTgsMTkgKzEyNCwxNyBAQCBmdW5jdGlvbiBsb2dFdmVu
dChldmVudCkKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbIm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0
aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47
Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVu
dExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOwotICAgICAgICBvYmplY3QuYWRk
RXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0
eXBlIG9mIEBidWlsdGluU2V0SXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKSB7
CisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxz
ZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxz
ZSk7CiAgICAgfQogfTsKIAogQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidW5tb25pdG9yRXZlbnRz
Il0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVj
dC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAg
ICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgb2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChs
ZXQgdHlwZSBvZiBAYnVpbHRpblNldEl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMp
KSkKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZh
bHNlKTsKIH07CiAKIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVj
dGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKQEAgLTE1OCw5ICsxNjIsMTAgQEAgaWYgKGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewog
ICAgIH07CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkJCJdID0gZnVuY3Rpb24oc2Vs
ZWN0b3IsIHN0YXJ0KSB7CisgICAgICAgIC8vIERvbid0IHJldHVybiBhIHByb3RvdHlwZWxlc3Mg
YXJyYXkgaGVyZSBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHVzZSB0aGUgcmVzdWx0cyBhcyBhIG5v
cm1hbCBBcnJheS4KICAgICAgICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQot
ICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0
LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9t
KHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAgcmV0dXJuIEBBcnJh
eS5AZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChz
ZWxlY3RvcikpOwogICAgIH07CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkeCJdID0g
ZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKQEAgLTE3NSwxMCArMTgwLDExIEBAIGlmIChpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUp
IHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOwogICAgICAgICB9CiAK
LSAgICAgICAgbGV0IG5vZGVzID0gW107CisgICAgICAgIC8vIERvbid0IHJldHVybiBhIHByb3Rv
dHlwZWxlc3MgYXJyYXkgaGVyZSBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHVzZSB0aGUgcmVzdWx0
cyBhcyBhIG5vcm1hbCBBcnJheS4KKyAgICAgICAgbGV0IG5vZGVzID0gbmV3IEBBcnJheTsKICAg
ICAgICAgbGV0IG5vZGUgPSBudWxsOwogICAgICAgICB3aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVy
YXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgICAgIEBh
cnJheVB1c2gobm9kZXMsIG5vZGUpOwogICAgICAgICByZXR1cm4gbm9kZXM7CiAgICAgfTsKIH0K
QEAgLTE4Niw0ICsxOTIsNCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYm
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmlu
ZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1h
bmQgTGluZSBBUEldIH0iOyB9OwogCi19KQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxNThlZjlhZThjYWM1YWM2NWQ1
ODllYjY0YzIzOGU0MGFiZGJkZmUuLmY3ZTRlZmEzNDUwZWIwMTRkMDAwNjBjZjkwNmNhZWZkMmNm
NDVlOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0wNS0wNSAgUGF0cmljayBBbmdsZSAg
PHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0
ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1v
dmVycmlkZW4gSlNDIGJ1aWx0LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUyMjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3Nv
LgorCisgICAgICAgICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUu
aHRtbDoKKyAgICAgICAgLSBBZGQgc2V2ZXJhbCBtb3JlIHRlc3QgY2FzZXMgZm9yIG92ZXJyaWRp
bmcgZnVuY3Rpb25zIGFuZCBlbnRpcmUgb2JqZWN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWw6Cisg
ICAgICAgIC0gQ2hhbmdlZCB0byB0ZXN0IGEgY3VzdG9tIGludGVybmFsIHNjcmlwdCBzbmlwcGV0
IHNpbmNlIHRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGlzIG5vdyBhIGJ1aWx0aW4uCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWw6CisgICAgICAg
IC0gVGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgKGFuZCBtb2R1bGVzKSB3aWxsIG5vIGxv
bmdlciBhcHBlYXIgYXMgc2NyaXB0cyBpbiBXZWIgSW5zcGVjdG9yLgorCisgICAgICAgICogaW5z
cGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQ6CisgICAgICAg
IC0gSW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCBsaW5lIG51bWJlcnMgYXJlIGRpZmZlcmVudCBi
ZXR3ZWVuIHJlbGVhc2UgYW5kIGRlYnVnIGJ1aWxkcywgc28gZmlsdGVyIHRob3NlIG91dC4KKwog
MjAyMi0wNS0wNSAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIGFuZCBjbGVhbnVwIHBsYXRmb3JtIGV4cGVjdGF0aW9ucyBmb2xkZXJzIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1z
Y3JpcHRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKaW5kZXggMWViMTUzOTg4MjQwNmJh
OWZmNGY0ZDMzYTY1ZmY1MjdkZmQ4NWM4ZC4uNTkzN2ZhZTk3Zjg5NTg4NDdmODhmZjQ2N2ViZTE1
YjgxZTI4N2U0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Bh
dXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDY2ICsxLDYwIEBACi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09O
U09MRSBNRVNTQUdFOiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwot
Q09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTogW29iamVj
dCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNoZWNraW5nIHdoZXRoZXIgY29u
c29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFs
dWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCitDaGVja2luZyB3aGV0
aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5v
dCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFs
U2NyaXB0cy4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERlYnVnZ2VyLnNldFBhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzCiAtLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRGlzYWJsZWQKLUVYUFJF
U1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQUkVTU0lPTjogc2V0VGltZW91
dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQog
UEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1
Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpz
Ij48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50
cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2VyOwotICAgICAgOCAgICAg
ICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNv
bGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOworUEFVU0UgQVQgZW50
cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAgICAgMjMKKyAgICAgMjQgICAg
ZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAgMjUgICAgICAgIHxkZWJ1Z2dl
cjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5
OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xl
TG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICB8Y29uc29s
ZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAg
ICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBB
VCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24g
ZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAy
NiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsK
KyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
ZzoxMDo1Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcg
ICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAt
PiAgIDkgICAgICAgIHxjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNv
bGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgorUEFVU0UgQVQgZW50cnlJ
bnRlcm5hbE9iamVjdDoyODo1CisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmpl
Y3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFs
T2JqZWN0LnRlc3QoMSk7CisgLT4gIDI3ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KKyAg
ICAgMzAKIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTE6NQot
ICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gLT4gIDEwICAgICAg
ICB8Y29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCi0gICAgIDEz
ICAgIC8vIC0tLS0tLS0tLQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyOTo1CisgICAg
IDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
MSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworIC0+ICAyOCAgICAg
ICAgfGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KKyAgICAgMzAKKyAgICAg
MzEgICAgLy8gLS0tLS0tLS0tCiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25z
b2xlTG9nOjEyOjIKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5
ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKLSAtPiAgMTEgICAgfXwKLSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0t
LS0tCi0gICAgIDE0CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjMwOjIKKyAgICAgMjYg
ICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAt
PiAgMjkgICAgfXwKKyAgICAgMzAKKyAgICAgMzEgICAgLy8gLS0tLS0tLS0tCisgICAgIDMyCiAK
IEFDVElPTjogcmVzdW1lCiBSRVNVTUVECkBAIC02OCw1NyArNjIsNTcgQEAgUEFTUzogU2hvdWxk
IGhhdmUgdXNlZCBhbGwgc3RlcHMuCiAKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KIC0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFibGVk
Ci1FWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJFU1NJT046IHNl
dFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwgaW4sIGluLCBy
ZXN1bWUKIFBBVVNFRCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnlDb25zb2xl
TG9nOjg6NQotICAgICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2Nh
dGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0
aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAg
IDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKK1BBVVNF
IEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAgIDIzCisgICAg
IDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1ICAgICAgICB8
ZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAy
NyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFs
T2JqZWN0LnRlc3QoMyk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNv
bGVMb2c6OTo1Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5
Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAg
fGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xl
KTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQor
UEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAgIDI0ICAgIGZ1
bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsK
KyAtPiAgMjYgICAgICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRl
c3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNv
bnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAg
ICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAg
IH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQg
ICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVn
Z2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0
aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAg
OCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAg
MTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAg
ICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAg
ZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAg
MjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0Ug
QVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAg
ZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0g
LT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNv
bGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwot
ICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAgIDIz
CisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAg
ICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEpOwor
ICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiByZXN1bWUKIFJF
U1VNRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1m
b3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKaW5kZXggZDE2OGE3MjU0Y2UxZWYwNGQ3
M2E5ZmIzNWM2Y2JkNzM4ZmJjMzFlMy4uZTViMGQ5YzhiNzE4ZTFiMjU2ZWFlZjY3ODIyNmI2Mjcw
ZTcxYjMxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNl
LWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwKQEAgLTQsMTEgKzQsMjkgQEAK
IDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2Ut
bG9jYXRpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0aW9uIGVudHJ5Q29uc29sZUxv
ZygpIHsKKworbGV0IGludGVybmFsT2JqZWN0ID0geyB0ZXN0OiBmdW5jdGlvbigpIHt9IH07CisK
K2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgaW50ZXJuYWxPYmplY3QgPSB3aW5kb3cuaW50
ZXJuYWxzLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKCJ0ZXN0UGF1c2VGb3JJbnRl
cm5hbFNjcmlwdHMiLCBgCisgICAgICAgIC8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9U
ZXN0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuanMKKyAgICAgICAgbGV0IEludGVybmFsT2JqZWN0
ID0gY2xhc3MgSW50ZXJuYWxPYmplY3QgeworICAgICAgICAgICAgdGVzdChpbnZvY2F0aW9uTnVt
YmVyKSB7CisgICAgICAgICAgICAgICAgbGV0IGEgPSA2OworICAgICAgICAgICAgICAgIGxldCBi
ID0gNzsKKyAgICAgICAgICAgICAgICBsZXQgYW5zd2VyID0gYSAqIGI7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgbmV3IEludGVybmFsT2JqZWN0OworICAgIGApOworfQor
CitmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgewogICAgIGRlYnVnZ2VyOwotICAgIGNv
bnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgY29uc29s
ZS5sb2coInN0cmluZyIpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgaW50ZXJu
YWxPYmplY3QudGVzdCgyKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogfQogCiAvLyAt
LS0tLS0tLS0KQEAgLTIxLDMxICszOSwzMSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGFkZFN0
ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRl
cm5hbFNjcmlwdHMuRGlzYWJsZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3Qg
YmUgYWJsZSB0byBzdGVwIGludG8gY29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhl
IEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1l
b3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3Qg
YmUgYWJsZSB0byBzdGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0
ZWQgc2NyaXB0cy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVy
bmFsT2JqZWN0KSIsCiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5k
IHNpbmNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3Vs
dCBpZiBjaGFuZ2luZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9
PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNl
KTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAg
ICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwg
Ly8gY29uc29sZS5sb2coY29uc29sZSkKLSAgICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xl
LmxvZygic3RyaW5nIikKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgyKQor
ICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMykKICAgICAgICAg
ICAgICJyZXN1bWUiLAogICAgICAgICBdCiAgICAgfSk7CiAKICAgICBhZGRTdGVwcGluZ1Rlc3RD
YXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LkVuYWJsZWQiLAotICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAg
b3ZlciBjb25zb2xlLmxvZyBzdGF0ZW1lbnRzIHdoaWNoIHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0
ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlDb25zb2xl
TG9nKSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gc3RlcCBpbnRv
IHN0YXRlbWVudHMgd2hpY2ggdXNlIGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwKKyAgICAg
ICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAogICAgICAg
ICAvLyBDYWxsIG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBpcyBubyBv
dGhlciB3YXkgdG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcgdmlhIHRo
ZSBzZXR0aW5nLgogICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJB
Z2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyh0cnVlKTsgfSwKICAgICAgICAgdGVhcmRv
d246IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92ZXIi
LAotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAg
ICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQot
ICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9nKHdp
bmRvdyldCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgxKQor
ICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0
LnRlc3QoMSldCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgaW50
ZXJuYWxPYmplY3QudGVzdCgxKV0KICAgICAgICAgICAgICJyZXN1bWUiLAogICAgICAgICBdCiAg
ICAgfSk7CkBAIC01Nyw2ICs3NSw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5DaGVja2luZyB3aGV0aGVyIGNvbnNv
bGUubG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVl
IG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLjwvcD4KKzxwPkNoZWNraW5n
IHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBzdGVwcGVkIGludG8g
b3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzLjwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQKaW5kZXgg
NWRlZTk1ZWRmODhlNWU5Yzg2MTU4Y2NlY2QyYzczZGJmZjlmMDE4OC4uNjNhNmU1Yjc0ODRiODY4
OWM3ZDE0NWQ1NGJhNThhN2Y1MjliNGU3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQKQEAgLTksNyArOSw1
IEBAIFBBU1M6IFNob3VsZCBmaW5kIEV4dGVybmFsIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5k
IElubGluZSBTY3JpcHQgVGFnIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5kIElubGluZSBBdHRy
aWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgRXZhbCBTY3Jp
cHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2Ny
aXB0LgotUEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIENvbW1hbmRMaW5lQVBJU291cmNlIFNj
cmlwdC4KIFBBU1M6IFNob3VsZCBub3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2Vk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwK
aW5kZXggZDRmOGYzODY4MmZjNGUxNWM1MDAzNDQ1YTZiYTFkMTM1NDlkOWE1Zi4uZDY3N2JhMmRl
ZGRmMWY1MTY4OTAyYTE1NmNlMmYxOTFhYmExMTQ5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbApAQCAtMTksMTQgKzE5LDExIEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgIC8vICAgLSBpbmxpbmUgPHNjcmlwdD4gKHRoaXMpIHN0YXJ0aW5n
IG9uIGxpbmUgNQogICAgIC8vICAgLSBpbmxpbmUgYm9keSBvbmxvYWQgZXZlbnQgbGlzdGVuZXIg
YXR0cmlidXRlIG9uIDxib2R5PiBsaW5lIGJlbG93CiAgICAgLy8gICAtIGV2YWwgc291cmNlIGFi
b3ZlIG9uIGxpbmUgNwotICAgIC8vICAgLSBpbnNwZWN0b3IgaW50ZXJuYWwgc2NyaXB0cyBJbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogCiAgICAg
bGV0IGZvdW5kRXh0ZXJuYWxTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRJbmxpbmVTY3Jp
cHRUYWdTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kRXZhbFNjcmlwdCA9IGZhbHNlOwot
ICAgIGxldCBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0
IGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRV
bmV4cGVjdGVkU2NyaXB0ID0gZmFsc2U7CiAKICAgICBmdW5jdGlvbiBpc0V4dGVybmFsU2NyaXB0
KHBhcmFtcykgewpAQCAtNDIsMjEgKzM5LDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIGlzSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdChwYXJhbXMp
IHsKLSAgICAgICAgcmV0dXJuIGlzSW5saW5lU2NyaXB0KHBhcmFtcykgJiYgcGFyYW1zLnN0YXJ0
TGluZSA+PSAxMDA7IC8vIEVzdGltYXRlIG9mIDxib2R5PiBiZWxvdy4KKyAgICAgICAgcmV0dXJu
IGlzSW5saW5lU2NyaXB0KHBhcmFtcykgJiYgcGFyYW1zLnN0YXJ0TGluZSA+PSA5OTsgLy8gRXN0
aW1hdGUgb2YgPGJvZHk+IGJlbG93LgogICAgIH0KIAogICAgIGZ1bmN0aW9uIGlzRXZhbFNjcmlw
dChwYXJhbXMpIHsKICAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwgPT09ICJldmFsLmpz
IjsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBpc0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBh
cmFtcykgewotICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5zdGFydHNXaXRoKCJfX0lu
amVjdGVkU2NyaXB0XyIpICYmIHBhcmFtcy5zb3VyY2VVUkwuZW5kc1dpdGgoIi5qcyIpOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSB7
Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLmluZGV4T2YoIkNvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlIikgIT09IC0xOwotICAgIH0KLQogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
ICAgICAgICAgbmFtZTogIkVuYWJsZURlYnVnZ2VyRG9tYWluQW5kQ2hlY2tJbml0aWFsU2NyaXB0
cyIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CkBAIC03OSwxMCArNjgsNiBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5saW5lQXR0cmli
dXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKCFmb3VuZEV2YWxTY3JpcHQgJiYgaXNFdmFsU2NyaXB0KHBhcmFtcykpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZEV2YWxTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICghZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCAmJiBpc0NvbW1hbmRM
aW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoIWZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgJiYgaXNJbmplY3RlZFNj
cmlwdFNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJ
bmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiVU5FWFBFQ1RF
RCBTQ1JJUFQ6ICIgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSB0cnVlOwpAQCAtOTMsOCArNzgs
NiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0
VGhhdChmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCwgIlNob3VsZCBmaW5kIElubGluZSBTY3Jp
cHQgVGFnIFNjcmlwdC4iKTsKICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhh
dChmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQsICJTaG91bGQgZmluZCBJ
bmxpbmUgQXR0cmlidXRlIEV2ZW50IExpc3RlbmVyIFNjcmlwdC4iKTsKICAgICAgICAgICAgICAg
ICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChmb3VuZEV2YWxTY3JpcHQsICJTaG91bGQgZmluZCBF
dmFsIFNjcmlwdC4iKTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdChm
b3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5zcGVjdG9yIElu
amVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4iKTsKLSAgICAgICAgICAgICAgICBQcm90b2NvbFRl
c3QuZXhwZWN0VGhhdChmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0LCAiU2hvdWxkIGZp
bmQgSW5zcGVjdG9yIENvbW1hbmRMaW5lQVBJU291cmNlIFNjcmlwdC4iKTsKICAgICAgICAgICAg
ICAgICBQcm90b2NvbFRlc3QuZXhwZWN0VGhhdCghZm91bmRVbmV4cGVjdGVkU2NyaXB0LCAiU2hv
dWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNjcmlwdHMuIik7CiAKICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0
ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAppbmRleCA4ODMzYThmZDJh
NjVjYzJjODQ1MmNjMzA2MGJlNjg2NDJjYjAzYWI3Li40OWY0YWYyYzEzODRhNDY2N2I3ZmJlOGJj
OGUxZmU4ZDdlZmU1MDkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0
ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwx
NyBAQAogQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KLVRlc3QgdGhhdCBjZXJ0YWlu
IEluamVjdGVkU2NyaXB0U291cmNlIG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVz
ZXIgY29kZS4KK0NPTlNPTEUgTUVTU0FHRTogYSxiLGMKK0NPTlNPTEUgTUVTU0FHRTogW29iamVj
dCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgU2V0XQorQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBNYXBdCitDT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVj
dF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IGNv
dW50IG9mIDEKK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NB
R0U6IGhlbGxvCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorVGVzdCB0aGF0IElu
amVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUu
CiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlCkBA
IC04LDMgKzIwLDM4IEBAIFBBU1M6IFBhdXNlZC4KIFBBU1M6IFJlc3VtZWQuCiBQQVNTOiBBcnJh
eS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgogCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90
eXBlW1N5bWJvbC5pdGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNT
OiBTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6TWFwLnBy
b3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgor
UEFTUzogTWFwLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJl
IDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFy
cmF5LnByb3RvdHlwZS5wdXNoCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzog
QXJyYXkucHJvdG90eXBlWyJwdXNoIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U2V0LnByb3RvdHlwZS5h
ZGQKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBTZXQucHJvdG90eXBlWyJh
ZGQiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5q
ZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmcKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3Vt
ZWQuCitQQVNTOiBTdHJpbmcgY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlLmluZGV4
CitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogQXJyYXkucHJvdG90eXBlWyI0
MiJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmpl
Y3RlZFNjcmlwdC5PYnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1Y3R1cmVkUHJvcGVy
dHkKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBPYmplY3QucHJvdG90eXBl
WyJmZXRjaFN0YXJ0Il0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbAppbmRleCA0
ZDhkNjZlNTJmYmNiMTcxYWIxYzkwYTc2NThkOWQ5M2M4NDdkNjk1Li5lMWI2YjQ0N2VjZjcwOTg5
ZGQ5NTAxNmZlZDYxMjg3MjIwNGZiMjRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbApAQCAtMywzMiArMyw1NiBAQAog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0vLyBOT1RFOiBNb3JlIGNh
c2VzIHNob3VsZCBiZSB0ZXN0ZWQgYW5kIGFkZHJlc3NlZCBieToKLS8vIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNl
IGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIGJ1aWx0
LWlucwotCi1mdW5jdGlvbiB0cmlnZ2VySXRlcmF0aW9uKCkgeworZnVuY3Rpb24gcmVwbGFjZUFu
ZFRlc3RQcm90b3R5cGVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbikgeworICAgIHRyeSB7CiAgICAgbGV0IGNhbGxDb3VudCA9IDA7
Ci0KLSAgICBjb25zdCBvcmlnaW5hbEl0ZXJhdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRvcik7Ci0gICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCB7CisgICAgCisg
ICAgbGV0IG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihwcm90b3R5cGUsIHByb3BlcnR5KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgewogICAgICAgICBnZXQoKSB7CiAgICAgICAgICAgICAr
K2NhbGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZXJhdG9yLnZhbHVlOwor
ICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yPy52YWx1ZTsKICAg
ICAgICAgfQogICAgIH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107Ci0KICAgICBkZWJ1Z2dlcjsK
IAogICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgogICAgIGNvbnNvbGUubG9nKHthOjEsIGI6Miwg
Yzp7fX0pOwogCi0gICAgLy8gVXNlIEFycmF5IEl0ZXJhdG9yIGF0IGxlYXN0IG9uY2UuCi0gICAg
Zm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisgICAgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVu
Y3Rpb24oKTsKKworICAgIGlmIChvcmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcikKKyAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIG9yaWdpbmFsUHJvcGVy
dHlEZXNjcmlwdG9yKTsKKyAgICBlbHNlCisgICAgICAgIGRlbGV0ZSBwcm90b3R5cGVbcHJvcGVy
dHldOworCisgICAgcmV0dXJuIGNhbGxDb3VudDsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IHJldHVybiBTdHJpbmcoZSk7CisgICAgfQorfQorCitmdW5jdGlvbiByZXBsYWNlQW5kVGVzdE9i
amVjdChvYmplY3RTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbikgeworICAg
IGxldCBjYWxsQ291bnQgPSAwOworICAgIAorICAgIGxldCBvcmlnaW5hbE9iamVjdCA9IGV2YWwo
b2JqZWN0U3RyaW5nKTsKKyAgICBldmFsKGAKKyAgICAgICAgJHtvYmplY3RTdHJpbmd9ID0gKCkg
PT4geworICAgICAgICAgICAgKytjYWxsQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2lu
YWxPYmplY3QoLi4uYXJndW1lbnRzKTsKKyAgICAgICAgfTsKKyAgICBgKTsKKworICAgIGRlYnVn
Z2VyOworCisgICAgLy8gUHJldmlldyBhbiBvYmplY3QuCisgICAgY29uc29sZS5sb2coe2E6MSwg
YjoyLCBjOnt9fSk7CiAKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBl
LCBTeW1ib2wuaXRlcmF0b3IsIG9yaWdpbmFsSXRlcmF0b3IpOworICAgIGludm9rZU92ZXJyaWRk
ZW5PYmplY3RGdW5jdGlvbigpOwogCisgICAgZXZhbChgJHtvYmplY3RTdHJpbmd9ID0gb3JpZ2lu
YWxPYmplY3Q7YCk7CisgICAgY29uc29sZS5sb2coImNvdW50IG9mICIgKyBjYWxsQ291bnQpOwog
ICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CiAKQEAgLTM2LDMwICs2MCwxNDggQEAgZnVuY3Rpb24g
dGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRl
KCJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7bmFtZSwgZGVzY3Jp
cHRpb24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHkoJHtwcm90b3R5cGVTdHJpbmd9
LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbi50
b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAke3Byb3RvdHlwZVN0cmluZ31b
JHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuYCk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAgICAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgb2JqZWN0U3RyaW5n
LCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RPYmplY3QoIiR7b2JqZWN0U3Ry
aW5nfSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uLnRvU3RyaW5nKCl9KTtgLCAo
ZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBjYWxsIGNvdW50IHNob3VsZCBi
ZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJl
c3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKICAgICAgICAg
bmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5IGl0ZXJhdGlvbiBpbiBJbmpl
Y3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwKLSAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YHRyaWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsICJBcnJheS5wcm90b3R5cGVb
U3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLiIpOwotICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNz
KCJQYXVzZWQuIik7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
LmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNz
KCJSZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVzY3Jp
cHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUg
b2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUi
LAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGlu
dm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQg
YXJyYXkgPSBbImEiLCAiYiIsICJjIl07CisgICAgICAgICAgICBmb3IgKGxldCB4IG9mIGFycmF5
KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAgICAgICB9LAorICAg
IH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9y
XSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3Jp
cHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzog
IlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRv
ciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7Cisg
ICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldChbImEiLCAiYiIsICJjIl0pOworICAgICAgICAg
ICAgZm9yIChsZXQgeCBvZiBzZXQpIHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhzZXQp
OworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFwIGl0ZXJhdGlv
biBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IHByb3RvdHlwZVN0cmluZzogIk1hcC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmlu
ZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1
bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgbWFwID0gbmV3IE1hcChbWyJhIiwgIjEi
XSwgWyJiIiwgIjIiXSwgWyJjIiwgIjMiXV0pOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBt
YXApIHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhtYXApOworICAgICAgICB9LAogICAg
IH0pOwogCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5wdXNoIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJBcnJheS5wdXNoIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90
IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90
eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcInB1c2hcIiIsCisgICAgICAgIGludm9r
ZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJy
YXkgPSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1c2goNDIpOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJTZXQuYWRkIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2Vy
dmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiU2V0LnByb3RvdHlwZSIsCisgICAg
ICAgIHByb3BlcnR5U3RyaW5nOiAiXCJhZGRcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsK
KyAgICAgICAgICAgIHNldC5hZGQoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRk
T2JqZWN0VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpTdHJpbmciLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN0cmluZyBpbiBJbmplY3RlZCBTY3Jp
cHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIG9iamVjdFN0cmluZzogIlN0
cmluZyIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbjogKCkgPT4gewor
ICAgICAgICAgICAgbGV0IGFuc3dlciA9IFN0cmluZyg0Mik7CisgICAgICAgIH0sCisgICAgfSk7
CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIklu
amVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlLmluZGV4IiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJPdmVycmlkZW4gaW5kZXhlcyBpbiBBcnJheSBwcm90b3R5cGUgaW4gSW5q
ZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5
cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwi
NDJcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7
CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1c2goImhl
bGxvIik7CisgICAgICAgICAgICBjb25zb2xlLmxvZyhhcnJheSk7CisgICAgICAgICAgICBhcnJh
eVs0Ml07CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6T2JqZWN0
LnByb3RvdHlwZS5kZXN0cnVjdHVyZWRQcm9wZXJ0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
T2JqZWN0IGRlc3RydWN0dXJpbmcgKGZvciBgb3B0aW9uc2AgcGFyYW1ldGVycykgaW4gSW5qZWN0
ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVT
dHJpbmc6ICJPYmplY3QucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcImZl
dGNoU3RhcnRcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAo
KSA9PiB7CisgICAgICAgICAgICBsZXQgeCA9IHt9LmZldGNoU3RhcnQ7CisgICAgICAgIH0sCisg
ICAgfSk7CisKKworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPlRlc3QgdGhhdCBj
ZXJ0YWluIEluamVjdGVkU2NyaXB0U291cmNlIG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxl
IGJ5IHVzZXIgY29kZS48L3A+Cis8cD5UZXN0IHRoYXQgSW5qZWN0ZWQgU2NyaXB0IG9wZXJhdGlv
bnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9l
cnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9i
amVjdC9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZDQ0MjE3ZDM2MmVhNGY5YTI1MjY0YTBkOGMz
MGFhZjRhZmUyMzgxNi4uYWZiZDMyZDUwMzdlNTJhZTkwYzIzM2YyMmI1MzkzOTZlZTFmOGFmMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJy
b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUt
b2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMzEsNyArMzEsNyBAQCBFWFBSRVNTSU9OOiBl
cnJvciA9IG51bGw7IHRyeSB7IFtdLngueDsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVy
cm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6
ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92
YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUg
Y29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0K
ICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTcwLDcgKzcwLDcgQEAgRVhQUkVTU0lP
TjogZXJyb3IgPSBudWxsOyB0cnkgeyBldmFsKCJpZigpIik7IH0gY2F0Y2ggKGUpIHsgZXJyb3Ig
PSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAg
ICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29k
ZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2Rl
XVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1c
bmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVF4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUg
Y29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAgfQogICAgIF0sCiAgICAgIl9l
bnRyaWVzIjogbnVsbApAQCAtMTA0LDcgKzEwNCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVs
bDsgdHJ5IHsgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLnNwbGl0VGV4dCgxMDApOyB9IGNh
CiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJz
dHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9i
YWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93
cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmds
b2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU+KApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5f
d3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0sCiAgICAgICB7CiAgICAgICAgICJfbmFt
ZSI6ICJjb2RlIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9s
aW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CmluZGV4IGJmY2FjOTg5ZWFjMGZiZDgwZTg1YWNjNjNj
NGU3YzI4NmI4N2EzODUuLjEyMzNlYjM5NDgxNzNiNDA3NmQzMzA5YjMwMzNhNjZjZmQ5ZDRiMGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29s
dW1uLWV4cGVjdGVkLnR4dApAQCAtNjQsOCArNjQsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRl
ZC4KICAgICAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICAgICAidXJs
IjogIiIsCiAgICAgICAgICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAg
ICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5
NworICAgICAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAg
ICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICAgICAgfQogICAgICAgICAg
IF0sCiAgICAgICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTcsOCArMTE3LDgg
QEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIi
LAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVk
PiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJl
ciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAg
ImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAg
ImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVy
aW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1
cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAg
ImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAg
ICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6
ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZp
bHRlcmVkPiIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGlu
ZS1jb2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVt
bi5odG1sCmluZGV4IDY3MmIzNTMzODAwY2JlMjU5ZWU4ODg3YWJlMTg4NzgxYmViZjA0NGUuLmE0
NTIzMDZjYmQ0ZTQ1NWQ4NjkzYzhkYWJlNDI5NTY0MzFkOTUxMzggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCkBAIC00MiwxMSArNDIsMjcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAvLyBUbyBhdm9pZCBmbGFraW5lc3MgcHJpbnQgb25s
eSBldmVudHMgdGhhdCB3ZSBhbHdheXMgZXhwZWN0LgogICAgIGNvbnN0IGV2ZW50QWxsb3dsaXN0
ID0gbmV3IFNldChbIlJlbmRlcmluZ0ZyYW1lIiwgIkNvbnNvbGVQcm9maWxlIiwgIkV2ZW50RGlz
cGF0Y2giLCAiRnVuY3Rpb25DYWxsIl0pOworCisgICAgLy8gVGhlIGluc3BlY3RvciBpbmplY3Rl
ZCBzY3JpcHQgY2FsbCBmcmFtZShzKSBoYXZlIGRpZmZlcmVudCBsaW5lIG51bWJlcnMgYmV0d2Vl
biByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMuIFdlIG9ubHkKKyAgICAvLyB3YW50IHRvIGZpbHRl
ciB0aG9zZSB2YWx1ZXMgZm9yIHRob3NlIHNwZWNpZmljIGNhbGwgZnJhbWVzIGluIG9yZGVyIHRv
IGVuc3VyZSBvdGhlciBsaW5lL2NvbHVtbiBudW1iZXJzIHJlbWFpbiBzdGFibGUuCisgICAgbGV0
IGZ1bmN0aW9uTmFtZUxlbmd0aCA9IDA7CisgICAgbGV0IHVybExlbmd0aCA9IDA7CisKICAgICBm
dW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAgIGlmIChrZXkgPT09ICJmdW5j
dGlvbk5hbWUiKSB7CisgICAgICAgICAgICBmdW5jdGlvbk5hbWVMZW5ndGggPSB2YWx1ZS5sZW5n
dGg7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIGlmIChrZXkgPT09ICJjaGlsZHJlbiIgJiYgdGhpcy5zdGFydFRpbWUpCiAgICAgICAgICAg
ICByZXR1cm4gdmFsdWUuZmlsdGVyKGUgPT4gZXZlbnRBbGxvd2xpc3QuaGFzKGUudHlwZSkpOwog
ICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBrZXkgPT09ICJlbmRUaW1lIiB8fCBr
ZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJZCIpCiAgICAgICAgICAgICByZXR1
cm4gIjxmaWx0ZXJlZD4iOworICAgICAgICBpZiAoKGtleSA9PT0gImxpbmVOdW1iZXIiIHx8IGtl
eSA9PT0gImNvbHVtbk51bWJlciIpICYmICFmdW5jdGlvbk5hbWVMZW5ndGggJiYgIXVybExlbmd0
aCkKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRlcmVkPiI7CisKKyAgICAgICAgaWYgKGtleSA9
PT0gInVybCIpCisgICAgICAgICAgICB1cmxMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CiAgICAgICAg
IGlmIChrZXkgPT09ICJ1cmwiIHx8IGtleSA9PT0gInNjcmlwdE5hbWUiKQogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlLnJlcGxhY2UoL14uK0xheW91dFRlc3RzXC9pbnNwZWN0b3JcLy8sICIiKTsK
ICAgICAgICAgcmV0dXJuIHZhbHVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458971</attachid>
            <date>2022-05-06 13:51:34 -0700</date>
            <delta_ts>2022-05-09 00:02:56 -0700</delta_ts>
            <desc>Patch v2.0 - Rebase of v1.4</desc>
            <filename>bug-152294-20220506135133.patch</filename>
            <type>text/plain</type>
            <size>157129</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTVkYTA3YjMxMjM1ZjBmMTFiOTliNThjYTY2ZTY0NDRhMzBjYjFkLi40ZGZmODVkNDNlZTAxZGEw
NTBhMDhiNDc5NWE5MzQ5YmRhYWNlZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CiAKICAgICAgICAgYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIGFyZSBmYWls
aW5nIGFmdGVyIDI1MDI0MkBtYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExZTAwNGJlYmJkYjdiNDQzMzZm
YjlhMTZlYzk0ZTMwZmM5NDFkYy4uMjhiNDg5OGQ5ODgyNTEwZGQ0OWI2MWQ2NzFlMTJiMmU5MDAy
MWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTA1LTA2ICBQYXRyaWNrIEFu
Z2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJ
bmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11
c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBS
b3Vzc28uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAtIEJ1aWxkIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzIGFzIGEgYnVpbHRpbiwgbm90IGFzIGEgcGxhaW4gaGVhZGVyIGZpbGUgY29udGFpbmluZyBp
dHMgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1v
ZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9k
dWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5oOgorICAgICAgICAtIFByb3ZpZGUgYSBKU0Z1bmN0aW9uIGZvciBtb2R1
bGUgaW5qZWN0aW9uIGluc3RlYWQgb2YgcmF3IHNvdXJjZSBjb2RlLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOgorICAgICAgICAtIFNpbWlsYXIg
dG8gSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzLCB1c2Ug
cHJpdmF0ZSBuYW1lcyBmb3IgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zCisgICAgICAgIHRocm91
Z2hvdXQgdG8gZ2V0IG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHRpbnMuCisgICAgICAgIC0gSW4g
YG5vcm1hbGl6ZUV2ZW50VHlwZXNgIHVzZSBhIFNldCBpbnN0ZWFkIG9mIGFuIGFycmF5LCBzaW5j
ZSB3ZSBhcmUgcHJvY2Vzc2luZyB1c2VyLXByb3ZpZGVkIHR5cGVzIHRoYXQgbWF5CisgICAgICAg
IGJlIHJlcGVhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBpdGVyYXRlIG92ZXIgYWxs
IHRoZSB0eXBlcyB0byBpbnNlcnQgdGhlbSBpbiB0aGUgc2V0LCBidXQgc2luY2UKKyAgICAgICAg
YEBhcnJheVB1c2hgIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoaW5nIG11bHRpcGxlIHZhbHVlcyBhdCB0
aGUgc2FtZSB0aW1lIHRoaXMgaXMgbm8gbW9yZSB3b3JrIHRoYW4gdXNpbmcgYW4gQXJyYXkuCisK
IDIwMjItMDUtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFsbG93IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyB0byBhdm9pZCBwaXhl
bCBjb25mb3JtZXJzIGlmIElPU3VyZmFjZXMgYXJlIG5vdCBhbGxvd2VkCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJhYzEwNTI2ZWFiODZkMjQx
YzUxYWQ4OS4uZTZlZDdlZDQwNjM3YmE1MmYxMjUyMDg3Y2JmOTZhMjg4ZjViNGNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2NCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQo
CkBAIC0xNDA1LDE3ICsxNDA2LDYgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVS
UwogICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSlNDQnVpbHRpbnMu
aAogKQogCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7SmF2YVNjcmlwdENvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAg
IE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS94eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01N
QU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2Ny
aXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZ
VEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8
ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMg
Pj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNv
dXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oCi0gICAgVkVSQkFUSU0pCi0KLWxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oKQotCiBpZiAoV1RGX0NQVV9YODZfNjQpCiAgICAgaWYgKE1TVkMgQU5EIE5PVCBFTkFCTEVf
Q19MT09QKQogICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGQ1
NDBiZDUxOTIxN2I1NTJiZjA2MDk4YzlkZGMyYTI3NGYzMzQwYi4uZjdiM2RiN2I2MWQzMDYwN2U4
YTZmYjUxNDNhNGMyNGVhZDIyODg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjEsNyArMjEsNiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvR2VuZXJh
dGVkV2FzbU9wcy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9HZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0Qnl0ZWNvZGVzLmFzbQogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRXYXNtLmFz
bQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
amVjdGVkU2NyaXB0U291cmNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2N2YyYzY4NTRmOGExYmExM2Mw
OTVmN2UxNTRmNjhlOTdjYmYzOTEuLjFmYjYyM2NkNmY2ZThkODk4N2Y5NDgwNDU0NGYwZDQ0ZTVi
MzVmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02
OCw3ICs2OCw2IEBAIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0gJChKYXZhU2NyaXB0Q29y
ZSkvU2NyaXB0cwogCiAuUEhPTlkgOiBhbGwKIGFsbCA6IFwKLSAgICBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBS
ZWdFeHBKaXRUYWJsZXMuaCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1dlYkFz
c2VtYmx5LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgXAogIwogCiAjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9u
IHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCkBAIC0z
NjgsMTIgKzM2OCw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgOiBD
b21iaW5lZERvbWFpbnMuanNvbiAkKElOU1BFQ1RPUl9HRU5FUkFUCiAJJChQRVJMKSAkKEphdmFT
Y3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL3ByZXByb2Nlc3MucGwgLS1pbnB1
dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluIC0tZGVmaW5lcyAiJChG
RUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSIgLS1vdXRwdXQgaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcwogCSQoREVMRVRFKSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzLmluCiAKLUluamVjdGVkU2NyaXB0U291cmNlLmggOiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4u
cHkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCi0JZWNobyAiLy8jIHNvdXJj
ZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+IC4vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2pzbWluLnB5IDwgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzID4+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQRVJMKSAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2Vf
anMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAot
CSQoREVMRVRFKSBJbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQogQUlSX09QQ09ERV9GSUxF
UyA9IFwKICAgICBBaXJPcGNvZGUuaCBcCiAgICAgQWlyT3Bjb2RlVXRpbHMuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTky
NzFjZmZkMTcuLjI0ZDRiZTg2YjljMTVmZGM2ZDI3ZDczYmE5MGVmYTg5OTAzNGQyZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQ1LDcgKzE0NDUsNiBAQAogCQlBNTEzRTVC
RTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCOTE4NUJGQUNDMDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsg
fTsKIAkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aCAqLzsgfTsKLQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLzsgfTsKIAkJ
QTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzkxODVGOTYy
NDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjNEMjE1OUQ0MUUw
MEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzUxLDYgKzM3NTAsNyBAQAogCQkyQUQyRURG
QTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVudW1lcmF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyog
R0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDTG9n
Z2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FGMDBEMjgxNzFBQzAw
MDM3MUEyNSAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVR5cGVEZWZpbml0aW9uSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtVHlwZURlZmluaXRp
b25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNzcwQzRGMjdCOTRD
RTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MDcsNyArNDcwNyw2IEBACiAJCUE1MTNFNUJD
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUJEMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFNj
cmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzYxODVG
OTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1Qzkx
ODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2Ny
aXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4NCw3ICs3
MjgzLDYgQEAKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVj
b2Rlcy5hc20gKi8sCi0JCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmggKi8sCiAJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAv
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtOTM2
Myw2ICs5MzYxLDcgQEAKIAkJCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURGRkYgLyogUmVnRXhwU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNTM0RDlCRjgyMzYzQzU1RDAwNTQ1MjRE
IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTcwMzU1ODdEMUM0MTg0MTkwMDRC
RDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8sCisJCQkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1
IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzYwMUI2NUQ5QjEwMDlE
QjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM2MTFCNjVEOUIxMDA5
REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJQTFFMDQ1MUIxQzI1
QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKQEAgLTEwNDUyLDcgKzEwNDUx
LDYgQEAKIAkJCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyMTE4N0I3Qjg2MDA4
NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MTNF
NUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk1OUU5MzIxQkQxODI3OTAwMUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0
eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwNUJCNjkxRDEy
MDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4QTdC
RjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMjM4MCw3ICsxMjM3OCw2IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMx
MkMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQw
OSw3ICsxMjQwNiw2IEBACiAJCQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMzUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBF
IC8qIFVuaWZpZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzMEE2NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMTM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2
QTU0NSAvKiBVbmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyAr
MTI0MTYsNiBAQAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNl
MTQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBV
bmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYw
MEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEz
NUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3Vy
Y2UxNDkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8q
IFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQyNSw5
IEBACiAJCQkJNTM4RjE1RUEyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZE
IC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4
MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJ
CUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3Vy
Y2VzICovLAorCQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlcklu
dGVsLmMgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRm
NWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcuLjM4NzRkZDQyZjI3NjBmMzRlODZkOGRjODE4
NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAtNTIsNiArNTIsNyBAQCBm
dW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21waWxlKHIiKGFzeW5jKT9ccypmdW5jdGlvbiIs
IHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShy
ImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0
aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiLipeQG92ZXJyaWRkZW5OYW1l
PShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uUGFyYW1ldGVy
RmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3luY1xzKyk/ZnVuY3Rpb25ccysoPzpcdyspXHMq
XCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwg
cmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIgPSByZS5jb21waWxlKHIiLFxz
Kig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIAogbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9c
biIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKQEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBC
dWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25ha2VkX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25O
YWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQogICAg
ICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoKICAgICAgICAgICAgIGlzX2NvbnN0cnVjdG9y
ID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0K
KyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0
ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlv
bl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAg
ICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAtMzAzLDIxICszMDQsNTUgQEAgY2xhc3MgQnVp
bHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0
YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0
IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRj
aC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAg
ICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAg
IGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgaXNFc2Nh
cGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFy
YWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAg
ICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0
aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAg
ICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsg
MQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAgICAgY3VycmVudENoYXJh
Y3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3Rl
cjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hh
cmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0
YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3Ry
aW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAg
IGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25l
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJy
ZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgRklYTUU6
IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFyIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5i
YWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAgICAgICAgICAgICAgICMg
Zm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNl
IHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAgICAgICAgICAjIGluc2lk
ZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBz
dHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAgICAgICAgICAgICAjICh1
bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVu
bGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAgICAgICAgICAgICMgdW5i
YWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJl
IGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAg
ICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAg
ICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50
Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAg
ICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAg
ICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0
aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdz
ID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25C
b3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCmluZGV4IDg4OGM4YmFlNDM1Zjg4NjNmNDgwZGQ4MWU0NTU2NmQ3OGI2
MWVmYTcuLjcwOTkyNmFlNzM4NjkwN2RiZDQ5YjFkMGY1ZDUzNjE1ZjM0ZTg1ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICB7CiAg
ICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJzU3RhcnQgKyAxOwogICAgICAgICB1bnNpZ25l
ZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsK
ICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZhbHNlOwogICAgICAgICBib29sIGhhc1Jlc3RQ
YXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTEzLDcgKzExNCwxMyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0g
PT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnfScpCisg
ICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOworICAgICAgICAgICAg
ZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycgfHwgaW5zaWRlQ3VybHlCcmFja2V0cykgewor
ICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSB0cnVlOworICAgICAgICAgICAg
ICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAgICAgICAgICAgICAgKytjb21tYXM7CiAgICAg
ICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tp
XSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0ODNlODcxZTc0M2E5YTEy
YjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFmYTJkNWIyZmIxYTE3NTdlMWUxMDVjZWMzMWI5
NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oY3Jl
YXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1bmN0aW9uKSBcCiAgICAg
bWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBcCisgICAgbWFjcm8oanNv
blN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAor
ICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blBy
b3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093bikgXAorICAgIG1hY3JvKGluZGV4T2Yp
IFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNl
NDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3N2VlMmY0Li5iMTk4NmU4ODUzMGNlYzY2MmMx
OWZmZWFlNzVhMzRiNzVlODZmZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAgLTUxLDMgKzUxLDQzIEBAIGZ1bmN0aW9uIHBl
cmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0KIH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0
aW9uIHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvcikKK3sKKyAgICBsZXQgd3JhcHBlciA9IEBPYmpl
Y3QuQGNyZWF0ZShudWxsKTsKKyAgICB3cmFwcGVyLkBAaXRlcmF0b3IgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGl0ZXJhdG9yOyB9CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK0BnbG9iYWxQcml2
YXRlCitmdW5jdGlvbiBidWlsdGluU2V0SXRlcmFibGUoc2V0KQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKyAgICAKKyAgICBpZiAoIUBpc1NldChzZXQpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
ImJ1aWx0aW5TZXRJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tU2V0IG9iamVjdC4iKTsKKworICAg
IC8vIFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRoYXQgdGhl
IHN5bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3QgcHJvdGVj
dAorICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiByZXBsYWNl
ZC4gRm9yIFNldHMsIGBAdmFsdWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5h
bGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRv
ckZ1bmN0aW9uID0gc2V0LkB2YWx1ZXM7CisgICAgCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0
b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChzZXQpKTsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1
bmN0aW9uIGJ1aWx0aW5NYXBJdGVyYWJsZShtYXApCit7CisgICAgInVzZSBzdHJpY3QiOworICAg
IAorICAgIGlmICghQGlzTWFwKG1hcCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRp
bk1hcEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1NYXAgb2JqZWN0LiIpOworCisgICAgLy8gVXNp
bmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9s
IGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAg
Ly8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3Ig
TWFwcywgYEBlbnRyaWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5hbGx5Cisg
ICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRvckZ1bmN0
aW9uID0gbWFwLkBlbnRyaWVzOworCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0
b3JGdW5jdGlvbi5AY2FsbChtYXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFjNDdlZWViYTg2OTA4YjkwZjk5Y2Iw
Y2U3NDZmMDE5YmQzZWQ3MjMuLmI4NjUzZTg2NTY5OTMxZmNiYjZlMmY0YjQyNTQ4YzRiMGM2ZTEz
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaApAQCAtMTIwLDYgKzEyMCw5IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYo
Y3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlzUmVtb3RlRnVuY3Rpb24s
IG51bGxwdHIpIFwKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAorICAgIHYoanNvblBhcnNl
LCBudWxscHRyKSBcCisgICAgdihqc29uU3RyaW5naWZ5LCBudWxscHRyKSBcCisgICAgdihTdHJp
bmcsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5h
bWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggY2IwNjM0MDJiZjEyMmVhZTE2
OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJkMWJjZTdlYWIwZmFmMTU0ZTA4NzViN2MwYzc2ZGNk
YmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCisjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1ICsxMzUsMTggQEAgdm9pZCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFsdWUoKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5j
bGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAKLVN0cmluZyBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNpemVvZihJbmplY3RlZFNj
cmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKK0V4
cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBp
bnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgeyB9KTsK
ICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygp
OwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIElu
c3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2
YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFu
ZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1ZSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBhdXRvKiBmdW5jdGlv
blZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRp
b24oKSkpOworICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlKTsK
ICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAgLTE2Niw3
ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VSVCghYXJncy5oYXNP
dmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5n
ZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVkU2NyaXB0IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5q
ZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0g
Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFsT2JqZWN0
LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChnbG9i
YWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAgICAgICBhdXRvJiBl
cnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwpAQCAt
MTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgaWYgKHN0
YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVt
bihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY3JlYXRp
bmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlm
ICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5n
IGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwg
aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDFmNzQwYzQw
Njg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIyZTdhZTM4
MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCArNzUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50PiBtX3NjcmlwdFN0
YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsK
LSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBj
cmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAg
ICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWExMS4uMGI2
NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
QEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmpl
Y3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICBpZiAo
c3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29s
dW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxs
aW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1
bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQu
dmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImlu
amVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsK
KyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKGluamVjdE1vZHVs
ZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwogICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRT
Y3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RNb2R1bGVSZXN1bHQg
PSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwog
ICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyArOTEsNiBAQCB2b2lk
IEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAg
ICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1u
KTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdpbmplY3RN
b2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0
ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVz
XG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggMjc5YmFl
NGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZhMDA1ZDc2
ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbmplY3Rl
ZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAg
IH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9k
dWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDQ4YmFl
ZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhjNDkyNWY2YzQuLjAwODAzNjY2MjhjNjZhNWJlMDQw
MjRhYTU2MGUwZDgxMmMyNzg4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNyArMjcsMzggQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEsIGtleTIsIHZhbHVlMiwgLi4uICovKQoreworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJv
cigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGVgIHJlcXVpcmVzIHRoYXQgZWFjaCBrZXkg
YXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2YWx1ZSwgcmVzdWx0aW5nIGluIGFuIGV2ZW4gbnVt
YmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAgIGxldCBvYmplY3QgPSBAT2JqZWN0LkBjcmVhdGUo
bnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkgKz0gMikK
KyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tpXV0gPSBhcmd1bWVudHNbaSArIDFdOwogCi0oZnVu
Y3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3Rl
ZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotLy8gRklYTUU6IDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0
U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRl
biBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIsIC4uLiAqLykKK3sKKyAgICBsZXQgYXJyYXkgPSBu
ZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpOworICAgIGFycmF5Ll9fcHJvdG9fXyA9IG51bGw7
CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpCisg
ICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFyZ3VtZW50c1tpXSk7CisgICAgCisgICAgcmV0dXJu
IGFycmF5OworfQogCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7CitAZ2xvYmFsUHJpdmF0
ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRI
b3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CiAKIGZ1bmN0
aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAgcmV0dXJu
IEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmopCkBA
IC05Myw2ICsxMTQsMTUgQEAgZnVuY3Rpb24gaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KKyAgICAKK2Z1bmN0aW9uIGNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzT2JqZWN0KSB7CisgICAgbGV0
IGl0ZXJhdG9yRnVuY3Rpb24gPSBhcmd1bWVudHNPYmplY3QuQEBpdGVyYXRvcjsKKyAgICByZXR1
cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKGFyZ3VtZW50c09iamVj
dCkpOworfQorCitmdW5jdGlvbiBtYXgoYSwgYikgeworICAgIHJldHVybiBhID4gYiA/IGEgOiBi
OworfQogCiAvLyAtLS0tLS0tCiAKQEAgLTEwMSwxMiArMTMxLDEyIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOwotICAgICAgICB0aGlzLl9pZFRvV3Jh
cHBlZE9iamVjdCA9IHt9OwotICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0ge307
Ci0gICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OwotICAgICAgICB0aGlzLl9tb2R1bGVz
ID0ge307CisgICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IEBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX29iamVjdEdyb3Vw
cyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX21vZHVs
ZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB0aGlzLl9uZXh0
U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOwor
ICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBl
KCk7CiAgICAgfQogCiAgICAgLy8gSW5qZWN0ZWRTY3JpcHQgQysrIEFQSQpAQCAtMTE1LDcgKzE0
NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fd3JhcEFuZFNhdmVDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsICgpID0+IHsKICAgICAgICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1l
LCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlz
RXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLkBhcHBseShAdW5kZWZpbmVk
LCBhcmdzKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMzYsMTYgKzE2NiwxNiBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIFBy
b21pc2UpKSB7CisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBAUHJvbWlz
ZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBnaXZlbiBpZCBpcyBub3Qg
YSBQcm9taXNlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBs
ZXQgcmVzb2x2ZSA9ICh2YWx1ZSkgPT4gewotICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9
IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJl
c3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSwg
cmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKLSAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisg
ICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAgICJyZXN1
bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCBy
ZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAgICAg
ICAgICAgaWYgKHNhdmVSZXN1bHQpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3Vs
dEluZGV4ID0gMDsKQEAgLTE1OSw3ICsxODksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgcmVqZWN0ID0gKHJlYXNvbikgPT4gewogICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUocmVhc29uLCBwcm9taXNl
T2JqZWN0R3JvdXBOYW1lKSk7CiAgICAgICAgIH07Ci0gICAgICAgIHByb21pc2VPYmplY3QudGhl
bihyZXNvbHZlLCByZWplY3QpOworICAgICAgICBwcm9taXNlT2JqZWN0LkB0aGVuKHJlc29sdmUs
IHJlamVjdCk7CiAgICAgfQogCiAgICAgZXZhbHVhdGVPbkNhbGxGcmFtZSh0b3BDYWxsRnJhbWUs
IGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC0xODAs
MTQgKzIxMCwxNCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuICJDb3Vs
ZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CiAKLSAgICAgICAgbGV0IHJlc29sdmVk
QXJncyA9IFtdOworICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSgpOwogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAgICAgbGV0IGNhbGxB
cmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwogICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9IHRoaXMuX3Jlc29s
dmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIyNywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVu
Y3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVzc2lvbiBkb2VzIG5v
dCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0
R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9
OworICAgICAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAicmVzdWx0
IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3QsIHJlc29sdmVkQXJncyks
IG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAg
ICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwogICAgICAgICB9CkBAIC0y
MzMsMTMgKzI2MywyMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZldGNoU3RhcnQs
IGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBjb2xsZWN0
aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5P
d25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3fSk7CisgICAg
ICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwg
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiZmV0Y2hTdGFydCIs
IGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQsCisgICAg
ICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LAorICAgICAgICApKTsK
ICAgICB9CiAKICAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZldGNoU3Rh
cnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBjb2xs
ZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMg
fCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzOwot
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1v
ZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2ZUdldHRl
cnNBc1ZhbHVlczogdHJ1ZX0pOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhv
YmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAor
ICAgICAgICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAgImZldGNo
Q291bnQiLCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIsIGdlbmVy
YXRlUHJldmlldywKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAor
ICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0SWQs
IGdlbmVyYXRlUHJldmlldykKQEAgLTI1Niw3ICsyOTUsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHRoaXMu
X2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOwogICAgICAgICBpZiAoIWRlc2Ny
aXB0b3JzKQotICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgcmV0dXJuIEBjcmVh
dGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9
IGRlc2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICszMTksMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBs
ZXQgZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3Quc3Vi
dHlwZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgcmV0dXJuIGVu
dHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
ZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1tp
XTsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS52
YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoImtl
eSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnkua2V5ID0gUmVtb3RlT2JqZWN0LmNy
ZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04pCkBAIC0z
MDYsMTAgKzM0NiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlQXJy
YXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGxldCBkZXB0aCA9IDA7CiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0
LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7
CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVyOwogICAgICAgICB9IHdo
aWxlIChjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzI2LDcgKzM2Niw3
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgd3JhcEpT
T05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBOYW1lLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewog
ICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChKU09OLnBh
cnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBqc29uUGFyc2UoanNvblN0cmluZyksIGdy
b3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpAQCAtMzQzLDEyICszODMsMTIgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgY29s
dW1uTmFtZXMgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmci
KQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKyAgICAgICAgICAgIGNvbHVtbnMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKGNvbHVtbnMpOwogCiAgICAgICAgIGlmIChJ
bmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFycmF5IikgewotICAgICAg
ICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2go
dG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2goY29sdW1u
TmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1
bW5OYW1lcyk7CkBAIC0zOTYsNyArNDM2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUi
KSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsKICAgICAgICAgICAgIHRo
aXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gQGNyZWF0ZUFycmF5
V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IGdyb3VwID0gdGhp
cy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00MjksMTQgKzQ2OSwxNiBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4g
dGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291
cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVGdW5jdGlvbiwgaG9zdCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxzZTsKIAotICAgICAgICBs
ZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291
cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3BlY3RvcjogYSBmdW5jdGlv
biB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAgIG1vZHVsZUZ1bmN0aW9u
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIGhvc3QpOworICAgICAg
ICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVj
dCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAiUmVtb3RlT2JqZWN0IiwgUmVtb3RlT2JqZWN0LAorICAgICAgICAgICAg
IkNvbW1hbmRMaW5lQVBJIiwgQ29tbWFuZExpbmVBUEksCisgICAgICAgICksIGhvc3QpOwogCiAg
ICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSB0cnVlOwogICAgIH0KQEAgLTQ3MCwxMCArNTEy
LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGlmIChvYmplY3RHcm91cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMuX29i
amVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAgaWYgKCFncm91cCkgewot
ICAgICAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0
R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVzaChncm91cCwgaWQpOwog
ICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5h
bWU7CiAgICAgICAgIH0KIApAQCAtNDg4LDggKzUzMCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZmFsbGJhY2tXcmFwcGVyKG9iamVjdCkKICAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSB0eXBl
b2Ygb2JqZWN0OworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoInR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFs
dWUob2JqZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9iamVjdDsKICAgICAgICAg
ZWxzZQpAQCAtNTE1LDcgKzU1Niw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAg
ICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQpAQCAtNTI0
LDEwICs1NjUsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRv
U3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNoIHsgfQotICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAgICAgICAgICAgcmVzdWx0
OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIndhc1Rocm93biIsIHRydWUsCisgICAgICAg
ICAgICAicmVzdWx0IiwgcmVtb3RlT2JqZWN0LAorICAgICAgICApOwogICAgIH0KIAogICAgIF9l
dmFsdWF0ZUFuZFdyYXAoZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZh
bHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC01NTIsMTAgKzU5MywxMCBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICB0cnkgewog
ICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CiAKLSAgICAgICAgICAgIGxl
dCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAg
ICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RH
cm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAg
InJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAKICAgICAgICAgICAg
IGlmIChzYXZlUmVzdWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4
OwpAQCAtNTcxLDcgKzYxMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7CiAgICAgICAgIGlmIChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMu
Y3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBu
dWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lv
biwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLkBjYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0KIAogICAgIF9jYWxsRnJh
bWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjA3LDcgKzY0OCw3IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIC8vIEFsd2F5
cyBpbmNsdWRlIF9fcHJvdG9fXyBhdCB0aGUgZW5kLCBidXQgb25seSBmb3IgdGhlIGZpcnN0IGZl
dGNoLgogICAgICAgICBsZXQgaW5jbHVkZVByb3RvID0gIXN0YXJ0OwogCi0gICAgICAgIGxldCBk
ZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+IHsKICAgICAgICAgICAg
IGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0OwpAQCAtNjIyLDEzICs2
NjMsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlw
dG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAg
ICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3Iuc3ltYm9sLCBv
YmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9y
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogCiAg
ICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRlc2NyaXB0b3JzLmxlbmd0
aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3RvX18iKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CiAK
ICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50
KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcCA6IEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAgIH0sIHtuYXRpdmVHZXR0
ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCBuYXRp
dmVHZXR0ZXJzQXNWYWx1ZXMsCisgICAgICAgICAgICAiaW5jbHVkZVByb3RvIiwgaW5jbHVkZVBy
b3RvLAorICAgICAgICApKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KIApA
QCAtNjM4LDEzICs2ODIsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRl
c2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7IGkrKykgewogICAgICAg
ICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZh
bHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBwcm9wZXJ0eS5uYW1lLAorICAgICAg
ICAgICAgICAgICJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlLAorICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRv
ci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3Ip
OworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KQEAgLTY1NCwxNSArNzAx
LDE4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09PSAicHJveHkiKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IFNldDsK
KyAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAogICAgICAgICAvLyBIYW5k
bGVkIGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5hbWVQcm9jZXNzZWQuYWRk
KCJfX3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsK
IAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJv
bCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVy
KQogICAgICAgICB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxldCBmYWtl
RGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsKKyAgICAgICAgICAgICAg
ICBsZXQgZmFrZURlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAidmFs
dWUiLCBvYmplY3RbbmFtZV0sCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0
YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLndyaXRhYmxlID0g
dHJ1ZTsKQEAgLTY3OCwxMSArNzI4LDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKICAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAgICAgICAgICAgICAgIC8v
IFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25zIGNyZWF0
ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRoaXMgb2Jq
ZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9m
IFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CisgICAgICAgICAg
ICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgQFByb21pc2UgJiYgSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJv
cihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3YXNUaHJvd246IHRydWV9
OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAidmFsdWUiLCBlLAorICAgICAgICAgICAgICAgICAgICAid2FzVGhyb3du
IiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChpc093blBy
b3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVl
OwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUgKzc2NCwxNSBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1bmN0aW9u
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUpKQorICAg
ICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVl
OwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgICAgIGxl
dCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBzeW1ib2wg
PSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAotICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8s
IHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYg
KCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9y
LiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkg
cmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzgxLDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmco
ZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlw
dG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRv
ci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKEBTdHJpbmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2Rl
XVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3Is
ICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3Is
ICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxvcGVycyBtYXkgY3JlYXRl
IHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxpZW50OgogICAgICAgICAg
ICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwgInAiLCB7
Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHgsICJwIikK
ICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVl
RGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHRydWUp
OwpAQCAtNzQ1LDEwICs3OTksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0
KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3Ro
ID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxl
bmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgZm9yIChsZXQgbyA9IG9i
amVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKSB7CisgICAg
ICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IEBPYmplY3QuQGdldFBy
b3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09IG9i
amVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNlOwogCkBAIC03NjQsNyAr
ODE4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9
IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lc1tpXSwg
aXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0
ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC03NzYsMTQg
KzgzMCwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewotICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8p
OwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJv
cGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9s
cyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0
eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAg
IHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0
aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHNob3VsZEJy
ZWFrKQpAQCAtNzk2LDIzICs4NDgsMjggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1ZGVQcm90bykgewogICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXykKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3RvX18iLCB2YWx1ZTogb2JqZWN0Ll9fcHJvdG9f
Xywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgaXNPd246IHRydWV9KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsICJfX3Byb3RvX18iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0Ll9fcHJvdG9fXywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29u
ZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpc093biIsIHRydWUs
CisgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSBjYXRjaCB7IH0KICAgICAg
ICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0
Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBl
bnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIFNldC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Ygb2JqZWN0KSB7
CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGluU2V0SXRlcmFibGUob2JqZWN0KSkg
ewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0
Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNo
KGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ2YWx1ZSIsIHZhbHVlKSk7
CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRj
aENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIzLDE2ICs4ODAsMTggQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9nZXRNYXBFbnRy
aWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBl
bnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFBy
b3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhl
IHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAg
Zm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAgICBp
ZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJp
ZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5UHVzaChlbnRyaWVzLCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAia2V5Iiwga2V5
LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZhbHVlLAorICAgICAgICAgICAgKSk7CiAKICAg
ICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MzUsMTAgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xh
c3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8
IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCBy
ZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0
aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOworICAgICAgICBs
ZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90b3R5cGUuQGluZGV4T2YuQGNhbGwodGhpcy5f
c2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEp
IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4Owog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5NTMsMTYgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1JbmplY3RlZFNjcmlwdC5D
b2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8IDAsICAgICAgICAgIC8v
IG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRpZXM6IDEgPDwgMSwgLy8g
bmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi0gICAgQWxs
UHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJv
dG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIk93blByb3BlcnRpZXMiLCAxIDw8IDAsICAg
ICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzIiwg
MSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFp
bi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRp
ZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29udGludWUiKSwKLSAgICBT
dG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rp
b24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiQ29udGludWUiLCBAY3Jl
YXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICAiU3RvcCIsIEBjcmVhdGVQcml2YXRl
U3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRT
Y3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIxLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRl
UHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAg
ICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJl
dmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNv
bHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcgKzEwMzYsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0LmRlc2NyaWJlKGUpOwogICAg
ICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICAgICBhbGVydChleC5tZXNzYWdl
KTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcihl
eC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICI8ZmFpbGVkIHRvIGNv
bnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3JpcHRpb24pOwpAQCAtOTg2LDcgKzEwNDUsNyBA
QCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBzdGF0aWMgY3Jl
YXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5h
bWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3Qo
dmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwor
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVuZGVm
aW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwogICAgICAgICBpZiAo
cmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFz
ZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0
LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkK
QEAgLTEwMTEsNyArMTA3MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9uLgogICAgICAgICB0cnkg
ewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYg
aXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUuc3Bs
aWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsgfQogCkBAIC0xMDUwLDgg
KzExMDksOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
IGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsK
IAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBTeW1ib2wudG9TdHJpbmdU
YWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFn
XTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYgQEB0b1N0cmluZ1RhZyBp
biB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5AQHRvU3RyaW5nVGFnOwogCiAgICAg
ICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJp
b3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKQEAg
LTEwNjksNiArMTEyOCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
IAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJDb3Jl
IGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1l
bnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAgICAgICAgbGV0IG5vZGVO
YW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjAsMTcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRpYWxQcmV2aWV3KCkKICAgICB7Ci0gICAgICAg
IGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLAotICAgICAgICAg
ICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSks
Ci0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHBy
ZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJ0eXBl
IiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwgdGhpcy5kZXNjcmlwdGlv
biB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJsb3NzbGVzcyIsIHRydWUs
CisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkgewogICAgICAgICAgICAg
cHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAgICAgaWYgKHRoaXMuc3Vi
dHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAg
ICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMTI2LDcgKzExODYsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgaWYgKHRoaXMuc3Vi
dHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUg
PT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKLSAgICAg
ICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBwcmV2aWV3
LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAg
ICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByZXZpZXcub3Zl
cmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTE0MSwyMyArMTIwMSwyMyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGxldCBpc1RhYmxlUm93
c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09IG51bGwgfHwgc2Vjb25kTGV2ZWxLZXlzOwog
ICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3VudCA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RM
ZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9
IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBN
YXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKLSAgICAgICAgICAgIGluZGV4ZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3Vu
dCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJlc2hvbGQgPSBAY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiwgaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAg
ICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwgZmly
c3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRyaWVzLgogICAgICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAgICAgICAgICAgdGhpcy5f
YXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0gICAgICAgICAgICBwcmV2
aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICAgICAgLy8gSW50ZXJuYWwg
UHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMg
PSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKSB7CiAgICAg
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29u
ZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2
ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJp
bnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gSW5q
ZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE2OSw3ICsxMjI5
LDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAg
IC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3Bl
cnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFBy
b3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3Bl
cnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwotICAgICAg
ICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVl
fSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAorICAgICAgICAgICAgICAg
ICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0gY2F0Y2gg
ewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0x
MTc3LDcgKzEyNDAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0KIAotICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZp
ZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJz
dExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9ID0ge30pCisgICAgX2FwcGVu
ZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNU
aHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpKQogICAgIHsKICAgICAgICAgLy8gRXJyb3Ig
aW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7CkBAIC0x
MTkwLDkgKzEyNTMsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAgICAgICAgLy8gTm9uIGJh
c2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5nLCBub24tZW51bWVyYWJs
ZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUgJiYg
ZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0
b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAgICAgICAgICAgJiYgZGVz
Y3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAgICAgICAgICAgICAgICYm
IGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QKKyAgICAgICAgICAgICAg
ICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJyYXkKKyAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAUmVnRXhwKQogICAgICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogICAgICAgICB9CkBA
IC0xMjA5LDcgKzEyNzIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBzaG93IHByb3BlcnRpZXMg
aW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGVzZSBmaWx0ZXJz
IGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChmaXJzdExldmVsS2V5cyAm
JiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAgIGlmIChmaXJzdExldmVs
S2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5jbHVkZXMuQGNhbGwoZmlyc3RMZXZlbEtleXMs
IG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kUHJldmlldyhwcm9wZXJ0
eSkgewpAQCAtMTIyNywyMCArMTI5MCwyOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCiAgICAgICAgICAgICAgICAgcHJv
cGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMu
cHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHByZXZpZXcucHJvcGVydGll
cywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHZXR0ZXIvc2V0
dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgICAg
ICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVu
ZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAg
Im5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgImFjY2Vzc29yIiwKKyAgICAg
ICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2YWx1ZS4KICAgICAgICAg
bGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlID09PSBudWxs
KQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGU6ICJvYmplY3Qi
LCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsICJvYmplY3QiLAorICAg
ICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwiLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIs
ICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAgICAgICAgIC8vIElnbm9yZSBub24tZW51bWVy
YWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlOwpAQCAtMTI1
OCw3ICsxMzI5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcodmFsdWUsIG1heExl
bmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5
cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKX0pOworICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAg
ICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAg
ICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKSwKKyAgICAg
ICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU3ltYm9sLgpAQCAtMTI2OCwxMSAr
MTM0MywxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJp
bmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
e25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsIHR5cGUsCisgICAgICAg
ICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5nLAorICAgICAgICAgICAgKSk7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9wZXJ0eSA9IHtuYW1lLCB0
eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAidHlwZSIsIHR5cGUs
CisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
dmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAgIHByb3BlcnR5LnN1YnR5
cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRy
aWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAg
ICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwoZW50cmllcyk7CiAgICAgICAgICAgICBwcmV2
aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9IGVudHJpZXMubWFwKGZ1
bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBBcnJheS5wcm90b3R5
cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewogICAgICAgICAgICAgZW50
cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5
LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKICAgICAgICAgICAgIHVwZGF0ZU1haW5Q
cmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkgewpA
QCAtMTMzNiw4ICsxNDE4LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKICAgICB7Ci0gICAg
ICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9iamVjdCk7CisgICAgICAg
IGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2JqZWN0KTsKIAogICAgICAg
ICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEp
OwogICAgIH0KQEAgLTEzNTcsMTEgKzE0MzksMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gQ3lj
bGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFzKG9iamVjdCkpCisgICAg
ICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGtub3duT2JqZWN0cy5hZGQob2JqZWN0
KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQob2JqZWN0KTsKIAogICAgICAgICAvLyBBcnJh
eXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBvciBsZXNzIHNpbXBsZSBvYmplY3RzLgogICAg
ICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCk7CkBAIC0xMzgx
LDEyICsxNDYzLDEyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBPYmplY3RzIGFyZSBzaW1wbGUg
aWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGllcy4KLSAgICAgICAg
bGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qp
OworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAm
JiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2Jq
ZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTQwNCw2NiArMTQ4
Niw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlm
IChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBsZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAxOwog
ICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxlZnRIYWxmIC0gMTsKLSAg
ICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsg
c3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOworICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsg
c3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0tLS0tCiAKLUluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQotewotICAgIHRoaXMuY2Fs
bEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2lu
amVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVu
Y3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6IFN0cmluZyhjYWxsRnJh
bWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwgY29sdW1uTnVtYmVyOiBj
YWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVD
aGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2Fs
bEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKLSAgICB0aGlzLmlzVGFpbERlbGV0ZWQg
PSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsKKyAgICBjb25zdHJ1Y3RvcihvcmRpbmFsLCBj
YWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6
JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOworICAg
ICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7CisKKyAgICAg
ICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLAorICAgICAgICAg
ICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAgICApOworCisgICAgICAgIHRoaXMuc2NvcGVD
aGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7CisgICAgICAgIHRoaXMudGhp
cyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2Ui
KTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7
CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAg
ICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGxldCBzY29wZUNo
YWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9u
cyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0gICAgICAgIGxldCBzY29wZUNo
YWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IEBjcmVhdGVBcnJh
eVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29wZUNo
YWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5W2ldID0gSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29wZUNoYWluW2ldLCBz
Y29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwogICAgICAgICByZXR1cm4gc2NvcGVD
aGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9z
Y29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCi0gICAg
MTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUiLCAvLyBDTE9TVVJFX1ND
T1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0OiAiZnVuY3Rpb25OYW1l
IiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQotICAgIDY6ICJuZXN0ZWRM
ZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07CisgICAgc3RhdGljIF9jcmVhdGVT
Y29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9jYXRpb259LCBncm91cElkKQorICAgIHsK
KyAgICAgICAgbGV0IHNjb3BlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
ICAgICAgICAib2JqZWN0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAor
ICAgICAgICAgICAgInR5cGUiLCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVU
eXBlTmFtZXNbdHlwZV0sCisgICAgICAgICk7CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVBy
b3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2Nh
dGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAgICAgICBvYmplY3Q6IFJl
bW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAgICAgdHlwZTogSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAotICAgIH07Cisg
ICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CiAKLSAgICBp
ZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisgICAgICAgIGlmIChsb2NhdGlv
bikKKyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CiAKLSAgICBpZiAobG9j
YXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIGlmIChp
c0VtcHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7CiAK
LSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5lbXB0eSA9IHRy
dWU7CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9OwogCi0gICAgcmV0dXJuIHNjb3Bl
OwotfQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgMCwgImdsb2JhbCIsIC8vIEdMT0JBTF9T
Q09QRQorICAgIDEsICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQorICAgIDIsICJjbG9zdXJlIiwgLy8g
Q0xPU1VSRV9TQ09QRQorICAgIDMsICJjYXRjaCIsIC8vIENBVENIX1NDT1BFCisgICAgNCwgImZ1
bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKKyAgICA1LCAiZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlQKKyAgICA2LCAibmVz
dGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCispOwogCiAvLyAtLS0tLS0tCiAK
QEAgLTE0NzcsOSArMTU2NSw5IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkK
ICAgICAgICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKSB7IHJldHVybiBvcmlnaW5hbFZhbHVlOyB9
OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGtleSwg
dmFsdWUpOworICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiJCIgKyBrZXks
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJnZXQiLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoc2F2ZWRSZXN1bHRBbGlhcyAmJiBzYXZlZFJlc3VsdEFsaWFzICE9PSAiJCIpCi0gICAgICAg
ICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgdmFsdWUp
OworICAgICAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywgc2F2ZWRSZXN1bHRB
bGlhcyArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7
CiAgICAgfTsKIAogICAgIGlmICgiX2xhc3RSZXN1bHQiIGluIGluamVjdGVkU2NyaXB0KQpAQCAt
MTUwMiw0OCArMTU5MCw0OCBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUpCiAg
ICAgICAgIHRoaXNbbmFtZV0gPSBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdOwogfQogCi1D
b21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CitDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9
IHt9OworQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVzKG9i
amVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkB2YWx1
ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycygu
Li5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIGluamVjdGVkU2Ny
aXB0Lmluc3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
YXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmFzc2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY2xl
YXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y2xlYXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudFJlc2V0Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
UmVzZXQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRlYnVnIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRlYnVn
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXIiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyeG1sKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvciguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29sbGFwc2VkKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cEVuZCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZvKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90KC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtlSGVhcFNuYXBzaG90KC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWUoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUVuZCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lTG9nKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZVN0YW1wKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFjZSguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFyZ3VtZW50cyk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5jbGVhciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQo
Li4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5kaXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50
cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5ncm91cCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBD
b2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3Vw
RW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUucHJvZmlsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9m
aWxlRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLnRhYmxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNu
YXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLnRha2VIZWFwU25hcHNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRy
YWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRyYWNlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKIAogZm9y
IChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAi
ICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKIAogcmV0dXJuIGluamVj
dGVkU2NyaXB0OwotfSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNmZjZmOTc2YzdlMzlkOTk5NTguLmJjMjM3YTFmNGY0MGI2
NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtMjIyMSw3ICsyMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgpICE9
IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21w
aWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpLCAiIG9uIGxpbmUgIiwgZXJyb3IubGlu
ZSgpLCAiLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5NWM0NTRkOTllZTE5ZjEzZTc5Yy4uZmZjOWM5YzIzMzFk
YWUzZDZhNjViZGVmYWM1MGJiMWEwM2YzNjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJQcm94eU9iamVjdC5oIgogCkBAIC01Nyw2ICs1OCw4IEBAIHZvaWQgQXJyYXlDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXksIGFycmF5Q29uc3Ry
dWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworCisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZyb21Qcml2YXRl
TmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCA1YTNhYWE5MWU2MjcyOGMyY2E5ZmFlZjU2MWQyZmFiZWRlNzA1OTVlLi41MTVjODVm
ZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdmOGY2YWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDExIEBA
IHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB9CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhP
ZlByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW5kZXhPZlB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05h
bWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFByaXZh
dGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cG9wUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBnbG9iYWxPYmpl
Y3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAKICAgICBKU09iamVjdCogdW5zY29wYWJsZXMg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGY3ZDI3Yjk5NThiZGU2OGNjNTZjYjE5N2IwZDIxMjVkNWIw
MmUxNDcuLjAyYjliZWQ2ODI4MDAzMjg0OTQ4MGQzZDlhNWMwODAwM2IzYThkM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3
NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZM
QUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0
aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3Bl
cnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1i
b2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnkpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpvYik7CkBAIC0zNjEsNiArMzYzLDIzIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNy
ZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOwog
fQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byBqc29uID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb24pKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnksIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkpOwor
fQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhc3NlcnRD
YWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewpAQCAtMTA3NCw5ICsxMDkzLDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAg
ICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7
CiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHBy
b21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlz
LCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Ci0gICAgCisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U3RyaW5nKV0uc2V0
KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2YWxFcnJvclN0cnVjdHVy
ZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVy
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3Ry
dWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1Myw2ICsxNTc0LDE0IEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAgIH0pOwogCisgICAgLy8g
SlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBhcnNlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblN0cmluZ2lm
eSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lmeSkpOwor
ICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwogICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVJlbW90ZUZ1
bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVSZW1vdGVG
dW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nQ29uc3RydWN0b3IpOwogCiAgICAgdGhp
c09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEwYWFlZDM0Nzg3YWY2NmE0
ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIuLmU5NDg2MDNlMmNlY2EyOTU1YTJlZDI3MTU0YmIzYjAx
NDk3MWFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMTI0LDYgKzEyNCw3IEBAIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOwog
Y2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZU9yaWdp
bjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBBY3RpdmF0aW9u
U3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFy
cmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0cnVjdG9yPiBtX3N0cmlu
Z0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJbnRsQ29s
bGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTg2ZGU5Nzc2NGVjNGY1ZDE3N2Zi
MWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0ZDU5NGY0ZjcyZmRlN2ZkOTM2ZWE1MTQzMGNi
YTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU0Z1bmN0aW9uKiBl
bnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIG1h
cFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVu
dHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCks
IGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNmOWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFh
YmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2EzOTg3MDQxNWVlZjM3Y2JlMWNlOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBv
YmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVz
Y3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmluZVByb3Bl
cnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDMpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7
Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVl
c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBpZiAoT3B0aW9u
czo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIp
OworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25Qcml2YXRlTmFtZSgpLCBvYmplY3RDb25z
dHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRl
eCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZkNWQ0YTk1ZGQ0ODcxLi5mN2Y5YzE0MThiZjdj
Y2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgdm9pZCBTZXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJs
aWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRyaW5z
aWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1
ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCmluZGV4IDIxMzVhMGZlNWI2NDVmNzRmNThkODhmYjQ1MjA4ODFiNDE1MzZjNTQuLmUzYzA3
MDk1YjUwZGNhNmVlY2FmNWI0ZGNjMmE5ZGJhNzA5YTA4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTY0LDYgKzE2NCw5
IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRv
cl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJzdHJQcml2YXRlTmFtZSgp
LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbmRzV2l0aFByaXZh
dGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAvLyBUaGUgY29uc3RydWN0
b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3RydWN0b3IgaGFzIGJlZW4g
YnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0YjdlY2ViYmU4M2Y3ZDcyNDc5
MzRjOTg4ZGVmNGZmYzFjOGNhLi43OTJhNjcwMTYyN2MxZWEzYzg5YmRlYTVjOGNmM2IyMmNmY2Rk
ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEyOSw2IEBAIFdFQktJVF9G
UkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNv
cmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQog
Ci0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLWFkZF9jdXN0b21fY29t
bWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9q
c21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNl
VVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNV
VEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAtMjM1Miw2ICsyMzQwLDcg
QEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9U
ZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RW5jb2RlclN0
cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVy
bmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTNkNjhh
ZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uZjU2NzdlMmU0NTI1MzU2MmJkMmYw
YzkwMmQ1NjI3NmU2MGY3MzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24rUHJvcGVydHlOYW1l
cy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1
ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5z
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9ET01DbGllbnRJc29TdWJzcGFjZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYxZmM2ZmE0MjE2ZTQ2Yy4u
YjEyM2FiZjkzZTI3NThkMjExNDhjMTAxYzlkMTczNGQwNDk2ZjlhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAgaWZuZXEgKCQoTk9fU1VQUExF
TUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1ZGUgJChKU19ET01fSEVBREVSUzouaD0uZGVwKQogZW5k
aWYKIAotIyBJbnNwZWN0b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggOiAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotCWVjaG8gIi8vIyBzb3VyY2VV
Ukw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyIgPiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMK
LQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbCBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCSQoREVMRVRFKSBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5taW4uanMKLQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIFdlYkNvcmVfQlVJTFRJ
TlNfU09VUkNFUyA9IFwKQEAgLTIyNTIsNiArMjI0Miw3IEBAIFdlYkNvcmVfQlVJTFRJTlNfU09V
UkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcyBcCiAgICAg
JChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAgICAkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBcCiAjCiAKIEJVSUxUSU5TX0dFTkVS
QVRPUl9TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZWJkNmMzMDBlN2MzMmI3Y2Yz
ZmFkMDcwNDQ4YjA2N2JmYWE5Yjc4Yy4uMDFlY2E3MDQ0YWQxMmQxOGMwYWEzNDM3MGM1MWYzMjE1
NzZiNjQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMDY4LDYgKzIwNjgsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NTU1ZhbHVlS2V5d29yZHMuaAorICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICAgICAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRJbnRlcmZhY2VzLmgKICAgICAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgKICAgICAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSFRNTEVsZW1lbnRUeXBlSGVscGVycy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGUw
ZjRhNDVjODcwNTY0OTdkMTgwNzkyOWE3NzA4NGE0ZDc1NWY3My4uYzYxYTllNWY5N2M5MjhhODRk
NDE5ODY0MWMwNzBhNGRlMzVmNWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk5LDYgKzg5OSw3IEBACiAJCTJFMzAxQkU4
Mjc0NTk0NzIwMEMwNTY0RiAvKiBDb21waWxlZFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ1MTA3NzIwMkM3RTAxMDA2NTdEMzMgLyog
Q29tcGlsZWRTZWxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMzdERkQ4MTJEQkFGQjgw
MEE2QjIzMyAvKiBET01VUkwuaCAqLzsgfTsKIAkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8q
IEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLzsgfTsKKwkJMkUzQUVG
RkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0FFRkY5
MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2
NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5o
ICovOyB9OwogCQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM3
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xv
YmFsU2NvcGVQcm94eS5oICovOyB9OwpAQCAtMzUxNyw3ICszNTE4LDYgQEAKIAkJQTU3OEY0M0Yx
REUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDNFMURFMEI2MkIwMDNERkM2
QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4MUVEMTMxRkIyODhDRjAwQ0VENEVDIC8qIFNlcnZp
Y2VXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU4MUVEMTAxRkIyODhDODAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oICov
OyB9OwogCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0MEUy
MzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IH07Ci0JCUE1
ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYz
N0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi87IH07CiAJCUE1
ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkExODYzODcwRjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi87IH07CiAJCUE1ODRGRTMwMTg2NENC
ODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAv
KiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKIAkJQTU4NEZFMzUxODY0RDVBRjAw
ODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMzIxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRM
aW5lQVBJSG9zdC5oICovOyB9OwpAQCAtODIwNCw2ICs4MjA0LDggQEAKIAkJMkUzN0RGRDkxMkRC
QUZCODAwQTZCMjMzIC8qIERPTVVSTC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NVVJM
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDMxMkRCQzVBNDAwQTZC
MjMzIC8qIEpTRE9NVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRE9NVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0UwMDQxMkRC
QzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRE9NVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FFRkY5Mjgw
OUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
QnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzOTQwLDcgKzEzOTQyLDYgQEAKIAkJQTU4MUVEMTIxRkIyODhDOTAwQ0VENEVDIC8q
IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTg0MEUyMjE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9z
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQwRTIzMTg3QjhBQzIwMDg0
M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyNzE4NjM3
RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQyOCw3ICsyMDQyOSw2IEBACiAJ
CTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUE1ODRGRTM5MTg2NEUyRDgw
MDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCiAJCQkJQTU4NEZFM0ExODY0
RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmggKi8sCiAJCQkJOTE3NUNFNTky
MUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCAqLywKQEAgLTIzNTg0LDYgKzIzNTg0LDggQEAKIAkJCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBG
NjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4
QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5z
LmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8s
CisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlQnVpbHRpbnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRjYxQkNBRDA3
RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5
MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgg
Ki8sCiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3Bw
ICovLApAQCAtMzQwODMsNyArMzQwODUsNyBAQAogCQkJCTI2RTk0NEQ5MUFDNEIyREQwMDdCODVC
NSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTM1MTg2
NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZGQjI4MDlGMTFEMDAzNzFB
MjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzOUM2OUQwMjgxMEQxMUQwMEU2OUJBRCAvKiBDb21tb25BdG9tU3RyaW5ncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAwNzY1NTM2IC8qIENvbW1vbkNyeXB0
b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAppbmRleCBkNzdjNzNkOGFlNDk1MDE2NzUy
ODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5kNDFmY2QzNWNhOWUzZjUwM2NkNDczODk0NWI0OWI3OWZk
ZWEzMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0NywxNCBAQCBDb21tYW5kTGluZUFQSU1vZHVsZTo6Q29t
bWFuZExpbmVBUElNb2R1bGUoKQogewogfQogCi1TdHJpbmcgQ29tbWFuZExpbmVBUElNb2R1bGU6
OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQSU1vZHVsZTo6aW5qZWN0
TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMsIHNpemVvZihDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZV9qcykpOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdldCgpOworCisgICAgV1RGTG9nQWx3YXlzKCJB
dHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZyb20gYENvbW1hbmRMaW5l
QVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9iamVjdGAuIik7CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1ZSBD
b21tYW5kTGluZUFQSU1vZHVsZTo6aG9zdChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCmlu
ZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGViZGVkYWNmN2ZjNmI0MmQyZGY3NGIuLjBhNTBkNGE1ZjMz
M2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIENv
bW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHRNb2R1bGUgewogcHVibGljOgogICAgIENvbW1hbmRMaW5lQVBJTW9kdWxlKCk7CiAKLSAgICBT
dHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpKU0Z1bmN0aW9uKiBpbmpl
Y3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBp
bmplY3RJZk5lZWRlZChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIGNvbnN0IElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwppbmRleCBmNTFlMzUxOWNjYjE3
OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi44MTlmYTQ3ZTlkMTBkMGY0YzdlNzFmOTE5NGIw
YmY0ZWY3NjYzYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEyIEBACiAgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5qcworLy8gQGludGVybmFsCiAKLShmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRI
b3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2Ny
aXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkg
eworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVj
dCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7CiAKLS8vIEZJWE1FOiA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92
ZXJyaWRkZW4gYnVpbHQtaW5zCisvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8yMzk3NzQ+IEluamVj
dGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgogCiBpbmplY3RlZFNjcmlw
dC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGlmIChhcmd1bWVudHMu
bGVuZ3RoID09PSAwKQpAQCAtNzAsMTIgKzcxLDEyIEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGVsc2UgaWYgKGluamVjdGVkU2NyaXB0
LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7
CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN5bWJvbCIpCi0gICAgICAgIHN0cmlu
ZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcob2JqZWN0KTsKKyAgICAgICAgc3RyaW5n
ID0gQFN0cmluZyhvYmplY3QpOwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJmdW5j
dGlvbiIpCiAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgewogICAgICAg
ICB0cnkgewotICAgICAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkpTT04u
c3RyaW5naWZ5KG9iamVjdCwgbnVsbCwgIiAgIik7CisgICAgICAgICAgICBzdHJpbmcgPSBAanNv
blN0cmluZ2lmeShvYmplY3QsICIgICIpOwogICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAg
IHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgICAgICB9CkBAIC04OSwyMyArOTAsMjggQEAgQ29t
bWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9IGZ1bmN0aW9uKHRhcmdl
dCkgewogfTsKIAogZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykgewotICAgIGlm
ICh0eXBlcyA9PT0gdW5kZWZpbmVkKQotICAgICAgICB0eXBlcyA9IFsibW91c2UiLCAia2V5Iiwg
InRvdWNoIiwgImNvbnRyb2wiLCAiYWJvcnQiLCAiYmx1ciIsICJjaGFuZ2UiLCAiZGV2aWNlbW90
aW9uIiwgImRldmljZW9yaWVudGF0aW9uIiwgImVycm9yIiwgImZvY3VzIiwgImxvYWQiLCAicmVz
ZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWFyY2giLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ1
bmxvYWQiXTsKKyAgICBpZiAodHlwZXMgPT09IEB1bmRlZmluZWQpCisgICAgICAgIHR5cGVzID0g
QGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgibW91c2UiLCAia2V5IiwgInRvdWNoIiwgImNv
bnRyb2wiLCAiYWJvcnQiLCAiYmx1ciIsICJjaGFuZ2UiLCAiZGV2aWNlbW90aW9uIiwgImRldmlj
ZW9yaWVudGF0aW9uIiwgImVycm9yIiwgImZvY3VzIiwgImxvYWQiLCAicmVzZXQiLCAicmVzaXpl
IiwgInNjcm9sbCIsICJzZWFyY2giLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ1bmxvYWQiKTsKICAg
ICBlbHNlIGlmICh0eXBlb2YgdHlwZXMgPT09ICJzdHJpbmciKQotICAgICAgICB0eXBlcyA9IFt0
eXBlc107CisgICAgICAgIHR5cGVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSh0eXBl
cyk7CisKKyAgICBsZXQgcmVzdWx0ID0gbmV3IEBTZXQ7CisgICAgZnVuY3Rpb24gYWRkVHlwZXNU
b1Jlc3VsdCgpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICByZXN1bHQuQGFkZChhcmd1bWVudHNbaV0pOworICAgIH0KIAot
ICAgIGxldCByZXN1bHQgPSBbXTsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAg
IHJlc3VsdC5wdXNoKCJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3Zl
IiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKKyAg
ICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93
biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91
c2V3aGVlbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImtleSIpCi0gICAgICAg
ICAgICByZXN1bHQucHVzaCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJ0ZXh0SW5w
dXQiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImtleWRvd24iLCAia2V5cHJlc3Mi
LCAia2V5dXAiLCAidGV4dElucHV0Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAi
dG91Y2giKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goInRvdWNoY2FuY2VsIiwgInRvdWNoZW5k
IiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVz
dWx0KCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIp
OwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQotICAgICAgICAgICAg
cmVzdWx0LnB1c2goImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6ZSIs
ICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CisgICAgICAgICAgICBhZGRU
eXBlc1RvUmVzdWx0KCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUi
LCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7CisgICAgICAgICAgICByZXN1bHQuQGFk
ZCh0eXBlc1tpXSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMTgsMTkgKzEy
NCwxNyBAQCBmdW5jdGlvbiBsb2dFdmVudChldmVudCkKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
Im1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsKICAgICBpZiAoIW9i
amVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExp
c3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxpemVFdmVudFR5cGVz
KHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFs
c2UpOwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQs
IGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0SXRlcmFibGUobm9ybWFs
aXplRXZlbnRUeXBlcyh0eXBlcykpKSB7CisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3Rl
bmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVjdC5hZGRFdmVudExpc3Rl
bmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiAgICAgfQogfTsKIAogQ29tbWFuZExpbmVBUEku
bWV0aG9kc1sidW5tb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3QsIHR5cGVzKSB7CiAg
ICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVt
b3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXpl
RXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7
ICsraSkKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2
ZW50LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRpblNldEl0ZXJhYmxlKG5v
cm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlz
dGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKIH07CiAKIGlmIChpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKQEAgLTE1OCw5
ICsxNjIsMTAgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgIH07CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyIkJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7CisgICAgICAgIC8vIERvbid0
IHJldHVybiBhIHByb3RvdHlwZWxlc3MgYXJyYXkgaGVyZSBzbyB0aGF0IGRldmVsb3BlcnMgY2Fu
IHVzZSB0aGUgcmVzdWx0cyBhcyBhIG5vcm1hbCBBcnJheS4KICAgICAgICAgaWYgKGNhblF1ZXJ5
U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKLSAg
ICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKGluc3BlY3RlZEds
b2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAg
ICAgICByZXR1cm4gQEFycmF5LkBmcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3Ip
KTsKKyAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwogICAgIH07CiAKICAgICBDb21tYW5k
TGluZUFQSS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpIHsKQEAgLTE3
NSwxMCArMTgwLDExIEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5z
cGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9v
bGVhblZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IG5vZGVzID0gW107CisgICAgICAg
IC8vIERvbid0IHJldHVybiBhIHByb3RvdHlwZWxlc3MgYXJyYXkgaGVyZSBzbyB0aGF0IGRldmVs
b3BlcnMgY2FuIHVzZSB0aGUgcmVzdWx0cyBhcyBhIG5vcm1hbCBBcnJheS4KKyAgICAgICAgbGV0
IG5vZGVzID0gbmV3IEBBcnJheTsKICAgICAgICAgbGV0IG5vZGUgPSBudWxsOwogICAgICAgICB3
aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAgICAgbm9kZXMucHVz
aChub2RlKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gobm9kZXMsIG5vZGUpOwogICAgICAgICBy
ZXR1cm4gbm9kZXM7CiAgICAgfTsKIH0KQEAgLTE4Niw0ICsxOTIsNCBAQCBpZiAoaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiBm
b3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAgICAgQ29tbWFuZExpbmVB
UEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gImZ1bmN0aW9u
ICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9OwogCi19KQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGI5OTZhNmY5N2M3MmZhNmQ5YzE5ZTk1MDY2ZTdhODM2OTU3ODA2NTguLjcyNjcxNTVkNDQ1
YjA1YzQ3ZTIzZWIwMzE4N2RjMTMyZDA2ZWE4NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAy
Mi0wNS0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBn
ZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0LWlucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogaW5zcGVjdG9yL2luamVjdGVk
LXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvaW5q
ZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbDoKKyAgICAgICAgLSBBZGQgc2V2ZXJhbCBtb3Jl
IHRlc3QgY2FzZXMgZm9yIG92ZXJyaWRpbmcgZnVuY3Rpb25zIGFuZCBlbnRpcmUgb2JqZWN0cy4K
KworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1p
bnRlcm5hbC1zY3JpcHRzLmh0bWw6CisgICAgICAgIC0gQ2hhbmdlZCB0byB0ZXN0IGEgY3VzdG9t
IGludGVybmFsIHNjcmlwdCBzbmlwcGV0IHNpbmNlIHRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2Ny
aXB0IGlzIG5vdyBhIGJ1aWx0aW4uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2Ny
aXB0UGFyc2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2Ny
aXB0UGFyc2VkLmh0bWw6CisgICAgICAgIC0gVGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQg
KGFuZCBtb2R1bGVzKSB3aWxsIG5vIGxvbmdlciBhcHBlYXIgYXMgc2NyaXB0cyBpbiBXZWIgSW5z
cGVjdG9yLgorCisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3It
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVt
bi1leHBlY3RlZC50eHQ6CisgICAgICAgIC0gSW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCBsaW5l
IG51bWJlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHJlbGVhc2UgYW5kIGRlYnVnIGJ1aWxkcywg
c28gZmlsdGVyIHRob3NlIG91dC4KKwogMjAyMi0wNS0wNiAgS2FybCBSYWNrbGVyICA8cmFja2xl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgUmVsZWFzZSBdIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLXJlcGFpbnQuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4IDFlYjE1Mzk4ODI0MDZiYTlmZjRm
NGQzM2E2NWZmNTI3ZGZkODVjOGQuLjU5MzdmYWU5N2Y4OTU4ODQ3Zjg4ZmY0NjdlYmUxNWI4MWUy
ODdlNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1m
b3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAt
MSw2NiArMSw2MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUg
TUVTU0FHRTogW29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNPTlNP
TEUgTUVTU0FHRTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29u
c29sZV0KLUNPTlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUu
bG9nIGNhbiBiZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9m
IFdJLnNldHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgorQ2hlY2tpbmcgd2hldGhlciBp
bmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRl
cGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVy
bmFsU2NyaXB0cwogLS0gUnVubmluZyB0ZXN0IHNldHVwLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkCi1FWFBSRVNTSU9O
OiBzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50
cnlJbnRlcm5hbE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNF
RCAoZGVidWdnZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAg
ICAgNCAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29u
c29sZUxvZygpIHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNv
bnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsK
LSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKK1BBVVNFIEFUIGVudHJ5SW50
ZXJuYWxPYmplY3Q6MjY6NQorICAgICAyMiAgICB9CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0
aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1ICAgICAgICB8ZGVidWdnZXI7Cisg
ICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50
ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
Myk7CiAKIEFDVElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0g
ICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygp
IHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAg
ICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50
cnlJbnRlcm5hbE9iamVjdDoyNzo1CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5
SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAg
ICAgIHxpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAg
IDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTA6
NQotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAg
ICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gLT4gICA5
ICAgICAgICB8Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxv
Zygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKK1BBVVNFIEFUIGVudHJ5SW50ZXJu
YWxPYmplY3Q6Mjg6NQorICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkg
eworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0KDEpOworIC0+ICAyNyAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAg
IDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CisgICAgIDMw
CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjExOjUKLSAgICAg
IDcgICAgICAgIGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsK
LSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotIC0+ICAxMCAgICAgICAgfGNv
bnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgotICAgICAxMyAgICAv
LyAtLS0tLS0tLS0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjk6NQorICAgICAyNSAg
ICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOwor
ICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAtPiAgMjggICAgICAgIHxp
bnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CisgICAgIDMwCisgICAgIDMxICAg
IC8vIC0tLS0tLS0tLQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
ZzoxMjoyCi0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gLT4gIDExICAgIH18Ci0gICAgIDEyCi0gICAgIDEzICAgIC8vIC0tLS0tLS0tLQot
ICAgICAxNAorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDozMDoyCisgICAgIDI2ICAgICAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgLT4gIDI5
ICAgIH18CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQorICAgICAzMgogCiBBQ1RJ
T046IHJlc3VtZQogUkVTVU1FRApAQCAtNjgsNTcgKzYyLDU3IEBAIFBBU1M6IFNob3VsZCBoYXZl
IHVzZWQgYWxsIHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCiAtLSBSdW5uaW5nIHRl
c3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZAotRVhQ
UkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBzZXRUaW1l
b3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1l
CiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4
OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24u
anMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAg
ICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQQVVTRSBBVCBl
bnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAgICAyMworICAgICAyNCAg
ICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAgfGRlYnVn
Z2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9n
Ojk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNv
bGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25z
b2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0g
ICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNF
IEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlv
biBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4g
IDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVy
bmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMp
OworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xl
TG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlD
b25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBj
b25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUp
OwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQ
QVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1
bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsK
KyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRl
c3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNv
bnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAg
ICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAg
IH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQg
ICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVn
Z2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0
aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAg
OCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxv
Zyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAg
MTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAg
ICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAg
ZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAg
MjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVE
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCmluZGV4IGQxNjhhNzI1NGNlMWVmMDRkNzNhOWZi
MzVjNmNiZDczOGZiYzMxZTMuLmU1YjBkOWM4YjcxOGUxYjI1NmVhZWY2NzgyMjZiNjI3MGU3MWIz
MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3It
aW50ZXJuYWwtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCkBAIC00LDExICs0LDI5IEBACiA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0
aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7
CisKK2xldCBpbnRlcm5hbE9iamVjdCA9IHsgdGVzdDogZnVuY3Rpb24oKSB7fSB9OworCitpZiAo
d2luZG93LmludGVybmFscykgeworICAgIGludGVybmFsT2JqZWN0ID0gd2luZG93LmludGVybmFs
cy5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigidGVzdFBhdXNlRm9ySW50ZXJuYWxT
Y3JpcHRzIiwgYAorICAgICAgICAvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfVGVzdFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzLmpzCisgICAgICAgIGxldCBJbnRlcm5hbE9iamVjdCA9IGNs
YXNzIEludGVybmFsT2JqZWN0IHsKKyAgICAgICAgICAgIHRlc3QoaW52b2NhdGlvbk51bWJlcikg
eworICAgICAgICAgICAgICAgIGxldCBhID0gNjsKKyAgICAgICAgICAgICAgICBsZXQgYiA9IDc7
CisgICAgICAgICAgICAgICAgbGV0IGFuc3dlciA9IGEgKiBiOworICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIG5ldyBJbnRlcm5hbE9iamVjdDsKKyAgICBgKTsKK30KKworZnVu
Y3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBjb25zb2xl
LmxvZyh3aW5kb3cpOwotICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgIGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgIGludGVybmFsT2Jq
ZWN0LnRlc3QoMik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIH0KIAogLy8gLS0tLS0t
LS0tCkBAIC0yMSwzMSArMzksMzEgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBhZGRTdGVwcGlu
Z1Rlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxT
Y3JpcHRzLkRpc2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFi
bGUgdG8gc3RlcCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRl
cm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChl
bnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFi
bGUgdG8gc3RlcCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNlIGludGVybmFsIGluamVjdGVkIHNj
cmlwdHMuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9i
amVjdCkiLAogICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBzaW5j
ZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQgaWYg
Y2hhbmdpbmcgdmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4geyBy
ZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0s
CiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAg
ImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNv
bnNvbGUubG9nKGNvbnNvbGUpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2co
InN0cmluZyIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgx
KQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMikKKyAgICAg
ICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0KDMpCiAgICAgICAgICAgICAi
cmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwogCiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7
CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFi
bGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIG92ZXIg
Y29uc29sZS5sb2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhlIEludGVybmFsIEluamVjdGVkU2Ny
aXB0LiIsCi0gICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZyki
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0
ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4
cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8g
Q2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIg
d2F5IHRvIHdhaXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0
dGluZy4KICAgICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQu
c2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCiAgICAgICAgIHRlYXJkb3duOiBh
c3luYyAoKSA9PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3Jp
cHRzKGZhbHNlKTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAg
ICAgICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAg
ICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAg
ICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cp
XQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMSkKKyAgICAg
ICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0
KDEpXQorICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGludGVybmFs
T2JqZWN0LnRlc3QoMSldCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0p
OwpAQCAtNTcsNiArNzUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Q2hlY2tpbmcgd2hldGhlciBjb25zb2xlLmxv
ZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBX
SS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+Cis8cD5DaGVja2luZyB3aGV0
aGVyIGluamVjdGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5v
dCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFs
U2NyaXB0cy48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CmluZGV4IDVkZWU5
NWVkZjg4ZTVlOWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODguLjYzYTZlNWI3NDg0Yjg2ODljN2Qx
NDVkNTRiYTU4YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNSBAQCBQ
QVNTOiBTaG91bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxp
bmUgU2NyaXB0IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgQXR0cmlidXRl
IEV2ZW50IExpc3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5kIEV2YWwgU2NyaXB0Lgot
UEFTUzogU2hvdWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4K
LVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQu
CiBQQVNTOiBTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCmluZGV4
IGQ0ZjhmMzg2ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5ZDlhNWYuLmQ2NzdiYTJkZWRkZjFm
NTE2ODkwMmExNTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5LDE0ICsxOSwxMSBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+ICh0aGlzKSBzdGFydGluZyBvbiBs
aW5lIDUKICAgICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2FkIGV2ZW50IGxpc3RlbmVyIGF0dHJp
YnV0ZSBvbiA8Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAgLSBldmFsIHNvdXJjZSBhYm92ZSBv
biBsaW5lIDcKLSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVybmFsIHNjcmlwdHMgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKIAogICAgIGxldCBm
b3VuZEV4dGVybmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lU2NyaXB0VGFn
U2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5l
clNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxTY3JpcHQgPSBmYWxzZTsKLSAgICBs
ZXQgZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3Vu
ZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kVW5leHBl
Y3RlZFNjcmlwdCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24gaXNFeHRlcm5hbFNjcmlwdChwYXJh
bXMpIHsKQEAgLTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAKICAgICBm
dW5jdGlvbiBpc0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQocGFyYW1zKSB7Ci0g
ICAgICAgIHJldHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUg
Pj0gMTAwOyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCisgICAgICAgIHJldHVybiBpc0lu
bGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUgPj0gOTk7IC8vIEVzdGltYXRl
IG9mIDxib2R5PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0V2YWxTY3JpcHQocGFy
YW1zKSB7CiAgICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMID09PSAiZXZhbC5qcyI7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdChwYXJhbXMp
IHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3Rl
ZFNjcmlwdF8iKSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNXaXRoKCIuanMiKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykgewotICAg
ICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9mKCJDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZSIpICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAg
ICAgIG5hbWU6ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENoZWNrSW5pdGlhbFNjcmlwdHMiLAog
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAtNzksMTAgKzY4LDYgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZElubGluZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgh
Zm91bmRFdmFsU2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJhbXMpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIWZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgJiYgaXNDb21tYW5kTGluZUFQ
SVNvdXJjZVNjcmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDb21t
YW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKCFmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ICYmIGlzSW5qZWN0ZWRTY3JpcHRT
b3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5qZWN0
ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlVORVhQRUNURUQgU0NS
SVBUOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1ZTsKQEAgLTkzLDggKzc4LDYgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQo
Zm91bmRJbmxpbmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRh
ZyBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91
bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5l
IEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJv
dG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0LCAiU2hvdWxkIGZpbmQgRXZhbCBT
Y3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJ
bmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4
cGVjdFRoYXQoZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIElu
c3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAg
UHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBlY3RlZFNjcmlwdCwgIlNob3VsZCBu
b3QgcmVjZWl2ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIpOwogCiAgICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNj
cmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmpl
Y3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKaW5kZXggODgzM2E4ZmQyYTY1Y2My
Yzg0NTJjYzMwNjBiZTY4NjQyY2IwM2FiNy4uNDlmNGFmMmMxMzg0YTQ2NjdiN2ZiZThiYzhlMWZl
OGQ3ZWZlNTA5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNj
cmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
aW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMTcgQEAK
IENPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCi1UZXN0IHRoYXQgY2VydGFpbiBJbmpl
Y3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNv
ZGUuCitDT05TT0xFIE1FU1NBR0U6IGEsYixjCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2Jq
ZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFNldF0KK0NPTlNPTEUgTUVTU0FHRTogW29i
amVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgTWFwXQorQ09OU09MRSBNRVNT
QUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitD
T05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBjb3VudCBv
ZiAxCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBo
ZWxsbworQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK1Rlc3QgdGhhdCBJbmplY3Rl
ZCBTY3JpcHQgb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgogCiAK
ID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZQpAQCAtOCwz
ICsyMCwzOCBAQCBQQVNTOiBQYXVzZWQuCiBQQVNTOiBSZXN1bWVkLgogUEFTUzogQXJyYXkucHJv
dG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KIAorLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U2V0LnByb3RvdHlwZVtT
eW1ib2wuaXRlcmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0
LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6
IE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5w
cm90b3R5cGUucHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5
LnByb3RvdHlwZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkCitQ
QVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVsiYWRkIl0g
Y2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVk
U2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgor
UEFTUzogU3RyaW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRleAorUEFT
UzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsiNDIiXSBj
YWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRT
Y3JpcHQuT2JzZXJ2YWJsZTpPYmplY3QucHJvdG90eXBlLmRlc3RydWN0dXJlZFByb3BlcnR5CitQ
QVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogT2JqZWN0LnByb3RvdHlwZVsiZmV0
Y2hTdGFydCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKaW5kZXggNGQ4ZDY2
ZTUyZmJjYjE3MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4uM2E1MWZjNzYyYjFhMjIyMTA3YTk0
MjNiNDg1MWZkYzhmOTk1NDc1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2lu
amVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAgLTMsNjMgKzMsMjA1IEBACiA8aGVh
ZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLS8vIE5PVEU6IE1vcmUgY2FzZXMg
c2hvdWxkIGJlIHRlc3RlZCBhbmQgYWRkcmVzc2VkIGJ5OgotLy8gPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5z
Ci0KLWZ1bmN0aW9uIHRyaWdnZXJJdGVyYXRpb24oKSB7CitmdW5jdGlvbiByZXBsYWNlQW5kVGVz
dFByb3RvdHlwZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9uKSB7CisgICAgdHJ5IHsKICAgICBsZXQgY2FsbENvdW50ID0gMDsKIAot
ICAgIGNvbnN0IG9yaWdpbmFsSXRlcmF0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yKTsKLSAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICBsZXQgb3Jp
Z2luYWxQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHByb3RvdHlwZSwgcHJvcGVydHkpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5
cGUsIHByb3BlcnR5LCB7CiAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICsrY2FsbENvdW50
OwotICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsSXRlcmF0b3IudmFsdWU7CisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3I/LnZhbHVlOwogICAgICAgICB9CiAg
ICAgfSk7CiAKLSAgICBsZXQgYXJyYXkgPSBbXTsKLQogICAgIGRlYnVnZ2VyOwogCiAgICAgLy8g
UHJldmlldyBhbiBvYmplY3QuCiAgICAgY29uc29sZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7CiAK
LSAgICAvLyBVc2UgQXJyYXkgSXRlcmF0b3IgYXQgbGVhc3Qgb25jZS4KLSAgICBmb3IgKGxldCB4
IG9mIGFycmF5KSB7IH0KKyAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbigpOwog
Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJh
dG9yLCBvcmlnaW5hbEl0ZXJhdG9yKTsKKyAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0
b3IpCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBv
cmlnaW5hbFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgcHJv
dG90eXBlW3Byb3BlcnR5XTsKIAogICAgIHJldHVybiBjYWxsQ291bnQ7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0KK30KKworZnVuY3Rpb24gcmVw
bGFjZUFuZFRlc3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVu
Y3Rpb24pIHsKKyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBsZXQgb3JpZ2luYWxP
YmplY3QgPSBldmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAgICAgICR7b2JqZWN0
U3RyaW5nfSA9ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50OworICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAgYCk7
CisKKyAgICBkZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgorICAgIGNvbnNv
bGUubG9nKHthOjEsIGI6MiwgYzp7fX0pOworCisgICAgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1
bmN0aW9uKCk7CisKKyAgICBldmFsKGAke29iamVjdFN0cmluZ30gPSBvcmlnaW5hbE9iamVjdDtg
KTsKKyAgICBjb25zb2xlLmxvZygiY291bnQgb2YgIiArIGNhbGxDb3VudCk7CisgICAgcmV0dXJu
IGNhbGxDb3VudDsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7
CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJv
cGVydHlUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVy
dHlTdHJpbmcsIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBl
UHJvcGVydHkoJHtwcm90b3R5cGVTdHJpbmd9LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VP
dmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1
bHQsIDEsIGAke3Byb3RvdHlwZVN0cmluZ31bJHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQg
c2hvdWxkIGJlIDEuYCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVG
aXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChy
ZWplY3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UmVzdW1lZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
cGFzcygiUmVzdW1lZC4iKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sCisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1l
LCBkZXNjcmlwdGlvbiwgb2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rp
b259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisg
ICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFj
ZUFuZFRlc3RPYmplY3QoIiR7b2JqZWN0U3RyaW5nfSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVj
dEZ1bmN0aW9uLnRvU3RyaW5nKCl9KTtgLCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0
U3RyaW5nfSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQ
cm9wZXJ0eVRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFi
bGU6QXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlv
bjogIkFycmF5IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNl
cnZhYmxlIiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwg
cmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChy
ZXN1bHQsIDEsICJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNo
b3VsZCBiZSAxLiIpOwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7Ci0gICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5q
ZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5
cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5
bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9u
OiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbImEiLCAiYiIsICJjIl07CisgICAg
ICAgICAgICBmb3IgKGxldCB4IG9mIGFycmF5KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5s
b2coYXJyYXkpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVy
dHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNl
dC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0
IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIs
CisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9w
ZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldChb
ImEiLCAiYiIsICJjIl0pOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBzZXQpIHsgfQorCisg
ICAgICAgICAgICBjb25zb2xlLmxvZyhzZXQpOworICAgICAgICB9LAorICAgIH0pOworCisgICAg
YWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiTWFwIGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5v
dCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIk1hcC5wcm90b3R5
cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAg
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBs
ZXQgbWFwID0gbmV3IE1hcChbWyJhIiwgIjEiXSwgWyJiIiwgIjIiXSwgWyJjIiwgIjMiXV0pOwor
ICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBtYXApIHsgfQorCisgICAgICAgICAgICBjb25zb2xl
LmxvZyhtYXApOworICAgICAgICB9LAogICAgIH0pOwogCisgICAgYWRkUHJvdG90eXBlUHJvcGVy
dHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFy
cmF5LnByb3RvdHlwZS5wdXNoIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheS5wdXNoIGlu
IEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJv
dG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6
ICJcInB1c2hcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAo
KSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1
c2goNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5w
cm90b3R5cGUuYWRkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTZXQuYWRkIGluIEluamVjdGVk
IFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3Ry
aW5nOiAiU2V0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJhZGRcIiIs
CisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAg
ICAgICAgICBsZXQgc2V0ID0gbmV3IFNldDsKKyAgICAgICAgICAgIHNldC5hZGQoNDIpOworICAg
ICAgICB9LAorICAgIH0pOworCisgICAgYWRkT2JqZWN0VGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmciLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlN0cmluZyBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIs
CisgICAgICAgIG9iamVjdFN0cmluZzogIlN0cmluZyIsCisgICAgICAgIGludm9rZU92ZXJyaWRk
ZW5PYmplY3RGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFuc3dlciA9IFN0cmlu
Zyg0Mik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXku
cHJvdG90eXBlLmluZGV4IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJPdmVycmlkZW4gaW5kZXhl
cyBpbiBBcnJheSBwcm90b3R5cGUgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2Jz
ZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAor
ICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlwiNDJcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRk
ZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsK
KyAgICAgICAgICAgIGFycmF5LnB1c2goImhlbGxvIik7CisgICAgICAgICAgICBjb25zb2xlLmxv
ZyhhcnJheSk7CisgICAgICAgICAgICBhcnJheVs0Ml07CisgICAgICAgIH0sCisgICAgfSk7CisK
KyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVj
dGVkU2NyaXB0Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5kZXN0cnVjdHVyZWRQcm9wZXJ0
eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT2JqZWN0IGRlc3RydWN0dXJpbmcgKGZvciBgb3B0
aW9uc2AgcGFyYW1ldGVycykgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2
YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJPYmplY3QucHJvdG90eXBlIiwKKyAg
ICAgICAgcHJvcGVydHlTdHJpbmc6ICJcImZldGNoU3RhcnRcIiIsCisgICAgICAgIGludm9rZU92
ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgeCA9IHt9
LmZldGNoU3RhcnQ7CisgICAgICAgIH0sCisgICAgfSk7CisKKworCiAgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLTxwPlRlc3QgdGhhdCBjZXJ0YWluIEluamVjdGVkU2NyaXB0U291cmNlIG9w
ZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+Cis8cD5UZXN0IHRo
YXQgSW5qZWN0ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIg
Y29kZS48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKaW5kZXgg
ZDQ0MjE3ZDM2MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUyMzgxNi4uYWZiZDMyZDUwMzdlNTJh
ZTkwYzIzM2YyMmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dApAQCAt
MzEsNyArMzEsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IFtdLngueDsgfSBj
YXRjaCAoZSkgeyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6
ICJzdGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjog
Imdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxu
QFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENh
bGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwK
QEAgLTcwLDcgKzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBldmFsKCJp
ZigpIik7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAg
ICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAg
Il92YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92
YWx1ZSI6ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2Nv
cGVF4oCmdGl2ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVd
IgogICAgICAgfQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtMTA0LDcgKzEwNCw3
IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoIiIpLnNwbGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJz
dGFjayIsCiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogInNw
bGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAi
c3BsaXRUZXh0QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU+KApnRp
dmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAg
IH0sCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2RlIiwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CmluZGV4
IGJmY2FjOTg5ZWFjMGZiZDgwZTg1YWNjNjNjNGU3YzI4NmI4N2EzODUuLjEyMzNlYjM5NDgxNzNi
NDA3NmQzMzA5YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjQsOCArNjQs
OCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAgICAgImZ1bmN0aW9uTmFt
ZSI6ICIiLAogICAgICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgICAgICJzY3JpcHRJ
ZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAg
ICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICAgICAibGluZU51bWJlciI6
ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+
IgogICAgICAgICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAgICAgImZyYW1lSWQiOiAiPGZp
bHRlcmVkPiIsCkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAg
ICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAg
ICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAx
NDIsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIi
OiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+Igog
ICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0x
NzcsOCArMTc3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0
aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQi
OiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDIsCi0gICAgICAgICAg
ImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAg
ICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmluZGV4IDY3MmIzNTMzODAwY2JlMjU5
ZWU4ODg3YWJlMTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0ZTQ1NWQ4NjkzYzhkYWJlNDI5NTY0
MzFkOTUxMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5l
LWNvbHVtbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi5odG1sCkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAvLyBU
byBhdm9pZCBmbGFraW5lc3MgcHJpbnQgb25seSBldmVudHMgdGhhdCB3ZSBhbHdheXMgZXhwZWN0
LgogICAgIGNvbnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNldChbIlJlbmRlcmluZ0ZyYW1lIiwg
IkNvbnNvbGVQcm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAiRnVuY3Rpb25DYWxsIl0pOworCisg
ICAgLy8gVGhlIGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgY2FsbCBmcmFtZShzKSBoYXZlIGRp
ZmZlcmVudCBsaW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMuIFdl
IG9ubHkKKyAgICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2YWx1ZXMgZm9yIHRob3NlIHNwZWNp
ZmljIGNhbGwgZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBvdGhlciBsaW5lL2NvbHVtbiBudW1i
ZXJzIHJlbWFpbiBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9uTmFtZUxlbmd0aCA9IDA7CisgICAg
bGV0IHVybExlbmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7
CisgICAgICAgIGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUiKSB7CisgICAgICAgICAgICBmdW5j
dGlvbk5hbWVMZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChrZXkgPT09ICJjaGlsZHJlbiIgJiYg
dGhpcy5zdGFydFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGUgPT4gZXZl
bnRBbGxvd2xpc3QuaGFzKGUudHlwZSkpOwogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1l
IiB8fCBrZXkgPT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAi
ZnJhbWVJZCIpCiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworICAgICAgICBpZiAo
KGtleSA9PT0gImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNvbHVtbk51bWJlciIpICYmICFmdW5j
dGlvbk5hbWVMZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRl
cmVkPiI7CisKKyAgICAgICAgaWYgKGtleSA9PT0gInVybCIpCisgICAgICAgICAgICB1cmxMZW5n
dGggPSB2YWx1ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiIHx8IGtleSA9PT0g
InNjcmlwdE5hbWUiKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL14uK0xheW91
dFRlc3RzXC9pbnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3Rp
bWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBjOTYyZDY4MTAxY2Y0NzMxNWQ1
ZTAxZGMzZjBkM2ZlMzU5ZDYyNTQ3Li41NmQxODQwOGJkZGU5YTdiMDcwMjM5NmI5NGY5Nzk3NmNm
M2JkYWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3Rp
bWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjAs
OCArNjAsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAiZnVuY3Rpb25O
YW1lIjogIiIsCiAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICJzY3JpcHRJZCI6ICI8
ZmlsdGVyZWQ+IiwKLSAgICAgICAgICAibGluZU51bWJlciI6IDE0MSwKLSAgICAgICAgICAiY29s
dW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAg
ICAgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgICAgIH0KICAgICAgIF0s
CiAgICAgICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTExMyw4ICsxMTMsOCBAQCBQQVNT
OiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1
cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVt
YmVyIjogMTQxLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6
ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9
CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTY1LDggKzE2NSw4IEBAIFBB
U1M6IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAg
InVybCI6ICIiLAogICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgImxpbmVO
dW1iZXIiOiAxNDEsCi0gICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICJsaW5lTnVtYmVy
IjogIjxmaWx0ZXJlZD4iLAorICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAg
IH0KICAgXSwKICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459031</attachid>
            <date>2022-05-09 00:03:01 -0700</date>
            <delta_ts>2022-05-11 11:33:37 -0700</delta_ts>
            <desc>Patch v2.1 - With Windows build fix that prevents using a stale WebCoreJSBuiltinInternals.h for dependent targets</desc>
            <filename>bug-152294-20220509000300.patch</filename>
            <type>text/plain</type>
            <size>158741</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTVkYTA3YjMxMjM1ZjBmMTFiOTliNThjYTY2ZTY0NDRhMzBjYjFkLi40ZGZmODVkNDNlZTAxZGEw
NTBhMDhiNDc5NWE5MzQ5YmRhYWNlZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CiAKICAgICAgICAgYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIGFyZSBmYWls
aW5nIGFmdGVyIDI1MDI0MkBtYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExZTAwNGJlYmJkYjdiNDQzMzZm
YjlhMTZlYzk0ZTMwZmM5NDFkYy4uMjhiNDg5OGQ5ODgyNTEwZGQ0OWI2MWQ2NzFlMTJiMmU5MDAy
MWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTA1LTA2ICBQYXRyaWNrIEFu
Z2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJ
bmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11
c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBS
b3Vzc28uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAtIEJ1aWxkIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzIGFzIGEgYnVpbHRpbiwgbm90IGFzIGEgcGxhaW4gaGVhZGVyIGZpbGUgY29udGFpbmluZyBp
dHMgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1v
ZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9k
dWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5oOgorICAgICAgICAtIFByb3ZpZGUgYSBKU0Z1bmN0aW9uIGZvciBtb2R1
bGUgaW5qZWN0aW9uIGluc3RlYWQgb2YgcmF3IHNvdXJjZSBjb2RlLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOgorICAgICAgICAtIFNpbWlsYXIg
dG8gSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzLCB1c2Ug
cHJpdmF0ZSBuYW1lcyBmb3IgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zCisgICAgICAgIHRocm91
Z2hvdXQgdG8gZ2V0IG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHRpbnMuCisgICAgICAgIC0gSW4g
YG5vcm1hbGl6ZUV2ZW50VHlwZXNgIHVzZSBhIFNldCBpbnN0ZWFkIG9mIGFuIGFycmF5LCBzaW5j
ZSB3ZSBhcmUgcHJvY2Vzc2luZyB1c2VyLXByb3ZpZGVkIHR5cGVzIHRoYXQgbWF5CisgICAgICAg
IGJlIHJlcGVhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBpdGVyYXRlIG92ZXIgYWxs
IHRoZSB0eXBlcyB0byBpbnNlcnQgdGhlbSBpbiB0aGUgc2V0LCBidXQgc2luY2UKKyAgICAgICAg
YEBhcnJheVB1c2hgIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoaW5nIG11bHRpcGxlIHZhbHVlcyBhdCB0
aGUgc2FtZSB0aW1lIHRoaXMgaXMgbm8gbW9yZSB3b3JrIHRoYW4gdXNpbmcgYW4gQXJyYXkuCisK
IDIwMjItMDUtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFsbG93IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyB0byBhdm9pZCBwaXhl
bCBjb25mb3JtZXJzIGlmIElPU3VyZmFjZXMgYXJlIG5vdCBhbGxvd2VkCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJhYzEwNTI2ZWFiODZkMjQx
YzUxYWQ4OS4uZTZlZDdlZDQwNjM3YmE1MmYxMjUyMDg3Y2JmOTZhMjg4ZjViNGNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2NCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQo
CkBAIC0xNDA1LDE3ICsxNDA2LDYgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVS
UwogICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSlNDQnVpbHRpbnMu
aAogKQogCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7SmF2YVNjcmlwdENvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAg
IE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS94eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01N
QU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2Ny
aXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZ
VEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8
ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMg
Pj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNv
dXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oCi0gICAgVkVSQkFUSU0pCi0KLWxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oKQotCiBpZiAoV1RGX0NQVV9YODZfNjQpCiAgICAgaWYgKE1TVkMgQU5EIE5PVCBFTkFCTEVf
Q19MT09QKQogICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGQ1
NDBiZDUxOTIxN2I1NTJiZjA2MDk4YzlkZGMyYTI3NGYzMzQwYi4uZjdiM2RiN2I2MWQzMDYwN2U4
YTZmYjUxNDNhNGMyNGVhZDIyODg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjEsNyArMjEsNiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvR2VuZXJh
dGVkV2FzbU9wcy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9HZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0Qnl0ZWNvZGVzLmFzbQogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRXYXNtLmFz
bQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
amVjdGVkU2NyaXB0U291cmNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2N2YyYzY4NTRmOGExYmExM2Mw
OTVmN2UxNTRmNjhlOTdjYmYzOTEuLjFmYjYyM2NkNmY2ZThkODk4N2Y5NDgwNDU0NGYwZDQ0ZTVi
MzVmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02
OCw3ICs2OCw2IEBAIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0gJChKYXZhU2NyaXB0Q29y
ZSkvU2NyaXB0cwogCiAuUEhPTlkgOiBhbGwKIGFsbCA6IFwKLSAgICBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBS
ZWdFeHBKaXRUYWJsZXMuaCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1dlYkFz
c2VtYmx5LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgXAogIwogCiAjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9u
IHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCkBAIC0z
NjgsMTIgKzM2OCw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgOiBD
b21iaW5lZERvbWFpbnMuanNvbiAkKElOU1BFQ1RPUl9HRU5FUkFUCiAJJChQRVJMKSAkKEphdmFT
Y3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL3ByZXByb2Nlc3MucGwgLS1pbnB1
dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluIC0tZGVmaW5lcyAiJChG
RUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSIgLS1vdXRwdXQgaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcwogCSQoREVMRVRFKSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzLmluCiAKLUluamVjdGVkU2NyaXB0U291cmNlLmggOiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4u
cHkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCi0JZWNobyAiLy8jIHNvdXJj
ZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+IC4vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2pzbWluLnB5IDwgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzID4+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQRVJMKSAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2Vf
anMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAot
CSQoREVMRVRFKSBJbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQogQUlSX09QQ09ERV9GSUxF
UyA9IFwKICAgICBBaXJPcGNvZGUuaCBcCiAgICAgQWlyT3Bjb2RlVXRpbHMuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTky
NzFjZmZkMTcuLjI0ZDRiZTg2YjljMTVmZGM2ZDI3ZDczYmE5MGVmYTg5OTAzNGQyZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQ1LDcgKzE0NDUsNiBAQAogCQlBNTEzRTVC
RTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCOTE4NUJGQUNDMDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsg
fTsKIAkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aCAqLzsgfTsKLQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLzsgfTsKIAkJ
QTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzkxODVGOTYy
NDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjNEMjE1OUQ0MUUw
MEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzUxLDYgKzM3NTAsNyBAQAogCQkyQUQyRURG
QTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVudW1lcmF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyog
R0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDTG9n
Z2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FGMDBEMjgxNzFBQzAw
MDM3MUEyNSAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVR5cGVEZWZpbml0aW9uSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtVHlwZURlZmluaXRp
b25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNzcwQzRGMjdCOTRD
RTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MDcsNyArNDcwNyw2IEBACiAJCUE1MTNFNUJD
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUJEMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFNj
cmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzYxODVG
OTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1Qzkx
ODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2Ny
aXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4NCw3ICs3
MjgzLDYgQEAKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVj
b2Rlcy5hc20gKi8sCi0JCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmggKi8sCiAJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAv
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtOTM2
Myw2ICs5MzYxLDcgQEAKIAkJCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURGRkYgLyogUmVnRXhwU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNTM0RDlCRjgyMzYzQzU1RDAwNTQ1MjRE
IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTcwMzU1ODdEMUM0MTg0MTkwMDRC
RDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8sCisJCQkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1
IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzYwMUI2NUQ5QjEwMDlE
QjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM2MTFCNjVEOUIxMDA5
REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJQTFFMDQ1MUIxQzI1
QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKQEAgLTEwNDUyLDcgKzEwNDUx
LDYgQEAKIAkJCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyMTE4N0I3Qjg2MDA4
NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MTNF
NUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk1OUU5MzIxQkQxODI3OTAwMUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0
eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwNUJCNjkxRDEy
MDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4QTdC
RjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMjM4MCw3ICsxMjM3OCw2IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMx
MkMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQw
OSw3ICsxMjQwNiw2IEBACiAJCQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMzUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBF
IC8qIFVuaWZpZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzMEE2NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMTM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2
QTU0NSAvKiBVbmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyAr
MTI0MTYsNiBAQAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNl
MTQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBV
bmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYw
MEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEz
NUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3Vy
Y2UxNDkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8q
IFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQyNSw5
IEBACiAJCQkJNTM4RjE1RUEyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZE
IC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4
MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJ
CUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3Vy
Y2VzICovLAorCQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlcklu
dGVsLmMgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRm
NWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcuLjM4NzRkZDQyZjI3NjBmMzRlODZkOGRjODE4
NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAtNTIsNiArNTIsNyBAQCBm
dW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21waWxlKHIiKGFzeW5jKT9ccypmdW5jdGlvbiIs
IHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShy
ImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0
aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiLipeQG92ZXJyaWRkZW5OYW1l
PShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uUGFyYW1ldGVy
RmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3luY1xzKyk/ZnVuY3Rpb25ccysoPzpcdyspXHMq
XCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwg
cmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIgPSByZS5jb21waWxlKHIiLFxz
Kig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIAogbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9c
biIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKQEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBC
dWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25ha2VkX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25O
YWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQogICAg
ICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoKICAgICAgICAgICAgIGlzX2NvbnN0cnVjdG9y
ID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0K
KyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0
ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlv
bl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAg
ICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAtMzAzLDIxICszMDQsNTUgQEAgY2xhc3MgQnVp
bHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0
YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0
IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRj
aC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAg
ICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAg
IGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgaXNFc2Nh
cGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFy
YWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAg
ICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0
aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAg
ICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsg
MQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAgICAgY3VycmVudENoYXJh
Y3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3Rl
cjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hh
cmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0
YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3Ry
aW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAg
IGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25l
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJy
ZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgRklYTUU6
IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFyIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5i
YWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAgICAgICAgICAgICAgICMg
Zm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNl
IHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAgICAgICAgICAjIGluc2lk
ZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBz
dHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAgICAgICAgICAgICAjICh1
bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVu
bGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAgICAgICAgICAgICMgdW5i
YWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJl
IGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAg
ICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAg
ICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50
Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAg
ICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAg
ICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0
aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdz
ID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25C
b3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCmluZGV4IDg4OGM4YmFlNDM1Zjg4NjNmNDgwZGQ4MWU0NTU2NmQ3OGI2
MWVmYTcuLjcwOTkyNmFlNzM4NjkwN2RiZDQ5YjFkMGY1ZDUzNjE1ZjM0ZTg1ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICB7CiAg
ICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJzU3RhcnQgKyAxOwogICAgICAgICB1bnNpZ25l
ZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsK
ICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZhbHNlOwogICAgICAgICBib29sIGhhc1Jlc3RQ
YXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTEzLDcgKzExNCwxMyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0g
PT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnfScpCisg
ICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOworICAgICAgICAgICAg
ZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycgfHwgaW5zaWRlQ3VybHlCcmFja2V0cykgewor
ICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSB0cnVlOworICAgICAgICAgICAg
ICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAgICAgICAgICAgICAgKytjb21tYXM7CiAgICAg
ICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tp
XSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0ODNlODcxZTc0M2E5YTEy
YjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFmYTJkNWIyZmIxYTE3NTdlMWUxMDVjZWMzMWI5
NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oY3Jl
YXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1bmN0aW9uKSBcCiAgICAg
bWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBcCisgICAgbWFjcm8oanNv
blN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAor
ICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blBy
b3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093bikgXAorICAgIG1hY3JvKGluZGV4T2Yp
IFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNl
NDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3N2VlMmY0Li5iMTk4NmU4ODUzMGNlYzY2MmMx
OWZmZWFlNzVhMzRiNzVlODZmZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAgLTUxLDMgKzUxLDQzIEBAIGZ1bmN0aW9uIHBl
cmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0KIH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0
aW9uIHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvcikKK3sKKyAgICBsZXQgd3JhcHBlciA9IEBPYmpl
Y3QuQGNyZWF0ZShudWxsKTsKKyAgICB3cmFwcGVyLkBAaXRlcmF0b3IgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGl0ZXJhdG9yOyB9CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK0BnbG9iYWxQcml2
YXRlCitmdW5jdGlvbiBidWlsdGluU2V0SXRlcmFibGUoc2V0KQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKyAgICAKKyAgICBpZiAoIUBpc1NldChzZXQpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
ImJ1aWx0aW5TZXRJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tU2V0IG9iamVjdC4iKTsKKworICAg
IC8vIFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRoYXQgdGhl
IHN5bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3QgcHJvdGVj
dAorICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiByZXBsYWNl
ZC4gRm9yIFNldHMsIGBAdmFsdWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5h
bGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRv
ckZ1bmN0aW9uID0gc2V0LkB2YWx1ZXM7CisgICAgCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0
b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChzZXQpKTsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1
bmN0aW9uIGJ1aWx0aW5NYXBJdGVyYWJsZShtYXApCit7CisgICAgInVzZSBzdHJpY3QiOworICAg
IAorICAgIGlmICghQGlzTWFwKG1hcCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRp
bk1hcEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1NYXAgb2JqZWN0LiIpOworCisgICAgLy8gVXNp
bmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9s
IGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAg
Ly8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3Ig
TWFwcywgYEBlbnRyaWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5hbGx5Cisg
ICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRvckZ1bmN0
aW9uID0gbWFwLkBlbnRyaWVzOworCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0
b3JGdW5jdGlvbi5AY2FsbChtYXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFjNDdlZWViYTg2OTA4YjkwZjk5Y2Iw
Y2U3NDZmMDE5YmQzZWQ3MjMuLmI4NjUzZTg2NTY5OTMxZmNiYjZlMmY0YjQyNTQ4YzRiMGM2ZTEz
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaApAQCAtMTIwLDYgKzEyMCw5IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYo
Y3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlzUmVtb3RlRnVuY3Rpb24s
IG51bGxwdHIpIFwKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAorICAgIHYoanNvblBhcnNl
LCBudWxscHRyKSBcCisgICAgdihqc29uU3RyaW5naWZ5LCBudWxscHRyKSBcCisgICAgdihTdHJp
bmcsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5h
bWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggY2IwNjM0MDJiZjEyMmVhZTE2
OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJkMWJjZTdlYWIwZmFmMTU0ZTA4NzViN2MwYzc2ZGNk
YmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCisjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1ICsxMzUsMTggQEAgdm9pZCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFsdWUoKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5j
bGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAKLVN0cmluZyBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNpemVvZihJbmplY3RlZFNj
cmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKK0V4
cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBp
bnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgeyB9KTsK
ICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygp
OwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIElu
c3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2
YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFu
ZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1ZSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBhdXRvKiBmdW5jdGlv
blZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRp
b24oKSkpOworICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlKTsK
ICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAgLTE2Niw3
ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VSVCghYXJncy5oYXNP
dmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5n
ZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVkU2NyaXB0IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5q
ZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0g
Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFsT2JqZWN0
LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChnbG9i
YWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAgICAgICBhdXRvJiBl
cnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwpAQCAt
MTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgaWYgKHN0
YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVt
bihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY3JlYXRp
bmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlm
ICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5n
IGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwg
aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDFmNzQwYzQw
Njg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIyZTdhZTM4
MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCArNzUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50PiBtX3NjcmlwdFN0
YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsK
LSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBj
cmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAg
ICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWExMS4uMGI2
NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
QEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmpl
Y3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICBpZiAo
c3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29s
dW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxs
aW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1
bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQu
dmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImlu
amVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsK
KyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKGluamVjdE1vZHVs
ZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwogICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRT
Y3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RNb2R1bGVSZXN1bHQg
PSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwog
ICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyArOTEsNiBAQCB2b2lk
IEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAg
ICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1u
KTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdpbmplY3RN
b2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0
ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVz
XG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggMjc5YmFl
NGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZhMDA1ZDc2
ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbmplY3Rl
ZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAg
IH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9k
dWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDQ4YmFl
ZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhjNDkyNWY2YzQuLjAwODAzNjY2MjhjNjZhNWJlMDQw
MjRhYTU2MGUwZDgxMmMyNzg4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNyArMjcsMzggQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEsIGtleTIsIHZhbHVlMiwgLi4uICovKQoreworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJv
cigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGVgIHJlcXVpcmVzIHRoYXQgZWFjaCBrZXkg
YXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2YWx1ZSwgcmVzdWx0aW5nIGluIGFuIGV2ZW4gbnVt
YmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAgIGxldCBvYmplY3QgPSBAT2JqZWN0LkBjcmVhdGUo
bnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkgKz0gMikK
KyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tpXV0gPSBhcmd1bWVudHNbaSArIDFdOwogCi0oZnVu
Y3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3Rl
ZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotLy8gRklYTUU6IDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0
U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRl
biBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIsIC4uLiAqLykKK3sKKyAgICBsZXQgYXJyYXkgPSBu
ZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpOworICAgIGFycmF5Ll9fcHJvdG9fXyA9IG51bGw7
CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpCisg
ICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFyZ3VtZW50c1tpXSk7CisgICAgCisgICAgcmV0dXJu
IGFycmF5OworfQogCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7CitAZ2xvYmFsUHJpdmF0
ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRI
b3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CiAKIGZ1bmN0
aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAgcmV0dXJu
IEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmopCkBA
IC05Myw2ICsxMTQsMTUgQEAgZnVuY3Rpb24gaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KKyAgICAKK2Z1bmN0aW9uIGNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzT2JqZWN0KSB7CisgICAgbGV0
IGl0ZXJhdG9yRnVuY3Rpb24gPSBhcmd1bWVudHNPYmplY3QuQEBpdGVyYXRvcjsKKyAgICByZXR1
cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKGFyZ3VtZW50c09iamVj
dCkpOworfQorCitmdW5jdGlvbiBtYXgoYSwgYikgeworICAgIHJldHVybiBhID4gYiA/IGEgOiBi
OworfQogCiAvLyAtLS0tLS0tCiAKQEAgLTEwMSwxMiArMTMxLDEyIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOwotICAgICAgICB0aGlzLl9pZFRvV3Jh
cHBlZE9iamVjdCA9IHt9OwotICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0ge307
Ci0gICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OwotICAgICAgICB0aGlzLl9tb2R1bGVz
ID0ge307CisgICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IEBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX29iamVjdEdyb3Vw
cyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX21vZHVs
ZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB0aGlzLl9uZXh0
U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOwor
ICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBl
KCk7CiAgICAgfQogCiAgICAgLy8gSW5qZWN0ZWRTY3JpcHQgQysrIEFQSQpAQCAtMTE1LDcgKzE0
NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fd3JhcEFuZFNhdmVDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsICgpID0+IHsKICAgICAgICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1l
LCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlz
RXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLkBhcHBseShAdW5kZWZpbmVk
LCBhcmdzKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMzYsMTYgKzE2NiwxNiBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIFBy
b21pc2UpKSB7CisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBAUHJvbWlz
ZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBnaXZlbiBpZCBpcyBub3Qg
YSBQcm9taXNlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBs
ZXQgcmVzb2x2ZSA9ICh2YWx1ZSkgPT4gewotICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9
IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJl
c3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSwg
cmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKLSAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisg
ICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAgICJyZXN1
bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCBy
ZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAgICAg
ICAgICAgaWYgKHNhdmVSZXN1bHQpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3Vs
dEluZGV4ID0gMDsKQEAgLTE1OSw3ICsxODksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgcmVqZWN0ID0gKHJlYXNvbikgPT4gewogICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUocmVhc29uLCBwcm9taXNl
T2JqZWN0R3JvdXBOYW1lKSk7CiAgICAgICAgIH07Ci0gICAgICAgIHByb21pc2VPYmplY3QudGhl
bihyZXNvbHZlLCByZWplY3QpOworICAgICAgICBwcm9taXNlT2JqZWN0LkB0aGVuKHJlc29sdmUs
IHJlamVjdCk7CiAgICAgfQogCiAgICAgZXZhbHVhdGVPbkNhbGxGcmFtZSh0b3BDYWxsRnJhbWUs
IGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC0xODAs
MTQgKzIxMCwxNCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuICJDb3Vs
ZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CiAKLSAgICAgICAgbGV0IHJlc29sdmVk
QXJncyA9IFtdOworICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSgpOwogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAgICAgbGV0IGNhbGxB
cmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwogICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9IHRoaXMuX3Jlc29s
dmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIyNywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVu
Y3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVzc2lvbiBkb2VzIG5v
dCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0
R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9
OworICAgICAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAicmVzdWx0
IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3QsIHJlc29sdmVkQXJncyks
IG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAg
ICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwogICAgICAgICB9CkBAIC0y
MzMsMTMgKzI2MywyMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZldGNoU3RhcnQs
IGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBjb2xsZWN0
aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5P
d25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3fSk7CisgICAg
ICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwg
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiZmV0Y2hTdGFydCIs
IGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQsCisgICAg
ICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LAorICAgICAgICApKTsK
ICAgICB9CiAKICAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZldGNoU3Rh
cnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBjb2xs
ZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMg
fCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzOwot
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1v
ZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2ZUdldHRl
cnNBc1ZhbHVlczogdHJ1ZX0pOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhv
YmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAor
ICAgICAgICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAgImZldGNo
Q291bnQiLCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIsIGdlbmVy
YXRlUHJldmlldywKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAor
ICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0SWQs
IGdlbmVyYXRlUHJldmlldykKQEAgLTI1Niw3ICsyOTUsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHRoaXMu
X2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOwogICAgICAgICBpZiAoIWRlc2Ny
aXB0b3JzKQotICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgcmV0dXJuIEBjcmVh
dGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9
IGRlc2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICszMTksMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBs
ZXQgZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3Quc3Vi
dHlwZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgcmV0dXJuIGVu
dHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
ZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1tp
XTsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS52
YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoImtl
eSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnkua2V5ID0gUmVtb3RlT2JqZWN0LmNy
ZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04pCkBAIC0z
MDYsMTAgKzM0NiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlQXJy
YXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGxldCBkZXB0aCA9IDA7CiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0
LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7
CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVyOwogICAgICAgICB9IHdo
aWxlIChjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzI2LDcgKzM2Niw3
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgd3JhcEpT
T05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBOYW1lLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewog
ICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChKU09OLnBh
cnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBqc29uUGFyc2UoanNvblN0cmluZyksIGdy
b3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpAQCAtMzQzLDEyICszODMsMTIgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgY29s
dW1uTmFtZXMgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmci
KQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKyAgICAgICAgICAgIGNvbHVtbnMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKGNvbHVtbnMpOwogCiAgICAgICAgIGlmIChJ
bmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFycmF5IikgewotICAgICAg
ICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2go
dG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2goY29sdW1u
TmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1
bW5OYW1lcyk7CkBAIC0zOTYsNyArNDM2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUi
KSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsKICAgICAgICAgICAgIHRo
aXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gQGNyZWF0ZUFycmF5
V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IGdyb3VwID0gdGhp
cy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00MjksMTQgKzQ2OSwxNiBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4g
dGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291
cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVGdW5jdGlvbiwgaG9zdCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxzZTsKIAotICAgICAgICBs
ZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291
cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3BlY3RvcjogYSBmdW5jdGlv
biB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAgIG1vZHVsZUZ1bmN0aW9u
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIGhvc3QpOworICAgICAg
ICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVj
dCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAiUmVtb3RlT2JqZWN0IiwgUmVtb3RlT2JqZWN0LAorICAgICAgICAgICAg
IkNvbW1hbmRMaW5lQVBJIiwgQ29tbWFuZExpbmVBUEksCisgICAgICAgICksIGhvc3QpOwogCiAg
ICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSB0cnVlOwogICAgIH0KQEAgLTQ3MCwxMCArNTEy
LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGlmIChvYmplY3RHcm91cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMuX29i
amVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAgaWYgKCFncm91cCkgewot
ICAgICAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0
R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVzaChncm91cCwgaWQpOwog
ICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5h
bWU7CiAgICAgICAgIH0KIApAQCAtNDg4LDggKzUzMCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZmFsbGJhY2tXcmFwcGVyKG9iamVjdCkKICAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSB0eXBl
b2Ygb2JqZWN0OworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoInR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFs
dWUob2JqZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9iamVjdDsKICAgICAgICAg
ZWxzZQpAQCAtNTE1LDcgKzU1Niw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAg
ICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQpAQCAtNTI0
LDEwICs1NjUsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRv
U3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNoIHsgfQotICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAgICAgICAgICAgcmVzdWx0
OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIndhc1Rocm93biIsIHRydWUsCisgICAgICAg
ICAgICAicmVzdWx0IiwgcmVtb3RlT2JqZWN0LAorICAgICAgICApOwogICAgIH0KIAogICAgIF9l
dmFsdWF0ZUFuZFdyYXAoZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZh
bHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC01NTIsMTAgKzU5MywxMCBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICB0cnkgewog
ICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CiAKLSAgICAgICAgICAgIGxl
dCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAg
ICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RH
cm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAg
InJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAKICAgICAgICAgICAg
IGlmIChzYXZlUmVzdWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4
OwpAQCAtNTcxLDcgKzYxMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7CiAgICAgICAgIGlmIChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMu
Y3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBu
dWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lv
biwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLkBjYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0KIAogICAgIF9jYWxsRnJh
bWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjA3LDcgKzY0OCw3IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIC8vIEFsd2F5
cyBpbmNsdWRlIF9fcHJvdG9fXyBhdCB0aGUgZW5kLCBidXQgb25seSBmb3IgdGhlIGZpcnN0IGZl
dGNoLgogICAgICAgICBsZXQgaW5jbHVkZVByb3RvID0gIXN0YXJ0OwogCi0gICAgICAgIGxldCBk
ZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+IHsKICAgICAgICAgICAg
IGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0OwpAQCAtNjIyLDEzICs2
NjMsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlw
dG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAg
ICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3Iuc3ltYm9sLCBv
YmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9y
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogCiAg
ICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRlc2NyaXB0b3JzLmxlbmd0
aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3RvX18iKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CiAK
ICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50
KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcCA6IEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAgIH0sIHtuYXRpdmVHZXR0
ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCBuYXRp
dmVHZXR0ZXJzQXNWYWx1ZXMsCisgICAgICAgICAgICAiaW5jbHVkZVByb3RvIiwgaW5jbHVkZVBy
b3RvLAorICAgICAgICApKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KIApA
QCAtNjM4LDEzICs2ODIsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRl
c2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7IGkrKykgewogICAgICAg
ICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZh
bHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBwcm9wZXJ0eS5uYW1lLAorICAgICAg
ICAgICAgICAgICJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlLAorICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRv
ci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3Ip
OworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KQEAgLTY1NCwxNSArNzAx
LDE4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09PSAicHJveHkiKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IFNldDsK
KyAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAogICAgICAgICAvLyBIYW5k
bGVkIGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5hbWVQcm9jZXNzZWQuYWRk
KCJfX3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsK
IAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJv
bCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVy
KQogICAgICAgICB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxldCBmYWtl
RGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsKKyAgICAgICAgICAgICAg
ICBsZXQgZmFrZURlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAidmFs
dWUiLCBvYmplY3RbbmFtZV0sCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0
YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLndyaXRhYmxlID0g
dHJ1ZTsKQEAgLTY3OCwxMSArNzI4LDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKICAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAgICAgICAgICAgICAgIC8v
IFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25zIGNyZWF0
ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRoaXMgb2Jq
ZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9m
IFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CisgICAgICAgICAg
ICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgQFByb21pc2UgJiYgSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJv
cihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3YXNUaHJvd246IHRydWV9
OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAidmFsdWUiLCBlLAorICAgICAgICAgICAgICAgICAgICAid2FzVGhyb3du
IiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChpc093blBy
b3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVl
OwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUgKzc2NCwxNSBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1bmN0aW9u
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUpKQorICAg
ICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVl
OwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgICAgIGxl
dCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBzeW1ib2wg
PSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAotICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8s
IHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYg
KCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9y
LiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkg
cmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzgxLDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmco
ZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlw
dG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRv
ci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKEBTdHJpbmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2Rl
XVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3Is
ICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3Is
ICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxvcGVycyBtYXkgY3JlYXRl
IHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxpZW50OgogICAgICAgICAg
ICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwgInAiLCB7
Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHgsICJwIikK
ICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVl
RGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHRydWUp
OwpAQCAtNzQ1LDEwICs3OTksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0
KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3Ro
ID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxl
bmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgZm9yIChsZXQgbyA9IG9i
amVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKSB7CisgICAg
ICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IEBPYmplY3QuQGdldFBy
b3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09IG9i
amVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNlOwogCkBAIC03NjQsNyAr
ODE4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9
IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lc1tpXSwg
aXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0
ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC03NzYsMTQg
KzgzMCwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewotICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8p
OwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJv
cGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9s
cyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0
eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAg
IHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0
aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHNob3VsZEJy
ZWFrKQpAQCAtNzk2LDIzICs4NDgsMjggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1ZGVQcm90bykgewogICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXykKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3RvX18iLCB2YWx1ZTogb2JqZWN0Ll9fcHJvdG9f
Xywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgaXNPd246IHRydWV9KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsICJfX3Byb3RvX18iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0Ll9fcHJvdG9fXywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29u
ZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpc093biIsIHRydWUs
CisgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSBjYXRjaCB7IH0KICAgICAg
ICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0
Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBl
bnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIFNldC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Ygb2JqZWN0KSB7
CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGluU2V0SXRlcmFibGUob2JqZWN0KSkg
ewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0
Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNo
KGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ2YWx1ZSIsIHZhbHVlKSk7
CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRj
aENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIzLDE2ICs4ODAsMTggQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9nZXRNYXBFbnRy
aWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBl
bnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFBy
b3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhl
IHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAg
Zm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAgICBp
ZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJp
ZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5UHVzaChlbnRyaWVzLCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAia2V5Iiwga2V5
LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZhbHVlLAorICAgICAgICAgICAgKSk7CiAKICAg
ICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MzUsMTAgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xh
c3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8
IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCBy
ZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0
aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOworICAgICAgICBs
ZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90b3R5cGUuQGluZGV4T2YuQGNhbGwodGhpcy5f
c2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEp
IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4Owog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5NTMsMTYgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1JbmplY3RlZFNjcmlwdC5D
b2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8IDAsICAgICAgICAgIC8v
IG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRpZXM6IDEgPDwgMSwgLy8g
bmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi0gICAgQWxs
UHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJv
dG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIk93blByb3BlcnRpZXMiLCAxIDw8IDAsICAg
ICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzIiwg
MSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFp
bi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRp
ZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29udGludWUiKSwKLSAgICBT
dG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rp
b24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiQ29udGludWUiLCBAY3Jl
YXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICAiU3RvcCIsIEBjcmVhdGVQcml2YXRl
U3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRT
Y3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIxLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRl
UHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAg
ICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJl
dmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNv
bHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcgKzEwMzYsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0LmRlc2NyaWJlKGUpOwogICAg
ICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICAgICBhbGVydChleC5tZXNzYWdl
KTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcihl
eC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICI8ZmFpbGVkIHRvIGNv
bnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3JpcHRpb24pOwpAQCAtOTg2LDcgKzEwNDUsNyBA
QCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBzdGF0aWMgY3Jl
YXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5h
bWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3Qo
dmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwor
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVuZGVm
aW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwogICAgICAgICBpZiAo
cmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFz
ZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0
LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkK
QEAgLTEwMTEsNyArMTA3MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9uLgogICAgICAgICB0cnkg
ewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYg
aXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUuc3Bs
aWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsgfQogCkBAIC0xMDUwLDgg
KzExMDksOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
IGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsK
IAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBTeW1ib2wudG9TdHJpbmdU
YWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFn
XTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYgQEB0b1N0cmluZ1RhZyBp
biB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5AQHRvU3RyaW5nVGFnOwogCiAgICAg
ICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJp
b3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKQEAg
LTEwNjksNiArMTEyOCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
IAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJDb3Jl
IGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1l
bnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAgICAgICAgbGV0IG5vZGVO
YW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjAsMTcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRpYWxQcmV2aWV3KCkKICAgICB7Ci0gICAgICAg
IGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLAotICAgICAgICAg
ICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSks
Ci0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHBy
ZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJ0eXBl
IiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwgdGhpcy5kZXNjcmlwdGlv
biB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJsb3NzbGVzcyIsIHRydWUs
CisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkgewogICAgICAgICAgICAg
cHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAgICAgaWYgKHRoaXMuc3Vi
dHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAg
ICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMTI2LDcgKzExODYsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgaWYgKHRoaXMuc3Vi
dHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUg
PT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKLSAgICAg
ICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBwcmV2aWV3
LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAg
ICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByZXZpZXcub3Zl
cmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTE0MSwyMyArMTIwMSwyMyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGxldCBpc1RhYmxlUm93
c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09IG51bGwgfHwgc2Vjb25kTGV2ZWxLZXlzOwog
ICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3VudCA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RM
ZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9
IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBN
YXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKLSAgICAgICAgICAgIGluZGV4ZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3Vu
dCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJlc2hvbGQgPSBAY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiwgaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAg
ICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwgZmly
c3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRyaWVzLgogICAgICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAgICAgICAgICAgdGhpcy5f
YXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0gICAgICAgICAgICBwcmV2
aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICAgICAgLy8gSW50ZXJuYWwg
UHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMg
PSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKSB7CiAgICAg
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29u
ZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2
ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJp
bnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gSW5q
ZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE2OSw3ICsxMjI5
LDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAg
IC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3Bl
cnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFBy
b3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3Bl
cnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwotICAgICAg
ICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVl
fSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAorICAgICAgICAgICAgICAg
ICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0gY2F0Y2gg
ewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0x
MTc3LDcgKzEyNDAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0KIAotICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZp
ZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJz
dExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9ID0ge30pCisgICAgX2FwcGVu
ZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNU
aHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpKQogICAgIHsKICAgICAgICAgLy8gRXJyb3Ig
aW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7CkBAIC0x
MTkwLDkgKzEyNTMsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAgICAgICAgLy8gTm9uIGJh
c2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5nLCBub24tZW51bWVyYWJs
ZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUgJiYg
ZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0
b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAgICAgICAgICAgJiYgZGVz
Y3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAgICAgICAgICAgICAgICYm
IGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QKKyAgICAgICAgICAgICAg
ICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJyYXkKKyAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAUmVnRXhwKQogICAgICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogICAgICAgICB9CkBA
IC0xMjA5LDcgKzEyNzIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBzaG93IHByb3BlcnRpZXMg
aW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGVzZSBmaWx0ZXJz
IGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChmaXJzdExldmVsS2V5cyAm
JiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAgIGlmIChmaXJzdExldmVs
S2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5jbHVkZXMuQGNhbGwoZmlyc3RMZXZlbEtleXMs
IG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kUHJldmlldyhwcm9wZXJ0
eSkgewpAQCAtMTIyNywyMCArMTI5MCwyOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCiAgICAgICAgICAgICAgICAgcHJv
cGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMu
cHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHByZXZpZXcucHJvcGVydGll
cywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHZXR0ZXIvc2V0
dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgICAg
ICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVu
ZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAg
Im5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgImFjY2Vzc29yIiwKKyAgICAg
ICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2YWx1ZS4KICAgICAgICAg
bGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlID09PSBudWxs
KQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGU6ICJvYmplY3Qi
LCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsICJvYmplY3QiLAorICAg
ICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwiLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIs
ICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAgICAgICAgIC8vIElnbm9yZSBub24tZW51bWVy
YWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlOwpAQCAtMTI1
OCw3ICsxMzI5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcodmFsdWUsIG1heExl
bmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5
cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKX0pOworICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAg
ICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAg
ICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKSwKKyAgICAg
ICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU3ltYm9sLgpAQCAtMTI2OCwxMSAr
MTM0MywxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJp
bmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
e25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsIHR5cGUsCisgICAgICAg
ICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5nLAorICAgICAgICAgICAgKSk7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9wZXJ0eSA9IHtuYW1lLCB0
eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAidHlwZSIsIHR5cGUs
CisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
dmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAgIHByb3BlcnR5LnN1YnR5
cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRy
aWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAg
ICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwoZW50cmllcyk7CiAgICAgICAgICAgICBwcmV2
aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9IGVudHJpZXMubWFwKGZ1
bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBBcnJheS5wcm90b3R5
cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewogICAgICAgICAgICAgZW50
cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5
LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKICAgICAgICAgICAgIHVwZGF0ZU1haW5Q
cmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkgewpA
QCAtMTMzNiw4ICsxNDE4LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKICAgICB7Ci0gICAg
ICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9iamVjdCk7CisgICAgICAg
IGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2JqZWN0KTsKIAogICAgICAg
ICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEp
OwogICAgIH0KQEAgLTEzNTcsMTEgKzE0MzksMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gQ3lj
bGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFzKG9iamVjdCkpCisgICAg
ICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGtub3duT2JqZWN0cy5hZGQob2JqZWN0
KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQob2JqZWN0KTsKIAogICAgICAgICAvLyBBcnJh
eXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBvciBsZXNzIHNpbXBsZSBvYmplY3RzLgogICAg
ICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCk7CkBAIC0xMzgx
LDEyICsxNDYzLDEyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBPYmplY3RzIGFyZSBzaW1wbGUg
aWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGllcy4KLSAgICAgICAg
bGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qp
OworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAm
JiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2Jq
ZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTQwNCw2NiArMTQ4
Niw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlm
IChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBsZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAxOwog
ICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxlZnRIYWxmIC0gMTsKLSAg
ICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsg
c3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOworICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsg
c3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0tLS0tCiAKLUluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQotewotICAgIHRoaXMuY2Fs
bEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2lu
amVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVu
Y3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6IFN0cmluZyhjYWxsRnJh
bWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwgY29sdW1uTnVtYmVyOiBj
YWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVD
aGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2Fs
bEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKLSAgICB0aGlzLmlzVGFpbERlbGV0ZWQg
PSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsKKyAgICBjb25zdHJ1Y3RvcihvcmRpbmFsLCBj
YWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6
JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOworICAg
ICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7CisKKyAgICAg
ICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLAorICAgICAgICAg
ICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAgICApOworCisgICAgICAgIHRoaXMuc2NvcGVD
aGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7CisgICAgICAgIHRoaXMudGhp
cyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2Ui
KTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7
CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAg
ICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGxldCBzY29wZUNo
YWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9u
cyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0gICAgICAgIGxldCBzY29wZUNo
YWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IEBjcmVhdGVBcnJh
eVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29wZUNo
YWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5W2ldID0gSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29wZUNoYWluW2ldLCBz
Y29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwogICAgICAgICByZXR1cm4gc2NvcGVD
aGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9z
Y29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCi0gICAg
MTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUiLCAvLyBDTE9TVVJFX1ND
T1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0OiAiZnVuY3Rpb25OYW1l
IiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQotICAgIDY6ICJuZXN0ZWRM
ZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07CisgICAgc3RhdGljIF9jcmVhdGVT
Y29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9jYXRpb259LCBncm91cElkKQorICAgIHsK
KyAgICAgICAgbGV0IHNjb3BlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
ICAgICAgICAib2JqZWN0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAor
ICAgICAgICAgICAgInR5cGUiLCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVU
eXBlTmFtZXNbdHlwZV0sCisgICAgICAgICk7CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVBy
b3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2Nh
dGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAgICAgICBvYmplY3Q6IFJl
bW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAgICAgdHlwZTogSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAotICAgIH07Cisg
ICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CiAKLSAgICBp
ZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisgICAgICAgIGlmIChsb2NhdGlv
bikKKyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CiAKLSAgICBpZiAobG9j
YXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIGlmIChp
c0VtcHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7CiAK
LSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5lbXB0eSA9IHRy
dWU7CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9OwogCi0gICAgcmV0dXJuIHNjb3Bl
OwotfQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgMCwgImdsb2JhbCIsIC8vIEdMT0JBTF9T
Q09QRQorICAgIDEsICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQorICAgIDIsICJjbG9zdXJlIiwgLy8g
Q0xPU1VSRV9TQ09QRQorICAgIDMsICJjYXRjaCIsIC8vIENBVENIX1NDT1BFCisgICAgNCwgImZ1
bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKKyAgICA1LCAiZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlQKKyAgICA2LCAibmVz
dGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCispOwogCiAvLyAtLS0tLS0tCiAK
QEAgLTE0NzcsOSArMTU2NSw5IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkK
ICAgICAgICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKSB7IHJldHVybiBvcmlnaW5hbFZhbHVlOyB9
OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGtleSwg
dmFsdWUpOworICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiJCIgKyBrZXks
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJnZXQiLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoc2F2ZWRSZXN1bHRBbGlhcyAmJiBzYXZlZFJlc3VsdEFsaWFzICE9PSAiJCIpCi0gICAgICAg
ICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgdmFsdWUp
OworICAgICAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywgc2F2ZWRSZXN1bHRB
bGlhcyArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7
CiAgICAgfTsKIAogICAgIGlmICgiX2xhc3RSZXN1bHQiIGluIGluamVjdGVkU2NyaXB0KQpAQCAt
MTUwMiw0OCArMTU5MCw0OCBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUpCiAg
ICAgICAgIHRoaXNbbmFtZV0gPSBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdOwogfQogCi1D
b21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CitDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9
IHt9OworQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVzKG9i
amVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkB2YWx1
ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycygu
Li5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIGluamVjdGVkU2Ny
aXB0Lmluc3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
YXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmFzc2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY2xl
YXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y2xlYXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudFJlc2V0Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
UmVzZXQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRlYnVnIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRlYnVn
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXIiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyeG1sKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvciguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29sbGFwc2VkKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cEVuZCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZvKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90KC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtlSGVhcFNuYXBzaG90KC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWUoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUVuZCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lTG9nKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZVN0YW1wKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFjZSguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFyZ3VtZW50cyk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5jbGVhciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQo
Li4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5kaXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50
cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5ncm91cCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBD
b2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3Vw
RW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUucHJvZmlsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9m
aWxlRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLnRhYmxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNu
YXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLnRha2VIZWFwU25hcHNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRy
YWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRyYWNlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKIAogZm9y
IChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAi
ICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKIAogcmV0dXJuIGluamVj
dGVkU2NyaXB0OwotfSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNmZjZmOTc2YzdlMzlkOTk5NTguLmJjMjM3YTFmNGY0MGI2
NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtMjIyMSw3ICsyMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgpICE9
IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21w
aWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpLCAiIG9uIGxpbmUgIiwgZXJyb3IubGlu
ZSgpLCAiLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5NWM0NTRkOTllZTE5ZjEzZTc5Yy4uZmZjOWM5YzIzMzFk
YWUzZDZhNjViZGVmYWM1MGJiMWEwM2YzNjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJQcm94eU9iamVjdC5oIgogCkBAIC01Nyw2ICs1OCw4IEBAIHZvaWQgQXJyYXlDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXksIGFycmF5Q29uc3Ry
dWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworCisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZyb21Qcml2YXRl
TmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCA1YTNhYWE5MWU2MjcyOGMyY2E5ZmFlZjU2MWQyZmFiZWRlNzA1OTVlLi41MTVjODVm
ZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdmOGY2YWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDExIEBA
IHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB9CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhP
ZlByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW5kZXhPZlB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05h
bWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFByaXZh
dGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cG9wUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBnbG9iYWxPYmpl
Y3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAKICAgICBKU09iamVjdCogdW5zY29wYWJsZXMg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGY3ZDI3Yjk5NThiZGU2OGNjNTZjYjE5N2IwZDIxMjVkNWIw
MmUxNDcuLjAyYjliZWQ2ODI4MDAzMjg0OTQ4MGQzZDlhNWMwODAwM2IzYThkM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3
NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZM
QUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0
aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3Bl
cnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1i
b2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnkpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpvYik7CkBAIC0zNjEsNiArMzYzLDIzIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNy
ZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOwog
fQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byBqc29uID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb24pKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnksIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkpOwor
fQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhc3NlcnRD
YWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewpAQCAtMTA3NCw5ICsxMDkzLDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAg
ICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7
CiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHBy
b21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlz
LCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Ci0gICAgCisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U3RyaW5nKV0uc2V0
KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2YWxFcnJvclN0cnVjdHVy
ZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVy
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3Ry
dWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1Myw2ICsxNTc0LDE0IEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAgIH0pOwogCisgICAgLy8g
SlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBhcnNlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblN0cmluZ2lm
eSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lmeSkpOwor
ICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwogICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVJlbW90ZUZ1
bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVSZW1vdGVG
dW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nQ29uc3RydWN0b3IpOwogCiAgICAgdGhp
c09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEwYWFlZDM0Nzg3YWY2NmE0
ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIuLmU5NDg2MDNlMmNlY2EyOTU1YTJlZDI3MTU0YmIzYjAx
NDk3MWFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMTI0LDYgKzEyNCw3IEBAIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOwog
Y2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZU9yaWdp
bjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBBY3RpdmF0aW9u
U3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFy
cmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0cnVjdG9yPiBtX3N0cmlu
Z0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJbnRsQ29s
bGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTg2ZGU5Nzc2NGVjNGY1ZDE3N2Zi
MWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0ZDU5NGY0ZjcyZmRlN2ZkOTM2ZWE1MTQzMGNi
YTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU0Z1bmN0aW9uKiBl
bnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIG1h
cFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVu
dHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCks
IGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNmOWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFh
YmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2EzOTg3MDQxNWVlZjM3Y2JlMWNlOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBv
YmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVz
Y3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmluZVByb3Bl
cnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDMpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7
Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVl
c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBpZiAoT3B0aW9u
czo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIp
OworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25Qcml2YXRlTmFtZSgpLCBvYmplY3RDb25z
dHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRl
eCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZkNWQ0YTk1ZGQ0ODcxLi5mN2Y5YzE0MThiZjdj
Y2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgdm9pZCBTZXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJs
aWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRyaW5z
aWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1
ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCmluZGV4IDIxMzVhMGZlNWI2NDVmNzRmNThkODhmYjQ1MjA4ODFiNDE1MzZjNTQuLmUzYzA3
MDk1YjUwZGNhNmVlY2FmNWI0ZGNjMmE5ZGJhNzA5YTA4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTY0LDYgKzE2NCw5
IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRv
cl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJzdHJQcml2YXRlTmFtZSgp
LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbmRzV2l0aFByaXZh
dGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAvLyBUaGUgY29uc3RydWN0
b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3RydWN0b3IgaGFzIGJlZW4g
YnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0YjdlY2ViYmU4M2Y3ZDcyNDc5
MzRjOTg4ZGVmNGZmYzFjOGNhLi5hNTA5OWZlYTc4NzA2OWIxZWY2YzczZjhkYTkwOGQyMDQ0YjA0
ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEyOSw2IEBAIFdFQktJVF9G
UkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNv
cmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQog
Ci0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLWFkZF9jdXN0b21fY29t
bWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9q
c21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNl
VVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNV
VEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAtMjM1Miw2ICsyMzQwLDcg
QEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9U
ZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RW5jb2RlclN0
cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVy
bmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKQEAgLTIzOTgs
NiArMjM4NywxNCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRpbnMuaAogICAgICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmgpCiAKK2FkZF9j
dXN0b21fdGFyZ2V0KFdlYkNvcmVfR2VuZXJhdGVCdWlsdGluc1dyYXBwZXJQcml2YXRlSGVhZGVy
IEFMTCBERVBFTkRTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJDb3JlSlNCdWls
dGluSW50ZXJuYWxzLmgpCitXRUJLSVRfQ09QWV9GSUxFUyhXZWJDb3JlX0NvcHlCdWlsdGluc1dy
YXBwZXJQcml2YXRlSGVhZGVyCisgICAgREVQRU5EUyBXZWJDb3JlX0dlbmVyYXRlQnVpbHRpbnNX
cmFwcGVyUHJpdmF0ZUhlYWRlcgorICAgIERFU1RJTkFUSU9OICR7V2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTX0RJUn0vV2ViQ29yZQorICAgIEZJTEVTICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmgKKyAgICBGTEFUVEVORUQK
KykKKwogQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9E
SVJ9L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBNYXRoTUxOYW1lcy5jcHApCiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhM2Q2
OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5Li5mNTY3N2UyZTQ1MjUzNTYyYmQy
ZjBjOTAyZDU2Mjc2ZTYwZjczMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOCw3ICs4LDggQEAgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbitQcm9wZXJ0eU5h
bWVzLmkKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Zh
bHVlS2V5d29yZHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NWYWx1ZUtleXdvcmRzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlQnVpbHRpbnMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3Vu
dFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0RPTUNsaWVudElzb1N1YnNwYWNlcy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBkNjYzYzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZj
Li5iMTIzYWJmOTNlMjc1OGQyMTE0OGMxMDFjOWQxNzM0ZDA0OTZmOWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMTksMTYgKzIyMTksNiBAQCBpZm5lcSAoJChOT19TVVBQ
TEVNRU5UQUxfRklMRVMpLDEpCiAtaW5jbHVkZSAkKEpTX0RPTV9IRUFERVJTOi5oPS5kZXApCiBl
bmRpZgogCi0jIEluc3BlY3RvciBpbnRlcmZhY2VzCi0KLWFsbCA6IENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLmgKLQotQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCA6ICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCi0JZWNobyAiLy8jIHNvdXJj
ZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIiA+IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9qc21pbi5weSA8ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzID4+IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5q
cwotCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0JJChERUxFVEUpIENvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLm1pbi5qcwotCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlM
VElOU19TT1VSQ0VTID0gXApAQCAtMjI1Miw2ICsyMjQyLDcgQEAgV2ViQ29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHREZWNvZGVyU3RyZWFtLmpzIFwKICAg
ICAkKFdlYkNvcmUpL2RvbS9UZXh0RW5jb2RlclN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgXAorICAgICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIFwKICMKIAogQlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlYmQ2YzMwMGU3YzMyYjdj
ZjNmYWQwNzA0NDhiMDY3YmZhYTliNzhjLi4wMWVjYTcwNDRhZDEyZDE4YzBhYTM0MzcwYzUxZjMy
MTU3NmI2NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNjgsNiArMjA2OCw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vQ1NTVmFsdWVLZXl3b3Jkcy5oCisgICAgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudEludGVyZmFjZXMuaAogICAgICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAogICAgICR7V2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0
ZTBmNGE0NWM4NzA1NjQ5N2QxODA3OTI5YTc3MDg0YTRkNzU1ZjczLi5jNjFhOWU1Zjk3YzkyOGE4
NGQ0MTk4NjQxYzA3MGE0ZGUzNWY1Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTksNiArODk5LDcgQEAKIAkJMkUzMDFC
RTgyNzQ1OTQ3MjAwQzA1NjRGIC8qIENvbXBpbGVkU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDUxMDc3MjAyQzdFMDEwMDY1N0QzMyAv
KiBDb21waWxlZFNlbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0RGRDgxMkRCQUZC
ODAwQTZCMjMzIC8qIERPTVVSTC5oICovOyB9OwogCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMg
LyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovOyB9OworCQkyRTNB
RUZGQjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzQUVG
RjkyODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTQz
NDY0NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmggKi87IH07CiAJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2
MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkU0MzQ2NEIwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJH
bG9iYWxTY29wZVByb3h5LmggKi87IH07CkBAIC0zNTE3LDcgKzM1MTgsNiBAQAogCQlBNTc4RjQz
RjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0UxREUwQjYyQjAwM0RG
QzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTgxRUQxMzFGQjI4OENGMDBDRUQ0RUMgLyogU2Vy
dmljZVdvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50Lmgg
Ki87IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhv
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQw
RTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKLQkJ
QTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4
NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJ
QTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKIAkJQTU4NEZFMzAxODY0
Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTg0RkUzNTE4NjRENUFG
MDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUzMjE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElIb3N0LmggKi87IH07CkBAIC04MjA0LDYgKzgyMDQsOCBAQAogCQkyRTM3REZEOTEy
REJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01V
UkwuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwMzEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTM3RTAwNDEy
REJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNET01VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUzQUVGRjky
ODA5RjExOTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzNDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTM5NDAsNyArMTM5NDIsNiBAQAogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMg
LyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjMxODdCOEFDMjAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTI3MTg2
MzdEQ0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDI4LDcgKzIwNDI5LDYgQEAK
IAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEw
IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJE
ODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4
NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuaCAqLywKIAkJCQk5MTc1Q0U1
OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwICovLApAQCAtMjM1ODQsNiArMjM1ODQsOCBAQAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVE
MEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5
MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuaCAqLywKIAkJCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29sb3JEYXRhLmNwcCAq
LywKKwkJCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2VCdWlsdGlucy5jcHAgKi8sCisJCQkJMkUzQUVGRjkyODA5RjExOTAwMzcxQTI1IC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaCAqLywKIAkJCQk5OTA4QjBGNjFCQ0FE
MDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJ
OTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMu
aCAqLywKIAkJCQlFNDFFQTAzODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5j
cHAgKi8sCkBAIC0zNDA4Myw3ICszNDA4NSw3IEBACiAJCQkJMjZFOTQ0RDkxQUM0QjJERDAwN0I4
NUI1IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMzUx
ODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFM0FFRkZCMjgwOUYxMUQwMDM3
MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM5QzY5RDAyODEwRDExRDAwRTY5QkFEIC8qIENvbW1vbkF0b21TdHJpbmdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0U2NjRGQzFFNzM3MDMzMDA3NjU1MzYgLyogQ29tbW9uQ3J5
cHRvREVSVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCmluZGV4IGQ3N2M3M2Q4YWU0OTUwMTY3
NTI4MjI2NGQwZDM2ZDY1Y2NlNzQyZmYuLmQ0MWZjZDM1Y2E5ZTNmNTAzY2Q0NzM4OTQ1YjQ5Yjc5
ZmRlYTMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJTW9kdWxlLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcElubGluZXMuaD4KQEAgLTQ4LDkgKzQ3LDE0IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpD
b21tYW5kTGluZUFQSU1vZHVsZSgpCiB7CiB9CiAKLVN0cmluZyBDb21tYW5kTGluZUFQSU1vZHVs
ZTo6c291cmNlKCkgY29uc3QKK0pTRnVuY3Rpb24qIENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmpl
Y3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
KSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcywgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlX2pzKSk7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpKQorICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5idWlsdGluSW50ZXJuYWxGdW5jdGlvbnMoKS5jb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZSgpLm1faW5qZWN0TW9kdWxlRnVuY3Rpb24uZ2V0KCk7CisKKyAgICBXVEZMb2dBbHdheXMo
IkF0dGVtcHRlZCB0byBnZXQgYGluamVjdE1vZHVsZWAgZnVuY3Rpb24gZnJvbSBgQ29tbWFuZExp
bmVBUElNb2R1bGVgIGZvciBub24tYEpTRE9NR2xvYmFsT2JqZWN0YC4iKTsKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1ZhbHVl
IENvbW1hbmRMaW5lQVBJTW9kdWxlOjpob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1v
ZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgK
aW5kZXggMjc3MTZmY2E2N2E5YmE4YzJkZWJkZWRhY2Y3ZmM2YjQyZDJkZjc0Yi4uMGE1MGQ0YTVm
MzMzZDRmNDhkNWQwYzE3NmYxOTUwYmRhZDdiOTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
Q29tbWFuZExpbmVBUElNb2R1bGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1vZHVsZSB7CiBwdWJsaWM6CiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGUoKTsKIAotICAg
IFN0cmluZyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGlu
amVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsK
ICAgICBKU0M6OkpTVmFsdWUgaG9zdChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcios
IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lk
IGluamVjdElmTmVlZGVkKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgY29uc3Qg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCmluZGV4IGY1MWUzNTE5Y2Ni
MTc5NjA5MGMzMjc0ZDViMGMzN2IyNTlkMGUzZWEuLjgxOWZhNDdlOWQxMGQwZjRjN2U3MWY5MTk0
YjBiZjRlZjc2NjNiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTIgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLmpzCisvLyBAaW50ZXJuYWwKIAotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlw
dEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRT
Y3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElIb3N0
KSB7CitmdW5jdGlvbiBpbmplY3RNb2R1bGUoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2Jq
ZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1hbmRMaW5lQVBJSG9zdCkKK3sKIAotLy8gRklYTUU6
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVj
dGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXIt
b3ZlcnJpZGRlbiBidWlsdC1pbnMKKy8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIzOTc3ND4gSW5q
ZWN0ZWQgc2NyaXB0IHNob3VsZCB1c2UgV2ViQ29yZSBidWlsdC1pbnMuCiAKIGluamVjdGVkU2Ny
aXB0Ll9pbnNwZWN0T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPT09IDApCkBAIC03MCwxMiArNzEsMTIgQEAgQ29tbWFuZExpbmVBUEkubWV0aG9k
c1siY29weSJdID0gZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgZWxzZSBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaXNQcmltaXRpdmVWYWx1ZShvYmplY3QpKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVj
dDsKICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAic3ltYm9sIikKLSAgICAgICAgc3Ry
aW5nID0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyhvYmplY3QpOworICAgICAgICBzdHJp
bmcgPSBAU3RyaW5nKG9iamVjdCk7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gImZ1
bmN0aW9uIikKICAgICAgICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSB7CiAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuSlNP
Ti5zdHJpbmdpZnkob2JqZWN0LCBudWxsLCAiICAiKTsKKyAgICAgICAgICAgIHN0cmluZyA9IEBq
c29uU3RyaW5naWZ5KG9iamVjdCwgIiAgIik7CiAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAg
ICAgc3RyaW5nID0gIiIgKyBvYmplY3Q7CiAgICAgICAgIH0KQEAgLTg5LDIzICs5MCwyOCBAQCBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJnZXRFdmVudExpc3RlbmVycyJdID0gZnVuY3Rpb24odGFy
Z2V0KSB7CiB9OwogCiBmdW5jdGlvbiBub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSB7Ci0gICAg
aWYgKHR5cGVzID09PSB1bmRlZmluZWQpCi0gICAgICAgIHR5cGVzID0gWyJtb3VzZSIsICJrZXki
LCAidG91Y2giLCAiY29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vt
b3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJy
ZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0Iiwg
InVubG9hZCJdOworICAgIGlmICh0eXBlcyA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdHlwZXMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAi
Y29udHJvbCIsICJhYm9ydCIsICJibHVyIiwgImNoYW5nZSIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2
aWNlb3JpZW50YXRpb24iLCAiZXJyb3IiLCAiZm9jdXMiLCAibG9hZCIsICJyZXNldCIsICJyZXNp
emUiLCAic2Nyb2xsIiwgInNlYXJjaCIsICJzZWxlY3QiLCAic3VibWl0IiwgInVubG9hZCIpOwog
ICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgIHR5cGVzID0g
W3R5cGVzXTsKKyAgICAgICAgdHlwZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKHR5
cGVzKTsKKworICAgIGxldCByZXN1bHQgPSBuZXcgQFNldDsKKyAgICBmdW5jdGlvbiBhZGRUeXBl
c1RvUmVzdWx0KCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5AYWRkKGFyZ3VtZW50c1tpXSk7CisgICAgfQog
Ci0gICAgbGV0IHJlc3VsdCA9IFtdOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVu
Z3RoOyBpKyspIHsKICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAg
ICAgcmVzdWx0LnB1c2goImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1v
dmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwgIm1vdXNldXAiLCAibW91c2V3aGVlbCIpOwor
ICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vk
b3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1cCIsICJt
b3VzZXdoZWVsIik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikKLSAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJ
bnB1dCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgia2V5ZG93biIsICJrZXlwcmVz
cyIsICJrZXl1cCIsICJ0ZXh0SW5wdXQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09
ICJ0b3VjaCIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgidG91Y2hjYW5jZWwiLCAidG91Y2hl
bmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9S
ZXN1bHQoInRvdWNoY2FuY2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0
Iik7CiAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCi0gICAgICAgICAg
ICByZXN1bHQucHVzaCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXpl
IiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpvb20iKTsKKyAgICAgICAgICAgIGFk
ZFR5cGVzVG9SZXN1bHQoImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJlc2V0IiwgInJlc2l6
ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKKyAgICAgICAgICAgIHJlc3VsdC5A
YWRkKHR5cGVzW2ldKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExOCwxOSAr
MTI0LDE3IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQogQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sibW9uaXRvckV2ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAgIGlmICgh
b2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50
TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlw
ZXModHlwZXMpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBm
YWxzZSk7Ci0gICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVu
dCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJsZShub3Jt
YWxpemVFdmVudFR5cGVzKHR5cGVzKSkpIHsKKyAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlz
dGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlz
dGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKICAgICB9CiB9OwogCiBDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJ1bm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpIHsK
ICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3JtYWxp
emVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0
aDsgKytpKQotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9n
RXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0SXRlcmFibGUo
bm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKQorICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRM
aXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogfTsKIAogaWYgKGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewpAQCAtMTU4
LDkgKzE2MiwxMCBAQCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgfTsKIAogICAgIENvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbIiQkIl0gPSBmdW5jdGlvbihzZWxlY3Rvciwgc3RhcnQpIHsKKyAgICAgICAgLy8gRG9u
J3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2ZWxvcGVycyBj
YW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgogICAgICAgICBpZiAoY2FuUXVl
cnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LkFycmF5LmZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwot
ICAgICAgICByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LkFycmF5LmZyb20oaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAg
ICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rv
cikpOworICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5k
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgfTsKIAogICAgIENvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbIiR4Il0gPSBmdW5jdGlvbih4cGF0aCwgY29udGV4dCkgewpAQCAt
MTc1LDEwICsxODAsMTEgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5i
b29sZWFuVmFsdWU7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbm9kZXMgPSBbXTsKKyAgICAg
ICAgLy8gRG9uJ3QgcmV0dXJuIGEgcHJvdG90eXBlbGVzcyBhcnJheSBoZXJlIHNvIHRoYXQgZGV2
ZWxvcGVycyBjYW4gdXNlIHRoZSByZXN1bHRzIGFzIGEgbm9ybWFsIEFycmF5LgorICAgICAgICBs
ZXQgbm9kZXMgPSBuZXcgQEFycmF5OwogICAgICAgICBsZXQgbm9kZSA9IG51bGw7CiAgICAgICAg
IHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0gICAgICAgICAgICBub2Rlcy5w
dXNoKG5vZGUpOworICAgICAgICAgICAgQGFycmF5UHVzaChub2Rlcywgbm9kZSk7CiAgICAgICAg
IHJldHVybiBub2RlczsKICAgICB9OwogfQpAQCAtMTg2LDQgKzE5Miw0IEBAIGlmIChpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsK
IGZvciAobGV0IG5hbWUgaW4gQ29tbWFuZExpbmVBUEkubWV0aG9kcykKICAgICBDb21tYW5kTGlu
ZUFQSS5tZXRob2RzW25hbWVdLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiZnVuY3Rp
b24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CiAKLX0pCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlIGIvU291cmNlL2NtYWtl
L1dlYktpdE1hY3Jvcy5jbWFrZQppbmRleCAyMDBjZTQ4MTg4OWI3ZTIxZWM4NmNjNjVlYWEzYWUw
ZTljODdlNzNkLi5hM2ZlZjZhZDQ4ZWZmNmU0NWM0ZjVhNjRkMWI3ZGRlY2YwY2I5YWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFr
ZS9XZWJLaXRNYWNyb3MuY21ha2UKQEAgLTQ1MCw3ICs0NTAsNyBAQCBlbmRmdW5jdGlvbigpCiBm
dW5jdGlvbihXRUJLSVRfQ09QWV9GSUxFUyB0YXJnZXRfbmFtZSkKICAgICBzZXQob3B0aW9ucyBG
TEFUVEVORUQpCiAgICAgc2V0KG9uZVZhbHVlQXJncyBERVNUSU5BVElPTikKLSAgICBzZXQobXVs
dGlWYWx1ZUFyZ3MgRklMRVMpCisgICAgc2V0KG11bHRpVmFsdWVBcmdzIEZJTEVTIERFUEVORFMp
CiAgICAgY21ha2VfcGFyc2VfYXJndW1lbnRzKG9wdCAiJHtvcHRpb25zfSIgIiR7b25lVmFsdWVB
cmdzfSIgIiR7bXVsdGlWYWx1ZUFyZ3N9IiAke0FSR059KQogICAgIHNldChmaWxlcyAke29wdF9G
SUxFU30pCiAgICAgc2V0KGRzdF9maWxlcykKQEAgLTQ3MSw2ICs0NzEsNyBAQCBmdW5jdGlvbihX
RUJLSVRfQ09QWV9GSUxFUyB0YXJnZXRfbmFtZSkKICAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5k
KE9VVFBVVCAke2RzdF9maWxlfQogICAgICAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9
IC1FIGNvcHkgJHtzcmNfZmlsZX0gJHtkc3RfZmlsZX0KICAgICAgICAgICAgIE1BSU5fREVQRU5E
RU5DWSAke2ZpbGV9CisgICAgICAgICAgICBERVBFTkRTICR7b3B0X0RFUEVORFN9CiAgICAgICAg
ICAgICBWRVJCQVRJTQogICAgICAgICApCiAgICAgICAgIGxpc3QoQVBQRU5EIGRzdF9maWxlcyAk
e2RzdF9maWxlfSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiOTk2YTZmOTdjNzJmYTZkOWMxOWU5NTA2NmU3YTgzNjk1Nzgw
NjU4Li43MjY3MTU1ZDQ0NWIwNWM0N2UyM2ViMDMxODdkYzEzMmQwNmVhODUyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjItMDUtMDYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291cmNlIGFz
IGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIEpTQyBidWls
dC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICAqIGlu
c3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWw6CisgICAgICAgIC0g
QWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVycmlkaW5nIGZ1bmN0aW9ucyBhbmQg
ZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOgorICAgICAgICAtIENoYW5nZWQg
dG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25pcHBldCBzaW5jZSB0aGUgaW5zcGVj
dG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGluLgorCisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAtIFRoZSBpbnNwZWN0b3Ig
aW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBubyBsb25nZXIgYXBwZWFyIGFzIHNj
cmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUvbGluZS1jb2x1bW4uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1j
b2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAtIEluc3BlY3RvciBpbmpl
Y3RlZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiByZWxlYXNlIGFu
ZCBkZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDUtMDYgIEthcmwg
UmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIFJlbGVhc2UgXSBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwgaXMgYSBmbGFreSBmYWls
dXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9y
LWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAppbmRleCAxZWIx
NTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi41OTM3ZmFlOTdmODk1ODg0N2Y4
OGZmNDY3ZWJlMTViODFlMjg3ZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1l
eHBlY3RlZC50eHQKQEAgLTEsNjYgKzEsNjAgQEAKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBX
aW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FH
RTogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09MRSBNRVNT
QUdFOiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ2hlY2tpbmcg
d2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5n
IG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy4KK0No
ZWNraW5nIHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBzdGVwcGVk
IGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNl
Rm9ySW50ZXJuYWxTY3JpcHRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIu
c2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNh
YmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9O
OiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBp
biwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29u
c29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2Ut
bG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBm
dW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0g
ICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29s
ZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQ
QVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAgICAyMwor
ICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAg
ICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAg
ICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBl
bnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAg
ICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29u
c29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAg
IH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAgICAyNCAg
ICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdn
ZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVj
dC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50
cnlDb25zb2xlTG9nOjEwOjUKLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkg
ewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3
aW5kb3cpOwotIC0+ICAgOSAgICAgICAgfGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAg
ICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCitQQVVT
RSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI4OjUKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJ
bnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAtPiAgMjcgICAgICAgIHxpbnRlcm5hbE9iamVj
dC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAg
MjkgICAgfQorICAgICAzMAogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29s
ZUxvZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNv
bGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAt
PiAgMTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAg
MTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0
OjI5OjUKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7Cisg
LT4gIDI4ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQorICAg
ICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBB
VCBlbnRyeUNvbnNvbGVMb2c6MTI6MgotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93
KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAg
Y29uc29sZS5sb2coInN0cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAgICAxMgotICAgICAxMyAg
ICAvLyAtLS0tLS0tLS0KLSAgICAgMTQKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MzA6
MgorICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpOworIC0+ICAyOSAgICB9fAorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0K
KyAgICAgMzIKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTY4LDU3ICs2Miw1NyBAQCBQ
QVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0IHNldHVw
LgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3Jp
cHRzLkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQ
UkVTU0lPTjogc2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGlu
LCBpbiwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9n
LXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAg
IDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVn
Z2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAg
IGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAg
ICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAg
MjUgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
MSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAg
ICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVu
Y3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4g
ICA4ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUu
bG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAg
ICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAg
ICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAg
IGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAg
IDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJu
YWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNF
IEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAg
IGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwot
IC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25z
b2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsK
LSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAy
MworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAg
ICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsK
KyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBp
bnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgot
UEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAg
IDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdn
ZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAg
IGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmlu
ZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0Cisg
ICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAg
IDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8
KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAg
ICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVw
LWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0Pgot
ICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBk
ZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAg
ICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygi
c3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6
MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsK
KyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3Qu
dGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAy
OCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046
IHJlc3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAppbmRleCBkMTY4YTcy
NTRjZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi5lNWIwZDljOGI3MThlMWIyNTZlYWVm
Njc4MjI2YjYyNzBlNzFiMzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbApAQCAtNCwx
MSArNCwyOSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZnVuY3Rpb24gZW50
cnlDb25zb2xlTG9nKCkgeworCitsZXQgaW50ZXJuYWxPYmplY3QgPSB7IHRlc3Q6IGZ1bmN0aW9u
KCkge30gfTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbE9iamVjdCA9
IHdpbmRvdy5pbnRlcm5hbHMuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oInRlc3RQ
YXVzZUZvckludGVybmFsU2NyaXB0cyIsIGAKKyAgICAgICAgLy8jIHNvdXJjZVVSTD1fX0luamVj
dGVkU2NyaXB0X1Rlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cy5qcworICAgICAgICBsZXQgSW50
ZXJuYWxPYmplY3QgPSBjbGFzcyBJbnRlcm5hbE9iamVjdCB7CisgICAgICAgICAgICB0ZXN0KGlu
dm9jYXRpb25OdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9IDY7CisgICAgICAgICAg
ICAgICAgbGV0IGIgPSA3OworICAgICAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBhICogYjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBuZXcgSW50ZXJuYWxPYmplY3Q7Cisg
ICAgYCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CiAgICAgZGVidWdn
ZXI7Ci0gICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsK
LSAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsK
KyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7
CiB9CiAKIC8vIC0tLS0tLS0tLQpAQCAtMjEsMzEgKzM5LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQog
CiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQ
YXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAi
U2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBjb25zb2xlLmxvZyBzdGF0ZW1lbnRzIHdo
aWNoIHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhwcmVzc2lv
bjogInNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
U2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRl
cm5hbCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0
KGVudHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8g
dGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNv
bW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6
IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92ZXIiLAot
ICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAg
ICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIs
IC8vIGNvbnNvbGUubG9nKCJzdHJpbmciKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVy
bmFsT2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVj
dC50ZXN0KDIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgz
KQogICAgICAgICAgICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9KTsKIAogICAgIGFkZFN0
ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRl
cm5hbFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFi
bGUgdG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRl
cm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChl
bnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0
byBzdGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0ZWQgc2NyaXB0
cy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0
KSIsCiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5kIHNpbmNlIHRo
ZXJlIGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3VsdCBpZiBjaGFu
Z2luZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB7IHJldHVy
biBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKHRydWUpOyB9LAogICAg
ICAgICB0ZWFyZG93bjogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAg
ICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93
KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9n
KHdpbmRvdyldCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29u
c29sZS5sb2cod2luZG93KV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVj
dC50ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgaW50
ZXJuYWxPYmplY3QudGVzdCgxKV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJl
IGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQogICAgICAgICAgICAgInJlc3VtZSIsCiAg
ICAgICAgIF0KICAgICB9KTsKQEAgLTU3LDYgKzc1LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdo
ZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBv
biB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgor
PHA+Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0
ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3Mu
cGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVk
LnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2
ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApA
QCAtOSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzog
U2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQg
SW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmlu
ZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlw
dFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVB
UElTb3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVk
IHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQ
YXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVm
Li5kNjc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCAr
MTksMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhp
cykgc3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVu
dCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZh
bCBzb3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBz
Y3JpcHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3Vu
ZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0
ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxz
ZTsKLSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAg
IGxldCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0
ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2Ny
aXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBw
YXJhbXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAg
ICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49
IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24g
aXNFdmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9
PT0gImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0
c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgi
LmpzIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlw
dChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRk
VGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0lu
aXRpYWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEw
ICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJ
bmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYm
IGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBp
c0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJVTkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBA
IC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29s
VGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQg
SW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5leHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNo
b3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAg
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNo
b3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJ
bnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQs
ICJTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwog
ICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRT
Y3JpcHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAog
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CmluZGV4
IDg4MzNhOGZkMmE2NWNjMmM4NDUyY2MzMDYwYmU2ODY0MmNiMDNhYjcuLjQ5ZjRhZjJjMTM4NGE0
NjY3YjdmYmU4YmM4ZTFmZThkN2VmZTUwOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dApA
QCAtMSw1ICsxLDE3IEBACiBDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQotVGVzdCB0
aGF0IGNlcnRhaW4gSW5qZWN0ZWRTY3JpcHRTb3VyY2Ugb3BlcmF0aW9ucyBhcmUgbm90IG9ic2Vy
dmFibGUgYnkgdXNlciBjb2RlLgorQ09OU09MRSBNRVNTQUdFOiBhLGIsYworQ09OU09MRSBNRVNT
QUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBTZXRdCitDT05T
T0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE1h
cF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtv
YmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUg
TUVTU0FHRTogY291bnQgb2YgMQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NP
TlNPTEUgTUVTU0FHRTogaGVsbG8KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitU
ZXN0IHRoYXQgSW5qZWN0ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5
IHVzZXIgY29kZS4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEluamVjdGVkU2NyaXB0Lk9i
c2VydmFibGUKQEAgLTgsMyArMjAsMzggQEAgUEFTUzogUGF1c2VkLgogUEFTUzogUmVzdW1lZC4K
IFBBU1M6IEFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxk
IGJlIDEuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxl
OlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVz
dW1lZC4KK1BBU1M6IFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNo
b3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2
YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4KK1BBU1M6
IFJlc3VtZWQuCitQQVNTOiBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3Vu
dCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9i
c2VydmFibGU6QXJyYXkucHJvdG90eXBlLnB1c2gKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3Vt
ZWQuCitQQVNTOiBBcnJheS5wcm90b3R5cGVbInB1c2giXSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQu
cHJvdG90eXBlLmFkZAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IFNldC5w
cm90b3R5cGVbImFkZCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlN0cmluZworUEFTUzogUGF1c2VkLgor
UEFTUzogUmVzdW1lZC4KK1BBU1M6IFN0cmluZyBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90
b3R5cGUuaW5kZXgKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBBcnJheS5w
cm90b3R5cGVbIjQyIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5kZXN0cnVj
dHVyZWRQcm9wZXJ0eQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IE9iamVj
dC5wcm90b3R5cGVbImZldGNoU3RhcnQiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5o
dG1sCmluZGV4IDRkOGQ2NmU1MmZiY2IxNzFhYjFjOTBhNzY1OGQ5ZDkzYzg0N2Q2OTUuLjNhNTFm
Yzc2MmIxYTIyMjEwN2E5NDIzYjQ4NTFmZGM4Zjk5NTQ3NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sCkBAIC0zLDYz
ICszLDIwNSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0vLyBO
T1RFOiBNb3JlIGNhc2VzIHNob3VsZCBiZSB0ZXN0ZWQgYW5kIGFkZHJlc3NlZCBieToKLS8vIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVk
U2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3Zl
cnJpZGVuIGJ1aWx0LWlucwotCi1mdW5jdGlvbiB0cmlnZ2VySXRlcmF0aW9uKCkgeworZnVuY3Rp
b24gcmVwbGFjZUFuZFRlc3RQcm90b3R5cGVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbikgeworICAgIHRyeSB7CiAgICAgbGV0IGNh
bGxDb3VudCA9IDA7CiAKLSAgICBjb25zdCBvcmlnaW5hbEl0ZXJhdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRvcik7Ci0g
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9y
LCB7CisgICAgbGV0IG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihwcm90b3R5cGUsIHByb3BlcnR5KTsKKyAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgewogICAgICAgICBnZXQoKSB7CiAgICAgICAg
ICAgICArK2NhbGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZXJhdG9yLnZh
bHVlOworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yPy52YWx1
ZTsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107Ci0KICAgICBkZWJ1
Z2dlcjsKIAogICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgogICAgIGNvbnNvbGUubG9nKHthOjEs
IGI6MiwgYzp7fX0pOwogCi0gICAgLy8gVXNlIEFycmF5IEl0ZXJhdG9yIGF0IGxlYXN0IG9uY2Uu
Ci0gICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisgICAgaW52b2tlT3ZlcnJpZGRlblByb3Bl
cnR5RnVuY3Rpb24oKTsKIAotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5
cGUsIFN5bWJvbC5pdGVyYXRvciwgb3JpZ2luYWxJdGVyYXRvcik7CisgICAgaWYgKG9yaWdpbmFs
UHJvcGVydHlEZXNjcmlwdG9yKQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90
eXBlLCBwcm9wZXJ0eSwgb3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IpOworICAgIGVsc2UKKyAg
ICAgICAgZGVsZXRlIHByb3RvdHlwZVtwcm9wZXJ0eV07CiAKICAgICByZXR1cm4gY2FsbENvdW50
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0T2JqZWN0KG9iamVjdFN0cmluZywgaW52b2tlT3Zl
cnJpZGRlbk9iamVjdEZ1bmN0aW9uKSB7CisgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgCisg
ICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0gZXZhbChvYmplY3RTdHJpbmcpOworICAgIGV2YWwoYAor
ICAgICAgICAke29iamVjdFN0cmluZ30gPSAoKSA9PiB7CisgICAgICAgICAgICArK2NhbGxDb3Vu
dDsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9iamVjdCguLi5hcmd1bWVudHMpOworICAg
ICAgICB9OworICAgIGApOworCisgICAgZGVidWdnZXI7CisKKyAgICAvLyBQcmV2aWV3IGFuIG9i
amVjdC4KKyAgICBjb25zb2xlLmxvZyh7YToxLCBiOjIsIGM6e319KTsKKworICAgIGludm9rZU92
ZXJyaWRkZW5PYmplY3RGdW5jdGlvbigpOworCisgICAgZXZhbChgJHtvYmplY3RTdHJpbmd9ID0g
b3JpZ2luYWxPYmplY3Q7YCk7CisgICAgY29uc29sZS5sb2coImNvdW50IG9mICIgKyBjYWxsQ291
bnQpOworICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZSIpOwogCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9u
IGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5
cGVTdHJpbmcsIHByb3BlcnR5U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlv
bn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNl
QW5kVGVzdFByb3RvdHlwZVByb3BlcnR5KCR7cHJvdG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0
cmluZ30sICR7aW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2As
IChlcnJvciwgcmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtwcm90b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJp
bmd9XSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
cGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmpl
Y3RUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJp
ZGRlbk9iamVjdEZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0T2JqZWN0KCIke29iamVjdFN0cmluZ30iLCAke2ludm9r
ZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1
bHQsIDEsIGAke29iamVjdFN0cmluZ30gY2FsbCBjb3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBhdXNlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3Rl
ZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAg
ICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNo
b3VsZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0
aW9uKClgLCAoZXJyb3IsIHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRv
cl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4iKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7
Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmds
ZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVu
dCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwot
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3Qp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xl
RmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVu
dCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkg
aXRlcmF0aW9uIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwK
KyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJv
cGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVu
UHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwg
ImIiLCAiYyJdOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAg
ICAgICAgIGNvbnNvbGUubG9nKGFycmF5KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFk
ZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIlNldCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3Qg
YmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBl
IiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0
IHNldCA9IG5ldyBTZXQoWyJhIiwgImIiLCAiYyJdKTsKKyAgICAgICAgICAgIGZvciAobGV0IHgg
b2Ygc2V0KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwK
KyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVy
YXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQg
U2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJp
bmc6ICJNYXAucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRl
cmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4g
eworICAgICAgICAgICAgbGV0IG1hcCA9IG5ldyBNYXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0s
IFsiYyIsICIzIl1dKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2YgbWFwKSB7IH0KKworICAg
ICAgICAgICAgY29uc29sZS5sb2cobWFwKTsKKyAgICAgICAgfSwKICAgICB9KTsKIAorICAgIGFk
ZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3Jp
cHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxl
LiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIkFycmF5LnByb3RvdHlwZSIsCisgICAgICAg
IHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJv
cGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAg
ICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFBy
b3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0
LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAg
ICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0
cmluZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlv
bjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBz
ZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3Qg
YmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmplY3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAg
ICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb246ICgpID0+IHsKKyAgICAgICAgICAgIGxl
dCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJv
dG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5P
YnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRleCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
T3ZlcnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkgcHJvdG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBz
aG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJy
YXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAg
ICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAg
bGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKCJoZWxsbyIpOworICAgICAg
ICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAgICAgICAgICAgYXJyYXlbNDJdOworICAgICAg
ICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVz
dHJ1Y3R1cmVkUHJvcGVydHkiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVj
dHVyaW5nIChmb3IgYG9wdGlvbnNgIHBhcmFtZXRlcnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91
bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0
LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAor
ICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAg
ICAgICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0OworICAgICAgICB9LAorICAgIH0pOworCisKKwog
ICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUu
PC9wPgorPHA+VGVzdCB0aGF0IEluamVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2Jz
ZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhw
ZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJlYTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYu
LmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJiNTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1l
eHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0
cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewog
ICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAg
ICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
QFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFs
IGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2
ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAi
X2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3MCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVs
bDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IK
ICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0
cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29k
ZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2Fs
bEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBc
bmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENh
bGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwK
QEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxpdFRleHQoMTAwKTsgfSBjYQogICAgICAgewogICAg
ICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAg
ICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAg
ICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2
YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRp
dmUgY29kZV0iCiAgICAgICB9LAogICAgICAgewogICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4
cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVhYzBmYmQ4MGU4NWFjYzYzYzRlN2MyODZiODdhMzg1
Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIzMDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50
eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAg
ICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAgICAgInVybCI6ICIiLAogICAgICAg
ICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgICAgICJsaW5lTnVt
YmVyIjogMTQyLAotICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAg
ICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1
cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAi
dXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAg
ICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAg
ICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIi
OiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxm
aWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgog
ICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAg
ICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjog
MTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVy
IjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIK
ICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2
NzJiMzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVk
ODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApAQCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgLy8gVG8gYXZvaWQgZmxha2luZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQg
d2UgYWx3YXlzIGV4cGVjdC4KICAgICBjb25zdCBldmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJS
ZW5kZXJpbmdGcmFtZSIsICJDb25zb2xlUHJvZmlsZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0
aW9uQ2FsbCJdKTsKKworICAgIC8vIFRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwg
ZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQgbGluZSBudW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQg
ZGVidWcgYnVpbGRzLiBXZSBvbmx5CisgICAgLy8gd2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVz
IGZvciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZyYW1lcyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIg
bGluZS9jb2x1bW4gbnVtYmVycyByZW1haW4gc3RhYmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVM
ZW5ndGggPSAwOworICAgIGxldCB1cmxMZW5ndGggPSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFj
ZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1lIikgewor
ICAgICAgICAgICAgZnVuY3Rpb25OYW1lTGVuZ3RoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoa2V5ID09
PSAiY2hpbGRyZW4iICYmIHRoaXMuc3RhcnRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LmZpbHRlcihlID0+IGV2ZW50QWxsb3dsaXN0LmhhcyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtl
eSA9PT0gInN0YXJ0VGltZSIgfHwga2V5ID09PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0
SWQiIHx8IGtleSA9PT0gImZyYW1lSWQiKQogICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+
IjsKKyAgICAgICAgaWYgKChrZXkgPT09ICJsaW5lTnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5O
dW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVuZ3RoICYmICF1cmxMZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAg
ICAgICAgICAgdXJsTGVuZ3RoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICBpZiAoa2V5ID09PSAi
dXJsIiB8fCBrZXkgPT09ICJzY3JpcHROYW1lIikKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5y
ZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wvaW5zcGVjdG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVy
biB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYzk2
MmQ2ODEwMWNmNDczMTVkNWUwMWRjM2YwZDNmZTM1OWQ2MjU0Ny4uNTZkMTg0MDhiZGRlOWE3YjA3
MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBl
Y3RlZC50eHQKQEAgLTYwLDggKzYwLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAg
ICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAg
ICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEs
Ci0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAi
PGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAg
ICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMs
OCArMTEzLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1l
IjogIiIsCiAgICAgICAidXJsIjogIiIsCiAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIs
Ci0gICAgICAibGluZU51bWJlciI6IDE0MSwKLSAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAg
ICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAiY29sdW1uTnVtYmVyIjogIjxm
aWx0ZXJlZD4iCiAgICAgfQogICBdLAogICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2
NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5h
bWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+
IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQxLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3Cisg
ICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAi
PGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459174</attachid>
            <date>2022-05-11 11:33:40 -0700</date>
            <delta_ts>2022-05-11 11:48:41 -0700</delta_ts>
            <desc>Patch v2.2 - With WIP build fix from bug 240297</desc>
            <filename>bug-152294-20220511113340.patch</filename>
            <type>text/plain</type>
            <size>157550</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTVkYTA3YjMxMjM1ZjBmMTFiOTliNThjYTY2ZTY0NDRhMzBjYjFkLi40ZGZmODVkNDNlZTAxZGEw
NTBhMDhiNDc5NWE5MzQ5YmRhYWNlZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CiAKICAgICAgICAgYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIGFyZSBmYWls
aW5nIGFmdGVyIDI1MDI0MkBtYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExZTAwNGJlYmJkYjdiNDQzMzZm
YjlhMTZlYzk0ZTMwZmM5NDFkYy4uMjhiNDg5OGQ5ODgyNTEwZGQ0OWI2MWQ2NzFlMTJiMmU5MDAy
MWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTA1LTA2ICBQYXRyaWNrIEFu
Z2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYXJzZSBJ
bmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50ZWVkIG5vbi11
c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBS
b3Vzc28uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAtIEJ1aWxkIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzIGFzIGEgYnVpbHRpbiwgbm90IGFzIGEgcGxhaW4gaGVhZGVyIGZpbGUgY29udGFpbmluZyBp
dHMgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1v
ZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9k
dWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5k
TGluZUFQSU1vZHVsZS5oOgorICAgICAgICAtIFByb3ZpZGUgYSBKU0Z1bmN0aW9uIGZvciBtb2R1
bGUgaW5qZWN0aW9uIGluc3RlYWQgb2YgcmF3IHNvdXJjZSBjb2RlLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzOgorICAgICAgICAtIFNpbWlsYXIg
dG8gSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzLCB1c2Ug
cHJpdmF0ZSBuYW1lcyBmb3IgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zCisgICAgICAgIHRocm91
Z2hvdXQgdG8gZ2V0IG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHRpbnMuCisgICAgICAgIC0gSW4g
YG5vcm1hbGl6ZUV2ZW50VHlwZXNgIHVzZSBhIFNldCBpbnN0ZWFkIG9mIGFuIGFycmF5LCBzaW5j
ZSB3ZSBhcmUgcHJvY2Vzc2luZyB1c2VyLXByb3ZpZGVkIHR5cGVzIHRoYXQgbWF5CisgICAgICAg
IGJlIHJlcGVhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBpdGVyYXRlIG92ZXIgYWxs
IHRoZSB0eXBlcyB0byBpbnNlcnQgdGhlbSBpbiB0aGUgc2V0LCBidXQgc2luY2UKKyAgICAgICAg
YEBhcnJheVB1c2hgIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoaW5nIG11bHRpcGxlIHZhbHVlcyBhdCB0
aGUgc2FtZSB0aW1lIHRoaXMgaXMgbm8gbW9yZSB3b3JrIHRoYW4gdXNpbmcgYW4gQXJyYXkuCisK
IDIwMjItMDUtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFsbG93IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyB0byBhdm9pZCBwaXhl
bCBjb25mb3JtZXJzIGlmIElPU3VyZmFjZXMgYXJlIG5vdCBhbGxvd2VkCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJhYzEwNTI2ZWFiODZkMjQx
YzUxYWQ4OS4uZTZlZDdlZDQwNjM3YmE1MmYxMjUyMDg3Y2JmOTZhMjg4ZjViNGNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2NCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQo
CkBAIC0xNDA1LDE3ICsxNDA2LDYgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVS
UwogICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSlNDQnVpbHRpbnMu
aAogKQogCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7SmF2YVNjcmlwdENvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAke0phdmFTY3JpcHRD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwotICAg
IE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS94eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkKLSAgICBDT01N
QU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2Ny
aXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+ICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0gICAgQ09NTUFORCAke1BZ
VEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9qc21pbi5weSA8
ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMg
Pj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNv
dXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgJHtKYXZhU2Ny
aXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oCi0gICAgVkVSQkFUSU0pCi0KLWxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMg
JHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5oKQotCiBpZiAoV1RGX0NQVV9YODZfNjQpCiAgICAgaWYgKE1TVkMgQU5EIE5PVCBFTkFCTEVf
Q19MT09QKQogICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGQ1
NDBiZDUxOTIxN2I1NTJiZjA2MDk4YzlkZGMyYTI3NGYzMzQwYi4uZjdiM2RiN2I2MWQzMDYwN2U4
YTZmYjUxNDNhNGMyNGVhZDIyODg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjEsNyArMjEsNiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvR2VuZXJh
dGVkV2FzbU9wcy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9HZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0Qnl0ZWNvZGVzLmFzbQogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luaXRXYXNtLmFz
bQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
amVjdGVkU2NyaXB0U291cmNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2N2YyYzY4NTRmOGExYmExM2Mw
OTVmN2UxNTRmNjhlOTdjYmYzOTEuLjFmYjYyM2NkNmY2ZThkODk4N2Y5NDgwNDU0NGYwZDQ0ZTVi
MzVmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC02
OCw3ICs2OCw2IEBAIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0gJChKYXZhU2NyaXB0Q29y
ZSkvU2NyaXB0cwogCiAuUEhPTlkgOiBhbGwKIGFsbCA6IFwKLSAgICBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAgICAgS2V5d29yZExvb2t1cC5oIFwKICAgICBS
ZWdFeHBKaXRUYWJsZXMuaCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1dlYkFz
c2VtYmx5LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgXAogIwogCiAjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9u
IHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCkBAIC0z
NjgsMTIgKzM2OCw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgOiBD
b21iaW5lZERvbWFpbnMuanNvbiAkKElOU1BFQ1RPUl9HRU5FUkFUCiAJJChQRVJMKSAkKEphdmFT
Y3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL3ByZXByb2Nlc3MucGwgLS1pbnB1
dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluIC0tZGVmaW5lcyAiJChG
RUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSIgLS1vdXRwdXQgaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcwogCSQoREVMRVRFKSBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzLmluCiAKLUluamVjdGVkU2NyaXB0U291cmNlLmggOiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4u
cHkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCi0JZWNobyAiLy8jIHNvdXJj
ZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+IC4vSW5qZWN0
ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2pzbWluLnB5IDwgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzID4+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQRVJMKSAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3VyY2Vf
anMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaAot
CSQoREVMRVRFKSBJbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQogQUlSX09QQ09ERV9GSUxF
UyA9IFwKICAgICBBaXJPcGNvZGUuaCBcCiAgICAgQWlyT3Bjb2RlVXRpbHMuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTky
NzFjZmZkMTcuLjI0ZDRiZTg2YjljMTVmZGM2ZDI3ZDczYmE5MGVmYTg5OTAzNGQyZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQ1LDcgKzE0NDUsNiBAQAogCQlBNTEzRTVC
RTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCOTE4NUJGQUNDMDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsg
fTsKIAkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aCAqLzsgfTsKLQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEz
RTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLzsgfTsKIAkJ
QTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzkxODVGOTYy
NDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjNEMjE1OUQ0MUUw
MEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzUxLDYgKzM3NTAsNyBAQAogCQkyQUQyRURG
QTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVudW1lcmF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyog
R0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDTG9n
Z2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFM0FGMDBEMjgxNzFBQzAw
MDM3MUEyNSAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVR5cGVEZWZpbml0aW9uSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtVHlwZURlZmluaXRp
b25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNzcwQzRGMjdCOTRD
RTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MDcsNyArNDcwNyw2IEBACiAJCUE1MTNFNUJD
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUJEMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFNj
cmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUxM0U1QzYxODVG
OTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxM0U1Qzkx
ODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2Ny
aXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4NCw3ICs3
MjgzLDYgQEAKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyogRXJyb3JQcm90b3R5cGUu
bHV0LmggKi8sCiAJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3Rv
dHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVj
b2Rlcy5hc20gKi8sCi0JCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmggKi8sCiAJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAv
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1ODdENzMxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtOTM2
Myw2ICs5MzYxLDcgQEAKIAkJCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURGRkYgLyogUmVnRXhwU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNTM0RDlCRjgyMzYzQzU1RDAwNTQ1MjRE
IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTcwMzU1ODdEMUM0MTg0MTkwMDRC
RDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8sCisJCQkJMkUzQUYwMEQyODE3MUFDMDAwMzcxQTI1
IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlCQzYwMUI2NUQ5QjEwMDlE
QjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM2MTFCNjVEOUIxMDA5
REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJQTFFMDQ1MUIxQzI1
QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKQEAgLTEwNDUyLDcgKzEwNDUx
LDYgQEAKIAkJCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyMTE4N0I3Qjg2MDA4
NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MTNF
NUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk1OUU5MzIxQkQxODI3OTAwMUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0
eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwNUJCNjkxRDEy
MDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4QTdC
RjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMjM4MCw3ICsxMjM3OCw2IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMx
MkMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQw
OSw3ICsxMjQwNiw2IEBACiAJCQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMzUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBF
IC8qIFVuaWZpZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzMEE2NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMTM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2
QTU0NSAvKiBVbmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyAr
MTI0MTYsNiBAQAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNl
MTQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBV
bmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYw
MEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEz
NUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM4RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3Vy
Y2UxNDkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8q
IFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQyNSw5
IEBACiAJCQkJNTM4RjE1RUEyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZE
IC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4
MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJ
CUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3Vy
Y2VzICovLAorCQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlcklu
dGVsLmMgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IDY1ZGMxNWNjYWRm
NWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcuLjM4NzRkZDQyZjI3NjBmMzRlODZkOGRjODE4
NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAtNTIsNiArNTIsNyBAQCBm
dW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21waWxlKHIiKGFzeW5jKT9ccypmdW5jdGlvbiIs
IHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShy
ImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0
aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiLipeQG92ZXJyaWRkZW5OYW1l
PShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1bmN0aW9uUGFyYW1ldGVy
RmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3luY1xzKyk/ZnVuY3Rpb25ccysoPzpcdyspXHMq
XCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwg
cmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIgPSByZS5jb21waWxlKHIiLFxz
Kig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIAogbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9c
biIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKQEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBC
dWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25ha2VkX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25O
YWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQogICAg
ICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoKICAgICAgICAgICAgIGlzX2NvbnN0cnVjdG9y
ID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlv
blBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0K
KyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0
ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlv
bl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6CiAgICAg
ICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAtMzAzLDIxICszMDQsNTUgQEAgY2xhc3MgQnVp
bHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCiAgICAgICAgIHN0
YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAgICAgICAgIGlmIHN0YXJ0
IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbmQgPSBtYXRj
aC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKLSAgICAgICAgICAg
ICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAg
IGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgaXNFc2Nh
cGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFy
YWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICAg
ICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0
aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAg
ICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kICsg
MQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAgICAgY3VycmVudENoYXJh
Y3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNFc2NhcGluZ0NoYXJhY3Rl
cjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50Q2hh
cmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudFN0cmluZ1N0
YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3Ry
aW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAg
IGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXI6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25l
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJy
ZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFydENoYXJhY3RlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IFRydWUK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgRklYTUU6
IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFyIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgdW5i
YWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAgICAgICAgICAgICAgICMg
Zm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRNTGApIGNhbiBjb25mdXNl
IHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAgICAgICAgICAjIGluc2lk
ZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBqdXN0IHJlc2V0IG91ciBz
dHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAgICAgICAgICAgICAjICh1
bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRoaXMgd2lsbCB3b3JrIHVu
bGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAgICAgICAgICAgICMgdW5i
YWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCB3ZSBjYXJl
IGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIKKyAgICAgICAgICAgICAg
ICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQgcXVvdGUuCisgICAgICAg
ICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50
Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggKz0gMQorICAgICAg
ICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6CisgICAgICAgICAgICAgICAg
ICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgIGZ1bmN0
aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAgZnVuY3Rpb25TdHJpbmdz
ID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25C
b3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCmluZGV4IDg4OGM4YmFlNDM1Zjg4NjNmNDgwZGQ4MWU0NTU2NmQ3OGI2
MWVmYTcuLjcwOTkyNmFlNzM4NjkwN2RiZDQ5YjFkMGY1ZDUzNjE1ZjM0ZTg1ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICB7CiAg
ICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJzU3RhcnQgKyAxOwogICAgICAgICB1bnNpZ25l
ZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGluc2lkZUN1cmx5QnJhY2tldHMgPSBmYWxzZTsK
ICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZhbHNlOwogICAgICAgICBib29sIGhhc1Jlc3RQ
YXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTEzLDcgKzExNCwxMyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0g
PT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnfScpCisg
ICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNlOworICAgICAgICAgICAg
ZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycgfHwgaW5zaWRlQ3VybHlCcmFja2V0cykgewor
ICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSB0cnVlOworICAgICAgICAgICAg
ICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAgICAgICAgICAgICAgKytjb21tYXM7CiAgICAg
ICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyc1tp
XSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0ODNlODcxZTc0M2E5YTEy
YjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFmYTJkNWIyZmIxYTE3NTdlMWUxMDVjZWMzMWI5
NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oY3Jl
YXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1bmN0aW9uKSBcCiAgICAg
bWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBcCisgICAgbWFjcm8oanNv
blN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1hY3JvKHN1YnN0cikgXAor
ICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAgIG1hY3JvKGdldE93blBy
b3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093bikgXAorICAgIG1hY3JvKGluZGV4T2Yp
IFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVycy5qcwppbmRleCAyNjNl
NDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3N2VlMmY0Li5iMTk4NmU4ODUzMGNlYzY2MmMx
OWZmZWFlNzVhMzRiNzVlODZmZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAgLTUxLDMgKzUxLDQzIEBAIGZ1bmN0aW9uIHBl
cmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQs
IGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0KIH0KKworQGdsb2JhbFByaXZhdGUKK2Z1bmN0
aW9uIHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvcikKK3sKKyAgICBsZXQgd3JhcHBlciA9IEBPYmpl
Y3QuQGNyZWF0ZShudWxsKTsKKyAgICB3cmFwcGVyLkBAaXRlcmF0b3IgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGl0ZXJhdG9yOyB9CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK0BnbG9iYWxQcml2
YXRlCitmdW5jdGlvbiBidWlsdGluU2V0SXRlcmFibGUoc2V0KQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKyAgICAKKyAgICBpZiAoIUBpc1NldChzZXQpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
ImJ1aWx0aW5TZXRJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tU2V0IG9iamVjdC4iKTsKKworICAg
IC8vIFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFyYW50ZWVzIHRoYXQgdGhl
IHN5bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQgZG9lcyBub3QgcHJvdGVj
dAorICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZpbmcgYmVlbiByZXBsYWNl
ZC4gRm9yIFNldHMsIGBAdmFsdWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5h
bGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRv
ckZ1bmN0aW9uID0gc2V0LkB2YWx1ZXM7CisgICAgCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0
b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChzZXQpKTsKK30KKworQGdsb2JhbFByaXZhdGUKK2Z1
bmN0aW9uIGJ1aWx0aW5NYXBJdGVyYWJsZShtYXApCit7CisgICAgInVzZSBzdHJpY3QiOworICAg
IAorICAgIGlmICghQGlzTWFwKG1hcCkpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiYnVpbHRp
bk1hcEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1NYXAgb2JqZWN0LiIpOworCisgICAgLy8gVXNp
bmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3ltYm9s
IGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5vdCBwcm90ZWN0CisgICAg
Ly8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVuIHJlcGxhY2VkLiBGb3Ig
TWFwcywgYEBlbnRyaWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlvbiBvcmlnaW5hbGx5Cisg
ICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxldCBpdGVyYXRvckZ1bmN0
aW9uID0gbWFwLkBlbnRyaWVzOworCisgICAgcmV0dXJuIEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0
b3JGdW5jdGlvbi5AY2FsbChtYXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFjNDdlZWViYTg2OTA4YjkwZjk5Y2Iw
Y2U3NDZmMDE5YmQzZWQ3MjMuLmI4NjUzZTg2NTY5OTMxZmNiYjZlMmY0YjQyNTQ4YzRiMGM2ZTEz
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaApAQCAtMTIwLDYgKzEyMCw5IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYo
Y3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlzUmVtb3RlRnVuY3Rpb24s
IG51bGxwdHIpIFwKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAorICAgIHYoanNvblBhcnNl
LCBudWxscHRyKSBcCisgICAgdihqc29uU3RyaW5naWZ5LCBudWxscHRyKSBcCisgICAgdihTdHJp
bmcsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5h
bWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggY2IwNjM0MDJiZjEyMmVhZTE2
OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJkMWJjZTdlYWIwZmFmMTU0ZTA4NzViN2MwYzc2ZGNk
YmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCisjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1ICsxMzUsMTggQEAgdm9pZCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFsdWUoKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5j
bGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAKLVN0cmluZyBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNpemVvZihJbmplY3RlZFNj
cmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBpZCkKK0V4
cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBp
bnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJjZSwgeyB9KTsK
ICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygp
OwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgIElu
c3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBtX2Vudmlyb25tZW50LmV2
YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV2YWx1YXRlSGFu
ZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNWYWx1ZSwgZXZhbHVhdGlv
bkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICBhdXRvKiBmdW5jdGlv
blZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3RlZChzY29wZS5leGNlcHRp
b24oKSkpOworICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlKTsK
ICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKQEAgLTE2Niw3
ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFTU0VSVCghYXJncy5oYXNP
dmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5n
ZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVjdGVkU2NyaXB0IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAgICAgaW50IGlkID0gaW5q
ZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gY3JlYXRlUmVzdWx0ID0g
Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgZ2xvYmFsT2JqZWN0
LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmplY3RlZFNjcmlwdChnbG9i
YWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewogICAgICAgICBhdXRvJiBl
cnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwpAQCAt
MTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgaWYgKHN0
YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21wdXRlTGluZUFuZENvbHVt
bihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHdoZW4gY3JlYXRp
bmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+dmFsdWUoKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNlKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlm
ICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJNaXNzaW5n
IGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwg
aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDFmNzQwYzQw
Njg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJlZjRiYjRiZjIyZTdhZTM4
MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUsOCArNzUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0KiwgaW50PiBtX3NjcmlwdFN0
YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsK
LSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+PiBj
cmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVjdCosIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKICAg
ICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWExMS4uMGI2
NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
QEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmpl
Y3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICBpZiAo
c3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNvbXB1dGVMaW5lQW5kQ29s
dW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxs
aW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDolZClcbiIsIG5hbWUoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1uKTsKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1
bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQu
dmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImlu
amVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsK
KyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKGluamVjdE1vZHVs
ZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOwogICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRT
Y3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmplY3RNb2R1bGVSZXN1bHQg
PSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwog
ICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIsNyArOTEsNiBAQCB2b2lk
IEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAg
ICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1u
KTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBjYWxsaW5nICdpbmplY3RN
b2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpLnV0
ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVz
XG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggMjc5YmFl
NGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5NjkyYjc0NTZhMDA1ZDc2
ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFz
cyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbmplY3Rl
ZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAg
IH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9k
dWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDQ4YmFl
ZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhjNDkyNWY2YzQuLjAwODAzNjY2MjhjNjZhNWJlMDQw
MjRhYTU2MGUwZDgxMmMyNzg4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNyArMjcsMzggQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEsIGtleTIsIHZhbHVlMiwgLi4uICovKQoreworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAgQHRocm93UmFuZ2VFcnJv
cigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGVgIHJlcXVpcmVzIHRoYXQgZWFjaCBrZXkg
YXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2YWx1ZSwgcmVzdWx0aW5nIGluIGFuIGV2ZW4gbnVt
YmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAgIGxldCBvYmplY3QgPSBAT2JqZWN0LkBjcmVhdGUo
bnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkgKz0gMikK
KyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tpXV0gPSBhcmd1bWVudHNbaSArIDFdOwogCi0oZnVu
Y3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3Rl
ZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotLy8gRklYTUU6IDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0
U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGRl
biBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIsIC4uLiAqLykKK3sKKyAgICBsZXQgYXJyYXkgPSBu
ZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpOworICAgIGFycmF5Ll9fcHJvdG9fXyA9IG51bGw7
CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpCisg
ICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFyZ3VtZW50c1tpXSk7CisgICAgCisgICAgcmV0dXJu
IGFycmF5OworfQogCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7CitAZ2xvYmFsUHJpdmF0
ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3JpcHRI
b3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpCit7CiAKIGZ1bmN0
aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAgcmV0dXJu
IEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJpbmdEZXNjcmlwdGlvbihvYmopCkBA
IC05Myw2ICsxMTQsMTUgQEAgZnVuY3Rpb24gaXNQcmltaXRpdmVWYWx1ZSh2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KKyAgICAKK2Z1bmN0aW9uIGNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzT2JqZWN0KSB7CisgICAgbGV0
IGl0ZXJhdG9yRnVuY3Rpb24gPSBhcmd1bWVudHNPYmplY3QuQEBpdGVyYXRvcjsKKyAgICByZXR1
cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxsKGFyZ3VtZW50c09iamVj
dCkpOworfQorCitmdW5jdGlvbiBtYXgoYSwgYikgeworICAgIHJldHVybiBhID4gYiA/IGEgOiBi
OworfQogCiAvLyAtLS0tLS0tCiAKQEAgLTEwMSwxMiArMTMxLDEyIEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOwotICAgICAgICB0aGlzLl9pZFRvV3Jh
cHBlZE9iamVjdCA9IHt9OwotICAgICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lID0ge307
Ci0gICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OwotICAgICAgICB0aGlzLl9tb2R1bGVz
ID0ge307CisgICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IEBj
cmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX29iamVjdEdyb3Vw
cyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMuX21vZHVs
ZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB0aGlzLl9uZXh0
U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOwor
ICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBl
KCk7CiAgICAgfQogCiAgICAgLy8gSW5qZWN0ZWRTY3JpcHQgQysrIEFQSQpAQCAtMTE1LDcgKzE0
NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fd3JhcEFuZFNhdmVDYWxsKG9iamVjdEdyb3VwLCByZXR1cm5C
eVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsICgpID0+IHsKICAgICAgICAgICAg
IGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdGhp
cy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1l
LCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlz
RXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLkBhcHBseShAdW5kZWZpbmVk
LCBhcmdzKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMzYsMTYgKzE2NiwxNiBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEocHJvbWlzZU9iamVjdCBpbnN0YW5jZW9mIFBy
b21pc2UpKSB7CisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5zdGFuY2VvZiBAUHJvbWlz
ZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBnaXZlbiBpZCBpcyBub3Qg
YSBQcm9taXNlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBs
ZXQgcmVzb2x2ZSA9ICh2YWx1ZSkgPT4gewotICAgICAgICAgICAgbGV0IHJldHVybk9iamVjdCA9
IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJl
c3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9iamVjdEdyb3VwTmFtZSwg
cmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKLSAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisg
ICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAgICAgICAgICAgICJyZXN1
bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lLCBy
ZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAgICAgKTsKIAogICAgICAg
ICAgICAgaWYgKHNhdmVSZXN1bHQpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFJlc3Vs
dEluZGV4ID0gMDsKQEAgLTE1OSw3ICsxODksNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgcmVqZWN0ID0gKHJlYXNvbikgPT4gewogICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUocmVhc29uLCBwcm9taXNl
T2JqZWN0R3JvdXBOYW1lKSk7CiAgICAgICAgIH07Ci0gICAgICAgIHByb21pc2VPYmplY3QudGhl
bihyZXNvbHZlLCByZWplY3QpOworICAgICAgICBwcm9taXNlT2JqZWN0LkB0aGVuKHJlc29sdmUs
IHJlamVjdCk7CiAgICAgfQogCiAgICAgZXZhbHVhdGVPbkNhbGxGcmFtZSh0b3BDYWxsRnJhbWUs
IGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC0xODAs
MTQgKzIxMCwxNCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuICJDb3Vs
ZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CiAKLSAgICAgICAgbGV0IHJlc29sdmVk
QXJncyA9IFtdOworICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSgpOwogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAgICAgbGV0IGNhbGxB
cmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwogICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9IHRoaXMuX3Jlc29s
dmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIyNywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBj
bGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVu
Y3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVzc2lvbiBkb2VzIG5v
dCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAgICAgIHJlc3VsdDogUmVt
b3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0
R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpCi0gICAgICAgICAgICB9
OworICAgICAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAg
ICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAicmVzdWx0
IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3QsIHJlc29sdmVkQXJncyks
IG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAg
ICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwogICAgICAgICB9CkBAIC0y
MzMsMTMgKzI2MywyMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRpZXMsIGZldGNoU3RhcnQs
IGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBjb2xsZWN0
aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5P
d25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1vZGUuQWxsUHJvcGVydGll
czsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2JqZWN0SWQsIGNvbGxlY3Rp
b25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQcmV2aWV3fSk7CisgICAg
ICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBjb2xsZWN0aW9uTW9kZSwg
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiZmV0Y2hTdGFydCIs
IGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZldGNoQ291bnQsCisgICAg
ICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3LAorICAgICAgICApKTsK
ICAgICB9CiAKICAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2JqZWN0SWQsIGZldGNoU3Rh
cnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIGxldCBjb2xs
ZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLk93blByb3BlcnRpZXMg
fCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzOwot
ICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1v
ZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZpZXcsIG5hdGl2ZUdldHRl
cnNBc1ZhbHVlczogdHJ1ZX0pOworICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhv
YmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAor
ICAgICAgICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAgICAgICAgICAgImZldGNo
Q291bnQiLCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRlUHJldmlldyIsIGdlbmVy
YXRlUHJldmlldywKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAor
ICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXRJbnRlcm5hbFByb3BlcnRpZXMob2JqZWN0SWQs
IGdlbmVyYXRlUHJldmlldykKQEAgLTI1Niw3ICsyOTUsNyBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQg
PSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHRoaXMu
X2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOwogICAgICAgICBpZiAoIWRlc2Ny
aXB0b3JzKQotICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgcmV0dXJuIEBjcmVh
dGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9
IGRlc2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICszMTksMTMgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBs
ZXQgZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3Quc3Vi
dHlwZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAgICAgICAgcmV0dXJuIGVu
dHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
ZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50cmllc1tp
XTsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS52
YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoImtl
eSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnkua2V5ID0gUmVtb3RlT2JqZWN0LmNy
ZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNhbGxBcmd1bWVudEpTT04pCkBAIC0z
MDYsMTAgKzM0NiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlw
dAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxldCByZXN1bHQgPSBAY3JlYXRlQXJy
YXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGxldCBkZXB0aCA9IDA7CiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0
LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgrKywgY2FsbEZyYW1lKSk7
CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVyOwogICAgICAgICB9IHdo
aWxlIChjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzI2LDcgKzM2Niw3
IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgd3JhcEpT
T05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBOYW1lLCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewog
ICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcE9iamVjdChKU09OLnBh
cnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRlUHJldmlldyk7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBqc29uUGFyc2UoanNvblN0cmluZyksIGdy
b3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpAQCAtMzQzLDEyICszODMsMTIgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgY29s
dW1uTmFtZXMgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIGNvbHVtbnMgPT09ICJzdHJpbmci
KQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKyAgICAgICAgICAgIGNvbHVtbnMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKGNvbHVtbnMpOwogCiAgICAgICAgIGlmIChJ
bmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFycmF5IikgewotICAgICAg
ICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVtbk5hbWVzID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2go
dG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2goY29sdW1u
TmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1
bW5OYW1lcyk7CkBAIC0zOTYsNyArNDM2LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUi
KSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsKICAgICAgICAgICAgIHRo
aXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVz
dWx0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRzID0gQGNyZWF0ZUFycmF5
V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAgbGV0IGdyb3VwID0gdGhp
cy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00MjksMTQgKzQ2OSwxNiBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICByZXR1cm4g
dGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RNb2R1bGUobmFtZSwgc291
cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVGdW5jdGlvbiwgaG9zdCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxzZTsKIAotICAgICAgICBs
ZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291
cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3BlY3RvcjogYSBmdW5jdGlv
biB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAgIG1vZHVsZUZ1bmN0aW9u
KEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlw
dElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIGhvc3QpOworICAgICAg
ICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVj
dCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAiUmVtb3RlT2JqZWN0IiwgUmVtb3RlT2JqZWN0LAorICAgICAgICAgICAg
IkNvbW1hbmRMaW5lQVBJIiwgQ29tbWFuZExpbmVBUEksCisgICAgICAgICksIGhvc3QpOwogCiAg
ICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSB0cnVlOwogICAgIH0KQEAgLTQ3MCwxMCArNTEy
LDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGlmIChvYmplY3RHcm91cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMuX29i
amVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAgaWYgKCFncm91cCkgewot
ICAgICAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICAgICAgZ3JvdXAgPSBAY3Jl
YXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0
R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVzaChncm91cCwgaWQpOwog
ICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0gPSBvYmplY3RHcm91cE5h
bWU7CiAgICAgICAgIH0KIApAQCAtNDg4LDggKzUzMCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZmFsbGJhY2tXcmFwcGVyKG9iamVjdCkKICAg
ICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSB0eXBl
b2Ygb2JqZWN0OworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoInR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYgKGlzUHJpbWl0aXZlVmFs
dWUob2JqZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9iamVjdDsKICAgICAgICAg
ZWxzZQpAQCAtNTE1LDcgKzU1Niw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVj
dGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4gQHVuZGVmaW5lZDsKICAg
ICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVjdEdyb3VwKQpAQCAtNTI0
LDEwICs1NjUsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQK
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5kZXNjcmlwdGlvbiA9IHRv
U3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNoIHsgfQotICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAgICAgICAgICAgcmVzdWx0
OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RX
aXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIndhc1Rocm93biIsIHRydWUsCisgICAgICAg
ICAgICAicmVzdWx0IiwgcmVtb3RlT2JqZWN0LAorICAgICAgICApOwogICAgIH0KIAogICAgIF9l
dmFsdWF0ZUFuZFdyYXAoZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZh
bHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC01NTIsMTAgKzU5MywxMCBAQCBs
ZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICB0cnkgewog
ICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CiAKLSAgICAgICAgICAgIGxl
dCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhyb3duOiBmYWxzZSwKLSAg
ICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RH
cm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlw
ZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisgICAgICAgICAgICAgICAg
InJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJu
QnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAKICAgICAgICAgICAg
IGlmIChzYXZlUmVzdWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdEluZGV4
OwpAQCAtNTcxLDcgKzYxMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7CiAgICAgICAgIGlmIChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IHRoaXMu
Y3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBu
dWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lv
biwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1bmN0aW9uLkBjYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0KIAogICAgIF9jYWxsRnJh
bWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjA3LDcgKzY0OCw3IEBAIGxl
dCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIC8vIEFsd2F5
cyBpbmNsdWRlIF9fcHJvdG9fXyBhdCB0aGUgZW5kLCBidXQgb25seSBmb3IgdGhlIGZpcnN0IGZl
dGNoLgogICAgICAgICBsZXQgaW5jbHVkZVByb3RvID0gIXN0YXJ0OwogCi0gICAgICAgIGxldCBk
ZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+IHsKICAgICAgICAgICAg
IGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0OwpAQCAtNjIyLDEzICs2
NjMsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0LmNyZWF0ZShkZXNjcmlw
dG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAg
ICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2NyaXB0b3Iuc3ltYm9sLCBv
YmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMucHVzaChkZXNjcmlwdG9y
KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogCiAg
ICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRlc2NyaXB0b3JzLmxlbmd0
aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3RvX18iKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CiAK
ICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMubGVuZ3RoID49IGNvdW50
KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcCA6IEluamVjdGVkU2Ny
aXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAgIH0sIHtuYXRpdmVHZXR0
ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCBuYXRp
dmVHZXR0ZXJzQXNWYWx1ZXMsCisgICAgICAgICAgICAiaW5jbHVkZVByb3RvIiwgaW5jbHVkZVBy
b3RvLAorICAgICAgICApKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KIApA
QCAtNjM4LDEzICs2ODIsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsKKyAgICAgICAgbGV0IGRl
c2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7IGkrKykgewogICAgICAg
ICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAg
bGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFsdWU6IHByb3BlcnR5LnZh
bHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBwcm9wZXJ0eS5uYW1lLAorICAgICAg
ICAgICAgICAgICJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlLAorICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRv
ci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRlc2NyaXB0b3Ip
OworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0KQEAgLTY1NCwxNSArNzAx
LDE4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAg
IGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09PSAicHJveHkiKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vzc2VkID0gbmV3IFNldDsK
KyAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAogICAgICAgICAvLyBIYW5k
bGVkIGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5hbWVQcm9jZXNzZWQuYWRk
KCJfX3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKCJfX3Byb3RvX18iKTsK
IAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlwdG9yKG5hbWUsIHN5bWJv
bCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRpdmVCaW5kaW5nR2V0dGVy
KQogICAgICAgICB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGxldCBmYWtl
RGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsKKyAgICAgICAgICAgICAg
ICBsZXQgZmFrZURlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAidmFs
dWUiLCBvYmplY3RbbmFtZV0sCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0
YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLndyaXRhYmxlID0g
dHJ1ZTsKQEAgLTY3OCwxMSArNzI4LDE1IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIElu
amVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKICAgICAgICAgICAgICAg
ICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAgICAgICAgICAgICAgIC8v
IFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBleGNlcHRpb25zIGNyZWF0
ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBhIHdyb25nIHRoaXMgb2Jq
ZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52YWx1ZSBpbnN0YW5jZW9m
IFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CisgICAgICAgICAg
ICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2YgQFByb21pc2UgJiYgSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJv
cihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3YXNUaHJvd246IHRydWV9
OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0
aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAidmFsdWUiLCBlLAorICAgICAgICAgICAgICAgICAgICAid2FzVGhyb3du
IiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChpc093blBy
b3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0b3IuaXNPd24gPSB0cnVl
OwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUgKzc2NCwxNSBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGZ1bmN0aW9u
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJvcGVydHkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9wZXJ0eU5hbWUpKQorICAg
ICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5hbWUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVl
OwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0eU5hbWUpOworICAgICAg
ICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgICAgIGxl
dCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGxldCBzeW1ib2wg
PSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDogbnVsbDsKIAotICAgICAg
ICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8s
IHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYg
KCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJhZCBkZXNjcmlwdG9y
LiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHZlcnkg
cmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzgxLDcgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmIChTdHJpbmco
ZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59IikgfHwgKCFkZXNjcmlw
dG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSAmJiAhZGVzY3JpcHRv
ci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKEBTdHJpbmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0aCgiW25hdGl2ZSBjb2Rl
XVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3Is
ICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFzT3duKGRlc2NyaXB0b3Is
ICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxvcGVycyBtYXkgY3JlYXRl
IHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxpZW50OgogICAgICAgICAg
ICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwgInAiLCB7
Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHgsICJwIikK
ICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0gY3JlYXRlRmFrZVZhbHVl
RGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3duUHJvcGVydHksIHRydWUp
OwpAQCAtNzQ1LDEwICs3OTksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxzZTsKICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2JqZWN0
KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAmJiBvYmplY3QubGVuZ3Ro
ID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUob2Jq
ZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0aCkgJiYgb2JqZWN0Lmxl
bmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgZm9yIChsZXQgbyA9IG9i
amVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pKSB7CisgICAg
ICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9IEBPYmplY3QuQGdldFBy
b3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9wZXJ0eSA9IG8gPT09IG9i
amVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNlOwogCkBAIC03NjQsNyAr
ODE4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lcyA9
IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlOYW1lc1tpXSwg
aXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0
ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CkBAIC03NzYsMTQg
KzgzMCwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgewotICAgICAgICAgICAg
ICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG8p
OwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJv
cGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5KTsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5U3ltYm9s
cyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydHlTeW1ib2xzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2Nlc3NQcm9wZXJ0
eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOworICAgICAgICAgICAgICAg
IHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0
aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHNob3VsZEJy
ZWFrKQpAQCAtNzk2LDIzICs4NDgsMjggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5q
ZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1ZGVQcm90bykgewogICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXykKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3RvX18iLCB2YWx1ZTogb2JqZWN0Ll9fcHJvdG9f
Xywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgaXNPd246IHRydWV9KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsICJfX3Byb3RvX18iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0Ll9fcHJvdG9fXywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29u
ZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpc093biIsIHRydWUs
CisgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSBjYXRjaCB7IH0KICAgICAg
ICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0
Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBl
bnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIFNldC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Ygb2JqZWN0KSB7
CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGluU2V0SXRlcmFibGUob2JqZWN0KSkg
ewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgZmV0
Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAgICAgICBAYXJyYXlQdXNo
KGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ2YWx1ZSIsIHZhbHVlKSk7
CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRj
aENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIzLDE2ICs4ODAsMTggQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgIF9nZXRNYXBFbnRy
aWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBl
bnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFBy
b3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhl
IHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAg
Zm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAgICBmb3IgKGxldCBba2V5
LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJsZShvYmplY3QpKSB7CiAgICAgICAgICAgICBp
ZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRjaFN0YXJ0LS07CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVudHJp
ZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5UHVzaChlbnRyaWVzLCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAia2V5Iiwga2V5
LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZhbHVlLAorICAgICAgICAgICAgKSk7CiAKICAg
ICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3RoID09PSBmZXRjaENvdW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MzUsMTAgQEAgbGV0IEluamVj
dGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAgICAgICAgIHRoaXMuX2xh
c3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8
IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0gQHVuZGVmaW5lZCB8fCBy
ZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGV4aXN0
aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpOworICAgICAgICBs
ZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90b3R5cGUuQGluZGV4T2YuQGNhbGwodGhpcy5f
c2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEp
IHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBleGlzdGluZ0luZGV4Owog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5NTMsMTYgQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1JbmplY3RlZFNjcmlwdC5D
b2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8IDAsICAgICAgICAgIC8v
IG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRpZXM6IDEgPDwgMSwgLy8g
bmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCi0gICAgQWxs
UHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVydGllcyBpbiB0aGUgcHJv
dG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIk93blByb3BlcnRpZXMiLCAxIDw8IDAsICAg
ICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0ZXJQcm9wZXJ0aWVzIiwg
MSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFp
bi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAgLy8gYWxsIHByb3BlcnRp
ZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29udGludWUiKSwKLSAgICBT
dG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rp
b24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAiQ29udGludWUiLCBAY3Jl
YXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICAiU3RvcCIsIEBjcmVhdGVQcml2YXRl
U3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRT
Y3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIxLDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJl
bW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRl
UHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1ZShvYmplY3QpKTsKICAg
ICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJl
dmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICAgICAgICAgIHRo
aXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIEB1bmRlZmluZWQsIGNv
bHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcgKzEwMzYsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0LmRlc2NyaWJlKGUpOwogICAg
ICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICAgICBhbGVydChleC5tZXNzYWdl
KTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcihl
eC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICI8ZmFpbGVkIHRvIGNv
bnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3JpcHRpb24pOwpAQCAtOTg2LDcgKzEwNDUsNyBA
QCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICBzdGF0aWMgY3Jl
YXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIGNvbHVtbk5h
bWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5ldyBSZW1vdGVPYmplY3Qo
dmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwor
ICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVjdCh2YWx1ZSwgQHVuZGVm
aW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpOwogICAgICAgICBpZiAo
cmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFz
ZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0
LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3RvdHlwZS5vYmplY3RJZCkK
QEAgLTEwMTEsNyArMTA3MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9uLgogICAgICAgICB0cnkg
ewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICJmdW5jdGlvbiIgJiYg
aXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUuc3Bs
aWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsgfQogCkBAIC0xMDUwLDgg
KzExMDksOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
IGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsK
IAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBTeW1ib2wudG9TdHJpbmdU
YWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFn
XTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYgQEB0b1N0cmluZ1RhZyBp
biB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5AQHRvU3RyaW5nVGFnOwogCiAgICAg
ICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVjayBmb3IgYXJyYXkgcHJp
b3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImZ1bmN0aW9uIikKQEAg
LTEwNjksNiArMTEyOCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
IAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJDb3Jl
IGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1l
bnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAgICAgICAgbGV0IG5vZGVO
YW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2RlLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjAsMTcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRpYWxQcmV2aWV3KCkKICAgICB7Ci0gICAgICAg
IGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLAotICAgICAgICAg
ICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJpbmcodGhpcy52YWx1ZSks
Ci0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHBy
ZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJ0eXBl
IiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwgdGhpcy5kZXNjcmlwdGlv
biB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJsb3NzbGVzcyIsIHRydWUs
CisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkgewogICAgICAgICAgICAg
cHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAgICAgaWYgKHRoaXMuc3Vi
dHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmlldy5vdmVyZmxvdyA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IFtdOworICAgICAgICAg
ICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMTI2LDcgKzExODYsNyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgaWYgKHRoaXMuc3Vi
dHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUg
PT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNpemUpIHsKLSAgICAg
ICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBwcmV2aWV3
LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAg
ICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByZXZpZXcub3Zl
cmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTE0MSwyMyArMTIwMSwyMyBAQCBsZXQg
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGxldCBpc1RhYmxlUm93
c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09IG51bGwgfHwgc2Vjb25kTGV2ZWxLZXlzOwog
ICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3VudCA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RM
ZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAgICBsZXQgcHJvcGVydGllc1RocmVzaG9sZCA9
IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBN
YXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKLSAgICAgICAgICAgIGluZGV4ZXM6IGlz
VGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3Vu
dCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJlc2hvbGQgPSBAY3JlYXRl
T2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiwgaXNUYWJs
ZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKKyAgICAg
ICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCgxMCwgZmly
c3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRyaWVzLgogICAgICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAgICAgICAgICAgdGhpcy5f
YXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0gICAgICAgICAgICBwcmV2
aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBj
cmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICAgICAgLy8gSW50ZXJuYWwg
UHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnMg
PSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3JzKSB7CiAgICAg
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRv
cnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RMZXZlbEtleXMsIHNlY29u
ZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBpbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2
ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJp
bnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gSW5q
ZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE2OSw3ICsxMjI5
LDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAg
IC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlwdC5fZm9yRWFjaFByb3Bl
cnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2RlLkFsbFBy
b3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3Bl
cnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpOwotICAgICAg
ICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5jbHVkZVByb3RvOiB0cnVl
fSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAorICAgICAgICAgICAgICAg
ICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAgICAgICAgKSk7CiAgICAgICAgIH0gY2F0Y2gg
ewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC0x
MTc3LDcgKzEyNDAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0KIAotICAgIF9hcHBlbmRQcm9wZXJ0eVByZXZp
ZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzVGhyZXNob2xkLCBmaXJz
dExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9ID0ge30pCisgICAgX2FwcGVu
ZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0b3IsIHByb3BlcnRpZXNU
aHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIHtpbnRlcm5hbH0gPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpKQogICAgIHsKICAgICAgICAgLy8gRXJyb3Ig
aW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2FzVGhyb3duKSB7CkBAIC0x
MTkwLDkgKzEyNTMsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAg
ICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAgICAgICAgLy8gTm9uIGJh
c2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5nLCBub24tZW51bWVyYWJs
ZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUgJiYg
ZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICYmIGRlc2NyaXB0
b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAgICAgICAgICYmIGRlc2Ny
aXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAgICAgICAgICAgJiYgZGVz
Y3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAgICAgICAgICAgICAgICYm
IGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QKKyAgICAgICAgICAgICAg
ICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJyYXkKKyAgICAgICAgICAg
ICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAUmVnRXhwKQogICAgICAg
ICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVlOwogICAgICAgICB9CkBA
IC0xMjA5LDcgKzEyNzIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0
CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBzaG93IHByb3BlcnRpZXMg
aW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGVzZSBmaWx0ZXJz
IGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChmaXJzdExldmVsS2V5cyAm
JiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAgIGlmIChmaXJzdExldmVs
S2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5jbHVkZXMuQGNhbGwoZmlyc3RMZXZlbEtleXMs
IG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hB
Y3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kUHJldmlldyhwcm9wZXJ0
eSkgewpAQCAtMTIyNywyMCArMTI5MCwyOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVt
b3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCiAgICAgICAgICAgICAgICAgcHJv
cGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMu
cHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHByZXZpZXcucHJvcGVydGll
cywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LlByb3BlcnR5
RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHZXR0ZXIvc2V0
dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgICAg
ICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kUHJl
dmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVu
ZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAg
Im5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgImFjY2Vzc29yIiwKKyAgICAg
ICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2YWx1ZS4KICAgICAgICAg
bGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlID09PSBudWxs
KQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGU6ICJvYmplY3Qi
LCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsICJvYmplY3QiLAorICAg
ICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwiLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIs
ICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAgICAgICAgIC8vIElnbm9yZSBub24tZW51bWVy
YWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlOwpAQCAtMTI1
OCw3ICsxMzI5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcodmFsdWUsIG1heExl
bmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUsIHR5
cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKX0pOworICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAg
ICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgdHlwZSwKKyAg
ICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKSwKKyAgICAg
ICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU3ltYm9sLgpAQCAtMTI2OCwxMSAr
MTM0MywxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0cmluZyhzeW1ib2xTdHJp
bmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXco
e25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAgICAgICAgIHJldHVybiBh
cHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAg
ICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIsIHR5cGUsCisgICAgICAg
ICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5nLAorICAgICAgICAgICAgKSk7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9wZXJ0eSA9IHtuYW1lLCB0
eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5
cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAgICAidHlwZSIsIHR5cGUs
CisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3RlT2JqZWN0LnN1YnR5cGUo
dmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAgIHByb3BlcnR5LnN1YnR5
cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlbnRy
aWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9wKCk7CisgICAgICAgICAg
ICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwoZW50cmllcyk7CiAgICAgICAgICAgICBwcmV2
aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA1LDcgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9IGVudHJpZXMubWFwKGZ1
bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9IEBBcnJheS5wcm90b3R5
cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewogICAgICAgICAgICAgZW50
cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKGVudHJ5
LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKICAgICAgICAgICAgIHVwZGF0ZU1haW5Q
cmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAgICAgIGlmICgia2V5IiBpbiBlbnRyeSkgewpA
QCAtMTMzNiw4ICsxNDE4LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVj
dAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVjdCkKICAgICB7Ci0gICAg
ICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9iamVjdCk7CisgICAgICAg
IGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2JqZWN0KTsKIAogICAgICAg
ICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFsKHZhbHVlLCBzZXQsIDEp
OwogICAgIH0KQEAgLTEzNTcsMTEgKzE0MzksMTEgQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNsYXNz
IFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgLy8gQ3lj
bGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFzKG9iamVjdCkpCisgICAg
ICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGtub3duT2JqZWN0cy5hZGQob2JqZWN0
KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQob2JqZWN0KTsKIAogICAgICAgICAvLyBBcnJh
eXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBvciBsZXNzIHNpbXBsZSBvYmplY3RzLgogICAg
ICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9iamVjdCk7CkBAIC0xMzgx
LDEyICsxNDYzLDEyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBPYmplY3RzIGFyZSBzaW1wbGUg
aWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVydGllcy4KLSAgICAgICAg
bGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qp
OworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93blByb3BlcnR5TmFtZXMubGVuZ3RoID4gMykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBv
d25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcHJvcGVydHlO
YW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvciAm
JiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2JqZWN0SW50ZXJuYWwob2Jq
ZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpAQCAtMTQwNCw2NiArMTQ4
Niw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgIGlm
IChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBsZWZ0SGFsZiA9IG1heExlbmd0aCA+PiAxOwog
ICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxlZnRIYWxmIC0gMTsKLSAg
ICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsg
c3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCByaWdodEhhbGYpOworICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIGxlZnRIYWxmKSArICJcdTIwMjYiICsg
c3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0tLS0tCiAKLUluamVjdGVkU2NyaXB0LkNhbGxG
cmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQotewotICAgIHRoaXMuY2Fs
bEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3RlZFNjcmlwdElkIjoke2lu
amVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVu
Y3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6IFN0cmluZyhjYWxsRnJh
bWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwgY29sdW1uTnVtYmVyOiBj
YWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0aGlzLl93cmFwU2NvcGVD
aGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2Fs
bEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKLSAgICB0aGlzLmlzVGFpbERlbGV0ZWQg
PSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07CitJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsKKyAgICBjb25zdHJ1Y3RvcihvcmRpbmFsLCBj
YWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxGcmFtZUlkID0gYHsib3JkaW5hbCI6
JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNjcmlwdElkfX1gOworICAg
ICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWU7CisKKyAgICAg
ICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAg
ICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLAorICAgICAgICAg
ICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAgICAgICAgICJjb2x1bW5OdW1i
ZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAgICApOworCisgICAgICAgIHRoaXMuc2NvcGVD
aGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7CisgICAgICAgIHRoaXMudGhp
cyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2Ui
KTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1lLmlzVGFpbERlbGV0ZWQ7
CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAg
ICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGxldCBzY29wZUNo
YWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxldCBzY29wZURlc2NyaXB0aW9u
cyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0gICAgICAgIGxldCBzY29wZUNo
YWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94eSA9IEBjcmVhdGVBcnJh
eVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29wZUNo
YWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2NvcGVDaGFpblByb3h5W2ldID0gSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihzY29wZUNoYWluW2ldLCBz
Y29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwogICAgICAgICByZXR1cm4gc2NvcGVD
aGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9z
Y29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xPQkFMX1NDT1BFCi0gICAg
MTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUiLCAvLyBDTE9TVVJFX1ND
T1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0OiAiZnVuY3Rpb25OYW1l
IiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQotICAgIDY6ICJuZXN0ZWRM
ZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07CisgICAgc3RhdGljIF9jcmVhdGVT
Y29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9jYXRpb259LCBncm91cElkKQorICAgIHsK
KyAgICAgICAgbGV0IHNjb3BlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAg
ICAgICAgICAib2JqZWN0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmplY3QsIGdyb3VwSWQpLAor
ICAgICAgICAgICAgInR5cGUiLCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fc2NvcGVU
eXBlTmFtZXNbdHlwZV0sCisgICAgICAgICk7CiAKLUluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVBy
b3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtuYW1lLCB0eXBlLCBsb2Nh
dGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAgICAgICBvYmplY3Q6IFJl
bW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAgICAgdHlwZTogSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5cGVdLAotICAgIH07Cisg
ICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CiAKLSAgICBp
ZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisgICAgICAgIGlmIChsb2NhdGlv
bikKKyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CiAKLSAgICBpZiAobG9j
YXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIGlmIChp
c0VtcHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBzY29wZS5lbXB0eSA9IHRydWU7CiAK
LSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBzY29wZS5lbXB0eSA9IHRy
dWU7CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9OwogCi0gICAgcmV0dXJuIHNjb3Bl
OwotfQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgMCwgImdsb2JhbCIsIC8vIEdMT0JBTF9T
Q09QRQorICAgIDEsICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQorICAgIDIsICJjbG9zdXJlIiwgLy8g
Q0xPU1VSRV9TQ09QRQorICAgIDMsICJjYXRjaCIsIC8vIENBVENIX1NDT1BFCisgICAgNCwgImZ1
bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKKyAgICA1LCAiZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1FTlQKKyAgICA2LCAibmVz
dGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCispOwogCiAvLyAtLS0tLS0tCiAK
QEAgLTE0NzcsOSArMTU2NSw5IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNhbGxGcmFtZSkK
ICAgICAgICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKSB7IHJldHVybiBvcmlnaW5hbFZhbHVlOyB9
OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGtleSwg
dmFsdWUpOworICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAiJCIgKyBrZXks
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJnZXQiLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoc2F2ZWRSZXN1bHRBbGlhcyAmJiBzYXZlZFJlc3VsdEFsaWFzICE9PSAiJCIpCi0gICAgICAg
ICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgdmFsdWUp
OworICAgICAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhpcywgc2F2ZWRSZXN1bHRB
bGlhcyArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoImdldCIsIHZhbHVlKSk7
CiAgICAgfTsKIAogICAgIGlmICgiX2xhc3RSZXN1bHQiIGluIGluamVjdGVkU2NyaXB0KQpAQCAt
MTUwMiw0OCArMTU5MCw0OCBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjYWxsRnJhbWUpCiAg
ICAgICAgIHRoaXNbbmFtZV0gPSBDb21tYW5kTGluZUFQSS5tZXRob2RzW25hbWVdOwogfQogCi1D
b21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CitDb21tYW5kTGluZUFQSS5nZXR0ZXJzID0gQGNy
ZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9
IHt9OworQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90
eXBlKCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9IGZ1bmN0aW9uKG9iamVj
dCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhv
ZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBPYmplY3QudmFsdWVzKG9i
amVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0gPSBmdW5jdGlvbihvYmpl
Y3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBAT2JqZWN0LkB2YWx1
ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycygu
Li5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicXVlcnlJbnN0YW5jZXMi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2Vz
KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRz
KSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIGluamVjdGVkU2Ny
aXB0Lmluc3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
YXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLmFzc2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY2xl
YXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
Y2xlYXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3VudFJlc2V0Il0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmNvdW50
UmVzZXQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRlYnVnIl0g
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmRlYnVn
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXIiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGlyeG1sKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvciguLi5hcmd1bWVudHMpOyB9
OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJndW1lbnRzKTsgfTsKLUNv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29sbGFwc2VkKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVuZCJdID0gZnVuY3Rpb24o
KSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cEVuZCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZvKC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21t
YW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1bWVudHMpOyB9OwotQ29t
bWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90KC4uLmFyZ3VtZW50cyk7
IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5hcmd1bWVudHMpOyB9Owot
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtlSGVhcFNuYXBzaG90KC4u
LmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWUoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZUVuZCguLi5hcmd1bWVu
dHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lTG9nKC4uLmFyZ3VtZW50
cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGltZVN0YW1wKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFjZSguLi5hcmd1bWVudHMp
OyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVuY3Rpb24oKSB7IHJldHVy
biBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFyZ3VtZW50cyk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91
dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5t
ZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5jbGVhciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siY291bnQiXSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnQo
Li4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMp
KTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQiXSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291bnRSZXNldCguLi5jcmVh
dGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9Owor
Q29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5kaXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50
cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpcnhtbCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXJ4bWwoLi4u
Y3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsg
fTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0
aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQ
SS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS5ncm91cCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9t
QXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXBD
b2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3Vw
RW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
Lmdyb3VwRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMo
YXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJpbmZvIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmluZm8oLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
InByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNv
bnNvbGUucHJvZmlsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1l
bnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicHJvZmlsZUVuZCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5wcm9m
aWxlRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkKC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4uLmNyZWF0ZUl0ZXJhYmxl
V2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGlu
ZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLnRhYmxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWtlSGVhcFNu
YXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25z
b2xlLnRha2VIZWFwU25hcHNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJv
bUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWUi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50
cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lRW5kKC4uLmNyZWF0ZUl0
ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21t
YW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0
UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBl
RnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRy
YWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRyYWNlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJuIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndhcm4oLi4uY3JlYXRlSXRl
cmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKIAogZm9y
IChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAi
ICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKIAogcmV0dXJuIGluamVj
dGVkU2NyaXB0OwotfSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNmZjZmOTc2YzdlMzlkOTk5NTguLmJjMjM3YTFmNGY0MGI2
NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtMjIyMSw3ICsyMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3IudHlwZSgpICE9
IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIsIGVycm9yLm1lc3NhZ2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBlY3RlZCBlcnJvciBjb21w
aWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpLCAiIG9uIGxpbmUgIiwgZXJyb3IubGlu
ZSgpLCAiLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5NWM0NTRkOTllZTE5ZjEzZTc5Yy4uZmZjOWM5YzIzMzFk
YWUzZDZhNjViZGVmYWM1MGJiMWEwM2YzNjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJQcm94eU9iamVjdC5oIgogCkBAIC01Nyw2ICs1OCw4IEBAIHZvaWQgQXJyYXlDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXksIGFycmF5Q29uc3Ry
dWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOworCisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZyb21Qcml2YXRl
TmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCA1YTNhYWE5MWU2MjcyOGMyY2E5ZmFlZjU2MWQyZmFiZWRlNzA1OTVlLi41MTVjODVm
ZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdmOGY2YWJmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDExIEBA
IHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB9CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhP
ZlByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW5kZXhPZlB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1lKCksIGdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05h
bWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvcFByaXZh
dGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cG9wUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCBnbG9iYWxPYmpl
Y3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAKICAgICBKU09iamVjdCogdW5zY29wYWJsZXMg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGY3ZDI3Yjk5NThiZGU2OGNjNTZjYjE5N2IwZDIxMjVkNWIw
MmUxNDcuLjAyYjliZWQ2ODI4MDAzMjg0OTQ4MGQzZDlhNWMwODAwM2IzYThkM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI3
NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZM
QUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0
aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3Bl
cnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNyZWF0ZVByaXZhdGVTeW1i
b2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnkpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxlU3VwZXJTYW1wbGVyKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVTdXBlclNhbXBsZXIpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpvYik7CkBAIC0zNjEsNiArMzYzLDIzIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNy
ZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOwog
fQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byBqc29uID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb24pKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnksIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHJlc3VsdCkpOwor
fQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhc3NlcnRD
YWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewpAQCAtMTA3NCw5ICsxMDkzLDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAg
ICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7
CiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX3N0cmluZ0NvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHBy
b21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlz
LCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Ci0gICAgCisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U3RyaW5nKV0uc2V0
KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2YWxFcnJvclN0cnVjdHVy
ZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVy
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlhbGl6ZUVycm9yQ29uc3Ry
dWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1Myw2ICsxNTc0LDE0IEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAgIH0pOwogCisgICAgLy8g
SlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBhcnNlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblN0cmluZ2lm
eSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNvblN0cmluZ2lmeSkpOwor
ICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwogICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVJlbW90ZUZ1
bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVSZW1vdGVG
dW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nQ29uc3RydWN0b3IpOwogCiAgICAgdGhp
c09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEwYWFlZDM0Nzg3YWY2NmE0
ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIuLmU5NDg2MDNlMmNlY2EyOTU1YTJlZDI3MTU0YmIzYjAx
NDk3MWFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMTI0LDYgKzEyNCw3IEBAIGNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOwog
Y2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZU9yaWdp
bjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBBY3RpdmF0aW9u
U3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFy
cmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0cnVjdG9yPiBtX3N0cmlu
Z0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBJbnRsQ29s
bGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTg2ZGU5Nzc2NGVjNGY1ZDE3N2Zi
MWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0ZDU5NGY0ZjcyZmRlN2ZkOTM2ZWE1MTQzMGNi
YTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU0Z1bmN0aW9uKiBl
bnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIG1h
cFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVu
dHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1ByaXZhdGVOYW1lKCks
IGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNmOWUxNzhmYjFjNzc3MzhhYTY0NjU2NjE0ZWFh
YmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2EzOTg3MDQxNWVlZjM3Y2JlMWNlOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiAKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBv
YmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAorICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5RGVz
Y3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1ByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmluZVByb3Bl
cnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDMpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7
Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVl
c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisKKyAgICBpZiAoT3B0aW9u
czo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIp
OworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25Qcml2YXRlTmFtZSgpLCBvYmplY3RDb25z
dHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRl
eCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZkNWQ0YTk1ZGQ0ODcxLi5mN2Y5YzE0MThiZjdj
Y2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgdm9pZCBTZXRQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJs
aWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRyaW5z
aWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1
ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCmluZGV4IDIxMzVhMGZlNWI2NDVmNzRmNThkODhmYjQ1MjA4ODFiNDE1MzZjNTQuLmUzYzA3
MDk1YjUwZGNhNmVlY2FmNWI0ZGNjMmE5ZGJhNzA5YTA4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTY0LDYgKzE2NCw5
IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRv
cl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJzdHJQcml2YXRlTmFtZSgp
LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbmRzV2l0aFByaXZh
dGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAvLyBUaGUgY29uc3RydWN0
b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3RydWN0b3IgaGFzIGJlZW4g
YnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0YjdlY2ViYmU4M2Y3ZDcyNDc5
MzRjOTg4ZGVmNGZmYzFjOGNhLi40MGQ3ODYyODQxNjUyY2IwY2RhYzQ1MjUyOTAzOWZlOWY3MjBk
YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEyOSw2IEBAIFdFQktJVF9G
UkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKFdlYkNv
cmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQog
Ci0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLWFkZF9jdXN0b21fY29t
bWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBFTkRTICR7SmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9q
c21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIvLyMgc291cmNl
VVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQRVJMX0VYRUNV
VEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi1saXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAtMjM1Miw2ICsyMzQwLDcg
QEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9U
ZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2RvbS9UZXh0RW5jb2RlclN0
cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVy
bmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKQEAgLTIzOTUs
OCArMjM4NCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJDb3JlSlNCdWlsdGlu
cy5jcHAKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRp
bkludGVybmFscy5jcHAKLSAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViQ29y
ZUpTQnVpbHRpbnMuaAotICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJDb3Jl
SlNCdWlsdGluSW50ZXJuYWxzLmgpCispCiAKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RF
UEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgTWF0aE1M
TmFtZXMuY3BwKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IGEzZDY4YWRmZTEzMWM0ODdjNzljYzRjMmFmMWM4YTg2ZTcwODEyYjku
LmY1Njc3ZTJlNDUyNTM1NjJiZDJmMGM5MDJkNTYyNzZlNjBmNzMxZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC04LDcgKzgsOCBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NTdHlsZURl
Y2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcAotJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRp
bnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NQ2xpZW50SXNvU3Vic3BhY2Vz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ2NjNjMzIzNjg0ZDFjMGY4ODBm
YjdjZjk2MWZjNmZhNDIxNmU0NmMuLmIxMjNhYmY5M2UyNzU4ZDIxMTQ4YzEwMWM5ZDE3MzRkMDQ5
NmY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjIxOSwxNiArMjIxOSw2
IEBAIGlmbmVxICgkKE5PX1NVUFBMRU1FTlRBTF9GSUxFUyksMSkKIC1pbmNsdWRlICQoSlNfRE9N
X0hFQURFUlM6Lmg9LmRlcCkKIGVuZGlmCiAKLSMgSW5zcGVjdG9yIGludGVyZmFjZXMKLQotYWxs
IDogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCi1Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oIDogJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMiID4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQ
WVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS94eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMgQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UubWluLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLQkkKERFTEVU
RSkgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0KICMgV2ViQ29yZSBKUyBCdWls
dGlucwogCiBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCkBAIC0yMjUyLDYgKzIyNDIsNyBA
QCBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dERl
Y29kZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRFbmNvZGVyU3RyZWFtLmpz
IFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ludGVybmFscy5qcyBc
CisgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMg
XAogIwogCiBCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IGViZDZjMzAwZTdjMzJiN2NmM2ZhZDA3MDQ0OGIwNjdiZmFhOWI3OGMuLjAxZWNhNzA0NGFk
MTJkMThjMGFhMzQzNzBjNTFmMzIxNTc2YjY0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjA2
OCw2ICsyMDY4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAg
ICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuaAogICAg
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NWYWx1ZUtleXdvcmRzLmgKKyAgICAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VC
dWlsdGlucy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0V2ZW50SW50ZXJm
YWNlcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0V2ZW50VGFyZ2V0SW50
ZXJmYWNlcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0hUTUxFbGVtZW50
VHlwZUhlbHBlcnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDRlMGY0YTQ1Yzg3MDU2NDk3ZDE4MDc5MjlhNzcwODRhNGQ3NTVm
NzMuLmM2MWE5ZTVmOTdjOTI4YTg0ZDQxOTg2NDFjMDcwYTRkZTM1ZjVjZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OSw2
ICs4OTksNyBAQAogCQkyRTMwMUJFODI3NDU5NDcyMDBDMDU2NEYgLyogQ29tcGlsZWRTZWxlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0NTEw
NzcyMDJDN0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2VsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTM3REZEQjEyREJBRkI4MDBBNkIy
MzMgLyogRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTM3REZEODEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggKi87IH07CiAJCTJFMzdF
MDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9N
VVJMLmggKi87IH07CisJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjM0MEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKIAkJMkU0MzQ2NDkwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzkwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsgfTsKQEAgLTM1MTcsNyAr
MzUxOCw2IEBACiAJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VU
cmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZC
Mjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBT
ZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJQTU4NDBFMjUxODdCOEFDMjAwODQzQjEwIC8q
IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2Ny
aXB0SG9zdC5oICovOyB9OwotCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oICovOyB9OwogCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICov
OyB9OwogCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0
RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07
CiAJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTMyMTg2NEQ1
QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCAqLzsgfTsKQEAgLTgyMDQsNiArODIw
NCw4IEBACiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFMzdFMDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2VCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29y
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk0MCw3ICsxMzk0Miw2IEBACiAJCUE1ODFF
RDEyMUZCMjg4QzkwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckFnZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdlYklu
amVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyog
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
ODRGRTI5MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb21tYW5kTGluZUFQSU1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA0MjgsNyArMjA0MjksNiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVj
dG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNTg0
RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLywK
IAkJCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQSUhvc3QuY3Bw
ICovLAogCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9z
dC5oICovLAogCQkJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCkBAIC0yMzU4NCw2ICsyMzU4NCw4IEBACiAJCQkJ
OTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWls
dGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjUxQkNBRDA3RDAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlE
NiAvKiBDb2xvckRhdGEuY3BwICovLAorCQkJCTJFM0FFRkZEMjgwOUYyMTEwMDM3MUEyNSAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLywKKwkJCQkyRTNBRUZGOTI4
MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oICov
LAogCQkJCTk5MDhCMEY2MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJDNSAv
KiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLywKQEAgLTM0MDgzLDcgKzM0MDg1LDcgQEAKIAkJCQky
NkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEyMDk5REYwMjcwMDkwRDc4MSAvKiBD
b21tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlDNjlEMDI4MTBEMTFEMDBFNjlCQUQgLyog
Q29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RTY2NEZDMUU3MzcwMzMw
MDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKaW5k
ZXggZDc3YzczZDhhZTQ5NTAxNjc1MjgyMjY0ZDBkMzZkNjVjY2U3NDJmZi4uZDQxZmNkMzVjYTll
M2Y1MDNjZDQ3Mzg5NDViNDliNzlmZGVhMzM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIKIAotI2lu
Y2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgiCiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDgsOSArNDcsMTQgQEAgQ29t
bWFuZExpbmVBUElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkKIHsKIH0KIAotU3RyaW5n
IENvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAorSlNGdW5jdGlvbiogQ29tbWFu
ZExpbmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzLCBzaXplb2Yo
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpKTsKKyAgICBpZiAoYXV0byogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCkpCisg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLmNv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlKCkubV9pbmplY3RNb2R1bGVGdW5jdGlvbi5nZXQoKTsK
KworICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGdldCBgaW5qZWN0TW9kdWxlYCBmdW5j
dGlvbiBmcm9tIGBDb21tYW5kTGluZUFQSU1vZHVsZWAgZm9yIG5vbi1gSlNET01HbG9iYWxPYmpl
Y3RgLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6Omhvc3QoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThjMmRlYmRlZGFjZjdmYzZi
NDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBiZGFkN2I5N2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApAQCAt
MzMsNyArMzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKICAgICBDb21tYW5kTGlu
ZUFQSU1vZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCopIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0KEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMKaW5kZXggZjUxZTM1MTljY2IxNzk2MDkwYzMyNzRkNWIwYzM3YjI1OWQwZTNlYS4uODE5ZmE0
N2U5ZDEwZDBmNGM3ZTcxZjkxOTRiMGJmNGVmNzY2M2I5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEx
ICsyNiwxMiBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRT
Y3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKy8vIEBpbnRlcm5hbAogCi0oZnVu
Y3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3Rl
ZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9
LCBDb21tYW5kTGluZUFQSUhvc3QpIHsKK2Z1bmN0aW9uIGluamVjdE1vZHVsZShJbmplY3RlZFNj
cmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0
ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwgQ29tbWFuZExpbmVBUElI
b3N0KQorewogCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5ND4gV2ViIElu
c3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1pbiB0byBnZXQg
Z3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucworLy8gRklYTUU6IDx3ZWJr
aXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVzZSBXZWJDb3JlIGJ1aWx0
LWlucy4KIAogaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QgPSBmdW5jdGlvbihvYmplY3Qp
IHsKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKQEAgLTcwLDEyICs3MSwxMiBAQCBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihvYmplY3QpIHsKICAgICBl
bHNlIGlmIChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9iamVjdCkpCiAgICAgICAg
IHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJz
eW1ib2wiKQotICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuU3RyaW5nKG9i
amVjdCk7CisgICAgICAgIHN0cmluZyA9IEBTdHJpbmcob2JqZWN0KTsKICAgICBlbHNlIGlmICh0
eXBlb2Ygb2JqZWN0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVj
dDsKICAgICBlbHNlIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHN0cmluZyA9IGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5KU09OLnN0cmluZ2lmeShvYmplY3QsIG51bGwsICIgICIpOworICAg
ICAgICAgICAgc3RyaW5nID0gQGpzb25TdHJpbmdpZnkob2JqZWN0LCAiICAiKTsKICAgICAgICAg
fSBjYXRjaCB7CiAgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVjdDsKICAgICAgICAgfQpA
QCAtODksMjMgKzkwLDI4IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdldEV2ZW50TGlzdGVu
ZXJzIl0gPSBmdW5jdGlvbih0YXJnZXQpIHsKIH07CiAKIGZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50
VHlwZXModHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgdHlw
ZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIi
LCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIs
ICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwg
InNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07CisgICAgaWYgKHR5cGVzID09PSBAdW5kZWZp
bmVkKQorICAgICAgICB0eXBlcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoIm1vdXNl
IiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwg
ImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJs
b2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJz
dWJtaXQiLCAidW5sb2FkIik7CiAgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5n
IikKLSAgICAgICAgdHlwZXMgPSBbdHlwZXNdOworICAgICAgICB0eXBlcyA9IEBjcmVhdGVBcnJh
eVdpdGhvdXRQcm90b3R5cGUodHlwZXMpOworCisgICAgbGV0IHJlc3VsdCA9IG5ldyBAU2V0Owor
ICAgIGZ1bmN0aW9uIGFkZFR5cGVzVG9SZXN1bHQoKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0LkBhZGQoYXJn
dW1lbnRzW2ldKTsKKyAgICB9CiAKLSAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewogICAgICAgICBpZiAodHlwZXNbaV0gPT09
ICJtb3VzZSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgiY2xpY2siLCAiZGJsY2xpY2siLCAi
bW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3VzZW92ZXIiLCAibW91c2V1
cCIsICJtb3VzZXdoZWVsIik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJjbGljayIs
ICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNl
b3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJrZXkiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImtleWRvd24iLCAia2V5cHJl
c3MiLCAia2V5dXAiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0
KCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1dCIpOwogICAgICAgICBl
bHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJ0
b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91Y2hzdGFydCIpOworICAg
ICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgidG91Y2hjYW5jZWwiLCAidG91Y2hlbmQiLCAidG91
Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJj
b250cm9sIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwgImNoYW5nZSIsICJmb2N1
cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9v
bSIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiYmx1ciIsICJjaGFuZ2UiLCAiZm9j
dXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3QiLCAic3VibWl0IiwgInpv
b20iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZXNbaV0pOwor
ICAgICAgICAgICAgcmVzdWx0LkBhZGQodHlwZXNbaV0pOwogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMTE4LDE5ICsxMjQsMTcgQEAgZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpCiBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJtb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmplY3Qs
IHR5cGVzKSB7CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8
ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5cGVz
ID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0
eXBlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0
eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVp
bHRpblNldEl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkgeworICAgICAgICBv
YmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOworICAgICAg
ICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwgZmFsc2UpOwogICAgIH0K
IH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInVubW9uaXRvckV2ZW50cyJdID0gZnVuY3Rp
b24ob2JqZWN0LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRM
aXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsK
LSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwotICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExp
c3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZvciAobGV0IHR5cGUgb2Yg
QGJ1aWx0aW5TZXRJdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKSkpCisgICAgICAg
IG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiB9Owog
CiBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5Ob2RlKSB7CkBAIC0xNTgsOSArMTYyLDEwIEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKICAgICB9OwogCiAg
ICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJCQiXSA9IGZ1bmN0aW9uKHNlbGVjdG9yLCBzdGFy
dCkgeworICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVsZXNzIGFycmF5IGhlcmUg
c28gdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMgYSBub3JtYWwgQXJyYXku
CiAgICAgICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAg
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShzdGFydC5xdWVyeVNlbGVj
dG9yQWxsKHNlbGVjdG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
QXJyYXkuZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bChzZWxlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShzdGFydC5xdWVy
eVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBAQXJyYXkuQGZyb20oaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsK
ICAgICB9OwogCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJHgiXSA9IGZ1bmN0aW9uKHhw
YXRoLCBjb250ZXh0KSB7CkBAIC0xNzUsMTAgKzE4MCwxMSBAQCBpZiAoaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGxl
dCBub2RlcyA9IFtdOworICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVsZXNzIGFy
cmF5IGhlcmUgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMgYSBub3Jt
YWwgQXJyYXkuCisgICAgICAgIGxldCBub2RlcyA9IG5ldyBAQXJyYXk7CiAgICAgICAgIGxldCBu
b2RlID0gbnVsbDsKICAgICAgICAgd2hpbGUgKG5vZGUgPSByZXN1bHQuaXRlcmF0ZU5leHQoKSkK
LSAgICAgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKG5v
ZGVzLCBub2RlKTsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH07CiB9CkBAIC0xODYsNCAr
MTkyLDQgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudCAmJiBpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuTm9kZSkgewogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRo
b2RzKQogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlv
bigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJ
XSB9IjsgfTsKIAotfSkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiOTk2YTZmOTdjNzJmYTZkOWMxOWU5NTA2NmU3YTgz
Njk1NzgwNjU4Li43MjY3MTU1ZDQ0NWIwNWM0N2UyM2ViMDMxODdkYzEzMmQwNmVhODUyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMjItMDUtMDYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2NyaXB0U291
cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJpZGVuIEpT
QyBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAg
ICAqIGluc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWw6CisgICAg
ICAgIC0gQWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVycmlkaW5nIGZ1bmN0aW9u
cyBhbmQgZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sOgorICAgICAgICAtIENo
YW5nZWQgdG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25pcHBldCBzaW5jZSB0aGUg
aW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGluLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAgICAgICAtIFRoZSBpbnNw
ZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBubyBsb25nZXIgYXBwZWFy
IGFzIHNjcmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2Rl
bC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUv
bGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9pbnNwZWN0
b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAtIEluc3BlY3Rv
ciBpbmplY3RlZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJlbnQgYmV0d2VlbiByZWxl
YXNlIGFuZCBkZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQuCisKIDIwMjItMDUtMDYg
IEthcmwgUmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIFJlbGVh
c2UgXSBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwgaXMgYSBmbGFr
eSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAppbmRl
eCAxZWIxNTM5ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi41OTM3ZmFlOTdmODk1
ODg0N2Y4OGZmNDY3ZWJlMTViODFlMjg3ZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2Ny
aXB0cy1leHBlY3RlZC50eHQKQEAgLTEsNjYgKzEsNjAgQEAKLUNPTlNPTEUgTUVTU0FHRTogW29i
amVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUg
TUVTU0FHRTogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09M
RSBNRVNTQUdFOiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ2hl
Y2tpbmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVw
ZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0
cy4KK0NoZWNraW5nIHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBz
dGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdz
LnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVi
dWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4K
IC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0
cy5EaXNhYmxlZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBS
RVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4s
IGluLCBpbiwgcmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ct
cGF1c2UtbG9jYXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAg
NiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdn
ZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAg
Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5n
Iik7CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAg
ICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAy
NSAgICAgICAgfGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgx
KTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQg
ZW50cnlDb25zb2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5j
dGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAg
IDggICAgICAgIHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5s
b2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAg
IDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAg
ICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAg
ZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAg
MjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0Ug
QVQgZW50cnlDb25zb2xlTG9nOjEwOjUKLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xl
TG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xl
LmxvZyh3aW5kb3cpOwotIC0+ICAgOSAgICAgICAgfGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAg
ICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEy
CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI4OjUKKyAgICAgMjQgICAgZnVuY3Rpb24g
ZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAy
NiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAtPiAgMjcgICAgICAgIHxpbnRlcm5h
bE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsK
KyAgICAgMjkgICAgfQorICAgICAzMAogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5
Q29uc29sZUxvZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAg
IGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xl
KTsKLSAtPiAgMTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0K
LSAgICAgMTIKLSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCitQQVVTRSBBVCBlbnRyeUludGVybmFs
T2JqZWN0OjI5OjUKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50
ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
Mik7CisgLT4gIDI4ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAg
fQorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KIAogQUNUSU9OOiBzdGVwLWluCi1Q
QVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTI6MgotICAgICAgOCAgICAgICAgY29uc29sZS5sb2co
d2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAg
ICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAgICAxMgotICAg
ICAxMyAgICAvLyAtLS0tLS0tLS0KLSAgICAgMTQKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmpl
Y3Q6MzA6MgorICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcg
ICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9i
amVjdC50ZXN0KDMpOworIC0+ICAyOSAgICB9fAorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0t
LS0tLS0KKyAgICAgMzIKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTY4LDU3ICs2Miw1
NyBAQCBQQVNTOiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0
IHNldHVwLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJu
YWxTY3JpcHRzLkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9n
KQorRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92
ZXIsIGluLCBpbiwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVT
RSBBVCBlbnRyeUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4K
LSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAg
fGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkg
ICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2co
InN0cmluZyIpOworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAg
IH0KKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsK
KyAtPiAgMjUgICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAy
OCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBB
VVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gICA4ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAg
MjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUg
ICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7
CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4K
LVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAg
ICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVn
Z2VyOwotIC0+ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAg
ICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJp
bmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAor
ICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAg
ICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
fCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3Rl
cC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4K
LSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAg
ZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkg
ICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2co
InN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3
OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7
CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3R8KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAg
MjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9O
OiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2Ny
aXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAg
ICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAg
ICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xl
LmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmpl
Y3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVj
dCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOwor
ICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBB
Q1RJT046IHJlc3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAppbmRleCBk
MTY4YTcyNTRjZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi5lNWIwZDljOGI3MThlMWIy
NTZlYWVmNjc4MjI2YjYyNzBlNzFiMzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbApA
QCAtNCwxMSArNCwyOSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZnVuY3Rp
b24gZW50cnlDb25zb2xlTG9nKCkgeworCitsZXQgaW50ZXJuYWxPYmplY3QgPSB7IHRlc3Q6IGZ1
bmN0aW9uKCkge30gfTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbE9i
amVjdCA9IHdpbmRvdy5pbnRlcm5hbHMuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24o
InRlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cyIsIGAKKyAgICAgICAgLy8jIHNvdXJjZVVSTD1f
X0luamVjdGVkU2NyaXB0X1Rlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cy5qcworICAgICAgICBs
ZXQgSW50ZXJuYWxPYmplY3QgPSBjbGFzcyBJbnRlcm5hbE9iamVjdCB7CisgICAgICAgICAgICB0
ZXN0KGludm9jYXRpb25OdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9IDY7CisgICAg
ICAgICAgICAgICAgbGV0IGIgPSA3OworICAgICAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBhICog
YjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBuZXcgSW50ZXJuYWxPYmpl
Y3Q7CisgICAgYCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CiAgICAg
ZGVidWdnZXI7Ci0gICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xlLmxvZyhjb25z
b2xlKTsKLSAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CisgICAgaW50ZXJuYWxPYmplY3QudGVz
dCgxKTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgIGludGVybmFsT2JqZWN0LnRl
c3QoMyk7CiB9CiAKIC8vIC0tLS0tLS0tLQpAQCAtMjEsMzEgKzM5LDMxIEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dl
ci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0
aW9uOiAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBjb25zb2xlLmxvZyBzdGF0ZW1l
bnRzIHdoaWNoIHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhw
cmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVz
ZSBpbnRlcm5hbCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRU
aW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0
bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24g
dGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAg
c2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRl
cm5hbFNjcmlwdHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92
ZXIiLAotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAg
ICAgICAgICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAg
ICJpbiIsIC8vIGNvbnNvbGUubG9nKCJzdHJpbmciKQorICAgICAgICAgICAgICAgICJpbiIsIC8v
IGludGVybmFsT2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5h
bE9iamVjdC50ZXN0KDIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3Qu
dGVzdCgzKQogICAgICAgICAgICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9KTsKIAogICAg
IGFkZFN0ZXBwaW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VG
b3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxk
IGJlIGFibGUgdG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRo
ZSBJbnRlcm5hbCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGlt
ZW91dChlbnRyeUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUg
YWJsZSB0byBzdGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0ZWQg
c2NyaXB0cy4iLAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVybmFs
T2JqZWN0KSIsCiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5kIHNp
bmNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3VsdCBp
ZiBjaGFuZ2luZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB7
IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKHRydWUpOyB9
LAogICAgICAgICB0ZWFyZG93bjogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5z
ZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAg
ICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2co
d2luZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNv
bGUubG9nKHdpbmRvdyldCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNp
ZGUgY29uc29sZS5sb2cod2luZG93KV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNp
ZGUgaW50ZXJuYWxPYmplY3QudGVzdCgxKV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29t
ZXdoZXJlIGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQogICAgICAgICAgICAgInJlc3Vt
ZSIsCiAgICAgICAgIF0KICAgICB9KTsKQEAgLTU3LDYgKzc1LDYgQEAgZnVuY3Rpb24gdGVzdCgp
CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNr
aW5nIHdoZXRoZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVu
ZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMu
PC9wPgorPHA+Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2Fu
IGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0
dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4
cGVjdGVkLnR4dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4
Li42M2E2ZTViNzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVk
LnR4dApAQCAtOSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0Lgog
UEFTUzogU2hvdWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxk
IGZpbmQgSW5saW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91
bGQgZmluZCBFdmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3Rl
ZFNjcmlwdFNvdXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFu
ZExpbmVBUElTb3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4
cGVjdGVkIHNjcmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRQYXJzZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0
OWQ5YTVmLi5kNjc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0x
OSwxNCArMTksMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0
PiAodGhpcykgc3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9h
ZCBldmVudCBsaXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAg
IC0gZXZhbCBzb3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRl
cm5hbCBzY3JpcHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmpzCiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxl
dCBmb3VuZElubGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGlu
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFs
U2NyaXB0ID0gZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQg
PSBmYWxzZTsKLSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNl
OwogICAgIGxldCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9u
IGlzRXh0ZXJuYWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1z
KSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93
LgorICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRM
aW5lID49IDk5OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gaXNFdmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJj
ZVVSTCA9PT0gImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3Jp
cHRTb3VyY2VTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJM
LnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRz
V2l0aCgiLmpzIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJj
ZVNjcmlwdChwYXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhP
ZigiQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3Vp
dGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRD
aGVja0luaXRpYWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAg
LTc5LDEwICs2OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAg
Zm91bmRJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFy
YW1zKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2Ny
aXB0ICYmIGlzQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlw
dCAmJiBpc0luamVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRl
c3QubG9nKCJVTkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRy
dWU7CkBAIC05Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxk
IGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5leHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlw
dCwgIlNob3VsZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIp
OwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlw
dCwgIlNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29s
VGVzdC5leHBlY3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQg
ZmluZCBJbnNwZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VT
Y3JpcHQsICJTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0
LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhw
ZWN0ZWRTY3JpcHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4i
KTsKIAogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0
CmluZGV4IDg4MzNhOGZkMmE2NWNjMmM4NDUyY2MzMDYwYmU2ODY0MmNiMDNhYjcuLjQ5ZjRhZjJj
MTM4NGE0NjY3YjdmYmU4YmM4ZTFmZThkN2VmZTUwOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDE3IEBACiBDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQot
VGVzdCB0aGF0IGNlcnRhaW4gSW5qZWN0ZWRTY3JpcHRTb3VyY2Ugb3BlcmF0aW9ucyBhcmUgbm90
IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgorQ09OU09MRSBNRVNTQUdFOiBhLGIsYworQ09OU09M
RSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBTZXRd
CitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2Jq
ZWN0IE1hcF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NB
R0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NP
TlNPTEUgTUVTU0FHRTogY291bnQgb2YgMQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVj
dF0KK0NPTlNPTEUgTUVTU0FHRTogaGVsbG8KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmpl
Y3RdCitUZXN0IHRoYXQgSW5qZWN0ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZh
YmxlIGJ5IHVzZXIgY29kZS4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEluamVjdGVkU2Ny
aXB0Lk9ic2VydmFibGUKQEAgLTgsMyArMjAsMzggQEAgUEFTUzogUGF1c2VkLgogUEFTUzogUmVz
dW1lZC4KIFBBU1M6IEFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQg
c2hvdWxkIGJlIDEuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOlNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFT
UzogUmVzdW1lZC4KK1BBU1M6IFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNv
dW50IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4K
K1BBU1M6IFJlc3VtZWQuCitQQVNTOiBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2Fs
bCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2Ny
aXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBlLnB1c2gKK1BBU1M6IFBhdXNlZC4KK1BBU1M6
IFJlc3VtZWQuCitQQVNTOiBBcnJheS5wcm90b3R5cGVbInB1c2giXSBjYWxsIGNvdW50IHNob3Vs
ZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpTZXQucHJvdG90eXBlLmFkZAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6
IFNldC5wcm90b3R5cGVbImFkZCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlN0cmluZworUEFTUzogUGF1
c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IFN0cmluZyBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJh
eS5wcm90b3R5cGUuaW5kZXgKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBB
cnJheS5wcm90b3R5cGVbIjQyIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5k
ZXN0cnVjdHVyZWRQcm9wZXJ0eQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6
IE9iamVjdC5wcm90b3R5cGVbImZldGNoU3RhcnQiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2Vy
dmFibGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2
YWJsZS5odG1sCmluZGV4IDRkOGQ2NmU1MmZiY2IxNzFhYjFjOTBhNzY1OGQ5ZDkzYzg0N2Q2OTUu
LjNhNTFmYzc2MmIxYTIyMjEwN2E5NDIzYjQ4NTFmZGM4Zjk5NTQ3NWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sCkBA
IC0zLDYzICszLDIwNSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
Ci0vLyBOT1RFOiBNb3JlIGNhc2VzIHNob3VsZCBiZSB0ZXN0ZWQgYW5kIGFkZHJlc3NlZCBieToK
LS8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIElu
amVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVz
ZXItb3ZlcnJpZGVuIGJ1aWx0LWlucwotCi1mdW5jdGlvbiB0cmlnZ2VySXRlcmF0aW9uKCkgewor
ZnVuY3Rpb24gcmVwbGFjZUFuZFRlc3RQcm90b3R5cGVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3Bl
cnR5LCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbikgeworICAgIHRyeSB7CiAgICAg
bGV0IGNhbGxDb3VudCA9IDA7CiAKLSAgICBjb25zdCBvcmlnaW5hbEl0ZXJhdG9yID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRv
cik7Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0
ZXJhdG9yLCB7CisgICAgbGV0IG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90b3R5cGUsIHByb3BlcnR5KTsKKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgewogICAgICAgICBnZXQoKSB7CiAg
ICAgICAgICAgICArK2NhbGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZXJh
dG9yLnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9y
Py52YWx1ZTsKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107Ci0KICAg
ICBkZWJ1Z2dlcjsKIAogICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgogICAgIGNvbnNvbGUubG9n
KHthOjEsIGI6MiwgYzp7fX0pOwogCi0gICAgLy8gVXNlIEFycmF5IEl0ZXJhdG9yIGF0IGxlYXN0
IG9uY2UuCi0gICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisgICAgaW52b2tlT3ZlcnJpZGRl
blByb3BlcnR5RnVuY3Rpb24oKTsKIAotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5w
cm90b3R5cGUsIFN5bWJvbC5pdGVyYXRvciwgb3JpZ2luYWxJdGVyYXRvcik7CisgICAgaWYgKG9y
aWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yKQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
cHJvdG90eXBlLCBwcm9wZXJ0eSwgb3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IpOworICAgIGVs
c2UKKyAgICAgICAgZGVsZXRlIHByb3RvdHlwZVtwcm9wZXJ0eV07CiAKICAgICByZXR1cm4gY2Fs
bENvdW50OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0T2JqZWN0KG9iamVjdFN0cmluZywgaW52
b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uKSB7CisgICAgbGV0IGNhbGxDb3VudCA9IDA7Cisg
ICAgCisgICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0gZXZhbChvYmplY3RTdHJpbmcpOworICAgIGV2
YWwoYAorICAgICAgICAke29iamVjdFN0cmluZ30gPSAoKSA9PiB7CisgICAgICAgICAgICArK2Nh
bGxDb3VudDsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9iamVjdCguLi5hcmd1bWVudHMp
OworICAgICAgICB9OworICAgIGApOworCisgICAgZGVidWdnZXI7CisKKyAgICAvLyBQcmV2aWV3
IGFuIG9iamVjdC4KKyAgICBjb25zb2xlLmxvZyh7YToxLCBiOjIsIGM6e319KTsKKworICAgIGlu
dm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbigpOworCisgICAgZXZhbChgJHtvYmplY3RTdHJp
bmd9ID0gb3JpZ2luYWxPYmplY3Q7YCk7CisgICAgY29uc29sZS5sb2coImNvdW50IG9mICIgKyBj
YWxsQ291bnQpOworICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQog
ewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZSIpOwogCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgIGZ1
bmN0aW9uIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBw
cm90b3R5cGVTdHJpbmcsIHByb3BlcnR5U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFt
ZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBy
ZXBsYWNlQW5kVGVzdFByb3RvdHlwZVByb3BlcnR5KCR7cHJvdG90eXBlU3RyaW5nfSwgJHtwcm9w
ZXJ0eVN0cmluZ30sICR7aW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24udG9TdHJpbmco
KX0pO2AsIChlcnJvciwgcmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtwcm90b3R5cGVTdHJpbmd9WyR7cHJvcGVy
dHlTdHJpbmd9XSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2Vy
LkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QucGFzcygiUGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIucmVzdW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBh
ZGRPYmplY3RUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIG9iamVjdFN0cmluZywgaW52b2tl
T3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0T2JqZWN0KCIke29iamVjdFN0cmluZ30iLCAk
e2ludm9rZU92ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCBy
ZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChyZXN1bHQsIDEsIGAke29iamVjdFN0cmluZ30gY2FsbCBjb3VudCBzaG91bGQgYmUgMS5gKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBhdXNlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJJ
bmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3Jd
IiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2Ny
aXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2Vy
SXRlcmF0aW9uKClgLCAoZXJyb3IsIHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4iKTsKLSAgICAgICAgICAgICAgICByZXNv
bHZlKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2Vk
LiIpOwotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChy
ZWplY3QpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQs
IChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1l
ZC4iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGRlc2NyaXB0aW9uOiAi
QXJyYXkgaXRlcmF0aW9uIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFi
bGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAg
ICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVy
cmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0g
WyJhIiwgImIiLCAiYyJdOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisK
KyAgICAgICAgICAgIGNvbnNvbGUubG9nKGFycmF5KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwor
ICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlNldCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJTZXQucHJv
dG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAg
ICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAg
ICAgbGV0IHNldCA9IG5ldyBTZXQoWyJhIiwgImIiLCAiYyJdKTsKKyAgICAgICAgICAgIGZvciAo
bGV0IHggb2Ygc2V0KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coc2V0KTsKKyAgICAg
ICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpNYXAucHJvdG90eXBlW1N5bWJv
bC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1hcCBpdGVyYXRpb24gaW4gSW5q
ZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5
cGVTdHJpbmc6ICJNYXAucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1i
b2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjog
KCkgPT4geworICAgICAgICAgICAgbGV0IG1hcCA9IG5ldyBNYXAoW1siYSIsICIxIl0sIFsiYiIs
ICIyIl0sIFsiYyIsICIzIl1dKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2YgbWFwKSB7IH0K
KworICAgICAgICAgICAgY29uc29sZS5sb2cobWFwKTsKKyAgICAgICAgfSwKICAgICB9KTsKIAor
ICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNl
cnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIkFycmF5LnByb3RvdHlwZSIsCisg
ICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAorICAgICAgICBpbnZva2VPdmVycmlk
ZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107
CisgICAgICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAg
IGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRT
Y3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU2V0LmFkZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIs
CisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9w
ZXJ0eVN0cmluZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7CisgICAgICAg
ICAgICBzZXQuYWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZE9iamVjdFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5n
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmplY3RTdHJpbmc6ICJTdHJpbmciLAor
ICAgICAgICBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb246ICgpID0+IHsKKyAgICAgICAg
ICAgIGxldCBhbnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAg
YWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRleCIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiT3ZlcnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkgcHJvdG90eXBlIGluIEluamVjdGVkIFNj
cmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5n
OiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcIjQyXCIiLAor
ICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAg
ICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKCJoZWxsbyIpOwor
ICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkpOworICAgICAgICAgICAgYXJyYXlbNDJdOwor
ICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk9iamVjdC5wcm90b3R5
cGUuZGVzdHJ1Y3R1cmVkUHJvcGVydHkiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk9iamVjdCBk
ZXN0cnVjdHVyaW5nIChmb3IgYG9wdGlvbnNgIHBhcmFtZXRlcnMpIGluIEluamVjdGVkIFNjcmlw
dCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAi
T2JqZWN0LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJmZXRjaFN0YXJ0
XCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4gewor
ICAgICAgICAgICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0OworICAgICAgICB9LAorICAgIH0pOwor
CisKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJ
bmplY3RlZFNjcmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vy
IGNvZGUuPC9wPgorPHA+VGVzdCB0aGF0IEluamVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBu
b3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJy
b3ItZXhwZWN0ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJlYTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZl
MjM4MTYuLmFmYmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJiNTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9l
cnJvci1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBu
dWxsOyB0cnkgeyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAg
ICAgewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5n
IiwKLSAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAi
Z2xvYmFsIGNvZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5A
W25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwK
ICAgICAiX2VudHJpZXMiOiBudWxsCkBAIC03MCw3ICs3MCw3IEBAIEVYUFJFU1NJT046IGVycm9y
ID0gbnVsbDsgdHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsg
ZXJyb3IKICAgICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBl
IjogInN0cmluZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9i
YWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93
cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwg
Y29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlReKApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5f
d3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6
IG51bGwKQEAgLTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxpdFRleHQoMTAwKTsgfSBjYQogICAgICAg
ewogICAgICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwK
LSAgICAgICAgIl92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVA
XG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxA
IgorICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29k
ZUBcbmV2YWx1YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxs
QFtuYXRpdmUgY29kZV0iCiAgICAgICB9LAogICAgICAgewogICAgICAgICAiX25hbWUiOiAiY29k
ZSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1
bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29s
dW1uLWV4cGVjdGVkLnR4dAppbmRleCBiZmNhYzk4OWVhYzBmYmQ4MGU4NWFjYzYzYzRlN2MyODZi
ODdhMzg1Li4xMjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIzMDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBl
Y3RlZC50eHQKQEAgLTY0LDggKzY0LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAg
ICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAgICAgInVybCI6ICIiLAog
ICAgICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgICAgICJs
aW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAg
ICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgICAgICJjb2x1
bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAg
ICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6
IENhcHR1cmluZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAg
ICAgICAidXJsIjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAg
ICAgICAgICJsaW5lTnVtYmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5Nwor
ICAgICAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5O
dW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlk
IjogIjxmaWx0ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFy
dGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIs
CiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVt
YmVyIjogMTQyLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5l
TnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRl
cmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4i
LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApp
bmRleCA2NzJiMzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2Jk
NGU0NTVkODY5M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbApAQCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgLy8gVG8gYXZvaWQgZmxha2luZXNzIHByaW50IG9ubHkgZXZlbnRz
IHRoYXQgd2UgYWx3YXlzIGV4cGVjdC4KICAgICBjb25zdCBldmVudEFsbG93bGlzdCA9IG5ldyBT
ZXQoWyJSZW5kZXJpbmdGcmFtZSIsICJDb25zb2xlUHJvZmlsZSIsICJFdmVudERpc3BhdGNoIiwg
IkZ1bmN0aW9uQ2FsbCJdKTsKKworICAgIC8vIFRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0
IGNhbGwgZnJhbWUocykgaGF2ZSBkaWZmZXJlbnQgbGluZSBudW1iZXJzIGJldHdlZW4gcmVsZWFz
ZSBhbmQgZGVidWcgYnVpbGRzLiBXZSBvbmx5CisgICAgLy8gd2FudCB0byBmaWx0ZXIgdGhvc2Ug
dmFsdWVzIGZvciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZyYW1lcyBpbiBvcmRlciB0byBlbnN1cmUg
b3RoZXIgbGluZS9jb2x1bW4gbnVtYmVycyByZW1haW4gc3RhYmxlLgorICAgIGxldCBmdW5jdGlv
bk5hbWVMZW5ndGggPSAwOworICAgIGxldCB1cmxMZW5ndGggPSAwOworCiAgICAgZnVuY3Rpb24g
cmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1l
IikgeworICAgICAgICAgICAgZnVuY3Rpb25OYW1lTGVuZ3RoID0gdmFsdWUubGVuZ3RoOworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAo
a2V5ID09PSAiY2hpbGRyZW4iICYmIHRoaXMuc3RhcnRUaW1lKQogICAgICAgICAgICAgcmV0dXJu
IHZhbHVlLmZpbHRlcihlID0+IGV2ZW50QWxsb3dsaXN0LmhhcyhlLnR5cGUpKTsKICAgICAgICAg
aWYgKGtleSA9PT0gInN0YXJ0VGltZSIgfHwga2V5ID09PSAiZW5kVGltZSIgfHwga2V5ID09PSAi
c2NyaXB0SWQiIHx8IGtleSA9PT0gImZyYW1lSWQiKQogICAgICAgICAgICAgcmV0dXJuICI8Zmls
dGVyZWQ+IjsKKyAgICAgICAgaWYgKChrZXkgPT09ICJsaW5lTnVtYmVyIiB8fCBrZXkgPT09ICJj
b2x1bW5OdW1iZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVuZ3RoICYmICF1cmxMZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisgICAgICAgIGlmIChrZXkgPT09ICJ1cmwi
KQorICAgICAgICAgICAgdXJsTGVuZ3RoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICBpZiAoa2V5
ID09PSAidXJsIiB8fCBrZXkgPT09ICJzY3JpcHROYW1lIikKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5yZXBsYWNlKC9eLitMYXlvdXRUZXN0c1wvaW5zcGVjdG9yXC8vLCAiIik7CiAgICAgICAg
IHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5k
ZXggYzk2MmQ2ODEwMWNmNDczMTVkNWUwMWRjM2YwZDNmZTM1OWQ2MjU0Ny4uNTZkMTg0MDhiZGRl
OWE3YjA3MDIzOTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVt
bi1leHBlY3RlZC50eHQKQEAgLTYwLDggKzYwLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQu
CiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAg
ICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIi
OiAxNDEsCi0gICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1i
ZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+
IgogICAgICAgICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBA
IC0xMTMsOCArMTEzLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rp
b25OYW1lIjogIiIsCiAgICAgICAidXJsIjogIiIsCiAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRl
cmVkPiIsCi0gICAgICAibGluZU51bWJlciI6IDE0MSwKLSAgICAgICJjb2x1bW5OdW1iZXIiOiA5
NworICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAiY29sdW1uTnVtYmVy
IjogIjxmaWx0ZXJlZD4iCiAgICAgfQogICBdLAogICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwK
QEAgLTE2NSw4ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5j
dGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8Zmls
dGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQxLAotICAgICAgImNvbHVtbk51bWJlciI6
IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1i
ZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4i
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459176</attachid>
            <date>2022-05-11 11:48:45 -0700</date>
            <delta_ts>2022-05-11 13:39:36 -0700</delta_ts>
            <desc>Patch v2.2.1 - With WIP build fix from bug 240297</desc>
            <filename>bug-152294-20220511114844.patch</filename>
            <type>text/plain</type>
            <size>157541</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzIyOWFiMTVlZWJiOTk3MGNiNmMwYjU0MzBiOTAzOTkxN2E0NGVjLi44OTM2MjI4YWExN2M1OTkx
YTI2NTg2Njc0YTFlODQwNzhhNjhkZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMTAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgogCiAgICAgICAgIFtUZW1wb3JhbF0gWWVhcnMgMC05OTkgc2hvdWxkIGJlIGNh
bm9uaWNhbGx5IHJlcHJlc2VudGVkIHdpdGggNCBkaWdpdHMsIG5vdCA2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzRjNDcxZTM0NTNkMjk1YjNmZDAxMjUzZjhjMTQ0MzhhNWM3OTY0Mi4uNWE0OWQxZjAwMWU3OTky
OTAyMmQ3NmM2YTkyODlhZTgxMWM2ZjMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDIyLTA1LTA2ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRv
IGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAtIEJ1aWxkIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGFzIGEgYnVpbHRpbiwgbm90IGFzIGEgcGxhaW4gaGVh
ZGVyIGZpbGUgY29udGFpbmluZyBpdHMgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExp
bmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICAtIFByb3ZpZGUg
YSBKU0Z1bmN0aW9uIGZvciBtb2R1bGUgaW5qZWN0aW9uIGluc3RlYWQgb2YgcmF3IHNvdXJjZSBj
b2RlLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
OgorICAgICAgICAtIFNpbWlsYXIgdG8gSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzLCB1c2UgcHJpdmF0ZSBuYW1lcyBmb3IgcHJvcGVydGllcyBhbmQgZnVu
Y3Rpb25zCisgICAgICAgIHRocm91Z2hvdXQgdG8gZ2V0IG5vbi11c2VyLW92ZXJyaWRkZW4gYnVp
bHRpbnMuCisgICAgICAgIC0gSW4gYG5vcm1hbGl6ZUV2ZW50VHlwZXNgIHVzZSBhIFNldCBpbnN0
ZWFkIG9mIGFuIGFycmF5LCBzaW5jZSB3ZSBhcmUgcHJvY2Vzc2luZyB1c2VyLXByb3ZpZGVkIHR5
cGVzIHRoYXQgbWF5CisgICAgICAgIGJlIHJlcGVhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVl
ZCB0byBpdGVyYXRlIG92ZXIgYWxsIHRoZSB0eXBlcyB0byBpbnNlcnQgdGhlbSBpbiB0aGUgc2V0
LCBidXQgc2luY2UKKyAgICAgICAgYEBhcnJheVB1c2hgIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoaW5n
IG11bHRpcGxlIHZhbHVlcyBhdCB0aGUgc2FtZSB0aW1lIHRoaXMgaXMgbm8gbW9yZSB3b3JrIHRo
YW4gdXNpbmcgYW4gQXJyYXkuCisKIDIwMjItMDUtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYnBhZ2UgVHJhbnNsYXRpb25dIEF2b2lkIHJl
bW92aW5nIGVsZW1lbnRzIHdpdGggbm8gY2hpbGRyZW4gZHVyaW5nIHRleHQgbWFuaXB1bGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJh
YzEwNTI2ZWFiODZkMjQxYzUxYWQ4OS4uZTZlZDdlZDQwNjM3YmE1MmYxMjUyMDg3Y2JmOTZhMjg4
ZjViNGNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwogKQogCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCkBAIC0xNDA1LDE3ICsxNDA2LDYgQEAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfSEVBREVSUwogICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSlNDQnVpbHRpbnMuaAogKQogCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291
cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNt
aW4ucHkKLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVS
TD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+ICR7SmF2YVNjcmlw
dENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0g
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9qc21pbi5weSA8ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgPj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9J
bmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2VfanMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlw
dFNvdXJjZS5taW4uanMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi0KLWxpc3QoQVBQRU5EIEphdmFTY3Jp
cHRDb3JlX0hFQURFUlMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oKQotCiBpZiAoV1RGX0NQVV9YODZfNjQpCiAgICAgaWYgKE1TVkMg
QU5EIE5PVCBFTkFCTEVfQ19MT09QKQogICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggOGQ1NDBiZDUxOTIxN2I1NTJiZjA2MDk4YzlkZGMyYTI3NGYzMzQwYi4uZjdi
M2RiN2I2MWQzMDYwN2U4YTZmYjUxNDNhNGMyNGVhZDIyODg1NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
MjEsNyArMjEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvR2VuZXJhdGVkV2FzbU9wcy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0Qnl0ZWNv
ZGVzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0luaXRXYXNtLmFzbQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0U291cmNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5s
dXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2N2Yy
YzY4NTRmOGExYmExM2MwOTVmN2UxNTRmNjhlOTdjYmYzOTEuLjFmYjYyM2NkNmY2ZThkODk4N2Y5
NDgwNDU0NGYwZDQ0ZTViMzVmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC02OCw3ICs2OCw2IEBAIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0g
JChKYXZhU2NyaXB0Q29yZSkvU2NyaXB0cwogCiAuUEhPTlkgOiBhbGwKIGFsbCA6IFwKLSAgICBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAgICAgS2V5d29yZExv
b2t1cC5oIFwKICAgICBSZWdFeHBKaXRUYWJsZXMuaCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgXAogIwogCiAjIFRoZSBjb21iaW5lZCBvdXRwdXQg
ZmlsZSBkZXBlbmRzIG9uIHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNj
cmlwdHMsIHNvCkBAIC0zNjgsMTIgKzM2OCw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanMgOiBDb21iaW5lZERvbWFpbnMuanNvbiAkKElOU1BFQ1RPUl9HRU5FUkFUCiAJ
JChQRVJMKSAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL3ByZXBy
b2Nlc3MucGwgLS1pbnB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmlu
IC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSIgLS1vdXRwdXQgaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCSQoREVMRVRFKSBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluCiAKLUluamVjdGVkU2NyaXB0U291cmNlLmgg
OiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikvanNtaW4ucHkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCi0J
ZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNl
LmpzIiA+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgSW5qZWN0
ZWRTY3JpcHRTb3VyY2VfanMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaAotCSQoREVMRVRFKSBJbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQog
QUlSX09QQ09ERV9GSUxFUyA9IFwKICAgICBBaXJPcGNvZGUuaCBcCiAgICAgQWlyT3Bjb2RlVXRp
bHMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIyZDA5MTMyMGQxNmU3Yzkx
ZDAzNjhhOGIyMzBmNTkyNzFjZmZkMTcuLjI0ZDRiZTg2YjljMTVmZGM2ZDI3ZDczYmE5MGVmYTg5
OTAzNGQyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQ1LDcgKzE0NDUs
NiBAQAogCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCOTE4
NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFE
IC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNj
cmlwdEhvc3QuaCAqLzsgfTsKIAkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCAqLzsgfTsKLQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCAqLzsgfTsKIAkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QzkxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MTRCMkMzMTg1
QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJ
bmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBNTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzUxLDYgKzM3NTAs
NyBAQAogCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVudW1lcmF0aW9uTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0
ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVy
YXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQURGQTI2MjE4RUYz
NTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdDTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
M0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVR5
cGVEZWZpbml0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
YXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxNzcwQzRGMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MDcsNyArNDcwNyw2
IEBACiAJCUE1MTNFNUJDMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDMzE4NUY5
MkM5MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTUxM0U1QzkxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NC
IC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmplY3RlZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzI4NCw3ICs3MjgzLDYgQEAKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyog
RXJyb3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZG
OEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8sCi0JCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCiAJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMx
MDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExODE5M0UyMUI0
RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1
ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oICovLApAQCAtOTM2Myw2ICs5MzYxLDcgQEAKIAkJCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURG
RkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNTM0RDlCRjgy
MzYzQzU1RDAwNTQ1MjREIC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTcwMzU1
ODdEMUM0MTg0MTkwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8sCisJCQkJMkUzQUYwMEQy
ODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlC
QzYwMUI2NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5
QkM2MTFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJ
CQkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKQEAg
LTEwNDUyLDcgKzEwNDUxLDYgQEAKIAkJCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDQjE4NUY5NjI0MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0
MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1OUU5MzIxQkQxODI3OTAwMUFBNDEzIC8qIGlubGlu
ZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzkwNUJCNjkxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ4QTdCRjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMjM4MCw3ICsxMjM3OCw2IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2
QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM2QjMxMkMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDkuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9y
bWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxODAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0xMjQwOSw3ICsxMjQwNiw2IEBACiAJCQkJNTM2QjMxOUQxRjczNUU3RDAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMx
RjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZpZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVy
SW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlMTM4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJFMUZBM0U3OEIw
MDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2
NkJGMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMTI0MjAsNyArMTI0MTYsNiBAQAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAv
KiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYyMjY4RkJD
N0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ3LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0
IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhG
QkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MjQzMCw2ICsxMjQyNSw5IEBACiAJCQkJNTM4RjE1RUEyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZp
ZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1QzlDREYy
MjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMzExMzVDOTI4MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBT
b3VyY2VzICovLAorCQkJCUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRl
ckJhc2UuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBa
eWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cmlu
ZGV4IDY1ZGMxNWNjYWRmNWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcuLjM4NzRkZDQyZjI3
NjBmMzRlODZkOGRjODE4NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAt
NTIsNiArNTIsNyBAQCBmdW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21waWxlKHIiKGFzeW5j
KT9ccypmdW5jdGlvbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rpb25OYW1lUmVnRXhw
ID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIGZ1bmN0aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiLipe
QG92ZXJyaWRkZW5OYW1lPShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1
bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3luY1xzKyk/ZnVuY3Rp
b25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwg
cmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIgPSBy
ZS5jb21waWxlKHIiLFxzKig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkK
IAogbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJl
Lk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29t
cGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKQEAgLTE0NSw3ICsx
NDYsNyBAQCBjbGFzcyBCdWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25ha2VkX2NvbnN0cnVj
dG9yID0gZnVuY3Rpb25OYWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJj
ZSkgIT0gTm9uZQogICAgICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoKICAgICAgICAgICAg
IGlzX2NvbnN0cnVjdG9yID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBm
b3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlb
MF0uc3BsaXQoJywnKV0KKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4g
ZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIu
ZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNb
MF0pID09IDA6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAtMzAzLDIxICszMDQs
NTUgQEAgY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9
IFtdCiAgICAgICAgIHN0YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1h
dGNoIGluIG1hdGNoZXM6CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAg
ICAgICAgIGlmIHN0YXJ0IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAg
ICAgICBlbmQgPSBtYXRjaC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7
JzoKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9
IDEKICAgICAgICAgICAgIGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAg
ICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6
Ci0gICAgICAgICAgICAgICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAg
ICAgZGVwdGggPSBkZXB0aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAn
fSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAg
ICAgY3VycmVudENoYXJhY3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNF
c2NhcGluZ0NoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3Rl
ciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICBpZiBjdXJyZW50Q2hhcmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYg
Y3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAg
ICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRD
aGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFy
dENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0No
YXJhY3RlciA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgICAgICMgRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFyIGV4cHJlc3Npb25z
IGNvbnRhaW5pbmcgdW5iYWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAg
ICAgICAgICAgICAgICMgZm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRN
TGApIGNhbiBjb25mdXNlIHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAg
ICAgICAgICAjIGluc2lkZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBq
dXN0IHJlc2V0IG91ciBzdHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAg
ICAgICAgICAgICAjICh1bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRo
aXMgd2lsbCB3b3JrIHVubGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAg
ICAgICAgICAgICMgdW5iYWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkg
YnJhY2tldCB3ZSBjYXJlIGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIK
KyAgICAgICAgICAgICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQg
cXVvdGUuCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBj
dXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBj
dXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVw
dGggKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6Cisg
ICAgICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAg
ICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAg
ZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVu
ZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDg4OGM4YmFlNDM1Zjg4NjNmNDgw
ZGQ4MWU0NTU2NmQ3OGI2MWVmYTcuLjcwOTkyNmFlNzM4NjkwN2RiZDQ5YjFkMGY1ZDUzNjE1ZjM0
ZTg1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNv
bnN0IFMKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJzU3RhcnQgKyAxOwog
ICAgICAgICB1bnNpZ25lZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGluc2lkZUN1cmx5QnJh
Y2tldHMgPSBmYWxzZTsKICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZhbHNlOwogICAgICAg
ICBib29sIGhhc1Jlc3RQYXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAt
MTEzLDcgKzExNCwxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICAgICAgaWYg
KGNoYXJhY3RlcnNbaV0gPT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVy
c1tpXSA9PSAnfScpCisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNl
OworICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycgfHwgaW5zaWRlQ3Vy
bHlCcmFja2V0cykgeworICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSB0cnVl
OworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAgICAgICAgICAgICAg
Kytjb21tYXM7CiAgICAgICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3Bh
Y2UoY2hhcmFjdGVyc1tpXSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0
ODNlODcxZTc0M2E5YTEyYjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFmYTJkNWIyZmIxYTE3
NTdlMWUxMDVjZWMzMWI5NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oY3JlYXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1
bmN0aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBc
CisgICAgbWFjcm8oanNvblN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1h
Y3JvKHN1YnN0cikgXAorICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAg
IG1hY3JvKGdldE93blByb3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093bikgXAorICAg
IG1hY3JvKGluZGV4T2YpIFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9s
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JI
ZWxwZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVy
cy5qcwppbmRleCAyNjNlNDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3N2VlMmY0Li5iMTk4
NmU4ODUzMGNlYzY2MmMxOWZmZWFlNzVhMzRiNzVlODZmZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAgLTUxLDMgKzUxLDQz
IEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAgICAgIEBwdXRCeVZh
bERpcmVjdChyZXN1bHQsIGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0KIH0KKworQGdsb2Jh
bFByaXZhdGUKK2Z1bmN0aW9uIHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvcikKK3sKKyAgICBsZXQg
d3JhcHBlciA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICB3cmFwcGVyLkBAaXRlcmF0b3Ig
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGl0ZXJhdG9yOyB9CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9
CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGluU2V0SXRlcmFibGUoc2V0KQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAgICBpZiAoIUBpc1NldChzZXQpKQorICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5TZXRJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tU2V0IG9i
amVjdC4iKTsKKworICAgIC8vIFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFy
YW50ZWVzIHRoYXQgdGhlIHN5bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQg
ZG9lcyBub3QgcHJvdGVjdAorICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZp
bmcgYmVlbiByZXBsYWNlZC4gRm9yIFNldHMsIGBAdmFsdWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBm
dW5jdGlvbiBvcmlnaW5hbGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgor
ICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0gc2V0LkB2YWx1ZXM7CisgICAgCisgICAgcmV0dXJu
IEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChzZXQpKTsKK30KKworQGds
b2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5NYXBJdGVyYWJsZShtYXApCit7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIAorICAgIGlmICghQGlzTWFwKG1hcCkpCisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiYnVpbHRpbk1hcEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1NYXAgb2JqZWN0LiIp
OworCisgICAgLy8gVXNpbmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMg
dGhhdCB0aGUgc3ltYm9sIGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5v
dCBwcm90ZWN0CisgICAgLy8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVu
IHJlcGxhY2VkLiBGb3IgTWFwcywgYEBlbnRyaWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlv
biBvcmlnaW5hbGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxl
dCBpdGVyYXRvckZ1bmN0aW9uID0gbWFwLkBlbnRyaWVzOworCisgICAgcmV0dXJuIEB3cmFwcGVk
SXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChtYXApKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFjNDdlZWVi
YTg2OTA4YjkwZjk5Y2IwY2U3NDZmMDE5YmQzZWQ3MjMuLmI4NjUzZTg2NTY5OTMxZmNiYjZlMmY0
YjQyNTQ4YzRiMGM2ZTEzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTIwLDYgKzEyMCw5IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICAgIHYoY3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlz
UmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAor
ICAgIHYoanNvblBhcnNlLCBudWxscHRyKSBcCisgICAgdihqc29uU3RyaW5naWZ5LCBudWxscHRy
KSBcCisgICAgdihTdHJpbmcsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19U
SU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggY2Iw
NjM0MDJiZjEyMmVhZTE2OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJkMWJjZTdlYWIwZmFmMTU0
ZTA4NzViN2MwYzc2ZGNkYmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0U291cmNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1ICsxMzUsMTggQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFsdWUoKQogICAgICAgICBp
bmplY3RlZFNjcmlwdC5jbGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAKLVN0cmluZyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNp
emVvZihJbmplY3RlZFNjcmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBlY3RlZDxKU09iamVjdCos
IE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGludCBpZCkKK0V4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNl
KHNvdXJjZSwgeyB9KTsKICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsVGhpcygpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhj
ZXB0aW9uOwotICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBt
X2Vudmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGV2YWx1YXRlSGFuZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNW
YWx1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAg
ICBhdXRvKiBmdW5jdGlvblZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihnbG9iYWxPYmplY3Qt
PmxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlSW5zcGVjdG9ySW5qZWN0
ZWRTY3JpcHQpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3Rl
ZChzY29wZS5leGNlcHRpb24oKSkpOworICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShm
dW5jdGlvblZhbHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKQEAgLTE2Niw3ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4
Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6
OmNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1Zh
bHVlLCBhcmdzKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdC5nZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVj
dGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAg
ICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
Y3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2Uo
KSwgZ2xvYmFsT2JqZWN0LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmpl
Y3RlZFNjcmlwdChnbG9iYWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewog
ICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NF
UlQoZXJyb3IpOwpAQCAtMTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVy
cm9yIHdoZW4gY3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+
dmFsdWUoKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNv
bHVtbik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNl
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9n
QWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5o
CmluZGV4IDFmNzQwYzQwNjg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJl
ZjRiYjRiZjIyZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUs
OCArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
aW50PiBtX3NjcmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRT
Y3JpcHRTb3VyY2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVj
dCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9l
bnZpcm9ubWVudDsKICAgICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0
SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJm
NDhmZDVlOWExMS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9k
dWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TQogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNv
bXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3Igd2hlbiBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDol
ZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhp
bmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1u
KTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICgh
aGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0
ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KHNvdXJjZSgpKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1Zh
bHVlKGluamVjdE1vZHVsZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkp
OwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFu
YWdlciwgaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmpl
Y3RNb2R1bGVSZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoZnVuY3Rpb24pOwogICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIs
NyArOTEsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNr
LnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1
bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBj
YWxsaW5nICdpbmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRm
OCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xv
YmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBX
VEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmgKaW5kZXggMjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5
NjkyYjc0NTZhMDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBJbmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2Ug
ewogcHVibGljOgogICAgIH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5j
dGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlcios
IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzCmluZGV4IDQ4YmFlZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhjNDkyNWY2YzQuLjAwODAz
NjY2MjhjNjZhNWJlMDQwMjRhYTU2MGUwZDgxMmMyNzg4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNyAr
MjcsMzggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2Ny
aXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3Jl
YXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEsIGtleTIsIHZhbHVlMiwg
Li4uICovKQoreworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAg
QHRocm93UmFuZ2VFcnJvcigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGVgIHJlcXVpcmVz
IHRoYXQgZWFjaCBrZXkgYXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2YWx1ZSwgcmVzdWx0aW5n
IGluIGFuIGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAgIGxldCBvYmplY3QgPSBA
T2JqZWN0LkBjcmVhdGUobnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7IGkgKz0gMikKKyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tpXV0gPSBhcmd1bWVudHNb
aSArIDFdOwogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNl
IEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9u
LXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVh
dGVBcnJheVdpdGhvdXRQcm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIsIC4uLiAqLykKK3sKKyAg
ICBsZXQgYXJyYXkgPSBuZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpOworICAgIGFycmF5Ll9f
cHJvdG9fXyA9IG51bGw7CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyArK2kpCisgICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFyZ3VtZW50c1tpXSk7Cisg
ICAgCisgICAgcmV0dXJuIGFycmF5OworfQogCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7
CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQo
SW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0
SWQpCit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9i
aik7CisgICAgcmV0dXJuIEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJpbmdEZXNj
cmlwdGlvbihvYmopCkBAIC05Myw2ICsxMTQsMTUgQEAgZnVuY3Rpb24gaXNQcmltaXRpdmVWYWx1
ZSh2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KKyAgICAKK2Z1bmN0aW9u
IGNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzT2Jq
ZWN0KSB7CisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBhcmd1bWVudHNPYmplY3QuQEBpdGVy
YXRvcjsKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxs
KGFyZ3VtZW50c09iamVjdCkpOworfQorCitmdW5jdGlvbiBtYXgoYSwgYikgeworICAgIHJldHVy
biBhID4gYiA/IGEgOiBiOworfQogCiAvLyAtLS0tLS0tCiAKQEAgLTEwMSwxMiArMTMxLDEyIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgY29uc3RydWN0
b3IoKQogICAgIHsKICAgICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOwotICAgICAg
ICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IHt9OwotICAgICAgICB0aGlzLl9pZFRvT2JqZWN0
R3JvdXBOYW1lID0ge307Ci0gICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OwotICAgICAg
ICB0aGlzLl9tb2R1bGVzID0ge307CisgICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0g
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVj
dEdyb3VwTmFtZSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRo
aXMuX29iamVjdEdyb3VwcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAg
ICAgIHRoaXMuX21vZHVsZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogICAg
ICAgICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVk
UmVzdWx0cyA9IFtdOworICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCk7CiAgICAgfQogCiAgICAgLy8gSW5qZWN0ZWRTY3JpcHQgQysrIEFQ
SQpAQCAtMTE1LDcgKzE0NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fd3JhcEFuZFNhdmVDYWxsKG9iamVj
dEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsICgpID0+
IHsKICAgICAgICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlz
RXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLmFwcGx5KHVuZGVmaW5lZCwg
YXJncyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlw
dEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVu
Y3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLkBh
cHBseShAdW5kZWZpbmVkLCBhcmdzKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMzYsMTYg
KzE2NiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEocHJvbWlzZU9iamVj
dCBpbnN0YW5jZW9mIFByb21pc2UpKSB7CisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5z
dGFuY2VvZiBAUHJvbWlzZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBn
aXZlbiBpZCBpcyBub3QgYSBQcm9taXNlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBsZXQgcmVzb2x2ZSA9ICh2YWx1ZSkgPT4gewotICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAg
ICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9i
amVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKLSAgICAgICAg
ICAgIH07CisgICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhv
dXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAg
ICAgICAgICAgICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2Jq
ZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAg
ICAgKTsKIAogICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpIHsKICAgICAgICAgICAgICAgICB0
aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKQEAgLTE1OSw3ICsxODksNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgcmVqZWN0ID0gKHJl
YXNvbikgPT4gewogICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUo
cmVhc29uLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lKSk7CiAgICAgICAgIH07Ci0gICAgICAgIHBy
b21pc2VPYmplY3QudGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAgICBwcm9taXNlT2JqZWN0
LkB0aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICAgfQogCiAgICAgZXZhbHVhdGVPbkNhbGxGcmFt
ZSh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVS
ZXN1bHQpCkBAIC0xODAsMTQgKzIxMCwxNCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CiAKLSAgICAg
ICAgbGV0IHJlc29sdmVkQXJncyA9IFtdOworICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gQGNy
ZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBpZiAoYXJncykgewogICAgICAg
ICAgICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwog
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewog
ICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tp
XSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIyNywxMCBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVv
ZiBmdW5jICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhw
cmVzc2lvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAg
ICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2
ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcp
Ci0gICAgICAgICAgICB9OworICAgICAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAg
ICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3Qs
IHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQ
cmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwog
ICAgICAgICB9CkBAIC0yMzMsMTMgKzI2MywyMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRp
ZXMsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAg
ICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5D
b2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1v
ZGUuQWxsUHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2Jq
ZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQ
cmV2aWV3fSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBj
b2xsZWN0aW9uTW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAg
ICAiZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZl
dGNoQ291bnQsCisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3
LAorICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2Jq
ZWN0SWQsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAg
ICAgICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2Rl
Lk93blByb3BlcnRpZXMgfCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0
ZXJQcm9wZXJ0aWVzOwotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJ
ZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZp
ZXcsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZX0pOworICAgICAgICByZXR1cm4gdGhpcy5f
Z2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAg
ICAgICAgICAgImZldGNoQ291bnQiLCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRl
UHJldmlldyIsIGdlbmVyYXRlUHJldmlldywKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNW
YWx1ZXMiLCB0cnVlLAorICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXRJbnRlcm5hbFByb3Bl
cnRpZXMob2JqZWN0SWQsIGdlbmVyYXRlUHJldmlldykKQEAgLTI1Niw3ICsyOTUsNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBkZXNj
cmlwdG9ycyA9IHRoaXMuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOwogICAg
ICAgICBpZiAoIWRlc2NyaXB0b3JzKQotICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAg
ICAgcmV0dXJuIEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBs
ZXQgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICszMTksMTMgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBsZXQgZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3Rl
ZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAg
ICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVu
dHJ5ID0gZW50cmllc1tpXTsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShlbnRyeS52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnkua2V5ID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRy
dWUpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNhbGxBcmd1
bWVudEpTT04pCkBAIC0zMDYsMTAgKzM0NiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxldCByZXN1
bHQgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGxldCBkZXB0aCA9
IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBJbmplY3RlZFNj
cmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIEBh
cnJheVB1c2gocmVzdWx0LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgr
KywgY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVy
OwogICAgICAgICB9IHdoaWxlIChjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMzI2LDcgKzM2Niw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgd3JhcEpTT05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBOYW1lLCBnZW5lcmF0ZVBy
ZXZpZXcpCiAgICAgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMud3Jh
cE9iamVjdChKU09OLnBhcnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRl
UHJldmlldyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBqc29uUGFyc2Uo
anNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAg
fSBjYXRjaCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpAQCAtMzQzLDEy
ICszODMsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAog
ICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIGNvbHVt
bnMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKyAgICAg
ICAgICAgIGNvbHVtbnMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKGNvbHVtbnMpOwog
CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFy
cmF5IikgewotICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVt
bk5hbWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNv
bHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBh
cnJheVB1c2goY29sdW1uTmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZh
bHNlLCB0cnVlLCBjb2x1bW5OYW1lcyk7CkBAIC0zOTYsNyArNDM2LDcgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFt
ZSA9PT0gImNvbnNvbGUiKSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsK
ICAgICAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRz
ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAg
bGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00Mjks
MTQgKzQ2OSwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RN
b2R1bGUobmFtZSwgc291cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVG
dW5jdGlvbiwgaG9zdCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxz
ZTsKIAotICAgICAgICBsZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZh
bHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5j
dGlvbiAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3Bl
Y3RvcjogYSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAg
IG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0s
IGhvc3QpOworICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiUmVtb3RlT2JqZWN0IiwgUmVtb3RlT2JqZWN0
LAorICAgICAgICAgICAgIkNvbW1hbmRMaW5lQVBJIiwgQ29tbWFuZExpbmVBUEksCisgICAgICAg
ICksIGhvc3QpOwogCiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSB0cnVlOwogICAgIH0K
QEAgLTQ3MCwxMCArNTEyLDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBn
cm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAg
aWYgKCFncm91cCkgewotICAgICAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICAg
ICAgZ3JvdXAgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVz
aChncm91cCwgaWQpOwogICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0g
PSBvYmplY3RHcm91cE5hbWU7CiAgICAgICAgIH0KIApAQCAtNDg4LDggKzUzMCw3IEBAIGxldCBJ
bmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZmFsbGJhY2tXcmFw
cGVyKG9iamVjdCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVz
dWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoInR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYg
KGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9i
amVjdDsKICAgICAgICAgZWxzZQpAQCAtNTE1LDcgKzU1Niw3IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4g
QHVuZGVmaW5lZDsKICAgICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVj
dEdyb3VwKQpAQCAtNTI0LDEwICs1NjUsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5k
ZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNo
IHsgfQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAg
ICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIndhc1Rocm93biIs
IHRydWUsCisgICAgICAgICAgICAicmVzdWx0IiwgcmVtb3RlT2JqZWN0LAorICAgICAgICApOwog
ICAgIH0KIAogICAgIF9ldmFsdWF0ZUFuZFdyYXAoZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC01NTIs
MTAgKzU5MywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICB0cnkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CiAK
LSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhy
b3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUo
ZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisg
ICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmpl
Y3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7
CiAKICAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgp
CiAgICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9z
YXZlZFJlc3VsdEluZGV4OwpAQCAtNTcxLDcgKzYxMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7
CiAgICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5k
TGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJh
bWUgPyBvYmplY3QgOiBudWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1
bmN0aW9uLkBjYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0K
IAogICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjA3
LDcgKzY0OCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgIC8vIEFsd2F5cyBpbmNsdWRlIF9fcHJvdG9fXyBhdCB0aGUgZW5kLCBidXQgb25seSBm
b3IgdGhlIGZpcnN0IGZldGNoLgogICAgICAgICBsZXQgaW5jbHVkZVByb3RvID0gIXN0YXJ0Owog
Ci0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQ
cm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+
IHsKICAgICAgICAgICAgIGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0
OwpAQCAtNjIyLDEzICs2NjMsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShkZXNjcmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0
ZVByZXZpZXcpOwogICAgICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2Ny
aXB0b3Iuc3ltYm9sLCBvYmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMu
cHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRl
c2NyaXB0b3IpOwogCiAgICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRl
c2NyaXB0b3JzLmxlbmd0aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3Rv
X18iKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLlN0b3A7CiAKICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMu
bGVuZ3RoID49IGNvdW50KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cCA6IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAg
IH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJz
QXNWYWx1ZXMiLCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsCisgICAgICAgICAgICAiaW5jbHVkZVBy
b3RvIiwgaW5jbHVkZVByb3RvLAorICAgICAgICApKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0
b3JzOwogICAgIH0KIApAQCAtNjM4LDEzICs2ODIsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsK
KyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgp
OwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ld
OwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFs
dWU6IHByb3BlcnR5LnZhbHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBwcm9wZXJ0
eS5uYW1lLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlLAorICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5w
dXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVz
Y3JpcHRvcik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0K
QEAgLTY1NCwxNSArNzAxLDE4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09
PSAicHJveHkiKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vz
c2VkID0gbmV3IFNldDsKKyAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAog
ICAgICAgICAvLyBIYW5kbGVkIGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5h
bWVQcm9jZXNzZWQuYWRkKCJfX3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRk
KCJfX3Byb3RvX18iKTsKIAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlw
dG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRp
dmVCaW5kaW5nR2V0dGVyKQogICAgICAgICB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsK
KyAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAidmFsdWUiLCBvYmplY3RbbmFtZV0sCisgICAgICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci53cml0YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLndyaXRhYmxlID0gdHJ1ZTsKQEAgLTY3OCwxMSArNzI4LDE1IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkK
ICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAg
ICAgICAgICAgICAgIC8vIFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBl
eGNlcHRpb25zIGNyZWF0ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBh
IHdyb25nIHRoaXMgb2JqZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52
YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJl
amVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7
fSk7CisgICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2Yg
QFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3
YXNUaHJvd246IHRydWV9OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUi
LCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAidmFsdWUiLCBlLAorICAgICAgICAgICAgICAg
ICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgIGlmIChpc093blByb3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0
b3IuaXNPd24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUg
Kzc2NCwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJv
cGVydHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9w
ZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5h
bWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLkNvbnRpbnVlOwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAK
ICAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAg
ICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDog
bnVsbDsKIAotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRv
ciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFs
bCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzgxLDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAg
ICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59
IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQi
KSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0Iikp
KSB7CisgICAgICAgICAgICAgICAgaWYgKEBTdHJpbmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0
aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFz
T3duKGRlc2NyaXB0b3IsICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFz
T3duKGRlc2NyaXB0b3IsICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxv
cGVycyBtYXkgY3JlYXRlIHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxp
ZW50OgogICAgICAgICAgICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJv
cGVydHkoeCwgInAiLCB7Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHgsICJwIikKICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0g
Y3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3du
UHJvcGVydHksIHRydWUpOwpAQCAtNzQ1LDEwICs3OTksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxz
ZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0
LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAm
JiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2Jq
ZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0
aCkgJiYgb2JqZWN0Lmxlbmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAg
Zm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG8pKSB7CisgICAgICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9
IEBPYmplY3QuQGdldFByb3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9w
ZXJ0eSA9IG8gPT09IG9iamVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNl
OwogCkBAIC03NjQsNyArODE4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFt
ZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAgICBsZXQg
cHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJv
cGVydHlOYW1lc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0
b3A7CkBAIC03NzYsMTQgKzgzMCwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykg
ewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKG8pOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJv
cGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5
KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93
blByb3BlcnR5U3ltYm9scyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJv
cGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFr
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKHNob3VsZEJyZWFrKQpAQCAtNzk2LDIzICs4NDgsMjggQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1ZGVQcm90bykgewog
ICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXykK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3RvX18iLCB2YWx1ZTog
b2JqZWN0Ll9fcHJvdG9fXywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgaXNP
d246IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsICJfX3Byb3Rv
X18iLAorICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0Ll9fcHJvdG9fXywK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiY29uZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJpc093biIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSBj
YXRjaCB7IH0KICAgICAgICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107
CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwog
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJp
ZGVzIFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgdmFs
dWUgb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGluU2V0SXRl
cmFibGUob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAg
ICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAg
ICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ2
YWx1ZSIsIHZhbHVlKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMu
bGVuZ3RoID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIzLDE2
ICs4ODAsMTggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAog
ICAgIF9nZXRNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7
Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9i
c2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJh
dG9yXS4KLSAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAg
ICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJsZShvYmplY3QpKSB7
CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRj
aFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGVudHJpZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5
UHVzaChlbnRyaWVzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICAgICAia2V5Iiwga2V5LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZhbHVlLAorICAgICAg
ICAgICAgKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3Ro
ID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MzUs
MTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAg
ICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9
PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0g
QHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1
bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90b3R5cGUuQGluZGV4
T2YuQGNhbGwodGhpcy5fc2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3Rp
bmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBl
eGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5NTMsMTYgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1J
bmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8
IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRp
ZXM6IDEgPDwgMSwgLy8gbmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUg
Y2hhaW4uCi0gICAgQWxsUHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVy
dGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rp
b25Nb2RlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIk93blByb3BlcnRp
ZXMiLCAxIDw8IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0
ZXJQcm9wZXJ0aWVzIiwgMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhl
IHByb3RvdHlwZSBjaGFpbi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAg
Ly8gYWxsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29u
dGludWUiKSwKLSAgICBTdG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAi
Q29udGludWUiLCBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICAiU3RvcCIs
IEBjcmVhdGVQcml2YXRlU3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQg
PSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIxLDcgQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9
IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1
ZShvYmplY3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRo
aXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAg
ICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3Qs
IEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcg
KzEwMzYsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0LmRl
c2NyaWJlKGUpOwogICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICAgICBh
bGVydChleC5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5lcnJvcihleC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9
ICI8ZmFpbGVkIHRvIGNvbnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3JpcHRpb24pOwpAQCAt
OTg2LDcgKzEwNDUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAK
ICAgICBzdGF0aWMgY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVBy
ZXZpZXcsIGNvbHVtbk5hbWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5l
dyBSZW1vdGVPYmplY3QodmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpOworICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVj
dCh2YWx1ZSwgQHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMp
OwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0
ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBp
ZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3Rv
dHlwZS5vYmplY3RJZCkKQEAgLTEwMTEsNyArMTA3MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBj
bGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9u
LgogICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09
ICJmdW5jdGlvbiIgJiYgaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0
eXBlb2YgdmFsdWUuc3BsaWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5n
dGgpKQogICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsg
fQogCkBAIC0xMDUwLDggKzExMDksOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAgICAgICAgIGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0
dXJuIGNsYXNzTmFtZTsKIAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBT
eW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3lt
Ym9sLnRvU3RyaW5nVGFnXTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYg
QEB0b1N0cmluZ1RhZyBpbiB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5AQHRvU3Ry
aW5nVGFnOwogCiAgICAgICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVj
ayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0g
ImZ1bmN0aW9uIikKQEAgLTEwNjksNiArMTEyOCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hv
dWxkIHVzZSBXZWJDb3JlIGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBu
b2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAg
ICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2Rl
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjAsMTcgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRpYWxQcmV2aWV3KCkK
ICAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50
eXBlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJp
bmcodGhpcy52YWx1ZSksCi0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsK
KyAgICAgICAgbGV0IHByZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICJ0eXBlIiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwg
dGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJs
b3NzbGVzcyIsIHRydWUsCisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkg
ewogICAgICAgICAgICAgcHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmll
dy5vdmVyZmxvdyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9
IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdp
dGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMTI2LDcg
KzExODYsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAgICAgIGlmICh0aGlz
LnNpemUpIHsKLSAgICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAg
ICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7
CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTE0MSwyMyAr
MTIwMSwyMyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
IGxldCBpc1RhYmxlUm93c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09IG51bGwgfHwgc2Vj
b25kTGV2ZWxLZXlzOwogICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3VudCA9IGZpcnN0TGV2
ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAgICBsZXQgcHJvcGVy
dGllc1RocmVzaG9sZCA9IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlzVGFibGVSb3dzUmVx
dWVzdCA/IDEwMDAgOiBNYXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKLSAgICAgICAg
ICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCgxMCwgZmly
c3RMZXZlbEtleXNDb3VudCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJl
c2hvbGQgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5
c0NvdW50KSwKKyAgICAgICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAw
MCA6IG1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRy
aWVzLgogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0
eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAg
ICAgICAgICAgdGhpcy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0g
ICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcu
cHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICAg
ICAgLy8gSW50ZXJuYWwgUHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBpbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcnMgPSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0
b3JzKG9iamVjdCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3JzKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGlu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RM
ZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0
LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJl
c2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKCJpbnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2OSw3ICsxMjI5LDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlw
dC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxl
Y3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRl
c2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZl
bEtleXMpOwotICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5j
bHVkZVByb3RvOiB0cnVlfSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJv
dG90eXBlKAorICAgICAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAor
ICAgICAgICAgICAgICAgICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAgICAgICAgKSk7CiAg
ICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICB9CkBAIC0xMTc3LDcgKzEyNDAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3Mg
UmVtb3RlT2JqZWN0CiAgICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0KIAotICAgIF9hcHBl
bmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVz
VGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9ID0g
e30pCisgICAgX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0
b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMs
IHtpbnRlcm5hbH0gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpKQogICAgIHsKICAg
ICAgICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2Fz
VGhyb3duKSB7CkBAIC0xMTkwLDkgKzEyNTMsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3Mg
UmVtb3RlT2JqZWN0CiAgICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAg
ICAgICAgLy8gTm9uIGJhc2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5n
LCBub24tZW51bWVyYWJsZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IudmFsdWUgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAg
ICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAg
ICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAg
ICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAg
ICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QK
KyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJy
YXkKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBA
UmVnRXhwKQogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVl
OwogICAgICAgICB9CkBAIC0xMjA5LDcgKzEyNzIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBz
aG93IHByb3BlcnRpZXMgaW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSB0aGVzZSBmaWx0ZXJzIGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChm
aXJzdExldmVsS2V5cyAmJiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAg
IGlmIChmaXJzdExldmVsS2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5jbHVkZXMuQGNhbGwo
Zmlyc3RMZXZlbEtleXMsIG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5k
UHJldmlldyhwcm9wZXJ0eSkgewpAQCAtMTIyNywyMCArMTI5MCwyOCBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAgICBwcmV2
aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHBy
ZXZpZXcucHJvcGVydGllcywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBHZXR0ZXIvc2V0dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3Ip
KSB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0pOworICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisg
ICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgImFj
Y2Vzc29yIiwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2
YWx1ZS4KICAgICAgICAgbGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYg
KHZhbHVlID09PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUs
IHR5cGU6ICJvYmplY3QiLCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIs
ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwiLAorICAgICAgICAg
ICAgICAgICJ2YWx1ZSIsICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAgICAgICAgIC8vIEln
bm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0eXBlID0gdHlwZW9m
IHZhbHVlOwpAQCAtMTI1OCw3ICsxMzI5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2FiYnJldmlhdGVTdHJp
bmcodmFsdWUsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3Nz
bGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFBy
ZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKX0pOwor
ICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0
eXBlIiwgdHlwZSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmluZ0Rlc2NyaXB0aW9u
KHZhbHVlKSwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU3ltYm9s
LgpAQCAtMTI2OCwxMSArMTM0MywxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAgICAgICAgICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0
cmluZyhzeW1ib2xTdHJpbmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIs
IHR5cGUsCisgICAgICAgICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5nLAorICAgICAgICAg
ICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9w
ZXJ0eSA9IHtuYW1lLCB0eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAg
ICAidHlwZSIsIHR5cGUsCisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3Rl
T2JqZWN0LnN1YnR5cGUodmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAg
IHByb3BlcnR5LnN1YnR5cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk1LDcgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9w
KCk7CisgICAgICAgICAgICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwoZW50cmllcyk7CiAg
ICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcu
bG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA1LDcgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcu
bG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9
IGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9
IEBBcnJheS5wcm90b3R5cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewog
ICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmll
d0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKICAgICAgICAg
ICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAgICAgIGlmICgia2V5
IiBpbiBlbnRyeSkgewpAQCAtMTMzNiw4ICsxNDE4LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVj
dCkKICAgICB7Ci0gICAgICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9i
amVjdCk7CisgICAgICAgIGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2Jq
ZWN0KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFs
KHZhbHVlLCBzZXQsIDEpOwogICAgIH0KQEAgLTEzNTcsMTEgKzE0MzksMTEgQEAgbGV0IFJlbW90
ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFz
KG9iamVjdCkpCisgICAgICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGtub3duT2Jq
ZWN0cy5hZGQob2JqZWN0KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQob2JqZWN0KTsKIAog
ICAgICAgICAvLyBBcnJheXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBvciBsZXNzIHNpbXBs
ZSBvYmplY3RzLgogICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9i
amVjdCk7CkBAIC0xMzgxLDEyICsxNDYzLDEyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBPYmpl
Y3RzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVy
dGllcy4KLSAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QpOworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3Qu
QGdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93blByb3BlcnR5TmFt
ZXMubGVuZ3RoID4gMykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAg
ICBsZXQgcHJvcGVydHlOYW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxl
dCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvciAmJiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2Jq
ZWN0SW50ZXJuYWwob2JqZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpA
QCAtMTQwNCw2NiArMTQ4Niw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgIGlmIChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBsZWZ0SGFsZiA9IG1h
eExlbmd0aCA+PiAxOwogICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxl
ZnRIYWxmIC0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIGxlZnRIYWxm
KSArICJcdTIwMjYiICsgc3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCBy
aWdodEhhbGYpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIGxlZnRIYWxm
KSArICJcdTIwMjYiICsgc3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwg
cmlnaHRIYWxmKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAs
IG1heExlbmd0aCkgKyAiXHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAs
IG1heExlbmd0aCkgKyAiXHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0tLS0tCiAKLUluamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQot
ewotICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3Rl
ZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5mdW5jdGlvbk5hbWUg
PSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6
IFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwg
Y29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0
aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhpcyA9IFJlbW90ZU9i
amVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKLSAgICB0aGlz
LmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07CitJbmplY3RlZFNj
cmlwdC5DYWxsRnJhbWVQcm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsKKyAgICBjb25zdHJ1
Y3RvcihvcmRpbmFsLCBjYWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxGcmFtZUlk
ID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNj
cmlwdElkfX1gOworICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlv
bk5hbWU7CisKKyAgICAgICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJv
dG90eXBlKAorICAgICAgICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291cmNl
SUQpLAorICAgICAgICAgICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAgICApOworCisgICAg
ICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Cisg
ICAgICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmpl
Y3QsICJiYWNrdHJhY2UiKTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1l
LmlzVGFpbERlbGV0ZWQ7CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5w
cm90b3R5cGUgPSB7CiAgICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAgICAg
ICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxldCBz
Y29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0gICAg
ICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94
eSA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2NvcGVDaGFpblBy
b3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihz
Y29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwogICAgICAg
ICByZXR1cm4gc2NvcGVDaGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xP
QkFMX1NDT1BFCi0gICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUi
LCAvLyBDTE9TVVJFX1NDT1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0
OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQot
ICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07CisgICAg
c3RhdGljIF9jcmVhdGVTY29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9jYXRpb259LCBn
cm91cElkKQorICAgIHsKKyAgICAgICAgbGV0IHNjb3BlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAib2JqZWN0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmpl
Y3QsIGdyb3VwSWQpLAorICAgICAgICAgICAgInR5cGUiLCBJbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCisgICAgICAgICk7CiAKLUluamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtu
YW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAg
ICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAg
ICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5
cGVdLAotICAgIH07CisgICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUubmFtZSA9
IG5hbWU7CiAKLSAgICBpZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisgICAg
ICAgIGlmIChsb2NhdGlvbikKKyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247
CiAKLSAgICBpZiAobG9jYXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247
CisgICAgICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBzY29wZS5l
bXB0eSA9IHRydWU7CiAKLSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBz
Y29wZS5lbXB0eSA9IHRydWU7CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9OwogCi0g
ICAgcmV0dXJuIHNjb3BlOwotfQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3Bl
VHlwZU5hbWVzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgMCwgImdsb2Jh
bCIsIC8vIEdMT0JBTF9TQ09QRQorICAgIDEsICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQorICAgIDIs
ICJjbG9zdXJlIiwgLy8gQ0xPU1VSRV9TQ09QRQorICAgIDMsICJjYXRjaCIsIC8vIENBVENIX1ND
T1BFCisgICAgNCwgImZ1bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKKyAgICA1
LCAiZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1F
TlQKKyAgICA2LCAibmVzdGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCispOwog
CiAvLyAtLS0tLS0tCiAKQEAgLTE0NzcsOSArMTU2NSw5IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5l
QVBJKGNhbGxGcmFtZSkKICAgICAgICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKSB7IHJldHVybiBv
cmlnaW5hbFZhbHVlOyB9OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRl
cl9fKCIkIiArIGtleSwgdmFsdWUpOworICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0
aGlzLCAiJCIgKyBrZXksIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJnZXQiLCB2YWx1
ZSkpOwogICAgICAgICBpZiAoc2F2ZWRSZXN1bHRBbGlhcyAmJiBzYXZlZFJlc3VsdEFsaWFzICE9
PSAiJCIpCi0gICAgICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oc2F2ZWRSZXN1bHRBbGlh
cyArIGtleSwgdmFsdWUpOworICAgICAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhp
cywgc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
ImdldCIsIHZhbHVlKSk7CiAgICAgfTsKIAogICAgIGlmICgiX2xhc3RSZXN1bHQiIGluIGluamVj
dGVkU2NyaXB0KQpAQCAtMTUwMiw0OCArMTU5MCw0OCBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQ
SShjYWxsRnJhbWUpCiAgICAgICAgIHRoaXNbbmFtZV0gPSBDb21tYW5kTGluZUFQSS5tZXRob2Rz
W25hbWVdOwogfQogCi1Db21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CitDb21tYW5kTGluZUFQ
SS5nZXR0ZXJzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExp
bmVBUEkubWV0aG9kcyA9IHt9OworQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9IEBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9
IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBP
YmplY3QudmFsdWVzKG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0g
PSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVy
biBAT2JqZWN0LkB2YWx1ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SG9sZGVycyguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVj
dHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFu
Y2VzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5jcmVhdGVJ
dGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0
dXJuIGluamVjdGVkU2NyaXB0Lmluc3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siYXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmFzc2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siY2xlYXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuY2xlYXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImNvdW50Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmNvdW50KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJjb3VudFJlc2V0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmNvdW50UmVzZXQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImRlYnVnIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmRlYnVnKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJkaXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZGlyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGly
eG1sKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcigu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29s
bGFwc2VkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVu
ZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5n
cm91cEVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZv
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtl
SGVhcFNuYXBzaG90KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0
aW1lIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRpbWUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZUVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1l
TG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZVN0YW1wKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFj
ZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFy
Z3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0
aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuY291bnQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnRSZXNldCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5kaXJ4bWwoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50
cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmNy
ZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlw
ZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJp
bmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmluZm8oLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uY3JlYXRlSXRlcmFi
bGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZy
b21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNv
cmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
cmVjb3JkKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4u
LmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFBy
b3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGltZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1l
RW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uY3JlYXRlSXRlcmFibGVX
aXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZy
b21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJu
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndh
cm4oLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVu
dHMpKTsgfTsKIAogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAg
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0
dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsK
IAogcmV0dXJuIGluamVjdGVkU2NyaXB0OwotfSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNmZjZmOTc2YzdlMzlkOTk5NTgu
LmJjMjM3YTFmNGY0MGI2NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZhZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIyMSw3ICsyMjIxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IudHlwZSgpICE9IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIs
IGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBl
Y3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpLCAiIG9uIGxp
bmUgIiwgZXJyb3IubGluZSgpLCAiLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5NWM0NTRkOTllZTE5ZjEzZTc5
Yy4uZmZjOWM5YzIzMzFkYWUzZDZhNjViZGVmYWM1MGJiMWEwM2YzNjcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJB
cnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgogCkBAIC01Nyw2ICs1OCw4IEBA
IHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29y
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNw
ZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgSlNDX0JV
SUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzQXJy
YXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworCisgICAgSlNDX0JVSUxUSU5f
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmZyb21Qcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAppbmRleCA1YTNhYWE5MWU2MjcyOGMyY2E5ZmFlZjU2MWQyZmFiZWRl
NzA1OTVlLi41MTVjODVmZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdmOGY2YWJmOTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0x
MzAsNyArMTMwLDExIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5kZXhPZlByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhPZlB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1By
aXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkua2V5c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnBvcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkucG9wUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFt
ZSgpLCBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAKICAgICBKU09iamVj
dCogdW5zY29wYWJsZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5u
dWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGY3ZDI3Yjk5NThiZGU2OGNjNTZj
YjE5N2IwZDIxMjVkNWIwMmUxNDcuLjAyYjliZWQ2ODI4MDAzMjg0OTQ4MGQzZDlhNWMwODAwM2Iz
YThkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShD
SEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhh
c093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNy
ZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNv
blBhcnNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnkp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxlU3VwZXJTYW1wbGVyKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVTdXBlclNhbXBsZXIpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpvYik7CkBAIC0zNjEsNiAr
MzYzLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1i
b2woKS5nZXQoKSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBqc29uID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxP
YmplY3QsIGpzb24pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdp
ZnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gcmVzdWx0ID0g
SlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIHJlc3VsdCkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihhc3NlcnRDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTA3NCw5ICsxMDkzLDExIEBAIGNhcGl0YWxOYW1lICMj
IENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNh
cGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21p
c2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX3N0cmluZ0NvbnN0cnVj
dG9yLnNldCh2bSwgdGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5z
ZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNl
KV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Ci0gICAgCisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6U3RyaW5nKV0uc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2
YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlh
bGl6ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1
Myw2ICsxNTc0LDE0IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMg
Q29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAg
IH0pOwogCisgICAgLy8gSlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBhcnNlKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDEsIFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAgICAgICAgfSk7CisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6anNvblN0cmluZ2lmeSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNv
blN0cmluZ2lmeSkpOworICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwogICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmNyZWF0ZVJlbW90ZUZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygp
LCBjcmVhdGVSZW1vdGVGdW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3Ip
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nQ29uc3RydWN0
b3IpOwogCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEw
YWFlZDM0Nzg3YWY2NmE0ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIuLmU5NDg2MDNlMmNlY2EyOTU1
YTJlZDI3MTU0YmIzYjAxNDk3MWFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTI0LDYgKzEyNCw3IEBAIGNsYXNzIFNldEl0ZXJh
dG9yUHJvdG90eXBlOwogY2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNs
YXNzIFNvdXJjZU9yaWdpbjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0
cnVjdCBBY3RpdmF0aW9uU3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAg
ICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9y
OwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1f
aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0
cnVjdG9yPiBtX3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTg2ZGU5
Nzc2NGVjNGY1ZDE3N2ZiMWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0ZDU5NGY0ZjcyZmRl
N2ZkOTM2ZWE1MTQzMGNiYTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAg
ICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1l
KCkuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmll
c1ByaXZhdGVOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNmOWUxNzhmYjFjNzc3
MzhhYTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2EzOTg3MDQxNWVlZjM3
Y2JlMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
T2JqCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUo
KSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
dE93blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlO
YW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lKCksIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
a2V5c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmRlZmluZVByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQ
cm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9yQ3JlYXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMik7Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQorICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisK
KyAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duLCBvYmplY3RD
b25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDIpOworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25Qcml2YXRlTmFt
ZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8gRVMgMTkuMS4xLjEg
T2JqZWN0KFt2YWx1ZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcAppbmRleCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZkNWQ0YTk1ZGQ0ODcx
Li5mN2Y5YzE0MThiZjdjY2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDcg
QEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNT
ZXRWYWx1ZXNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVl
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1Ymxp
Y05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRI
T1VUX1RSQU5TSVRJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDIxMzVhMGZlNWI2NDVmNzRmNThkODhmYjQ1MjA4ODFi
NDE1MzZjNTQuLmUzYzA3MDk1YjUwZGNhNmVlY2FmNWI0ZGNjMmE5ZGJhNzA5YTA4ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApA
QCAtMTY0LDYgKzE2NCw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRl
cmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAi
W1N5bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNp
Yyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJz
dHJQcml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5lbmRzV2l0aFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAv
LyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3Ry
dWN0b3IgaGFzIGJlZW4gYnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0Yjdl
Y2ViYmU4M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi40MGQ3ODYyODQxNjUyY2IwY2RhYzQ1
MjUyOTAzOWZlOWY3MjBkYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEy
OSw2IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09S
S19ERUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxF
U19JRl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgK
LWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQ
RU5ERU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBF
TkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBl
Y2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1B
TkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5w
bCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0p
Ci1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAt
MjM1Miw2ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VC
Q09SRV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2Rv
bS9UZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1ND
UklQVFMKQEAgLTIzOTUsOCArMjM4NCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9X
ZWJDb3JlSlNCdWlsdGlucy5jcHAKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
V2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5jcHAKLSAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRpbnMuaAotICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmgpCispCiAKIEFERF9TT1VSQ0VfV0VC
Q09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9odG1sL0hUTUxUcmVlQnVp
bGRlci5jcHAgTWF0aE1MTmFtZXMuY3BwKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGEzZDY4YWRmZTEzMWM0ODdjNzljYzRjMmFm
MWM4YTg2ZTcwODEyYjkuLmY1Njc3ZTJlNDUyNTM1NjJiZDJmMGM5MDJkNTYyNzZlNjBmNzMxZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CkBAIC04LDcgKzgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NTdHlsZURlY2xhcmF0aW9uK1Byb3BlcnR5TmFtZXMuaQogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRh
LmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlQnVpbHRpbnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRp
bnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NQ2xp
ZW50SXNvU3Vic3BhY2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ2NjNj
MzIzNjg0ZDFjMGY4ODBmYjdjZjk2MWZjNmZhNDIxNmU0NmMuLmIxMjNhYmY5M2UyNzU4ZDIxMTQ4
YzEwMWM5ZDE3MzRkMDQ5NmY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MjIxOSwxNiArMjIxOSw2IEBAIGlmbmVxICgkKE5PX1NVUFBMRU1FTlRBTF9GSUxFUyksMSkKIC1p
bmNsdWRlICQoSlNfRE9NX0hFQURFUlM6Lmg9LmRlcCkKIGVuZGlmCiAKLSMgSW5zcGVjdG9yIGlu
dGVyZmFjZXMKLQotYWxsIDogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCi1Db21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oIDogJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanMKLQllY2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRf
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWlu
LnB5IDwgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMg
Pj4gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0JJChQRVJMKSAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMg
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmgKLQkkKERFTEVURSkgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCi0KICMg
V2ViQ29yZSBKUyBCdWlsdGlucwogCiBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCkBAIC0y
MjUyLDYgKzIyNDIsNyBAQCBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChXZWJD
b3JlKS9kb20vVGV4dERlY29kZXJTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHRF
bmNvZGVyU3RyZWFtLmpzIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Z0ludGVybmFscy5qcyBcCisgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMgXAogIwogCiBCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDc1N2YzMjYxN2Y1N2QzOTQzNTMyMDE0ZDhmYjBiMDFkMzA1YjJh
YWIuLjllYWVhZjNjM2M2MjY2ZDgxMGQ4MjhjY2VjOWQ5ODZiOTEwNDgxZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMjA2OSw2ICsyMDY5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3Bl
cnR5TmFtZXMuaAogICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NWYWx1ZUtl
eXdvcmRzLmgKKyAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2VCdWlsdGlucy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0V2ZW50SW50ZXJmYWNlcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0hUTUxFbGVtZW50VHlwZUhlbHBlcnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQwOTUzNDZmN2FiYzg3NWRjNjVhMThh
N2JhYTYzZmZlNDM1YTNlZDQuLmQ3YjM3YjM4M2EwZGU3NjJlM2RiNGZlZjJhY2Q5ZGIwMjE2OTkw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg5OSw2ICs4OTksNyBAQAogCQkyRTMwMUJFODI3NDU5NDcyMDBDMDU2NEYgLyog
Q29tcGlsZWRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ0NTEwNzcyMDJDN0UwMTAwNjU3RDMzIC8qIENvbXBpbGVkU2VsZWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRTM3REZE
QjEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTM3REZEODEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmgg
Ki87IH07CiAJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUzN0UwMDQxMkRCQzVBNDAw
QTZCMjMzIC8qIEpTRE9NVVJMLmggKi87IH07CisJCTJFM0FFRkZCMjgwOUYxMUQwMDM3MUEyNSAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyog
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLzsgfTsKIAkJMkU0MzQ2NDkw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzNzBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRTQzNDY0QjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuaCAqLzsg
fTsKQEAgLTM1MTcsNyArMzUxOCw2IEBACiAJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBS
ZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNl
VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE1ODFFRDEzMUZCMjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODFFRDEwMUZCMjg4
QzgwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKIAkJQTU4NDBFMjUxODdC
OEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NDBFMjMxODdCOEFDMjAwODQzQjEwIC8q
IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oICovOyB9OwotCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovOyB9OwogCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNC
MTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSU1vZHVsZS5oICovOyB9OwogCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggKi87IH07CiAJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGlu
ZUFQSUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODRGRTMyMTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCAqLzsgfTsK
QEAgLTgyMDUsNiArODIwNSw4IEBACiAJCTJFMzdERkQ5MTJEQkFGQjgwMEE2QjIzMyAvKiBET01V
UkwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVVSTC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFMzdFMDAzMTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVVSTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMzdFMDA0MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RP
TVVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVVSTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMkUzQUVGRkQyODA5RjIx
MTAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlQnVp
bHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRTQzNDYz
MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJF
NDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0
NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk0MSw3ICsxMzk0
Myw2IEBACiAJCUE1ODFFRDEyMUZCMjg4QzkwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIxODdCOEFDMjAw
ODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluamVjdGVk
U2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTg0RkUyNTE4NjM3
REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1ODRGRTI5MTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODRGRTJBMTg2
Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjA0MjksNyArMjA0MzAsNiBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBE
NThGNzggLyogSW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaCAqLywKIAkJCQlBNTg0RkUzOTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5k
TGluZUFQSUhvc3QuY3BwICovLAogCQkJCUE1ODRGRTNBMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0Nv
bW1hbmRMaW5lQVBJSG9zdC5oICovLAogCQkJCTkxNzVDRTU5MjFFMjgxRUMwMERGMkMyOCAvKiBK
U0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCkBAIC0yMzU4Nyw2ICsy
MzU4Nyw4IEBACiAJCQkJOTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAgKi8sCiAJCQkJOTkwOEIwRjUxQkNBRDA3RDAwRUQwRjY1
IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MDZGM0ZC
MTE5ODMwN0QwMDlENTlENiAvKiBDb2xvckRhdGEuY3BwICovLAorCQkJCTJFM0FFRkZEMjgwOUYy
MTEwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcCAqLywK
KwkJCQkyRTNBRUZGOTI4MDlGMTE5MDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VCdWlsdGlucy5oICovLAogCQkJCTk5MDhCMEY2MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBG
NjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovLAogCQkJCUU0MUVBMDM4MTE5
ODM2REIwMDcxMEJDNSAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLywKQEAgLTM0MDg1LDcgKzM0
MDg3LDcgQEAKIAkJCQkyNkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29t
bWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyQzE4NjM4NzBGMDA4
NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1ODRG
RTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEyMDk5REYw
MjcwMDkwRDc4MSAvKiBDb21tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzlDNjlEMDI4MTBE
MTFEMDBFNjlCQUQgLyogQ29tbW9uQXRvbVN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
RTY2NEZDMUU3MzcwMzMwMDc2NTUzNiAvKiBDb21tb25DcnlwdG9ERVJVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5jcHAKaW5kZXggZDc3YzczZDhhZTQ5NTAxNjc1MjgyMjY0ZDBkMzZkNjVjY2U3NDJm
Zi4uZDQxZmNkMzVjYTllM2Y1MDNjZDQ3Mzg5NDViNDliNzlmZGVhMzM3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElN
b2R1bGUuaCIKIAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgiCiAjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDgs
OSArNDcsMTQgQEAgQ29tbWFuZExpbmVBUElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkK
IHsKIH0KIAotU3RyaW5nIENvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UoKSBjb25zdAorSlNG
dW5jdGlvbiogQ29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKENvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlX2pzLCBzaXplb2YoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpKTsKKyAgICBpZiAo
YXV0byogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEds
b2JhbE9iamVjdCkpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJ1aWx0aW5JbnRlcm5h
bEZ1bmN0aW9ucygpLmNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlKCkubV9pbmplY3RNb2R1bGVG
dW5jdGlvbi5nZXQoKTsKKworICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGdldCBgaW5q
ZWN0TW9kdWxlYCBmdW5jdGlvbiBmcm9tIGBDb21tYW5kTGluZUFQSU1vZHVsZWAgZm9yIG5vbi1g
SlNET01HbG9iYWxPYmplY3RgLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWUgQ29tbWFuZExpbmVBUElNb2R1bGU6
Omhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaAppbmRleCAyNzcxNmZjYTY3YTliYThj
MmRlYmRlZGFjZjdmYzZiNDJkMmRmNzRiLi4wYTUwZDRhNWYzMzNkNGY0OGQ1ZDBjMTc2ZjE5NTBi
ZGFkN2I5N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoK
ICAgICBDb21tYW5kTGluZUFQSU1vZHVsZSgpOwogCi0gICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEpTQzo6SlNGdW5jdGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTQzo6SlNWYWx1ZSBob3N0
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanMKaW5kZXggZjUxZTM1MTljY2IxNzk2MDkwYzMyNzRkNWIwYzM3YjI1
OWQwZTNlYS4uODE5ZmE0N2U5ZDEwZDBmNGM3ZTcxZjkxOTRiMGJmNGVmNzY2M2I5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDExICsyNiwxMiBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyMgc291cmNl
VVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKy8vIEBp
bnRlcm5hbAogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCwge1JlbW90ZU9iamVjdCwg
Q29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpIHsKK2Z1bmN0aW9uIGluamVjdE1v
ZHVsZShJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRT
Y3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQsIHtSZW1vdGVPYmplY3QsIENvbW1hbmRMaW5lQVBJfSwg
Q29tbWFuZExpbmVBUElIb3N0KQorewogCi0vLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE1MjI5ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBi
dWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZGVuIGJ1aWx0LWlucwor
Ly8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hvdWxkIHVz
ZSBXZWJDb3JlIGJ1aWx0LWlucy4KIAogaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3RPYmplY3QgPSBm
dW5jdGlvbihvYmplY3QpIHsKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkKQEAgLTcw
LDEyICs3MSwxMiBAQCBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJjb3B5Il0gPSBmdW5jdGlvbihv
YmplY3QpIHsKICAgICBlbHNlIGlmIChpbmplY3RlZFNjcmlwdC5pc1ByaW1pdGl2ZVZhbHVlKG9i
amVjdCkpCiAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgIGVsc2UgaWYgKHR5cGVv
ZiBvYmplY3QgPT09ICJzeW1ib2wiKQotICAgICAgICBzdHJpbmcgPSBpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuU3RyaW5nKG9iamVjdCk7CisgICAgICAgIHN0cmluZyA9IEBTdHJpbmcob2JqZWN0KTsK
ICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAiZnVuY3Rpb24iKQogICAgICAgICBzdHJp
bmcgPSAiIiArIG9iamVjdDsKICAgICBlbHNlIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IHN0cmluZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5KU09OLnN0cmluZ2lmeShvYmplY3QsIG51
bGwsICIgICIpOworICAgICAgICAgICAgc3RyaW5nID0gQGpzb25TdHJpbmdpZnkob2JqZWN0LCAi
ICAiKTsKICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICBzdHJpbmcgPSAiIiArIG9iamVj
dDsKICAgICAgICAgfQpAQCAtODksMjMgKzkwLDI4IEBAIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImdldEV2ZW50TGlzdGVuZXJzIl0gPSBmdW5jdGlvbih0YXJnZXQpIHsKIH07CiAKIGZ1bmN0aW9u
IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpIHsKLSAgICBpZiAodHlwZXMgPT09IHVuZGVmaW5l
ZCkKLSAgICAgICAgdHlwZXMgPSBbIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwg
ImFib3J0IiwgImJsdXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRh
dGlvbiIsICJlcnJvciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3Jv
bGwiLCAic2VhcmNoIiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIl07CisgICAgaWYgKHR5
cGVzID09PSBAdW5kZWZpbmVkKQorICAgICAgICB0eXBlcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQ
cm90b3R5cGUoIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImFib3J0IiwgImJs
dXIiLCAiY2hhbmdlIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIsICJlcnJv
ciIsICJmb2N1cyIsICJsb2FkIiwgInJlc2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNo
IiwgInNlbGVjdCIsICJzdWJtaXQiLCAidW5sb2FkIik7CiAgICAgZWxzZSBpZiAodHlwZW9mIHR5
cGVzID09PSAic3RyaW5nIikKLSAgICAgICAgdHlwZXMgPSBbdHlwZXNdOworICAgICAgICB0eXBl
cyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUodHlwZXMpOworCisgICAgbGV0IHJlc3Vs
dCA9IG5ldyBAU2V0OworICAgIGZ1bmN0aW9uIGFkZFR5cGVzVG9SZXN1bHQoKSB7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
cmVzdWx0LkBhZGQoYXJndW1lbnRzW2ldKTsKKyAgICB9CiAKLSAgICBsZXQgcmVzdWx0ID0gW107
CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewogICAgICAgICBp
ZiAodHlwZXNbaV0gPT09ICJtb3VzZSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgiY2xpY2si
LCAiZGJsY2xpY2siLCAibW91c2Vkb3duIiwgIm1vdXNlbW92ZSIsICJtb3VzZW91dCIsICJtb3Vz
ZW92ZXIiLCAibW91c2V1cCIsICJtb3VzZXdoZWVsIik7CisgICAgICAgICAgICBhZGRUeXBlc1Rv
UmVzdWx0KCJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1v
dXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1vdXNld2hlZWwiKTsKICAgICAgICAg
ZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImtl
eWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBh
ZGRUeXBlc1RvUmVzdWx0KCJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgInRleHRJbnB1
dCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAgICAgICAgICAg
IHJlc3VsdC5wdXNoKCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUiLCAidG91
Y2hzdGFydCIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgidG91Y2hjYW5jZWwiLCAi
dG91Y2hlbmQiLCAidG91Y2htb3ZlIiwgInRvdWNoc3RhcnQiKTsKICAgICAgICAgZWxzZSBpZiAo
dHlwZXNbaV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJibHVyIiwg
ImNoYW5nZSIsICJmb2N1cyIsICJyZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIs
ICJzdWJtaXQiLCAiem9vbSIpOworICAgICAgICAgICAgYWRkVHlwZXNUb1Jlc3VsdCgiYmx1ciIs
ICJjaGFuZ2UiLCAiZm9jdXMiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWxlY3Qi
LCAic3VibWl0IiwgInpvb20iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LnB1
c2godHlwZXNbaV0pOworICAgICAgICAgICAgcmVzdWx0LkBhZGQodHlwZXNbaV0pOwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTE4LDE5ICsxMjQsMTcgQEAgZnVuY3Rpb24gbG9n
RXZlbnQoZXZlbnQpCiBDb21tYW5kTGluZUFQSS5tZXRob2RzWyJtb25pdG9yRXZlbnRzIl0gPSBm
dW5jdGlvbihvYmplY3QsIHR5cGVzKSB7CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRF
dmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0
dXJuOwotICAgIHR5cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBvYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgb2JqZWN0
LmFkZEV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChs
ZXQgdHlwZSBvZiBAYnVpbHRpblNldEl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMp
KSkgeworICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwg
ZmFsc2UpOworICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsb2dFdmVudCwg
ZmFsc2UpOwogICAgIH0KIH07CiAKIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInVubW9uaXRvckV2
ZW50cyJdID0gZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykgewogICAgIGlmICghb2JqZWN0IHx8ICFv
YmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAg
ICAgICAgIHJldHVybjsKLSAgICB0eXBlcyA9IG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwot
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIG9iamVj
dC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGZv
ciAobGV0IHR5cGUgb2YgQGJ1aWx0aW5TZXRJdGVyYWJsZShub3JtYWxpemVFdmVudFR5cGVzKHR5
cGVzKSkpCisgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50
LCBmYWxzZSk7CiB9OwogCiBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGlu
c3BlY3RlZEdsb2JhbE9iamVjdC5Ob2RlKSB7CkBAIC0xNTgsOSArMTYyLDEwIEBAIGlmIChpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUp
IHsKICAgICB9OwogCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJCQiXSA9IGZ1bmN0aW9u
KHNlbGVjdG9yLCBzdGFydCkgeworICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBwcm90b3R5cGVs
ZXNzIGFycmF5IGhlcmUgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJlc3VsdHMgYXMg
YSBub3JtYWwgQXJyYXkuCiAgICAgICAgIGlmIChjYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0
KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShz
dGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuQXJyYXkuZnJvbShpbnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEBBcnJheS5A
ZnJvbShzdGFydC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CisgICAgICAgIHJldHVybiBA
QXJyYXkuQGZyb20oaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3IpKTsKICAgICB9OwogCiAgICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siJHgi
XSA9IGZ1bmN0aW9uKHhwYXRoLCBjb250ZXh0KSB7CkBAIC0xNzUsMTAgKzE4MCwxMSBAQCBpZiAo
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9iamVjdC5O
b2RlKSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKICAgICAgICAg
fQogCi0gICAgICAgIGxldCBub2RlcyA9IFtdOworICAgICAgICAvLyBEb24ndCByZXR1cm4gYSBw
cm90b3R5cGVsZXNzIGFycmF5IGhlcmUgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhlIHJl
c3VsdHMgYXMgYSBub3JtYWwgQXJyYXkuCisgICAgICAgIGxldCBub2RlcyA9IG5ldyBAQXJyYXk7
CiAgICAgICAgIGxldCBub2RlID0gbnVsbDsKICAgICAgICAgd2hpbGUgKG5vZGUgPSByZXN1bHQu
aXRlcmF0ZU5leHQoKSkKLSAgICAgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CisgICAgICAgICAg
ICBAYXJyYXlQdXNoKG5vZGVzLCBub2RlKTsKICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgIH07
CiB9CkBAIC0xODYsNCArMTkyLDQgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVu
dCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogZm9yIChsZXQgbmFtZSBpbiBDb21t
YW5kTGluZUFQSS5tZXRob2RzKQogICAgIENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9T
dHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtD
b21tYW5kIExpbmUgQVBJXSB9IjsgfTsKIAotfSkKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZWJiZGU4MDQzZmMwYTNm
NjU0ZDlhZTM5Yjg5NjFkNmE4YWQyZWRlLi43MDQ3ZjA4NGY0OGYxMjc3Y2Y4MjM5YzBiNTlmMzg0
YWRjNTNlMzE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjItMDUtMDYgIFBhdHJpY2sgQW5n
bGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhcnNlIElu
amVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVz
ZXItb3ZlcnJpZGVuIEpTQyBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJv
dXNzby4KKworICAgICAgICAqIGluc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZh
YmxlLmh0bWw6CisgICAgICAgIC0gQWRkIHNldmVyYWwgbW9yZSB0ZXN0IGNhc2VzIGZvciBvdmVy
cmlkaW5nIGZ1bmN0aW9ucyBhbmQgZW50aXJlIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy5odG1s
OgorICAgICAgICAtIENoYW5nZWQgdG8gdGVzdCBhIGN1c3RvbSBpbnRlcm5hbCBzY3JpcHQgc25p
cHBldCBzaW5jZSB0aGUgaW5zcGVjdG9yIGluamVjdGVkIHNjcmlwdCBpcyBub3cgYSBidWlsdGlu
LgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sOgorICAg
ICAgICAtIFRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IChhbmQgbW9kdWxlcykgd2lsbCBu
byBsb25nZXIgYXBwZWFyIGFzIHNjcmlwdHMgaW4gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAq
IGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0OgorICAg
ICAgICAtIEluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgbGluZSBudW1iZXJzIGFyZSBkaWZmZXJl
bnQgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMsIHNvIGZpbHRlciB0aG9zZSBvdXQu
CisKIDIwMjItMDUtMTEgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVi
YXNlbGluZSBXSzEgbm90aWZpY2F0aW9ucyB0ZXN0IGV4cGVjdGF0aW9ucyBhZnRlciByMjkzOTIx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWlu
dGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dAppbmRleCAxZWIxNTM5
ODgyNDA2YmE5ZmY0ZjRkMzNhNjVmZjUyN2RmZDg1YzhkLi41OTM3ZmFlOTdmODk1ODg0N2Y4OGZm
NDY3ZWJlMTViODFlMjg3ZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBl
Y3RlZC50eHQKQEAgLTEsNjYgKzEsNjAgQEAKLUNPTlNPTEUgTUVTU0FHRTogW29iamVjdCBXaW5k
b3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNPTlNPTEUgTUVTU0FHRTog
c3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgV2luZG93XQotQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IGNvbnNvbGVdCi1DT05TT0xFIE1FU1NBR0U6IHN0cmluZwotQ2hlY2tpbmcgd2hl
dGhlciBjb25zb2xlLmxvZyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy4KK0NoZWNr
aW5nIHdoZXRoZXIgaW5qZWN0ZWQgKGludGVybmFsKSBzY3JpcHRzIGNhbiBiZSBzdGVwcGVkIGlu
dG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRpbmdzLnBhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuc2V0
UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKIC0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KIC0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxl
ZAotRVhQUkVTU0lPTjogc2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBz
ZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwg
cmVzdW1lCiBQQVVTRUQgKGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29s
ZUxvZzo4OjUKLSAgICAgIDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9j
YXRpb24uanMiPjwvc2NyaXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5j
dGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAg
ICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5s
b2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQQVVT
RSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAgICAyMworICAg
ICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAg
fGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAg
MjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDMpOwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25z
b2xlTG9nOjk6NQotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRy
eUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAg
IHxjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29s
ZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0K
K1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAgICAyNCAgICBm
dW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7
CisgLT4gIDI2ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlD
b25zb2xlTG9nOjEwOjUKLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewot
ICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotIC0+ICAgOSAgICAgICAgfGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAg
ICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9Ci0gICAgIDEyCitQQVVTRSBB
VCBlbnRyeUludGVybmFsT2JqZWN0OjI4OjUKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRl
cm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAtPiAgMjcgICAgICAgIHxpbnRlcm5hbE9iamVjdC50
ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkg
ICAgfQorICAgICAzMAogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxv
ZzoxMTo1Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUu
bG9nKHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAtPiAg
MTAgICAgICAgIHxjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIK
LSAgICAgMTMgICAgLy8gLS0tLS0tLS0tCitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI5
OjUKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgLT4g
IDI4ICAgICAgICB8aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQorICAgICAz
MAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBl
bnRyeUNvbnNvbGVMb2c6MTI6MgotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsK
LSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29u
c29sZS5sb2coInN0cmluZyIpOwotIC0+ICAxMSAgICB9fAotICAgICAxMgotICAgICAxMyAgICAv
LyAtLS0tLS0tLS0KLSAgICAgMTQKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6MzA6Mgor
ICAgICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGlu
dGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0
KDMpOworIC0+ICAyOSAgICB9fAorICAgICAzMAorICAgICAzMSAgICAvLyAtLS0tLS0tLS0KKyAg
ICAgMzIKIAogQUNUSU9OOiByZXN1bWUKIFJFU1VNRUQKQEAgLTY4LDU3ICs2Miw1NyBAQCBQQVNT
OiBTaG91bGQgaGF2ZSB1c2VkIGFsbCBzdGVwcy4KIAogLS0gUnVubmluZyB0ZXN0IHNldHVwLgog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRz
LkVuYWJsZWQKLUVYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKQorRVhQUkVT
U0lPTjogc2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KQogU1RFUFM6IG92ZXIsIGluLCBp
biwgaW4sIHJlc3VtZQogUEFVU0VEIChkZWJ1Z2dlci1zdGF0ZW1lbnQpCi1QQVVTRSBBVCBlbnRy
eUNvbnNvbGVMb2c6ODo1Ci0gICAgICA0ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBh
dXNlLWxvY2F0aW9uLmpzIj48L3NjcmlwdD4KLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotIC0+ICAgNyAgICAgICAgfGRlYnVnZ2Vy
OwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OworUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNjo1CisgICAgIDIyICAgIH0KKyAgICAg
MjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAtPiAgMjUg
ICAgICAgIHxkZWJ1Z2dlcjsKKyAgICAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMSk7
CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAg
aW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIAogQUNUSU9OOiBzdGVwLW92ZXIKLVBBVVNFIEFUIGVu
dHJ5Q29uc29sZUxvZzo5OjUKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rp
b24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4
ICAgICAgICB8Y29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9n
KGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAx
MSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjUKKyAgICAgMjMKKyAgICAg
MjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRl
YnVnZ2VyOworIC0+ICAyNiAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMSk7CisgICAgIDI3
ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFU
IGVudHJ5Q29uc29sZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1
bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+
ICAgOCAgICAgICAgY29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xl
LmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAg
ICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMwor
ICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAg
ICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAg
ICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFV
U0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYKLSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYg
ICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9nKCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7
Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxvZ3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNv
bnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAxMCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIp
OwotICAgICAxMSAgICB9CitQQVVTRSBBVCBlbnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAg
IDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1
ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEp
OworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWlu
Ci1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAg
ICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1
Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNvbGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAg
ICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3Ry
aW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQK
KyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rpb24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAg
ICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVz
dHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHJl
c3VtZQogUkVTVU1FRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAppbmRleCBkMTY4YTcyNTRj
ZTFlZjA0ZDczYTlmYjM1YzZjYmQ3MzhmYmMzMWUzLi5lNWIwZDljOGI3MThlMWIyNTZlYWVmNjc4
MjI2YjYyNzBlNzFiMzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMuaHRtbApAQCAtNCwxMSAr
NCwyOSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xv
Zy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZnVuY3Rpb24gZW50cnlD
b25zb2xlTG9nKCkgeworCitsZXQgaW50ZXJuYWxPYmplY3QgPSB7IHRlc3Q6IGZ1bmN0aW9uKCkg
e30gfTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbE9iamVjdCA9IHdp
bmRvdy5pbnRlcm5hbHMuZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oInRlc3RQYXVz
ZUZvckludGVybmFsU2NyaXB0cyIsIGAKKyAgICAgICAgLy8jIHNvdXJjZVVSTD1fX0luamVjdGVk
U2NyaXB0X1Rlc3RQYXVzZUZvckludGVybmFsU2NyaXB0cy5qcworICAgICAgICBsZXQgSW50ZXJu
YWxPYmplY3QgPSBjbGFzcyBJbnRlcm5hbE9iamVjdCB7CisgICAgICAgICAgICB0ZXN0KGludm9j
YXRpb25OdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYSA9IDY7CisgICAgICAgICAgICAg
ICAgbGV0IGIgPSA3OworICAgICAgICAgICAgICAgIGxldCBhbnN3ZXIgPSBhICogYjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBuZXcgSW50ZXJuYWxPYmplY3Q7CisgICAg
YCk7Cit9CisKK2Z1bmN0aW9uIGVudHJ5SW50ZXJuYWxPYmplY3QoKSB7CiAgICAgZGVidWdnZXI7
Ci0gICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAg
ICBjb25zb2xlLmxvZygic3RyaW5nIik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDIpOworICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiB9
CiAKIC8vIC0tLS0tLS0tLQpAQCAtMjEsMzEgKzM5LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAg
ICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cy5EaXNhYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBjb25zb2xlLmxvZyBzdGF0ZW1lbnRzIHdoaWNo
IHVzZSB0aGUgSW50ZXJuYWwgSW5qZWN0ZWRTY3JpcHQuIiwKLSAgICAgICAgZXhwcmVzc2lvbjog
InNldFRpbWVvdXQoZW50cnlDb25zb2xlTG9nKSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdoaWNoIHVzZSBpbnRlcm5h
bCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVu
dHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQgZGlyZWN0bHkgdG8gdGhl
IGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdhaXQgb24gdGhlIGNvbW1h
bmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAgICAgICAgc2V0dXA6IGFz
eW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMoZmFsc2UpOyB9LAogICAgICAgICBzdGVwczogWwogICAgICAgICAgICAgIm92ZXIiLAotICAg
ICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9nKHdpbmRvdykKLSAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBjb25zb2xlLmxvZyhjb25zb2xlKQotICAgICAgICAgICAgICAgICJpbiIsIC8v
IGNvbnNvbGUubG9nKCJzdHJpbmciKQorICAgICAgICAgICAgICAgICJpbiIsIC8vIGludGVybmFs
T2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDIpCisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgzKQog
ICAgICAgICAgICAgInJlc3VtZSIsCiAgICAgICAgIF0KICAgICB9KTsKIAogICAgIGFkZFN0ZXBw
aW5nVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMuRW5hYmxlZCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUg
dG8gc3RlcCBvdmVyIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5h
bCBJbmplY3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRy
eUNvbnNvbGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBz
dGVwIGludG8gc3RhdGVtZW50cyB3aGljaCB1c2UgaW50ZXJuYWwgaW5qZWN0ZWQgc2NyaXB0cy4i
LAorICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUludGVybmFsT2JqZWN0KSIs
CiAgICAgICAgIC8vIENhbGwgb3V0IGRpcmVjdGx5IHRvIHRoZSBiYWNrZW5kIHNpbmNlIHRoZXJl
IGlzIG5vIG90aGVyIHdheSB0byB3YWl0IG9uIHRoZSBjb21tYW5kIHJlc3VsdCBpZiBjaGFuZ2lu
ZyB2aWEgdGhlIHNldHRpbmcuCiAgICAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB7IHJldHVybiBE
ZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKHRydWUpOyB9LAogICAgICAg
ICB0ZWFyZG93bjogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZv
ckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAgIHN0ZXBzOiBbCiAgICAgICAgICAg
ICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2cod2luZG93KQot
ICAgICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGNvbnNvbGUubG9nKHdp
bmRvdyldCi0gICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29s
ZS5sb2cod2luZG93KV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50
ZXN0KDEpCisgICAgICAgICAgICAgICAgImluIiwgLy8gW1NvbWV3aGVyZSBpbnNpZGUgaW50ZXJu
YWxPYmplY3QudGVzdCgxKV0KKyAgICAgICAgICAgICAgICAiaW4iLCAvLyBbU29tZXdoZXJlIGlu
c2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQogICAgICAgICAgICAgInJlc3VtZSIsCiAgICAg
ICAgIF0KICAgICB9KTsKQEAgLTU3LDYgKzc1LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPkNoZWNraW5nIHdoZXRo
ZXIgY29uc29sZS5sb2cgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0
aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgorPHA+
Q2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAoaW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBw
ZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4
dAppbmRleCA1ZGVlOTVlZGY4OGU1ZTljODYxNThjY2VjZDJjNzNkYmZmOWYwMTg4Li42M2E2ZTVi
NzQ4NGI4Njg5YzdkMTQ1ZDU0YmE1OGE3ZjUyOWI0ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dApAQCAt
OSw3ICs5LDUgQEAgUEFTUzogU2hvdWxkIGZpbmQgRXh0ZXJuYWwgU2NyaXB0LgogUEFTUzogU2hv
dWxkIGZpbmQgSW5saW5lIFNjcmlwdCBUYWcgU2NyaXB0LgogUEFTUzogU2hvdWxkIGZpbmQgSW5s
aW5lIEF0dHJpYnV0ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBF
dmFsIFNjcmlwdC4KLVBBU1M6IFNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNv
dXJjZSBTY3JpcHQuCi1QQVNTOiBTaG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElT
b3VyY2UgU2NyaXB0LgogUEFTUzogU2hvdWxkIG5vdCByZWNlaXZlIGFueSB1bmV4cGVjdGVkIHNj
cmlwdHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRQYXJzZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRQYXJz
ZWQuaHRtbAppbmRleCBkNGY4ZjM4NjgyZmM0ZTE1YzUwMDM0NDVhNmJhMWQxMzU0OWQ5YTVmLi5k
Njc3YmEyZGVkZGYxZjUxNjg5MDJhMTU2Y2UyZjE5MWFiYTExNDk3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCkBAIC0xOSwxNCArMTks
MTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gICAtIGlubGluZSA8c2NyaXB0PiAodGhpcykg
c3RhcnRpbmcgb24gbGluZSA1CiAgICAgLy8gICAtIGlubGluZSBib2R5IG9ubG9hZCBldmVudCBs
aXN0ZW5lciBhdHRyaWJ1dGUgb24gPGJvZHk+IGxpbmUgYmVsb3cKICAgICAvLyAgIC0gZXZhbCBz
b3VyY2UgYWJvdmUgb24gbGluZSA3Ci0gICAgLy8gICAtIGluc3BlY3RvciBpbnRlcm5hbCBzY3Jp
cHRzIEluamVjdGVkU2NyaXB0U291cmNlLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
CiAKICAgICBsZXQgZm91bmRFeHRlcm5hbFNjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElu
bGluZVNjcmlwdFRhZ1NjcmlwdCA9IGZhbHNlOwogICAgIGxldCBmb3VuZElubGluZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXJTY3JpcHQgPSBmYWxzZTsKICAgICBsZXQgZm91bmRFdmFsU2NyaXB0ID0g
ZmFsc2U7Ci0gICAgbGV0IGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQgPSBmYWxzZTsK
LSAgICBsZXQgZm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCA9IGZhbHNlOwogICAgIGxl
dCBmb3VuZFVuZXhwZWN0ZWRTY3JpcHQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIGlzRXh0ZXJu
YWxTY3JpcHQocGFyYW1zKSB7CkBAIC00MiwyMSArMzksMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgfQogCiAgICAgZnVuY3Rpb24gaXNJbmxpbmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0
KHBhcmFtcykgewotICAgICAgICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJh
bXMuc3RhcnRMaW5lID49IDEwMDsgLy8gRXN0aW1hdGUgb2YgPGJvZHk+IGJlbG93LgorICAgICAg
ICByZXR1cm4gaXNJbmxpbmVTY3JpcHQocGFyYW1zKSAmJiBwYXJhbXMuc3RhcnRMaW5lID49IDk5
OyAvLyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCiAgICAgfQogCiAgICAgZnVuY3Rpb24gaXNF
dmFsU2NyaXB0KHBhcmFtcykgewogICAgICAgICByZXR1cm4gcGFyYW1zLnNvdXJjZVVSTCA9PT0g
ImV2YWwuanMiOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VT
Y3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMLnN0YXJ0c1dp
dGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgcGFyYW1zLnNvdXJjZVVSTC5lbmRzV2l0aCgiLmpz
Iik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdChw
YXJhbXMpIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuaW5kZXhPZigiQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UiKSAhPT0gLTE7Ci0gICAgfQotCiAgICAgc3VpdGUuYWRkVGVz
dENhc2UoewogICAgICAgICBuYW1lOiAiRW5hYmxlRGVidWdnZXJEb21haW5BbmRDaGVja0luaXRp
YWxTY3JpcHRzIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKQEAgLTc5LDEwICs2
OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJbmxp
bmVBdHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoIWZvdW5kRXZhbFNjcmlwdCAmJiBpc0V2YWxTY3JpcHQocGFyYW1zKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRXZhbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKCFmb3VuZENvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0ICYmIGlz
Q29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICghZm91bmRJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCAmJiBpc0lu
amVjdGVkU2NyaXB0U291cmNlU2NyaXB0KHBhcmFtcykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmb3VuZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJV
TkVYUEVDVEVEIFNDUklQVDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3QpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVW5leHBlY3RlZFNjcmlwdCA9IHRydWU7CkBAIC05
Myw4ICs3OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIFByb3RvY29sVGVz
dC5leHBlY3RUaGF0KGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5s
aW5lIFNjcmlwdCBUYWcgU2NyaXB0LiIpOwogICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5l
eHBlY3RUaGF0KGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCwgIlNob3Vs
ZCBmaW5kIElubGluZSBBdHRyaWJ1dGUgRXZlbnQgTGlzdGVuZXIgU2NyaXB0LiIpOwogICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kRXZhbFNjcmlwdCwgIlNob3Vs
ZCBmaW5kIEV2YWwgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBl
Y3RUaGF0KGZvdW5kSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3JpcHQsICJTaG91bGQgZmluZCBJbnNw
ZWN0b3IgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgU2NyaXB0LiIpOwotICAgICAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5leHBlY3RUaGF0KGZvdW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQsICJT
aG91bGQgZmluZCBJbnNwZWN0b3IgQ29tbWFuZExpbmVBUElTb3VyY2UgU2NyaXB0LiIpOwogICAg
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5leHBlY3RUaGF0KCFmb3VuZFVuZXhwZWN0ZWRTY3Jp
cHQsICJTaG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4iKTsKIAogICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CmluZGV4IDg4
MzNhOGZkMmE2NWNjMmM4NDUyY2MzMDYwYmU2ODY0MmNiMDNhYjcuLjQ5ZjRhZjJjMTM4NGE0NjY3
YjdmYmU4YmM4ZTFmZThkN2VmZTUwOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDE3IEBACiBDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQotVGVzdCB0aGF0
IGNlcnRhaW4gSW5qZWN0ZWRTY3JpcHRTb3VyY2Ugb3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFi
bGUgYnkgdXNlciBjb2RlLgorQ09OU09MRSBNRVNTQUdFOiBhLGIsYworQ09OU09MRSBNRVNTQUdF
OiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBTZXRdCitDT05TT0xF
IE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE1hcF0K
K0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmpl
Y3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVT
U0FHRTogY291bnQgb2YgMQorQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK0NPTlNP
TEUgTUVTU0FHRTogaGVsbG8KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitUZXN0
IHRoYXQgSW5qZWN0ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVz
ZXIgY29kZS4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEluamVjdGVkU2NyaXB0Lk9ic2Vy
dmFibGUKQEAgLTgsMyArMjAsMzggQEAgUEFTUzogUGF1c2VkLgogUEFTUzogUmVzdW1lZC4KIFBB
U1M6IEFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJl
IDEuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNl
dC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1l
ZC4KK1BBU1M6IFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3Vs
ZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJs
ZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0KK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJl
c3VtZWQuCitQQVNTOiBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBz
aG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2Vy
dmFibGU6QXJyYXkucHJvdG90eXBlLnB1c2gKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQu
CitQQVNTOiBBcnJheS5wcm90b3R5cGVbInB1c2giXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTZXQucHJv
dG90eXBlLmFkZAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IFNldC5wcm90
b3R5cGVbImFkZCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlN0cmluZworUEFTUzogUGF1c2VkLgorUEFT
UzogUmVzdW1lZC4KK1BBU1M6IFN0cmluZyBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5
cGUuaW5kZXgKK1BBU1M6IFBhdXNlZC4KK1BBU1M6IFJlc3VtZWQuCitQQVNTOiBBcnJheS5wcm90
b3R5cGVbIjQyIl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5kZXN0cnVjdHVy
ZWRQcm9wZXJ0eQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IE9iamVjdC5w
cm90b3R5cGVbImZldGNoU3RhcnQiXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1s
CmluZGV4IDRkOGQ2NmU1MmZiY2IxNzFhYjFjOTBhNzY1OGQ5ZDkzYzg0N2Q2OTUuLjNhNTFmYzc2
MmIxYTIyMjEwN2E5NDIzYjQ4NTFmZGM4Zjk5NTQ3NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sCkBAIC0zLDYzICsz
LDIwNSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0vLyBOT1RF
OiBNb3JlIGNhc2VzIHNob3VsZCBiZSB0ZXN0ZWQgYW5kIGFkZHJlc3NlZCBieToKLS8vIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNlIEluamVjdGVkU2Ny
aXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9uLXVzZXItb3ZlcnJp
ZGVuIGJ1aWx0LWlucwotCi1mdW5jdGlvbiB0cmlnZ2VySXRlcmF0aW9uKCkgeworZnVuY3Rpb24g
cmVwbGFjZUFuZFRlc3RQcm90b3R5cGVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbikgeworICAgIHRyeSB7CiAgICAgbGV0IGNhbGxD
b3VudCA9IDA7CiAKLSAgICBjb25zdCBvcmlnaW5hbEl0ZXJhdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihBcnJheS5wcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRvcik7Ci0gICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCB7
CisgICAgbGV0IG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihwcm90b3R5cGUsIHByb3BlcnR5KTsKKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkocHJvdG90eXBlLCBwcm9wZXJ0eSwgewogICAgICAgICBnZXQoKSB7CiAgICAgICAgICAg
ICArK2NhbGxDb3VudDsKLSAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZXJhdG9yLnZhbHVl
OworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHJvcGVydHlEZXNjcmlwdG9yPy52YWx1ZTsK
ICAgICAgICAgfQogICAgIH0pOwogCi0gICAgbGV0IGFycmF5ID0gW107Ci0KICAgICBkZWJ1Z2dl
cjsKIAogICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgogICAgIGNvbnNvbGUubG9nKHthOjEsIGI6
MiwgYzp7fX0pOwogCi0gICAgLy8gVXNlIEFycmF5IEl0ZXJhdG9yIGF0IGxlYXN0IG9uY2UuCi0g
ICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisgICAgaW52b2tlT3ZlcnJpZGRlblByb3BlcnR5
RnVuY3Rpb24oKTsKIAotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUs
IFN5bWJvbC5pdGVyYXRvciwgb3JpZ2luYWxJdGVyYXRvcik7CisgICAgaWYgKG9yaWdpbmFsUHJv
cGVydHlEZXNjcmlwdG9yKQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBl
LCBwcm9wZXJ0eSwgb3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IpOworICAgIGVsc2UKKyAgICAg
ICAgZGVsZXRlIHByb3RvdHlwZVtwcm9wZXJ0eV07CiAKICAgICByZXR1cm4gY2FsbENvdW50Owor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHJlcGxhY2VBbmRUZXN0T2JqZWN0KG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJp
ZGRlbk9iamVjdEZ1bmN0aW9uKSB7CisgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgCisgICAg
bGV0IG9yaWdpbmFsT2JqZWN0ID0gZXZhbChvYmplY3RTdHJpbmcpOworICAgIGV2YWwoYAorICAg
ICAgICAke29iamVjdFN0cmluZ30gPSAoKSA9PiB7CisgICAgICAgICAgICArK2NhbGxDb3VudDsK
KyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9iamVjdCguLi5hcmd1bWVudHMpOworICAgICAg
ICB9OworICAgIGApOworCisgICAgZGVidWdnZXI7CisKKyAgICAvLyBQcmV2aWV3IGFuIG9iamVj
dC4KKyAgICBjb25zb2xlLmxvZyh7YToxLCBiOjIsIGM6e319KTsKKworICAgIGludm9rZU92ZXJy
aWRkZW5PYmplY3RGdW5jdGlvbigpOworCisgICAgZXZhbChgJHtvYmplY3RTdHJpbmd9ID0gb3Jp
Z2luYWxPYmplY3Q7YCk7CisgICAgY29uc29sZS5sb2coImNvdW50IG9mICIgKyBjYWxsQ291bnQp
OworICAgIHJldHVybiBjYWxsQ291bnQ7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZSIpOwogCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgIGZ1bmN0aW9uIGFk
ZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBwcm90b3R5cGVT
dHJpbmcsIHByb3BlcnR5U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbn0p
IHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBsYWNlQW5k
VGVzdFByb3RvdHlwZVByb3BlcnR5KCR7cHJvdG90eXBlU3RyaW5nfSwgJHtwcm9wZXJ0eVN0cmlu
Z30sICR7aW52b2tlT3ZlcnJpZGRlblByb3BlcnR5RnVuY3Rpb24udG9TdHJpbmcoKX0pO2AsIChl
cnJvciwgcmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocmVzdWx0LCAxLCBgJHtwcm90b3R5cGVTdHJpbmd9WyR7cHJvcGVydHlTdHJpbmd9
XSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBh
dXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFz
cygiUGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVz
dW1lKCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPYmplY3RU
ZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIG9iamVjdFN0cmluZywgaW52b2tlT3ZlcnJpZGRl
bk9iamVjdEZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYHJlcGxhY2VBbmRUZXN0T2JqZWN0KCIke29iamVjdFN0cmluZ30iLCAke2ludm9rZU92
ZXJyaWRkZW5PYmplY3RGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQs
IDEsIGAke29iamVjdFN0cmluZ30gY2FsbCBjb3VudCBzaG91bGQgYmUgMS5gKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnBhc3MoIlBhdXNlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
YWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJJbmplY3RlZFNj
cmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdIiwKLSAgICAg
ICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3Vs
ZCBub3QgYmUgb2JzZXJ2YWJsZSIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VySXRlcmF0aW9u
KClgLCAoZXJyb3IsIHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwocmVzdWx0LCAxLCAiQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0g
Y2FsbCBjb3VudCBzaG91bGQgYmUgMS4iKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkg
PT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUGF1c2VkLiIpOwotICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmly
ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkg
PT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVzdW1lZC4iKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgIGRlc2NyaXB0aW9uOiAiQXJyYXkgaXRl
cmF0aW9uIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAg
ICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVy
dHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJv
cGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gWyJhIiwgImIi
LCAiYyJdOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBhcnJheSkgeyB9CisKKyAgICAgICAg
ICAgIGNvbnNvbGUubG9nKGFycmF5KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFBy
b3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpTZXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAorICAgICAgICBkZXNj
cmlwdGlvbjogIlNldCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUg
b2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJTZXQucHJvdG90eXBlIiwK
KyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0b3IiLAorICAgICAgICBpbnZv
a2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IHNl
dCA9IG5ldyBTZXQoWyJhIiwgImIiLCAiYyJdKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2Yg
c2V0KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coc2V0KTsKKyAgICAgICAgfSwKKyAg
ICB9KTsKKworICAgIGFkZFByb3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRv
cl0iLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1hcCBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2Ny
aXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6
ICJNYXAucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJTeW1ib2wuaXRlcmF0
b3IiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4gewor
ICAgICAgICAgICAgbGV0IG1hcCA9IG5ldyBNYXAoW1siYSIsICIxIl0sIFsiYiIsICIyIl0sIFsi
YyIsICIzIl1dKTsKKyAgICAgICAgICAgIGZvciAobGV0IHggb2YgbWFwKSB7IH0KKworICAgICAg
ICAgICAgY29uc29sZS5sb2cobWFwKTsKKyAgICAgICAgfSwKICAgICB9KTsKIAorICAgIGFkZFBy
b3RvdHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQu
T2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUucHVzaCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
QXJyYXkucHVzaCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIs
CisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIkFycmF5LnByb3RvdHlwZSIsCisgICAgICAgIHBy
b3BlcnR5U3RyaW5nOiAiXCJwdXNoXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVy
dHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFycmF5ID0gW107CisgICAgICAg
ICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFByb3Rv
dHlwZVByb3BlcnR5VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0ZWRTY3JpcHQuT2Jz
ZXJ2YWJsZTpTZXQucHJvdG90eXBlLmFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0LmFk
ZCBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmlu
ZzogIlwiYWRkXCIiLAorICAgICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjog
KCkgPT4geworICAgICAgICAgICAgbGV0IHNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICBzZXQu
YWRkKDQyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZE9iamVjdFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U3RyaW5nIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJTdHJpbmcgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUg
b2JzZXJ2YWJsZS4iLAorICAgICAgICBvYmplY3RTdHJpbmc6ICJTdHJpbmciLAorICAgICAgICBp
bnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb246ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBh
bnN3ZXIgPSBTdHJpbmcoNDIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRleCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiT3Zl
cnJpZGVuIGluZGV4ZXMgaW4gQXJyYXkgcHJvdG90eXBlIGluIEluamVjdGVkIFNjcmlwdCBzaG91
bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiQXJyYXku
cHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcIjQyXCIiLAorICAgICAgICBp
bnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0
IGFycmF5ID0gW107CisgICAgICAgICAgICBhcnJheS5wdXNoKCJoZWxsbyIpOworICAgICAgICAg
ICAgY29uc29sZS5sb2coYXJyYXkpOworICAgICAgICAgICAgYXJyYXlbNDJdOworICAgICAgICB9
LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk9iamVjdC5wcm90b3R5cGUuZGVzdHJ1
Y3R1cmVkUHJvcGVydHkiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk9iamVjdCBkZXN0cnVjdHVy
aW5nIChmb3IgYG9wdGlvbnNgIHBhcmFtZXRlcnMpIGluIEluamVjdGVkIFNjcmlwdCBzaG91bGQg
bm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiT2JqZWN0LnBy
b3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJmZXRjaFN0YXJ0XCIiLAorICAg
ICAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbjogKCkgPT4geworICAgICAgICAg
ICAgbGV0IHggPSB7fS5mZXRjaFN0YXJ0OworICAgICAgICB9LAorICAgIH0pOworCisKKwogICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNj
cmlwdFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuPC9w
PgorPHA+VGVzdCB0aGF0IEluamVjdGVkIFNjcmlwdCBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2
YWJsZSBieSB1c2VyIGNvZGUuPC9wPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0
ZWQudHh0CmluZGV4IGQ0NDIxN2QzNjJlYTRmOWEyNTI2NGEwZDhjMzBhYWY0YWZlMjM4MTYuLmFm
YmQzMmQ1MDM3ZTUyYWU5MGMyMzNmMjJiNTM5Mzk2ZWUxZjhhZjEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBl
Y3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkg
eyBbXS54Lng7IH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAg
ICAgICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAg
ICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtu
YXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAiZ2xvYmFsIGNv
ZGVAXG5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AW25hdGl2ZSBj
b2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUgY29kZV0iCiAgICAgICB9CiAgICAgXSwKICAgICAiX2Vu
dHJpZXMiOiBudWxsCkBAIC03MCw3ICs3MCw3IEBAIEVYUFJFU1NJT046IGVycm9yID0gbnVsbDsg
dHJ5IHsgZXZhbCgiaWYoKSIpOyB9IGNhdGNoIChlKSB7IGVycm9yID0gZTsgfTsgZXJyb3IKICAg
ICAgIHsKICAgICAgICAgIl9uYW1lIjogInN0YWNrIiwKICAgICAgICAgIl90eXBlIjogInN0cmlu
ZyIsCi0gICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBc
bmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAi
CisgICAgICAgICJfdmFsdWUiOiAiZXZhbEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2
YWx1YXRlV2l0aFNjb3BlReKApnRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxA
W25hdGl2ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAg
LTEwNCw3ICsxMDQsNyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCIiKS5zcGxpdFRleHQoMTAwKTsgfSBjYQogICAgICAgewogICAgICAg
ICAiX25hbWUiOiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAg
Il92YWx1ZSI6ICJzcGxpdFRleHRAW25hdGl2ZSBjb2RlXVxuZ2xvYmFsIGNvZGVAXG5ldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbkBbbmF0aXZlIGNvZGVdXG5AXG5fd3JhcENhbGxAIgorICAgICAg
ICAiX3ZhbHVlIjogInNwbGl0VGV4dEBbbmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1
YXRlV2l0aFPigKZ0aXZlIGNvZGVdXG5AW25hdGl2ZSBjb2RlXVxuX3dyYXBDYWxsQFtuYXRpdmUg
Y29kZV0iCiAgICAgICB9LAogICAgICAgewogICAgICAgICAiX25hbWUiOiAiY29kZSIsCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVj
dGVkLnR4dAppbmRleCA1ZTRhODU4YTQ5Y2ZlZGEwNmY5ZmJiZjg0ZDFjZjdmMjRlYWJkNmJhLi4x
MjMzZWIzOTQ4MTczYjQwNzZkMzMwOWIzMDMzYTY2Y2ZkOWQ0YjBiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQK
QEAgLTY0LDggKzY0LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgICAg
ICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAg
ICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgICAgICJsaW5lTnVtYmVy
IjogMTQxLAotICAgICAgICAgICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICAgICAgICAg
ImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgICAgICJjb2x1bW5OdW1iZXIi
OiAiPGZpbHRlcmVkPiIKICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgICAgICJm
cmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTE3LDggKzExNyw4IEBAIFBBU1M6IENhcHR1cmlu
ZyBzdGFydGVkLgogICAgICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJs
IjogIiIsCiAgICAgICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJs
aW5lTnVtYmVyIjogMTQxLAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAg
ICJsaW5lTnVtYmVyIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAi
PGZpbHRlcmVkPiIKICAgICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0
ZXJlZD4iLApAQCAtMTc3LDggKzE3Nyw4IEBAIFBBU1M6IENhcHR1cmluZyBzdGFydGVkLgogICAg
ICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAg
ICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgICAgICJsaW5lTnVtYmVyIjogMTQx
LAotICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICJsaW5lTnVtYmVyIjog
IjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAg
ICAgICAgfQogICAgICAgXSwKICAgICAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAppbmRleCA2NzJi
MzUzMzgwMGNiZTI1OWVlODg4N2FiZTE4ODc4MWJlYmYwNDRlLi5hNDUyMzA2Y2JkNGU0NTVkODY5
M2M4ZGFiZTQyOTU2NDMxZDk1MTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4uaHRtbApAQCAtNDIsMTEgKzQyLDI3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogCiAgICAgLy8gVG8gYXZvaWQgZmxha2luZXNzIHByaW50IG9ubHkgZXZlbnRzIHRoYXQgd2Ug
YWx3YXlzIGV4cGVjdC4KICAgICBjb25zdCBldmVudEFsbG93bGlzdCA9IG5ldyBTZXQoWyJSZW5k
ZXJpbmdGcmFtZSIsICJDb25zb2xlUHJvZmlsZSIsICJFdmVudERpc3BhdGNoIiwgIkZ1bmN0aW9u
Q2FsbCJdKTsKKworICAgIC8vIFRoZSBpbnNwZWN0b3IgaW5qZWN0ZWQgc2NyaXB0IGNhbGwgZnJh
bWUocykgaGF2ZSBkaWZmZXJlbnQgbGluZSBudW1iZXJzIGJldHdlZW4gcmVsZWFzZSBhbmQgZGVi
dWcgYnVpbGRzLiBXZSBvbmx5CisgICAgLy8gd2FudCB0byBmaWx0ZXIgdGhvc2UgdmFsdWVzIGZv
ciB0aG9zZSBzcGVjaWZpYyBjYWxsIGZyYW1lcyBpbiBvcmRlciB0byBlbnN1cmUgb3RoZXIgbGlu
ZS9jb2x1bW4gbnVtYmVycyByZW1haW4gc3RhYmxlLgorICAgIGxldCBmdW5jdGlvbk5hbWVMZW5n
dGggPSAwOworICAgIGxldCB1cmxMZW5ndGggPSAwOworCiAgICAgZnVuY3Rpb24gcmVwbGFjZXIo
a2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAoa2V5ID09PSAiZnVuY3Rpb25OYW1lIikgeworICAg
ICAgICAgICAgZnVuY3Rpb25OYW1lTGVuZ3RoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoa2V5ID09PSAi
Y2hpbGRyZW4iICYmIHRoaXMuc3RhcnRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZp
bHRlcihlID0+IGV2ZW50QWxsb3dsaXN0LmhhcyhlLnR5cGUpKTsKICAgICAgICAgaWYgKGtleSA9
PT0gInN0YXJ0VGltZSIgfHwga2V5ID09PSAiZW5kVGltZSIgfHwga2V5ID09PSAic2NyaXB0SWQi
IHx8IGtleSA9PT0gImZyYW1lSWQiKQogICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsK
KyAgICAgICAgaWYgKChrZXkgPT09ICJsaW5lTnVtYmVyIiB8fCBrZXkgPT09ICJjb2x1bW5OdW1i
ZXIiKSAmJiAhZnVuY3Rpb25OYW1lTGVuZ3RoICYmICF1cmxMZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gIjxmaWx0ZXJlZD4iOworCisgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiKQorICAgICAg
ICAgICAgdXJsTGVuZ3RoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICBpZiAoa2V5ID09PSAidXJs
IiB8fCBrZXkgPT09ICJzY3JpcHROYW1lIikKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBs
YWNlKC9eLitMYXlvdXRUZXN0c1wvaW5zcGVjdG9yXC8vLCAiIik7CiAgICAgICAgIHJldHVybiB2
YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9pbnNwZWN0b3IvdGlt
ZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKaW5kZXggYzk2MmQ2
ODEwMWNmNDczMTVkNWUwMWRjM2YwZDNmZTM1OWQ2MjU0Ny4uNTZkMTg0MDhiZGRlOWE3YjA3MDIz
OTZiOTRmOTc5NzZjZjNiZGFlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3Rl
ZC50eHQKQEAgLTYwLDggKzYwLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAg
ICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAi
c2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0g
ICAgICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZp
bHRlcmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAg
ICB9CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xMTMsOCAr
MTEzLDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAiZnVuY3Rpb25OYW1lIjog
IiIsCiAgICAgICAidXJsIjogIiIsCiAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0g
ICAgICAibGluZU51bWJlciI6IDE0MSwKLSAgICAgICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAg
ImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAiY29sdW1uTnVtYmVyIjogIjxmaWx0
ZXJlZD4iCiAgICAgfQogICBdLAogICAiZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTE2NSw4
ICsxNjUsOCBAQCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUi
OiAiIiwKICAgICAgICJ1cmwiOiAiIiwKICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwK
LSAgICAgICJsaW5lTnVtYmVyIjogMTQxLAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAg
ICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZp
bHRlcmVkPiIKICAgICB9CiAgIF0sCiAgICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459181</attachid>
            <date>2022-05-11 13:39:40 -0700</date>
            <delta_ts>2022-05-11 17:33:10 -0700</delta_ts>
            <desc>Patch v2.3 - For landing</desc>
            <filename>bug-152294-20220511133939.patch</filename>
            <type>text/plain</type>
            <size>157120</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzIyOWFiMTVlZWJiOTk3MGNiNmMwYjU0MzBiOTAzOTkxN2E0NGVjLi5hZTM5YjkzMzQ0OTA1NDFl
MDcxNjUzN2QzYTExNjFmMGQyNDU1NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMi0wNS0xMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGFuZCBuZXcgdGVzdCBjYXNlcyBpbiBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWxgCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQnVpbGQgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYXMgYSBidWlsdGluLCBub3QgYXMgYSBwbGFpbiBoZWFkZXIgZmlsZSBj
b250YWluaW5nIGl0cyBzb3VyY2UgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2tidWlsdGlu
cy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAg
ICAgLSBJbnNwZWN0b3JJbmplY3RlZFNjcmlwdCBjb250YWlucyB1bmJhbGFuY2VkIGN1cmx5IGJy
YWNrZXRzIGluc2lkZSBxdW90ZXMuIFRoZSBnZW5lcmF0aW9uIG9mIGJ1aWx0aW5zIGlzIG5vdwor
ICAgICAgICBoYXJkZW5lZCBhZ2FpbnN0IHRoaXMuIFByZXZpb3VzbHkgYWxsIGN1cmx5IGJyYWNr
ZXRzIHdlcmUgY291bnRlZCwgd2hpY2ggbWVhbnQgdGhhdCB0aGUgc291cmNlIGNvZGUgd291bGQg
YmUgY3V0CisgICAgICAgIG9mZiBlYXJsaWVyIHRoYW4gdGhlIGFjdHVhbCBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgLSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyB1c2VzIGRlc3RydWN0dXJpbmcgdG8g
Z2V0IHRoZSBgUmVtb3RlT2JqZWN0YCBhbmQgYENvbW1hbmRMaW5lQVBJYCBjbGFzc2VzIGF0Cisg
ICAgICAgIGluc3RhbnRpYXRpb24uIFdlIG5lZWQgdG8gdHJlYXQgdGhpcyBkZXN0cnVjdHVyZSBh
cyBhIHNpbmdsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSBkZWJ1ZyBhc3NlcnRpb25zIHdpbGwgY2F0
Y2gKKyAgICAgICAgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gcGFyYW1ldGVyIGNvdW50cy4KKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgLSBBZGQgc3ltYm9scyB0aGF0IHdlIG5lZWQgdG8g
aGF2ZSBhIHByaXZhdGUgdmVyc2lvbiBvZiwgYW5kIGZvciBzb21lIG9mIHRob3NlIHN5bWJvbHMg
bWFrZSB0aGVtIGxpbmstdGltZSBjb25zdGFudHMuCisKKyAgICAgICAgKiBidWlsdGlucy9JdGVy
YXRvckhlbHBlcnMuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5TZXRJdGVyYWJs
ZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmJ1aWx0aW5NYXBJdGVyYWJsZSk6CisgICAgICAg
IC0gQWRkIHJldXNhYmxlIGhlbHBlcnMgZm9yIGdldHRpbmcgYnVpbHRpbiBpdGVyYXRvcnMgZm9y
IE1hcHMgYW5kIFNldHMuIFRoaXMgaXMgZG9uZSB3aXRoIHByaXZhdGUgc3ltYm9scyB0aGF0Cisg
ICAgICAgIHJlcHJlc2VudCB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IHRoZSBpdGVyYXRvciB3b3Vs
ZCBoYXZlIHJldHVybmVkLiBXZSBjcmVhdGUgYSBuZXcgd3JhcHBlciBvYmplY3QgdG8gYWxsb3cg
dXNhZ2UKKyAgICAgICAgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXQgZGVhbGluZyB3aXRo
IGFuIHVud3JhcHBlZCBpdGVyYWJsZSBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoK
KyAgICAgICAgLSBVc2UgdGhlIG5ldyBsaW5rLXRpbWUgY29uc3RhbnQgZm9yIHRoZSBJbmplY3Rl
ZCBTY3JpcHQgY3JlYXRpb24gZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5oOgorICAgICAgICAtIEluamVjdGVkIG1vZHVsZXMgYXJlIG5vdyBwcm92aWRlZCBh
cyBhIEpTRnVuY3Rpb24sIG5vdCByYXcgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanM6CisgICAgICAgIC0gVXNlIHByaXZhdGUgc3ltYm9s
cyB0aHJvdWdob3V0IHRvIGVuc3VyZSB3ZSBnZXQgbm9uLW9ic2VydmFibGUsIG5vbi1vdmVycmlk
ZGVuIHZlcnNpb25zIG9mIGZ1bmN0aW9ucyBhbmQgdmFsdWVzLgorICAgICAgICAtIEluIG1hbnkg
Y2FzZXMsIHRoaXMgaXMgYSAxOjEgbWFwcGluZyB3aGVyZSB0aGUgbmV3IHN5bWJvbCBpcyBqdXN0
IHByZWZpeGVkIHdpdGggYW4gYEBgLgorICAgICAgICAtIEZvciBwdXNoaW5nIHZhbHVlcyB0byBh
cnJheXMsIHVzZSBgQGFycmF5UHVzaGAsIHRoZSBidWlsdGluIHdheSBvZiBwdXNoaW5nIGEgdmFs
dWUgaW50byBhbiBhcnJheS4KKyAgICAgICAgLSBGb3IgdGhlIGBTeW1ib2xgIGNvbnN0cnVjdG9y
LCBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBpbnN0ZWFkIG9m
IGV4cG9zaW5nIGEgcHJpdmF0ZQorICAgICAgICB2ZXJzaW9uIG9mIHRoZSBgU3ltYm9sYCBjb25z
dHJ1Y3Rvci4uCisgICAgICAgIC0gYFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgY29udmVydGVkIHRv
IGBAQHRvU3RyaW5nVGFnYCwgdGhlIHByaXZhdGUgdmVyc2lvbiBvZiB0aGF0IHN5bWJvbC4KKyAg
ICAgICAgLSBgTWF0aC5tYXhgIGluIGBSZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZW5lcmF0ZVBy
ZXZpZXdgIG5vdyB1c2VzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBjb21wYXJp
c29uCisgICAgICAgIGluc3RlYWQgb2YgZXhwb3NpbmcgYm90aCBNYXRoIGFuZCBNYXRoLm1heCBh
cyBwcml2YXRlIGJ1aWx0aW5zLgorICAgICAgICAtIENyZWF0ZSBvYmplY3RzIGFzIHByb3RvdHlw
ZS1sZXNzIHVzaW5nIHRoZSBuZXcgYnVpbHRpbiBoZWxwZXIgQGNyZWF0ZVByb3RvdHlwZWxlc3NP
YmplY3QsIHdoaWNoIGNhbiBhbHNvIHRha2UKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgYXJlIGtl
eSB2YWx1ZSBwYWlycyBmb3IgbmVhci1wYXJpdHkgd2l0aCBub3JtYWwgT2JqZWN0IGNyZWF0aW9u
IHZpYSBge31gLgorICAgICAgICAtIENyZWF0ZSBhcnJheXMgYXMgcHJvdG90eXBlLWxlc3MgdXNp
bmcgdGhlIG5ldyBidWlsdGluIGhlbHBlciBAY3JlYXRlUHJvdG90eXBlbGVzc0FycmF5LCB3aGlj
aCBjYW4gYWxzbyB0YWtlCisgICAgICAgIGFyZ3VtZW50cyB3aGljaCBhcmUgZW50cmllcyB0byBw
dXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgIC0gRm9yIHNwcmVhZGluZyBhcmd1bWVudHMgKGZv
ciB0aGUgY29uc29sZSBjb21tYW5kbGluZSBmdW5jdGlvbnMpIHdlIHNob3VsZCBjcmVhdGUgYSBu
ZXcgcHJvdG90eXBlbGVzcyBhcnJheSB0bworICAgICAgICBzcHJlYWQgaW5zdGVhZCBvZiBzcHJl
YWRpbmcgdGhlIHJhdyBhcmd1bWVudHMgdG8gYXZvaWQgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvdGVu
dGlhbGx5IG1vZGlmaWVkIGl0ZXJhdG9yLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIC0gQWRkIHRoZSBsaW5lIG51bWJlciB0byBi
dWlsdGluIGNvbXBpbGF0aW9uIGxvZ2dpbmcgdG8gaGVscCBpZGVudGlmeSB3aGVyZSBzb21ldGlt
ZXMgYW1iaWd1b3VzIGVycm9ycyBvY2N1cnJlZC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIC0gRXhwb3Nl
IG5lY2Vzc2FyeSBmdW5jdGlvbnMvY29uc3RydWN0b3JzIHZpYSB0aGVpciBwcml2YXRlIG5hbWUg
Zm9yIHVzZSBpbiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBhbmQKKyAgICAgICAgQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuanMKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAtIEFkZCBhIGxpbmstdGltZSBjb25zdGFudCBmb3IgdGhlIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLSBBZGQgaGVscGVycyBmb3IgSlNPTiBwYXJzaW5nL3Nl
cmlhbGl6YXRpb24uCisKIDIwMjItMDUtMTAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgogCiAgICAgICAgIFtUZW1wb3JhbF0gWWVhcnMgMC05OTkgc2hvdWxkIGJlIGNh
bm9uaWNhbGx5IHJlcHJlc2VudGVkIHdpdGggNCBkaWdpdHMsIG5vdCA2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzRjNDcxZTM0NTNkMjk1YjNmZDAxMjUzZjhjMTQ0MzhhNWM3OTY0Mi4uZDUwYWI1OWIzN2RlZmM1
NTNmMDQ1MGQ5NzgyMWI2NDgzNTk1M2ZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDIyLTA1LTExICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRv
IGdldCBndWFyYW50ZWVkIG5vbi11c2VyLW92ZXJyaWRlbiBKU0MgYnVpbHQtaW5zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIyOTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAtIEJ1aWxkIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGFzIGEgYnVpbHRpbiwgbm90IGFzIGEgcGxhaW4gaGVh
ZGVyIGZpbGUgY29udGFpbmluZyBpdHMgc291cmNlIGNvZGUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExp
bmVBUElNb2R1bGU6OmluamVjdE1vZHVsZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oOgorICAgICAgICAtIFByb3ZpZGUg
YSBKU0Z1bmN0aW9uIGZvciBtb2R1bGUgaW5qZWN0aW9uIGluc3RlYWQgb2YgcmF3IHNvdXJjZSBj
b2RlLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
OgorICAgICAgICAtIFNpbWlsYXIgdG8gSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzLCB1c2UgcHJpdmF0ZSBuYW1lcyBmb3IgcHJvcGVydGllcyBhbmQgZnVu
Y3Rpb25zCisgICAgICAgIHRocm91Z2hvdXQgdG8gZ2V0IG5vbi11c2VyLW92ZXJyaWRkZW4gYnVp
bHRpbnMuCisgICAgICAgIC0gSW4gYG5vcm1hbGl6ZUV2ZW50VHlwZXNgIHVzZSBhIFNldCBpbnN0
ZWFkIG9mIGFuIGFycmF5LCBzaW5jZSB3ZSBhcmUgcHJvY2Vzc2luZyB1c2VyLXByb3ZpZGVkIHR5
cGVzIHRoYXQgbWF5CisgICAgICAgIGJlIHJlcGVhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVl
ZCB0byBpdGVyYXRlIG92ZXIgYWxsIHRoZSB0eXBlcyB0byBpbnNlcnQgdGhlbSBpbiB0aGUgc2V0
LCBidXQgc2luY2UKKyAgICAgICAgYEBhcnJheVB1c2hgIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoaW5n
IG11bHRpcGxlIHZhbHVlcyBhdCB0aGUgc2FtZSB0aW1lIHRoaXMgaXMgbm8gbW9yZSB3b3JrIHRo
YW4gdXNpbmcgYW4gQXJyYXkuCisKIDIwMjItMDUtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYnBhZ2UgVHJhbnNsYXRpb25dIEF2b2lkIHJl
bW92aW5nIGVsZW1lbnRzIHdpdGggbm8gY2hpbGRyZW4gZHVyaW5nIHRleHQgbWFuaXB1bGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJh
YzEwNTI2ZWFiODZkMjQxYzUxYWQ4OS4uZTZlZDdlZDQwNjM3YmE1MmYxMjUyMDg3Y2JmOTZhMjg4
ZjViNGNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzY0LDYgKzM2
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzCisgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwogKQogCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCkBAIC0xNDA1LDE3ICsxNDA2LDYgQEAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfSEVBREVSUwogICAgICR7SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vSlNDQnVpbHRpbnMuaAogKQogCi1hZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7
SmF2YVNjcmlwdENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCAke0phdmFTY3JpcHRDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0luamVjdGVkU2NyaXB0U291
cmNlLm1pbi5qcwotICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCi0gICAgREVQRU5EUyAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS94eGQucGwgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNt
aW4ucHkKLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiLy8jIHNvdXJjZVVS
TD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzIiA+ICR7SmF2YVNjcmlw
dENvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0g
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9qc21pbi5weSA8ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgPj4gJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9J
bmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLSAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS94eGQucGwgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2VfanMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9JbmplY3RlZFNjcmlw
dFNvdXJjZS5taW4uanMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oCi0gICAgVkVSQkFUSU0pCi0KLWxpc3QoQVBQRU5EIEphdmFTY3Jp
cHRDb3JlX0hFQURFUlMgJHtKYXZhU2NyaXB0Q29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5oKQotCiBpZiAoV1RGX0NQVV9YODZfNjQpCiAgICAgaWYgKE1TVkMg
QU5EIE5PVCBFTkFCTEVfQ19MT09QKQogICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggOGQ1NDBiZDUxOTIxN2I1NTJiZjA2MDk4YzlkZGMyYTI3NGYzMzQwYi4uZjdi
M2RiN2I2MWQzMDYwN2U4YTZmYjUxNDNhNGMyNGVhZDIyODg1NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
MjEsNyArMjEsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvR2VuZXJhdGVkV2FzbU9wcy5hc20KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9HZW5lcmF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9Jbml0Qnl0ZWNv
ZGVzLmFzbQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0luaXRXYXNtLmFzbQotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0U291cmNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5s
dXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2N2Yy
YzY4NTRmOGExYmExM2MwOTVmN2UxNTRmNjhlOTdjYmYzOTEuLjFmYjYyM2NkNmY2ZThkODk4N2Y5
NDgwNDU0NGYwZDQ0ZTViMzVmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC02OCw3ICs2OCw2IEBAIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0g
JChKYXZhU2NyaXB0Q29yZSkvU2NyaXB0cwogCiAuUEhPTlkgOiBhbGwKIGFsbCA6IFwKLSAgICBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5oIFwKICAgICBMZXhlci5sdXQuaCBcCiAgICAgS2V5d29yZExv
b2t1cC5oIFwKICAgICBSZWdFeHBKaXRUYWJsZXMuaCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL1dlYkFzc2VtYmx5LmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgXAogIwogCiAjIFRoZSBjb21iaW5lZCBvdXRwdXQg
ZmlsZSBkZXBlbmRzIG9uIHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNj
cmlwdHMsIHNvCkBAIC0zNjgsMTIgKzM2OCw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanMgOiBDb21iaW5lZERvbWFpbnMuanNvbiAkKElOU1BFQ1RPUl9HRU5FUkFUCiAJ
JChQRVJMKSAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL3ByZXBy
b2Nlc3MucGwgLS1pbnB1dCBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmlu
IC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSIgLS1vdXRwdXQgaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCSQoREVMRVRFKSBpbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzLmluCiAKLUluamVjdGVkU2NyaXB0U291cmNlLmgg
OiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikvanNtaW4ucHkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikveHhkLnBsCi0J
ZWNobyAiLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2NyaXB0X0luamVjdGVkU2NyaXB0U291cmNl
LmpzIiA+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCi0JJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWluLnB5IDwgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzID4+IC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWlu
LmpzCi0JJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwgSW5qZWN0
ZWRTY3JpcHRTb3VyY2VfanMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuaAotCSQoREVMRVRFKSBJbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKLQog
QUlSX09QQ09ERV9GSUxFUyA9IFwKICAgICBBaXJPcGNvZGUuaCBcCiAgICAgQWlyT3Bjb2RlVXRp
bHMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIyZDA5MTMyMGQxNmU3Yzkx
ZDAzNjhhOGIyMzBmNTkyNzFjZmZkMTcuLjI0ZDRiZTg2YjljMTVmZGM2ZDI3ZDczYmE5MGVmYTg5
OTAzNGQyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQ1LDcgKzE0NDUs
NiBAQAogCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCOTE4
NUJGQUNDMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxM0U1QzAxODVCRkFDQzAwN0U5NUFE
IC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNj
cmlwdEhvc3QuaCAqLzsgfTsKIAkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTEzRTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaCAqLzsgfTsKLQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaCAqLzsgfTsKIAkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QzkxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MTRCMkMzMTg1
QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJ
bmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBNTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzUxLDYgKzM3NTAs
NyBAQAogCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVudW1lcmF0aW9uTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0
ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVy
YXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQURGQTI2MjE4RUYz
NTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdDTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
M0FGMDBEMjgxNzFBQzAwMDM3MUEyNSAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVR5
cGVEZWZpbml0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
YXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxNzcwQzRGMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MDcsNyArNDcwNyw2
IEBACiAJCUE1MTNFNUJDMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTEzRTVDMzE4NUY5
MkM5MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0U291cmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTNFNUM4MTg1Rjk2MjQwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTUxM0U1QzkxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NC
IC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmplY3RlZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzI4NCw3ICs3MjgzLDYgQEAKIAkJCQk5OTZCNzMwOTFCRDlGQTJDMDAzMzFCODQgLyog
RXJyb3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNzBCNzkxOTAxQzAyNDZDRTAwMjQ4MUUyIC8q
IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk2NTE0RjIxODE4QjNFMTY3MDA5OEZG
OEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8sCi0JCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCiAJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMx
MDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUExODE5M0UyMUI0
RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTE1
ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oICovLApAQCAtOTM2Myw2ICs5MzYxLDcgQEAKIAkJCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURG
RkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJCQkJNTM0RDlCRjgy
MzYzQzU1RDAwNTQ1MjREIC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAogCQkJCTcwMzU1
ODdEMUM0MTg0MTkwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8sCisJCQkJMkUzQUYwMEQy
ODE3MUFDMDAwMzcxQTI1IC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmpzICovLAogCQkJCTdDRjlC
QzYwMUI2NUQ5QjEwMDlEQjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5
QkM2MTFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCiAJ
CQkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKQEAg
LTEwNDUyLDcgKzEwNDUxLDYgQEAKIAkJCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDQjE4NUY5NjI0MDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0
MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1OUU5MzIxQkQxODI3OTAwMUFBNDEzIC8qIGlubGlu
ZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzkwNUJCNjkxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ4QTdCRjAxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMjM4MCw3ICsxMjM3OCw2IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2
QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM2QjMxMkMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDkuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0EyODFCNUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9y
bWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxODAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0xMjQwOSw3ICsxMjQwNiw2IEBACiAJCQkJNTM2QjMxOUQxRjczNUU3RDAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMx
RjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZpZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0IyODFCNUIwNTAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVy
SW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlMTM4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJFMUZBM0U3OEIw
MDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2
NkJGMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMTI0MjAsNyArMTI0MTYsNiBAQAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAv
KiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUYyMjY4RkJD
N0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUz
OEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ3LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0
IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhG
QkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MjQzMCw2ICsxMjQyNSw5IEBACiAJCQkJNTM4RjE1RUEyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZp
ZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI1QzlDREYy
MjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMzExMzVDOTI4MUI1QjAwMDBDMUE0QTkgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBT
b3VyY2VzICovLAorCQkJCUUzMTEzNUNBMjgxQjVCMDMwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRl
ckJhc2UuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBa
eWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cmlu
ZGV4IDY1ZGMxNWNjYWRmNWYwMGE2ZjJmNDkwMTA3MzAxOTc5YTg2ZDE2ODcuLjM4NzRkZDQyZjI3
NjBmMzRlODZkOGRjODE4NjFhNTJlYzg4ZmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAt
NTIsNiArNTIsNyBAQCBmdW5jdGlvbklzQXN5bmNSZWdFeHAgPSByZS5jb21waWxlKHIiKGFzeW5j
KT9ccypmdW5jdGlvbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVAogZnVuY3Rpb25OYW1lUmVnRXhw
ID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJl
LkRPVEFMTCkKIGZ1bmN0aW9uT3ZlcnJpZGRlbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiLipe
QG92ZXJyaWRkZW5OYW1lPShcIi4rXCIpJCIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIGZ1
bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzphc3luY1xzKyk/ZnVuY3Rp
b25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwg
cmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKQorZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIgPSBy
ZS5jb21waWxlKHIiLFxzKig/IVtee31dKlx9KSIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkK
IAogbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJl
Lk1VTFRJTElORSB8IHJlLkRPVEFMTCkKIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29t
cGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKQEAgLTE0NSw3ICsx
NDYsNyBAQCBjbGFzcyBCdWlsdGluRnVuY3Rpb246CiAgICAgICAgIGlzX25ha2VkX2NvbnN0cnVj
dG9yID0gZnVuY3Rpb25OYWtlZENvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJj
ZSkgIT0gTm9uZQogICAgICAgICBpZiBpc19uYWtlZF9jb25zdHJ1Y3RvcjoKICAgICAgICAgICAg
IGlzX2NvbnN0cnVjdG9yID0gVHJ1ZQotICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBm
b3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlb
MF0uc3BsaXQoJywnKV0KKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4g
ZnVuY3Rpb25QYXJhbWV0ZXJzU3BsaXR0ZXIuc3BsaXQoZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIu
ZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdKV0KICAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNb
MF0pID09IDA6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KIApAQCAtMzAzLDIxICszMDQs
NTUgQEAgY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgogICAgICAgICBmdW5jdGlvbkJvdW5kcyA9
IFtdCiAgICAgICAgIHN0YXJ0ID0gMAogICAgICAgICBlbmQgPSAwCisKICAgICAgICAgZm9yIG1h
dGNoIGluIG1hdGNoZXM6CiAgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKICAgICAg
ICAgICAgIGlmIHN0YXJ0IDwgZW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAg
ICAgICBlbmQgPSBtYXRjaC5lbmQoKQogICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7
JzoKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICAgICAgZW5kICs9
IDEKICAgICAgICAgICAgIGRlcHRoID0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAg
ICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3RlciA9IEZhbHNlCisgICAgICAgICAgICBjdXJyZW50
U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6
Ci0gICAgICAgICAgICAgICAgaWYgdGV4dFtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICAg
ICAgZGVwdGggPSBkZXB0aCArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAn
fSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgICAgIGVuZCArPSAxCisgICAgICAgICAgICAg
ICAgY3VycmVudENoYXJhY3RlciA9IHRleHRbZW5kXQorCisgICAgICAgICAgICAgICAgaWYgaXNF
c2NhcGluZ0NoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0NoYXJhY3Rl
ciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICBpZiBjdXJyZW50Q2hhcmFjdGVyIGluICJgJ1wiIjoKKyAgICAgICAgICAgICAgICAgICAgaWYg
Y3VycmVudFN0cmluZ1N0YXJ0Q2hhcmFjdGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyCisgICAg
ICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSBjdXJyZW50U3RyaW5nU3Rh
cnRDaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nU3RhcnRD
aGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICdcXCcgYW5kIGN1cnJlbnRTdHJpbmdTdGFy
dENoYXJhY3RlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGluZ0No
YXJhY3RlciA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgICAgICMgRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5ODE3PiBSZWd1bGFyIGV4cHJlc3Npb25z
IGNvbnRhaW5pbmcgdW5iYWxhbmNlZCBxdW90YXRpb24gbWFya3MgKGxpa2UgdGhlIG9uZQorICAg
ICAgICAgICAgICAgICMgZm91bmQgaW4gYFN0cmluZ1Byb3RvdHlwZS5qc2AncyBgY3JlYXRlSFRN
TGApIGNhbiBjb25mdXNlIHRoZSBzdGF0ZSBvZiB0cmFja2luZyBvdXIgYmVpbmcKKyAgICAgICAg
ICAgICAgICAjIGluc2lkZS9vdXRzaWRlIGEgc3RyaW5nLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBq
dXN0IHJlc2V0IG91ciBzdHJpbmcgc3RhdGUgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUKKyAgICAg
ICAgICAgICAgICAjICh1bmxlc3Mgd2UgYXJlIGluc2lkZSBhIHRlbXBsYXRlIHN0cmluZykuIFRo
aXMgd2lsbCB3b3JrIHVubGVzcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucworICAgICAg
ICAgICAgICAgICMgdW5iYWxhbmNlZCBjdXJseSBicmFja2V0cyBvciBhIGNsb3NpbmcgY3VybHkg
YnJhY2tldCB3ZSBjYXJlIGFib3V0IGlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGVhcmxpZXIK
KyAgICAgICAgICAgICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIGFuIHVuYmFsYW5jZWQg
cXVvdGUuCisgICAgICAgICAgICAgICAgaWYgY3VycmVudENoYXJhY3RlciA9PSAnXG4nIGFuZCBj
dXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgIT0gJ2AnOgorICAgICAgICAgICAgICAgICAgICBj
dXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50U3RyaW5nU3RhcnRDaGFyYWN0ZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICAgICBpZiBjdXJyZW50Q2hhcmFjdGVyID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVw
dGggKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgY3VycmVudENoYXJhY3RlciA9PSAnfSc6Cisg
ICAgICAgICAgICAgICAgICAgIGRlcHRoIC09IDEKKworICAgICAgICAgICAgZW5kICs9IDEKICAg
ICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCiAKICAgICAgICAg
ZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVu
ZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDg4OGM4YmFlNDM1Zjg4NjNmNDgw
ZGQ4MWU0NTU2NmQ3OGI2MWVmYTcuLjcwOTkyNmFlNzM4NjkwN2RiZDQ5YjFkMGY1ZDUzNjE1ZjM0
ZTg1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNv
bnN0IFMKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJzU3RhcnQgKyAxOwog
ICAgICAgICB1bnNpZ25lZCBjb21tYXMgPSAwOworICAgICAgICBib29sIGluc2lkZUN1cmx5QnJh
Y2tldHMgPSBmYWxzZTsKICAgICAgICAgYm9vbCBzYXdPbmVQYXJhbSA9IGZhbHNlOwogICAgICAg
ICBib29sIGhhc1Jlc3RQYXJhbSA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAt
MTEzLDcgKzExNCwxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICAgICAgaWYg
KGNoYXJhY3RlcnNbaV0gPT0gJyknKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCisgICAgICAgICAgICBpZiAoY2hhcmFjdGVy
c1tpXSA9PSAnfScpCisgICAgICAgICAgICAgICAgaW5zaWRlQ3VybHlCcmFja2V0cyA9IGZhbHNl
OworICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAneycgfHwgaW5zaWRlQ3Vy
bHlCcmFja2V0cykgeworICAgICAgICAgICAgICAgIGluc2lkZUN1cmx5QnJhY2tldHMgPSB0cnVl
OworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnLCcpCiAgICAgICAgICAgICAgICAg
Kytjb21tYXM7CiAgICAgICAgICAgICBlbHNlIGlmICghTGV4ZXI8TENoYXI+Ojppc1doaXRlU3Bh
Y2UoY2hhcmFjdGVyc1tpXSkpCiAgICAgICAgICAgICAgICAgc2F3T25lUGFyYW0gPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU0
ODNlODcxZTc0M2E5YTEyYjJjZTMwZGRmYzJhMDBjNTJhZWJjNWQuLjcyOTFmYTJkNWIyZmIxYTE3
NTdlMWUxMDVjZWMzMWI5NGNhNGRkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE5Miw2ICsxOTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oY3JlYXRlUmVtb3RlRnVuY3Rpb24pIFwKICAgICBtYWNybyhpc1JlbW90ZUZ1
bmN0aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlTb3J0KSBcCisgICAgbWFjcm8oanNvblBhcnNlKSBc
CisgICAgbWFjcm8oanNvblN0cmluZ2lmeSkgXAorICAgIG1hY3JvKFN0cmluZykgXAorICAgIG1h
Y3JvKHN1YnN0cikgXAorICAgIG1hY3JvKGVuZHNXaXRoKSBcCisgICAgbWFjcm8oZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAorICAg
IG1hY3JvKGdldE93blByb3BlcnR5U3ltYm9scykgXAorICAgIG1hY3JvKGhhc093bikgXAorICAg
IG1hY3JvKGluZGV4T2YpIFwKKyAgICBtYWNybyhwb3ApIFwKIAogCiBuYW1lc3BhY2UgU3ltYm9s
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JI
ZWxwZXJzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0l0ZXJhdG9ySGVscGVy
cy5qcwppbmRleCAyNjNlNDNiZmMwZTgzMTE2MDUwMmE5ODVlMjQxYWUwN2M3N2VlMmY0Li5iMTk4
NmU4ODUzMGNlYzY2MmMxOWZmZWFlNzVhMzRiNzVlODZmZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvSXRlcmF0b3JIZWxwZXJzLmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9JdGVyYXRvckhlbHBlcnMuanMKQEAgLTUxLDMgKzUxLDQz
IEBAIGZ1bmN0aW9uIHBlcmZvcm1JdGVyYXRpb24oaXRlcmFibGUpCiAgICAgICAgIEBwdXRCeVZh
bERpcmVjdChyZXN1bHQsIGluZGV4KyssIGl0ZW0udmFsdWUpOwogICAgIH0KIH0KKworQGdsb2Jh
bFByaXZhdGUKK2Z1bmN0aW9uIHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvcikKK3sKKyAgICBsZXQg
d3JhcHBlciA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICB3cmFwcGVyLkBAaXRlcmF0b3Ig
PSBmdW5jdGlvbigpIHsgcmV0dXJuIGl0ZXJhdG9yOyB9CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9
CisKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBidWlsdGluU2V0SXRlcmFibGUoc2V0KQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAgICBpZiAoIUBpc1NldChzZXQpKQorICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImJ1aWx0aW5TZXRJdGVyYWJsZSBjYWxsZWQgd2l0aCBub24tU2V0IG9i
amVjdC4iKTsKKworICAgIC8vIFVzaW5nIHRoZSBwcml2YXRlIEBAaXRlcmF0b3Igb25seSBndWFy
YW50ZWVzIHRoYXQgdGhlIHN5bWJvbCBpdHNlbGYgaGFzIG5vdCBiZWVuIG1vZGlmaWVkLCBidXQg
ZG9lcyBub3QgcHJvdGVjdAorICAgIC8vIGFnYWluc3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBoYXZp
bmcgYmVlbiByZXBsYWNlZC4gRm9yIFNldHMsIGBAdmFsdWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBm
dW5jdGlvbiBvcmlnaW5hbGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgor
ICAgIGxldCBpdGVyYXRvckZ1bmN0aW9uID0gc2V0LkB2YWx1ZXM7CisgICAgCisgICAgcmV0dXJu
IEB3cmFwcGVkSXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChzZXQpKTsKK30KKworQGds
b2JhbFByaXZhdGUKK2Z1bmN0aW9uIGJ1aWx0aW5NYXBJdGVyYWJsZShtYXApCit7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIAorICAgIGlmICghQGlzTWFwKG1hcCkpCisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiYnVpbHRpbk1hcEl0ZXJhYmxlIGNhbGxlZCB3aXRoIG5vbi1NYXAgb2JqZWN0LiIp
OworCisgICAgLy8gVXNpbmcgdGhlIHByaXZhdGUgQEBpdGVyYXRvciBvbmx5IGd1YXJhbnRlZXMg
dGhhdCB0aGUgc3ltYm9sIGl0c2VsZiBoYXMgbm90IGJlZW4gbW9kaWZpZWQsIGJ1dCBkb2VzIG5v
dCBwcm90ZWN0CisgICAgLy8gYWdhaW5zdCB0aGUgaXRlcmF0b3IgaXRzZWxmIGhhdmluZyBiZWVu
IHJlcGxhY2VkLiBGb3IgTWFwcywgYEBlbnRyaWVzYCBoYXMgYSBjb3B5IG9mIHRoZSBmdW5jdGlv
biBvcmlnaW5hbGx5CisgICAgLy8gcGxhY2VkIGF0IGBTeW1ib2wuaXRlcmF0b3JgLgorICAgIGxl
dCBpdGVyYXRvckZ1bmN0aW9uID0gbWFwLkBlbnRyaWVzOworCisgICAgcmV0dXJuIEB3cmFwcGVk
SXRlcmF0b3IoaXRlcmF0b3JGdW5jdGlvbi5AY2FsbChtYXApKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFjNDdlZWVi
YTg2OTA4YjkwZjk5Y2IwY2U3NDZmMDE5YmQzZWQ3MjMuLmI4NjUzZTg2NTY5OTMxZmNiYjZlMmY0
YjQyNTQ4YzRiMGM2ZTEzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTIwLDYgKzEyMCw5IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICAgIHYoY3JlYXRlUmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGlz
UmVtb3RlRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGFycmF5U29ydCwgbnVsbHB0cikgXAor
ICAgIHYoanNvblBhcnNlLCBudWxscHRyKSBcCisgICAgdihqc29uU3RyaW5naWZ5LCBudWxscHRy
KSBcCisgICAgdihTdHJpbmcsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19U
SU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggY2Iw
NjM0MDJiZjEyMmVhZTE2OThlYmEyYTdiYjdmNGQ3NmVmOTc3MC4uMjJkMWJjZTdlYWIwZmFmMTU0
ZTA4NzViN2MwYzc2ZGNkYmQxYzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0U291cmNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAtMTM1LDI1ICsxMzUsMTggQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNsZWFyRXhjZXB0aW9uVmFsdWUoKQogICAgICAgICBp
bmplY3RlZFNjcmlwdC5jbGVhckV4Y2VwdGlvblZhbHVlKCk7CiB9CiAKLVN0cmluZyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMsIHNp
emVvZihJbmplY3RlZFNjcmlwdFNvdXJjZV9qcykpOwotfQotCi1FeHBlY3RlZDxKU09iamVjdCos
IE5ha2VkUHRyPEV4Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGludCBpZCkKK0V4cGVjdGVkPEpTT2JqZWN0KiwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgaWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNl
KHNvdXJjZSwgeyB9KTsKICAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsVGhpcygpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhj
ZXB0aW9uOwotICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIgPSBt
X2Vudmlyb25tZW50LmV2YWx1YXRlSGFuZGxlcigpOwotICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGV2YWx1YXRlSGFuZGxlcihnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUsIGdsb2JhbFRoaXNW
YWx1ZSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24p
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAg
ICBhdXRvKiBmdW5jdGlvblZhbHVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihnbG9iYWxPYmplY3Qt
PmxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlSW5zcGVjdG9ySW5qZWN0
ZWRTY3JpcHQpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBtYWtlVW5leHBlY3Rl
ZChzY29wZS5leGNlcHRpb24oKSkpOworICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YShm
dW5jdGlvblZhbHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKQEAgLTE2Niw3ICsxNTksNyBAQCBFeHBlY3RlZDxKU09iamVjdCosIE5ha2VkUHRyPEV4
Y2VwdGlvbj4+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTYwogICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6
OmNhbGwoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1Zh
bHVlLCBhcmdzKTsKLSAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdC5nZXRPYmplY3QoKTsKIH0KIApAQCAtMTgzLDcgKzE3Niw3IEBAIEluamVj
dGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogCiAg
ICAgaW50IGlkID0gaW5qZWN0ZWRTY3JpcHRJZEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
Y3JlYXRlUmVzdWx0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2Uo
KSwgZ2xvYmFsT2JqZWN0LCBpZCk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBjcmVhdGVJbmpl
Y3RlZFNjcmlwdChnbG9iYWxPYmplY3QsIGlkKTsKICAgICBpZiAoIWNyZWF0ZVJlc3VsdCkgewog
ICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJvcigpOwogICAgICAgICBBU1NF
UlQoZXJyb3IpOwpAQCAtMTk3LDEyICsxOTAsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA+IDApCiAgICAgICAgICAgICBzdGFja1swXS5jb21w
dXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgICAgICBXVEZMb2dBbHdheXMoIkVy
cm9yIHdoZW4gY3JlYXRpbmcgaW5qZWN0ZWQgc2NyaXB0OiAlcyAoJWQ6JWQpXG4iLCBlcnJvci0+
dmFsdWUoKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNv
bHVtbik7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXNcbiIsIGluamVjdGVkU2NyaXB0U291cmNl
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogICAgIGlmICghY3JlYXRlUmVzdWx0LnZhbHVlKCkpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBvYmplY3QiKTsKLSAgICAgICAgV1RGTG9n
QWx3YXlzKCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5o
CmluZGV4IDFmNzQwYzQwNjg0NTM2NmE3NTliYTBhZjRjOGMzMjc3NzQ5NTQ4ZWEuLmI1NDEwMTJl
ZjRiYjRiZjIyZTdhZTM4MmJmZjE1OTg1YWM5OWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzUs
OCArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
aW50PiBtX3NjcmlwdFN0YXRlVG9JZDsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgaW5qZWN0ZWRT
Y3JpcHRTb3VyY2UoKTsKLSAgICBFeHBlY3RlZDxKU0M6OkpTT2JqZWN0KiwgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+PiBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIGludCBpZCk7CisgICAgRXhwZWN0ZWQ8SlNDOjpKU09iamVj
dCosIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPj4gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGludCBpZCk7CiAKICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9l
bnZpcm9ubWVudDsKICAgICBSZWY8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0
SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJm
NDhmZDVlOWExMS4uMGI2NzVlODQ0NjY5MDYwMjEyMzg3ZmRiNGJhZDVkMGE2NTc4ZjgxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHAKQEAgLTc0LDEzICs3NCwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9k
dWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TQogICAgICAgICBpZiAoc3RhY2suc2l6ZSgpID4gMCkKICAgICAgICAgICAgIHN0YWNrWzBdLmNv
bXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3Igd2hlbiBjYWxsaW5nICdoYXNJbmplY3RlZE1vZHVsZScgZm9yICclcyc6ICVzICglZDol
ZClcbiIsIG5hbWUoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+dmFsdWUoKS50b1dURlN0cmluZyhp
bmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkudXRmOCgpLmRhdGEoKSwgbGluZSwgY29sdW1u
KTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlc1xuIiwgc291cmNlKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGlmICgh
aGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4oKSB8fCAhaGFzSW5qZWN0
ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewogICAgICAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KHNvdXJjZSgpKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpKU1Zh
bHVlKGluamVjdE1vZHVsZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkp
OwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChob3N0KGluamVjdGVkU2NyaXB0TWFu
YWdlciwgaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkpKTsKICAgICAgICAgYXV0byBpbmpl
Y3RNb2R1bGVSZXN1bHQgPSBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoZnVuY3Rpb24pOwogICAgICAgICBpZiAoIWluamVjdE1vZHVsZVJlc3VsdCkgewpAQCAtOTIs
NyArOTEsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TQogICAgICAgICAgICAgaWYgKHN0YWNr
LnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgc3RhY2tbMF0uY29tcHV0ZUxpbmVBbmRDb2x1
bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Igd2hlbiBj
YWxsaW5nICdpbmplY3RNb2R1bGUnIGZvciAnJXMnOiAlcyAoJWQ6JWQpXG4iLCBuYW1lKCkudXRm
OCgpLmRhdGEoKSwgZXJyb3ItPnZhbHVlKCkudG9XVEZTdHJpbmcoaW5qZWN0ZWRTY3JpcHQuZ2xv
YmFsT2JqZWN0KCkpLnV0ZjgoKS5kYXRhKCksIGxpbmUsIGNvbHVtbik7Ci0gICAgICAgICAgICBX
VEZMb2dBbHdheXMoIiVzXG4iLCBzb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmgKaW5kZXggMjc5YmFlNGViYWU0YzE4NTQ0OGM2OTdlOWEwM2JlZGI1ZWFmODU4Yi4uYTRiZWQ5
NjkyYjc0NTZhMDA1ZDc2ZGY0ZmU0ODUxNjFmOTVlNGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBJbmplY3RlZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2Ug
ewogcHVibGljOgogICAgIH5JbmplY3RlZFNjcmlwdE1vZHVsZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNGdW5j
dGlvbiogaW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluamVjdGVkU2NyaXB0TWFuYWdlcios
IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzCmluZGV4IDQ4YmFlZDZhMWI3ZmZhZDQ1MzM3OWEyZjFlYjcxYjhjNDkyNWY2YzQuLjAwODAz
NjY2MjhjNjZhNWJlMDQwMjRhYTU2MGUwZDgxMmMyNzg4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNywxNyAr
MjcsMzggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8jIHNvdXJjZVVSTD1fX0luamVjdGVkU2Ny
aXB0X0luamVjdGVkU2NyaXB0U291cmNlLmpzCitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3Jl
YXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgvKiBrZXkxLCB2YWx1ZTEsIGtleTIsIHZhbHVlMiwg
Li4uICovKQoreworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICUgMiAhPT0gMCkKKyAgICAgICAg
QHRocm93UmFuZ2VFcnJvcigiYGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGVgIHJlcXVpcmVz
IHRoYXQgZWFjaCBrZXkgYXJndW1lbnQgYmUgZm9sbG93ZWQgYnkgYSB2YWx1ZSwgcmVzdWx0aW5n
IGluIGFuIGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy4iKTsKKworICAgIGxldCBvYmplY3QgPSBA
T2JqZWN0LkBjcmVhdGUobnVsbCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7IGkgKz0gMikKKyAgICAgICAgb2JqZWN0W2FyZ3VtZW50c1tpXV0gPSBhcmd1bWVudHNb
aSArIDFdOwogCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CisgICAgcmV0dXJuIG9iamVjdDsKK30KIAotLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyOTQ+IFdlYiBJbnNwZWN0b3I6IFBhcnNl
IEluamVjdGVkU2NyaXB0U291cmNlIGFzIGEgYnVpbHQtaW4gdG8gZ2V0IGd1YXJhbnRlZWQgbm9u
LXVzZXItb3ZlcnJpZGRlbiBidWlsdC1pbnMKK0BnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBjcmVh
dGVBcnJheVdpdGhvdXRQcm90b3R5cGUoLyogdmFsdWUxLCB2YWx1ZTIsIC4uLiAqLykKK3sKKyAg
ICBsZXQgYXJyYXkgPSBuZXcgQEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpOworICAgIGFycmF5Ll9f
cHJvdG9fXyA9IG51bGw7CisgICAgCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyArK2kpCisgICAgICAgIEBhcnJheVB1c2goYXJyYXksIGFyZ3VtZW50c1tpXSk7Cisg
ICAgCisgICAgcmV0dXJuIGFycmF5OworfQogCi12YXIgT2JqZWN0ID0ge30uY29uc3RydWN0b3I7
CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gY3JlYXRlSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHQo
SW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0
SWQpCit7CiAKIGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9i
aik7CisgICAgcmV0dXJuIEBTdHJpbmcob2JqKTsKIH0KIAogZnVuY3Rpb24gdG9TdHJpbmdEZXNj
cmlwdGlvbihvYmopCkBAIC05Myw2ICsxMTQsMTUgQEAgZnVuY3Rpb24gaXNQcmltaXRpdmVWYWx1
ZSh2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KKyAgICAKK2Z1bmN0aW9u
IGNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzT2Jq
ZWN0KSB7CisgICAgbGV0IGl0ZXJhdG9yRnVuY3Rpb24gPSBhcmd1bWVudHNPYmplY3QuQEBpdGVy
YXRvcjsKKyAgICByZXR1cm4gQHdyYXBwZWRJdGVyYXRvcihpdGVyYXRvckZ1bmN0aW9uLkBjYWxs
KGFyZ3VtZW50c09iamVjdCkpOworfQorCitmdW5jdGlvbiBtYXgoYSwgYikgeworICAgIHJldHVy
biBhID4gYiA/IGEgOiBiOworfQogCiAvLyAtLS0tLS0tCiAKQEAgLTEwMSwxMiArMTMxLDEyIEBA
IGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgY29uc3RydWN0
b3IoKQogICAgIHsKICAgICAgICAgdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQgPSAxOwotICAgICAg
ICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IHt9OwotICAgICAgICB0aGlzLl9pZFRvT2JqZWN0
R3JvdXBOYW1lID0ge307Ci0gICAgICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OwotICAgICAg
ICB0aGlzLl9tb2R1bGVzID0ge307CisgICAgICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0g
QGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKKyAgICAgICAgdGhpcy5faWRUb09iamVj
dEdyb3VwTmFtZSA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAgICAgIHRo
aXMuX29iamVjdEdyb3VwcyA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCk7CisgICAg
ICAgIHRoaXMuX21vZHVsZXMgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpOwogICAg
ICAgICB0aGlzLl9uZXh0U2F2ZWRSZXN1bHRJbmRleCA9IDE7Ci0gICAgICAgIHRoaXMuX3NhdmVk
UmVzdWx0cyA9IFtdOworICAgICAgICB0aGlzLl9zYXZlZFJlc3VsdHMgPSBAY3JlYXRlQXJyYXlX
aXRob3V0UHJvdG90eXBlKCk7CiAgICAgfQogCiAgICAgLy8gSW5qZWN0ZWRTY3JpcHQgQysrIEFQ
SQpAQCAtMTE1LDcgKzE0NSw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fd3JhcEFuZFNhdmVDYWxsKG9iamVj
dEdyb3VwLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsICgpID0+
IHsKICAgICAgICAgICAgIGNvbnN0IGlzRXZhbE9uQ2FsbEZyYW1lID0gZmFsc2U7Ci0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVuY3Rpb25TdHJpbmcsIGlz
RXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLmFwcGx5KHVuZGVmaW5lZCwg
YXJncyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVPbihJbmplY3RlZFNjcmlw
dEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24sIEluamVjdGVkU2NyaXB0SG9zdCwgZnVu
Y3Rpb25TdHJpbmcsIGlzRXZhbE9uQ2FsbEZyYW1lLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkpLkBh
cHBseShAdW5kZWZpbmVkLCBhcmdzKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xMzYsMTYg
KzE2NiwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEocHJvbWlzZU9iamVj
dCBpbnN0YW5jZW9mIFByb21pc2UpKSB7CisgICAgICAgIGlmICghKHByb21pc2VPYmplY3QgaW5z
dGFuY2VvZiBAUHJvbWlzZSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJPYmplY3Qgd2l0aCBn
aXZlbiBpZCBpcyBub3QgYSBQcm9taXNlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBsZXQgcmVzb2x2ZSA9ICh2YWx1ZSkgPT4gewotICAgICAgICAgICAgbGV0
IHJldHVybk9iamVjdCA9IHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAg
ICAgICAgICAgICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZSh2YWx1ZSwgcHJvbWlzZU9i
amVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKLSAgICAgICAg
ICAgIH07CisgICAgICAgICAgICBsZXQgcmV0dXJuT2JqZWN0ID0gQGNyZWF0ZU9iamVjdFdpdGhv
dXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIndhc1Rocm93biIsIGZhbHNlLAorICAgICAg
ICAgICAgICAgICJyZXN1bHQiLCBSZW1vdGVPYmplY3QuY3JlYXRlKHZhbHVlLCBwcm9taXNlT2Jq
ZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcpLAorICAgICAgICAg
ICAgKTsKIAogICAgICAgICAgICAgaWYgKHNhdmVSZXN1bHQpIHsKICAgICAgICAgICAgICAgICB0
aGlzLl9zYXZlZFJlc3VsdEluZGV4ID0gMDsKQEAgLTE1OSw3ICsxODksNyBAQCBsZXQgSW5qZWN0
ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICBsZXQgcmVqZWN0ID0gKHJl
YXNvbikgPT4gewogICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fY3JlYXRlVGhyb3duVmFsdWUo
cmVhc29uLCBwcm9taXNlT2JqZWN0R3JvdXBOYW1lKSk7CiAgICAgICAgIH07Ci0gICAgICAgIHBy
b21pc2VPYmplY3QudGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAgICBwcm9taXNlT2JqZWN0
LkB0aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICAgfQogCiAgICAgZXZhbHVhdGVPbkNhbGxGcmFt
ZSh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVS
ZXN1bHQpCkBAIC0xODAsMTQgKzIxMCwxNCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJ
bmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWlzRGVmaW5lZChvYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7CiAKLSAgICAg
ICAgbGV0IHJlc29sdmVkQXJncyA9IFtdOworICAgICAgICBsZXQgcmVzb2x2ZWRBcmdzID0gQGNy
ZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICBpZiAoYXJncykgewogICAgICAg
ICAgICAgbGV0IGNhbGxBcmdzID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKGFyZ3MpOwog
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsQXJncy5sZW5ndGg7ICsraSkgewog
ICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tp
XSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTcsMTAgKzIyNywxMCBAQCBsZXQgSW5q
ZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHR5cGVv
ZiBmdW5jICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhw
cmVzc2lvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAgICAg
ICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2
ZWRBcmdzKSwgb2JqZWN0R3JvdXBOYW1lLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcp
Ci0gICAgICAgICAgICB9OworICAgICAgICAgICAgcmV0dXJuIEBjcmVhdGVPYmplY3RXaXRob3V0
UHJvdG90eXBlKAorICAgICAgICAgICAgICAgICJ3YXNUaHJvd24iLCBmYWxzZSwKKyAgICAgICAg
ICAgICAgICAicmVzdWx0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShmdW5jLkBhcHBseShvYmplY3Qs
IHJlc29sdmVkQXJncyksIG9iamVjdEdyb3VwTmFtZSwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQ
cmV2aWV3KSwKKyAgICAgICAgICAgICk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cE5hbWUpOwog
ICAgICAgICB9CkBAIC0yMzMsMTMgKzI2MywyMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgIGdldFByb3BlcnRpZXMob2JqZWN0SWQsIG93blByb3BlcnRp
ZXMsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAg
ICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IG93blByb3BlcnRpZXMgPyBJbmplY3RlZFNjcmlwdC5D
b2xsZWN0aW9uTW9kZS5Pd25Qcm9wZXJ0aWVzIDogSW5qZWN0ZWRTY3JpcHQuQ29sbGVjdGlvbk1v
ZGUuQWxsUHJvcGVydGllczsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3BlcnRpZXMob2Jq
ZWN0SWQsIGNvbGxlY3Rpb25Nb2RlLCB7ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCwgZ2VuZXJhdGVQ
cmV2aWV3fSk7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBj
b2xsZWN0aW9uTW9kZSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAg
ICAiZmV0Y2hTdGFydCIsIGZldGNoU3RhcnQsCisgICAgICAgICAgICAiZmV0Y2hDb3VudCIsIGZl
dGNoQ291bnQsCisgICAgICAgICAgICAiZ2VuZXJhdGVQcmV2aWV3IiwgZ2VuZXJhdGVQcmV2aWV3
LAorICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMob2Jq
ZWN0SWQsIGZldGNoU3RhcnQsIGZldGNoQ291bnQsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAg
ICAgICAgIGxldCBjb2xsZWN0aW9uTW9kZSA9IEluamVjdGVkU2NyaXB0LkNvbGxlY3Rpb25Nb2Rl
Lk93blByb3BlcnRpZXMgfCBJbmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZS5OYXRpdmVHZXR0
ZXJQcm9wZXJ0aWVzOwotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJvcGVydGllcyhvYmplY3RJ
ZCwgY29sbGVjdGlvbk1vZGUsIHtmZXRjaFN0YXJ0LCBmZXRjaENvdW50LCBnZW5lcmF0ZVByZXZp
ZXcsIG5hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZX0pOworICAgICAgICByZXR1cm4gdGhpcy5f
Z2V0UHJvcGVydGllcyhvYmplY3RJZCwgY29sbGVjdGlvbk1vZGUsIEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKAorICAgICAgICAgICAgImZldGNoU3RhcnQiLCBmZXRjaFN0YXJ0LAorICAg
ICAgICAgICAgImZldGNoQ291bnQiLCBmZXRjaENvdW50LAorICAgICAgICAgICAgImdlbmVyYXRl
UHJldmlldyIsIGdlbmVyYXRlUHJldmlldywKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNW
YWx1ZXMiLCB0cnVlLAorICAgICAgICApKTsKICAgICB9CiAKICAgICBnZXRJbnRlcm5hbFByb3Bl
cnRpZXMob2JqZWN0SWQsIGdlbmVyYXRlUHJldmlldykKQEAgLTI1Niw3ICsyOTUsNyBAQCBsZXQg
SW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAgICAgICAgIGxldCBkZXNj
cmlwdG9ycyA9IHRoaXMuX2ludGVybmFsUHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOwogICAg
ICAgICBpZiAoIWRlc2NyaXB0b3JzKQotICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAg
ICAgcmV0dXJuIEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGRlc2NyaXB0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBs
ZXQgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2ldOwpAQCAtMjgwLDEyICszMTksMTMgQEAgbGV0
IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBsZXQgZW50cmllcyA9IHRoaXMuX2VudHJpZXMob2JqZWN0LCBJbmplY3Rl
ZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpLCBmZXRjaFN0YXJ0LCBmZXRjaENvdW50KTsKLSAg
ICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IGVu
dHJ5ID0gZW50cmllc1tpXTsKICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShlbnRyeS52YWx1ZSwgb2JqZWN0R3JvdXBOYW1lLCBmYWxzZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBpZiAoImtleSIgaW4gZW50cnkpCiAgICAgICAgICAgICAgICAgZW50cnkua2V5ID0g
UmVtb3RlT2JqZWN0LmNyZWF0ZShlbnRyeS5rZXksIG9iamVjdEdyb3VwTmFtZSwgZmFsc2UsIHRy
dWUpOwotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZW50cmllczsKICAgICB9CiAKICAgICBzYXZlUmVzdWx0KGNhbGxBcmd1
bWVudEpTT04pCkBAIC0zMDYsMTAgKzM0NiwxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFz
cyBJbmplY3RlZFNjcmlwdAogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBsZXQgcmVzdWx0ID0gW107CisgICAgICAgIGxldCByZXN1
bHQgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIGxldCBkZXB0aCA9
IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBJbmplY3RlZFNj
cmlwdC5DYWxsRnJhbWVQcm94eShkZXB0aCsrLCBjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIEBh
cnJheVB1c2gocmVzdWx0LCBuZXcgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkoZGVwdGgr
KywgY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVy
OwogICAgICAgICB9IHdoaWxlIChjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMzI2LDcgKzM2Niw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2Ny
aXB0CiAgICAgd3JhcEpTT05TdHJpbmcoanNvblN0cmluZywgZ3JvdXBOYW1lLCBnZW5lcmF0ZVBy
ZXZpZXcpCiAgICAgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMud3Jh
cE9iamVjdChKU09OLnBhcnNlKGpzb25TdHJpbmcpLCBncm91cE5hbWUsIHRydWUsIGdlbmVyYXRl
UHJldmlldyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwT2JqZWN0KEBqc29uUGFyc2Uo
anNvblN0cmluZyksIGdyb3VwTmFtZSwgdHJ1ZSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAg
fSBjYXRjaCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQpAQCAtMzQzLDEy
ICszODMsMTIgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAog
ICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIGNvbHVt
bnMgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgY29sdW1ucyA9IFtjb2x1bW5zXTsKKyAgICAg
ICAgICAgIGNvbHVtbnMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKGNvbHVtbnMpOwog
CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShjb2x1bW5zKSA9PT0gImFy
cmF5IikgewotICAgICAgICAgICAgY29sdW1uTmFtZXMgPSBbXTsKKyAgICAgICAgICAgIGNvbHVt
bk5hbWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGNv
bHVtbk5hbWVzLnB1c2godG9TdHJpbmcoY29sdW1uc1tpXSkpOworICAgICAgICAgICAgICAgIEBh
cnJheVB1c2goY29sdW1uTmFtZXMsIHRvU3RyaW5nKGNvbHVtbnNbaV0pKTsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBSZW1vdGVPYmplY3QuY3JlYXRlKHRhYmxlLCAiY29uc29sZSIsIGZh
bHNlLCB0cnVlLCBjb2x1bW5OYW1lcyk7CkBAIC0zOTYsNyArNDM2LDcgQEAgbGV0IEluamVjdGVk
U2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFt
ZSA9PT0gImNvbnNvbGUiKSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFJlc3VsdDsK
ICAgICAgICAgICAgIHRoaXMuX25leHRTYXZlZFJlc3VsdEluZGV4ID0gMTsKLSAgICAgICAgICAg
IHRoaXMuX3NhdmVkUmVzdWx0cyA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRz
ID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAg
bGV0IGdyb3VwID0gdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CkBAIC00Mjks
MTQgKzQ2OSwxNiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKICAgICB9CiAKLSAgICBpbmplY3RN
b2R1bGUobmFtZSwgc291cmNlLCBob3N0KQorICAgIGluamVjdE1vZHVsZShuYW1lLCBtb2R1bGVG
dW5jdGlvbiwgaG9zdCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBmYWxz
ZTsKIAotICAgICAgICBsZXQgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlwdEhvc3QuZXZh
bHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGdW5j
dGlvbiAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRocm93ICJFcnJvcjogV2ViIEluc3Bl
Y3RvcjogYSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQgZm9yIGluamVjdE1vZHVsZSI7Ci0gICAgICAg
IG1vZHVsZUZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LCBpbmplY3RlZFNjcmlwdElkLCB0aGlzLCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0s
IGhvc3QpOworICAgICAgICBtb2R1bGVGdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAiUmVtb3RlT2JqZWN0IiwgUmVtb3RlT2JqZWN0
LAorICAgICAgICAgICAgIkNvbW1hbmRMaW5lQVBJIiwgQ29tbWFuZExpbmVBUEksCisgICAgICAg
ICksIGhvc3QpOwogCiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSB0cnVlOwogICAgIH0K
QEAgLTQ3MCwxMCArNTEyLDEwIEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChvYmplY3RHcm91cE5hbWUpIHsKICAgICAgICAgICAgIGxldCBn
cm91cCA9IHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAg
aWYgKCFncm91cCkgewotICAgICAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICAg
ICAgZ3JvdXAgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2goaWQpOworICAgICAgICAgICAgQGFycmF5UHVz
aChncm91cCwgaWQpOwogICAgICAgICAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZVtpZF0g
PSBvYmplY3RHcm91cE5hbWU7CiAgICAgICAgIH0KIApAQCAtNDg4LDggKzUzMCw3IEBAIGxldCBJ
bmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAKICAgICBfZmFsbGJhY2tXcmFw
cGVyKG9iamVjdCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSB7fTsKLSAgICAgICAgcmVz
dWx0LnR5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgICAgICBsZXQgcmVzdWx0ID0gQGNyZWF0ZU9i
amVjdFdpdGhvdXRQcm90b3R5cGUoInR5cGUiLCB0eXBlb2Ygb2JqZWN0KTsKICAgICAgICAgaWYg
KGlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IG9i
amVjdDsKICAgICAgICAgZWxzZQpAQCAtNTE1LDcgKzU1Niw3IEBAIGxldCBJbmplY3RlZFNjcmlw
dCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICByZXR1cm4g
QHVuZGVmaW5lZDsKICAgICB9CiAKICAgICBfY3JlYXRlVGhyb3duVmFsdWUodmFsdWUsIG9iamVj
dEdyb3VwKQpAQCAtNTI0LDEwICs1NjUsMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3Mg
SW5qZWN0ZWRTY3JpcHQKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5k
ZXNjcmlwdGlvbiA9IHRvU3RyaW5nRGVzY3JpcHRpb24odmFsdWUpOwogICAgICAgICB9IGNhdGNo
IHsgfQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgd2FzVGhyb3duOiB0cnVlLAotICAg
ICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmplY3QKLSAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKAorICAgICAgICAgICAgIndhc1Rocm93biIs
IHRydWUsCisgICAgICAgICAgICAicmVzdWx0IiwgcmVtb3RlT2JqZWN0LAorICAgICAgICApOwog
ICAgIH0KIAogICAgIF9ldmFsdWF0ZUFuZFdyYXAoZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQpCkBAIC01NTIs
MTAgKzU5MywxMCBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAog
ICAgICAgICB0cnkgewogICAgICAgICAgICAgdGhpcy5fc2F2ZWRSZXN1bHRJbmRleCA9IDA7CiAK
LSAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSB7Ci0gICAgICAgICAgICAgICAgd2FzVGhy
b3duOiBmYWxzZSwKLSAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbW90ZU9iamVjdC5jcmVhdGUo
ZnVuYygpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KQotICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCByZXR1cm5PYmplY3QgPSBAY3JlYXRlT2JqZWN0
V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAid2FzVGhyb3duIiwgZmFsc2UsCisg
ICAgICAgICAgICAgICAgInJlc3VsdCIsIFJlbW90ZU9iamVjdC5jcmVhdGUoZnVuYygpLCBvYmpl
Y3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwgZ2VuZXJhdGVQcmV2aWV3KSwKKyAgICAgICAgICAgICk7
CiAKICAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0ICYmIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXgp
CiAgICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0LnNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLl9z
YXZlZFJlc3VsdEluZGV4OwpAQCAtNTcxLDcgKzYxMiw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9
IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgIGxldCBjb21tYW5kTGluZUFQSSA9IG51bGw7
CiAgICAgICAgIGlmIChpbmNsdWRlQ29tbWFuZExpbmVBUEkpCiAgICAgICAgICAgICBjb21tYW5k
TGluZUFQSSA9IHRoaXMuY3JlYXRlQ29tbWFuZExpbmVBUElPYmplY3QoaXNFdmFsT25DYWxsRnJh
bWUgPyBvYmplY3QgOiBudWxsKTsKLSAgICAgICAgcmV0dXJuIGV2YWxGdW5jdGlvbi5jYWxsKG9i
amVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOworICAgICAgICByZXR1cm4gZXZhbEZ1
bmN0aW9uLkBjYWxsKG9iamVjdCwgZXhwcmVzc2lvbiwgY29tbWFuZExpbmVBUEkpOwogICAgIH0K
IAogICAgIF9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQpAQCAtNjA3
LDcgKzY0OCw3IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAg
ICAgICAgIC8vIEFsd2F5cyBpbmNsdWRlIF9fcHJvdG9fXyBhdCB0aGUgZW5kLCBidXQgb25seSBm
b3IgdGhlIGZpcnN0IGZldGNoLgogICAgICAgICBsZXQgaW5jbHVkZVByb3RvID0gIXN0YXJ0Owog
Ci0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IFtdOworICAgICAgICBsZXQgZGVzY3JpcHRvcnMg
PSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7CiAgICAgICAgIHRoaXMuX2ZvckVhY2hQ
cm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBjb2xsZWN0aW9uTW9kZSwgKGRlc2NyaXB0b3IpID0+
IHsKICAgICAgICAgICAgIGlmIChzdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICAtLXN0YXJ0
OwpAQCAtNjIyLDEzICs2NjMsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gUmVtb3RlT2JqZWN0
LmNyZWF0ZShkZXNjcmlwdG9yLnZhbHVlLCBvYmplY3RHcm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0
ZVByZXZpZXcpOwogICAgICAgICAgICAgaWYgKCJzeW1ib2wiIGluIGRlc2NyaXB0b3IpCiAgICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci5zeW1ib2wgPSBSZW1vdGVPYmplY3QuY3JlYXRlKGRlc2Ny
aXB0b3Iuc3ltYm9sLCBvYmplY3RHcm91cE5hbWUpOwotICAgICAgICAgICAgZGVzY3JpcHRvcnMu
cHVzaChkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goZGVzY3JpcHRvcnMsIGRl
c2NyaXB0b3IpOwogCiAgICAgICAgICAgICBpZiAoaW5jbHVkZVByb3RvICYmIGNvdW50ICYmIGRl
c2NyaXB0b3JzLmxlbmd0aCA+PSBjb3VudCAmJiBkZXNjcmlwdG9yLm5hbWUgIT09ICJfX3Byb3Rv
X18iKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLlN0b3A7CiAKICAgICAgICAgICAgIHJldHVybiAoY291bnQgJiYgZGVzY3JpcHRvcnMu
bGVuZ3RoID49IGNvdW50KSA/IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3Rv
cCA6IEluamVjdGVkU2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7Ci0gICAgICAg
IH0sIHtuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsIGluY2x1ZGVQcm90b30pOworICAgICAgICB9LCBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJz
QXNWYWx1ZXMiLCBuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMsCisgICAgICAgICAgICAiaW5jbHVkZVBy
b3RvIiwgaW5jbHVkZVByb3RvLAorICAgICAgICApKTsKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0
b3JzOwogICAgIH0KIApAQCAtNjM4LDEzICs2ODIsMTYgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0g
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKCFpbnRlcm5hbFByb3BlcnRpZXMpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBbXTsK
KyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgp
OwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVybmFsUHJvcGVydGllcy5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gaW50ZXJuYWxQcm9wZXJ0aWVzW2ld
OwotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHkubmFtZSwgdmFs
dWU6IHByb3BlcnR5LnZhbHVlfTsKKyAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gQGNyZWF0
ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBwcm9wZXJ0
eS5uYW1lLAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlLAorICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgIGlmIChjb21wbGV0ZURlc2NyaXB0b3IpCiAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRvci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycy5w
dXNoKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgQGFycmF5UHVzaChkZXNjcmlwdG9ycywgZGVz
Y3JpcHRvcik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JzOwogICAgIH0K
QEAgLTY1NCwxNSArNzAxLDE4IEBAIGxldCBJbmplY3RlZFNjcmlwdCA9IGNsYXNzIEluamVjdGVk
U2NyaXB0CiAgICAgICAgIGlmIChJbmplY3RlZFNjcmlwdEhvc3Quc3VidHlwZShvYmplY3QpID09
PSAicHJveHkiKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBuYW1lUHJvY2Vz
c2VkID0gbmV3IFNldDsKKyAgICAgICAgbGV0IG5hbWVQcm9jZXNzZWQgPSBuZXcgQFNldDsKIAog
ICAgICAgICAvLyBIYW5kbGVkIGJlbG93IHdoZW4gYGluY2x1ZGVQcm90b2AuCi0gICAgICAgIG5h
bWVQcm9jZXNzZWQuYWRkKCJfX3Byb3RvX18iKTsKKyAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRk
KCJfX3Byb3RvX18iKTsKIAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVGYWtlVmFsdWVEZXNjcmlw
dG9yKG5hbWUsIHN5bWJvbCwgZGVzY3JpcHRvciwgaXNPd25Qcm9wZXJ0eSwgcG9zc2libGVOYXRp
dmVCaW5kaW5nR2V0dGVyKQogICAgICAgICB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICAgIGxldCBmYWtlRGVzY3JpcHRvciA9IHtuYW1lLCB2YWx1ZTogb2JqZWN0W25hbWVdfTsK
KyAgICAgICAgICAgICAgICBsZXQgZmFrZURlc2NyaXB0b3IgPSBAY3JlYXRlT2JqZWN0V2l0aG91
dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAidmFsdWUiLCBvYmplY3RbbmFtZV0sCisgICAgICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcikgewogICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci53cml0YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlw
dG9yLndyaXRhYmxlID0gdHJ1ZTsKQEAgLTY3OCwxMSArNzI4LDE1IEBAIGxldCBJbmplY3RlZFNj
cmlwdCA9IGNsYXNzIEluamVjdGVkU2NyaXB0CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkK
ICAgICAgICAgICAgICAgICAgICAgZmFrZURlc2NyaXB0b3Iuc3ltYm9sID0gc3ltYm9sOwogICAg
ICAgICAgICAgICAgIC8vIFNpbGVuY2UgYW55IHBvc3NpYmxlIHVuaGFuZGxlZHJlamVjdGlvbiBl
eGNlcHRpb25zIGNyZWF0ZWQgZnJvbSBhY2Nlc3NpbmcgYSBuYXRpdmUgYWNjZXNzb3Igd2l0aCBh
IHdyb25nIHRoaXMgb2JqZWN0LgotICAgICAgICAgICAgICAgIGlmIChmYWtlRGVzY3JpcHRvci52
YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJl
amVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLmNhdGNoKGZ1bmN0aW9uKCl7
fSk7CisgICAgICAgICAgICAgICAgaWYgKGZha2VEZXNjcmlwdG9yLnZhbHVlIGluc3RhbmNlb2Yg
QFByb21pc2UgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2
ZUdldHRlclR5cGVFcnJvcihmYWtlRGVzY3JpcHRvci52YWx1ZSkpCisgICAgICAgICAgICAgICAg
ICAgIGZha2VEZXNjcmlwdG9yLnZhbHVlLkBjYXRjaChmdW5jdGlvbigpe30pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWtlRGVzY3JpcHRvcjsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBsZXQgZXJyb3JEZXNjcmlwdG9yID0ge25hbWUsIHZhbHVlOiBlLCB3
YXNUaHJvd246IHRydWV9OworICAgICAgICAgICAgICAgIGxldCBlcnJvckRlc2NyaXB0b3IgPSBA
Y3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUi
LCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAidmFsdWUiLCBlLAorICAgICAgICAgICAgICAg
ICAgICAid2FzVGhyb3duIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgIGlmIChpc093blByb3BlcnR5KQogICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0
b3IuaXNPd24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCkBAIC03MTAsMTUg
Kzc2NCwxNSBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmplY3RlZFNjcmlwdAogCiAg
ICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eU5hbWUsIGlzT3duUHJv
cGVydHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuYW1lUHJvY2Vzc2VkLmhhcyhwcm9w
ZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKG5hbWVQcm9jZXNzZWQuQGhhcyhwcm9wZXJ0eU5h
bWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNo
QWN0aW9uLkNvbnRpbnVlOwogCi0gICAgICAgICAgICBuYW1lUHJvY2Vzc2VkLmFkZChwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgbmFtZVByb2Nlc3NlZC5AYWRkKHByb3BlcnR5TmFtZSk7CiAK
ICAgICAgICAgICAgIGxldCBuYW1lID0gdG9TdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICAgICAg
ICAgIGxldCBzeW1ib2wgPSBpc1N5bWJvbChwcm9wZXJ0eU5hbWUpID8gcHJvcGVydHlOYW1lIDog
bnVsbDsKIAotICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG8sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRv
ciA9IEBPYmplY3QuQGdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IEJhZCBkZXNjcmlwdG9yLiBDYW4gd2UgZ2V0IGhlcmU/CiAgICAgICAgICAgICAgICAgLy8gRmFs
bCBiYWNrIHRvIHZlcnkgcmVzdHJpY3RpdmUgc2V0dGluZ3MuCkBAIC03MjcsNyArNzgxLDcgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKG5hdGl2ZUdldHRlcnNBc1ZhbHVlcykgewotICAgICAgICAgICAg
ICAgIGlmIChTdHJpbmcoZGVzY3JpcHRvci5nZXQpLmVuZHNXaXRoKCJbbmF0aXZlIGNvZGVdXG59
IikgfHwgKCFkZXNjcmlwdG9yLmdldCAmJiBkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQi
KSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0Iikp
KSB7CisgICAgICAgICAgICAgICAgaWYgKEBTdHJpbmcoZGVzY3JpcHRvci5nZXQpLkBlbmRzV2l0
aCgiW25hdGl2ZSBjb2RlXVxufSIpIHx8ICghZGVzY3JpcHRvci5nZXQgJiYgQE9iamVjdC5AaGFz
T3duKGRlc2NyaXB0b3IsICJnZXQiKSAmJiAhZGVzY3JpcHRvci5zZXQgJiYgQE9iamVjdC5AaGFz
T3duKGRlc2NyaXB0b3IsICJzZXQiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGV2ZWxv
cGVycyBtYXkgY3JlYXRlIHN1Y2ggYSBkZXNjcmlwdG9yLCBzbyB3ZSBzaG91bGQgYmUgcmVzaWxp
ZW50OgogICAgICAgICAgICAgICAgICAgICAvLyBsZXQgeCA9IHt9OyBPYmplY3QuZGVmaW5lUHJv
cGVydHkoeCwgInAiLCB7Z2V0OnVuZGVmaW5lZH0pOyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHgsICJwIikKICAgICAgICAgICAgICAgICAgICAgbGV0IGZha2VEZXNjcmlwdG9yID0g
Y3JlYXRlRmFrZVZhbHVlRGVzY3JpcHRvcihuYW1lLCBzeW1ib2wsIGRlc2NyaXB0b3IsIGlzT3du
UHJvcGVydHksIHRydWUpOwpAQCAtNzQ1LDEwICs3OTksMTAgQEAgbGV0IEluamVjdGVkU2NyaXB0
ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAogICAgICAgICBsZXQgaXNBcnJheUxpa2UgPSBmYWxz
ZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2JqZWN0
LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBpc0Zpbml0ZShvYmplY3QubGVuZ3RoKSAm
JiBvYmplY3QubGVuZ3RoID4gMDsKKyAgICAgICAgICAgIGlzQXJyYXlMaWtlID0gUmVtb3RlT2Jq
ZWN0LnN1YnR5cGUob2JqZWN0KSA9PT0gImFycmF5IiAmJiBAaXNGaW5pdGUob2JqZWN0Lmxlbmd0
aCkgJiYgb2JqZWN0Lmxlbmd0aCA+IDA7CiAgICAgICAgIH0gY2F0Y2ggeyB9CiAKLSAgICAgICAg
Zm9yIChsZXQgbyA9IG9iamVjdDsgaXNEZWZpbmVkKG8pOyBvID0gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG8pKSB7CisgICAgICAgIGZvciAobGV0IG8gPSBvYmplY3Q7IGlzRGVmaW5lZChvKTsgbyA9
IEBPYmplY3QuQGdldFByb3RvdHlwZU9mKG8pKSB7CiAgICAgICAgICAgICBsZXQgaXNPd25Qcm9w
ZXJ0eSA9IG8gPT09IG9iamVjdDsKICAgICAgICAgICAgIGxldCBzaG91bGRCcmVhayA9IGZhbHNl
OwogCkBAIC03NjQsNyArODE4LDcgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0
ZWRTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFt
ZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvKTsKKyAgICAgICAgICAgICAgICBsZXQg
cHJvcGVydHlOYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFtZXMobyk7CiAgICAgICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJv
cGVydHlOYW1lc1tpXSwgaXNPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLlN0
b3A7CkBAIC03NzYsMTQgKzgzMCwxMiBAQCBsZXQgSW5qZWN0ZWRTY3JpcHQgPSBjbGFzcyBJbmpl
Y3RlZFNjcmlwdAogICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFrKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykg
ewotICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKG8pOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJv
cGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBwcm9jZXNzUHJvcGVydHkobywgcHJvcGVydHlTeW1ib2xzW2ldLCBpc093blByb3BlcnR5
KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSByZXN1bHQgPT09IEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uU3RvcDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZEJyZWFrKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbGV0IHByb3BlcnR5U3ltYm9scyA9IEBPYmplY3QuQGdldE93
blByb3BlcnR5U3ltYm9scyhvKTsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJv
cGVydHlTeW1ib2xzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IHByb2Nlc3NQcm9wZXJ0eShvLCBwcm9wZXJ0eVN5bWJvbHNbaV0sIGlzT3duUHJvcGVydHkpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrID0gcmVzdWx0ID09PSBJbmplY3RlZFNjcmlwdC5Q
cm9wZXJ0eUZldGNoQWN0aW9uLlN0b3A7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJyZWFr
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKHNob3VsZEJyZWFrKQpAQCAtNzk2LDIzICs4NDgsMjggQEAgbGV0IEluamVjdGVkU2Ny
aXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICAgICAgaWYgKGluY2x1ZGVQcm90bykgewog
ICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0Ll9fcHJvdG9fXykK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soe25hbWU6ICJfX3Byb3RvX18iLCB2YWx1ZTog
b2JqZWN0Ll9fcHJvdG9fXywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgaXNP
d246IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQGNyZWF0ZU9iamVjdFdp
dGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsICJfX3Byb3Rv
X18iLAorICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiwgb2JqZWN0Ll9fcHJvdG9fXywK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0YWJsZSIsIHRydWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiY29uZmlndXJhYmxlIiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJpc093biIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSBj
YXRjaCB7IH0KICAgICAgICAgfQogICAgIH0KIAogICAgIF9nZXRTZXRFbnRyaWVzKG9iamVjdCwg
ZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107
CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwog
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ic2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJp
ZGVzIFNldC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS4KLSAgICAgICAgZm9yIChsZXQgdmFs
dWUgb2Ygb2JqZWN0KSB7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIEBidWlsdGluU2V0SXRl
cmFibGUob2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKGZldGNoU3RhcnQgPiAwKSB7CiAgICAg
ICAgICAgICAgICAgZmV0Y2hTdGFydC0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBlbnRyaWVzLnB1c2goe3ZhbHVlfSk7CisgICAgICAg
ICAgICBAYXJyYXlQdXNoKGVudHJpZXMsIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJ2
YWx1ZSIsIHZhbHVlKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMu
bGVuZ3RoID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIzLDE2
ICs4ODAsMTggQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKIAog
ICAgIF9nZXRNYXBFbnRyaWVzKG9iamVjdCwgZmV0Y2hTdGFydCwgZmV0Y2hDb3VudCkKICAgICB7
Ci0gICAgICAgIGxldCBlbnRyaWVzID0gW107CisgICAgICAgIGxldCBlbnRyaWVzID0gQGNyZWF0
ZUFycmF5V2l0aG91dFByb3RvdHlwZSgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9i
c2VydmFibGUgaWYgdGhlIHBhZ2Ugb3ZlcnJpZGVzIE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJh
dG9yXS4KLSAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIG9iamVjdCkgeworICAgICAg
ICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgQGJ1aWx0aW5NYXBJdGVyYWJsZShvYmplY3QpKSB7
CiAgICAgICAgICAgICBpZiAoZmV0Y2hTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBmZXRj
aFN0YXJ0LS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGVudHJpZXMucHVzaCh7a2V5LCB2YWx1ZX0pOworICAgICAgICAgICAgQGFycmF5
UHVzaChlbnRyaWVzLCBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAg
ICAgICAia2V5Iiwga2V5LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIsIHZhbHVlLAorICAgICAg
ICAgICAgKSk7CiAKICAgICAgICAgICAgIGlmIChmZXRjaENvdW50ICYmIGVudHJpZXMubGVuZ3Ro
ID09PSBmZXRjaENvdW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc2LDEwICs5MzUs
MTAgQEAgbGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB7CiAg
ICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9
PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PT0g
QHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGV0IGV4aXN0aW5nSW5kZXggPSB0aGlzLl9zYXZlZFJlc3VsdHMuaW5kZXhPZihyZXN1
bHQpOworICAgICAgICBsZXQgZXhpc3RpbmdJbmRleCA9IEBBcnJheS5wcm90b3R5cGUuQGluZGV4
T2YuQGNhbGwodGhpcy5fc2F2ZWRSZXN1bHRzLCByZXN1bHQpOwogICAgICAgICBpZiAoZXhpc3Rp
bmdJbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkUmVzdWx0SW5kZXggPSBl
eGlzdGluZ0luZGV4OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODk0LDE2ICs5NTMsMTYgQEAg
bGV0IEluamVjdGVkU2NyaXB0ID0gY2xhc3MgSW5qZWN0ZWRTY3JpcHQKICAgICB9CiB9OwogCi1J
bmplY3RlZFNjcmlwdC5Db2xsZWN0aW9uTW9kZSA9IHsKLSAgICBPd25Qcm9wZXJ0aWVzOiAxIDw8
IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgotICAgIE5hdGl2ZUdldHRlclByb3BlcnRp
ZXM6IDEgPDwgMSwgLy8gbmF0aXZlIGdldHRlciBwcm9wZXJ0aWVzIGluIHRoZSBwcm90b3R5cGUg
Y2hhaW4uCi0gICAgQWxsUHJvcGVydGllczogMSA8PCAyLCAgICAgICAgICAvLyBhbGwgcHJvcGVy
dGllcyBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgotfTsKK0luamVjdGVkU2NyaXB0LkNvbGxlY3Rp
b25Nb2RlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgIk93blByb3BlcnRp
ZXMiLCAxIDw8IDAsICAgICAgICAgIC8vIG93biBwcm9wZXJ0aWVzLgorICAgICJOYXRpdmVHZXR0
ZXJQcm9wZXJ0aWVzIiwgMSA8PCAxLCAvLyBuYXRpdmUgZ2V0dGVyIHByb3BlcnRpZXMgaW4gdGhl
IHByb3RvdHlwZSBjaGFpbi4KKyAgICAiQWxsUHJvcGVydGllcyIsIDEgPDwgMiwgICAgICAgICAg
Ly8gYWxsIHByb3BlcnRpZXMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4KKyk7CiAKLUluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24gPSB7Ci0gICAgQ29udGludWU6IFN5bWJvbCgiY29u
dGludWUiKSwKLSAgICBTdG9wOiBTeW1ib2woInN0b3AiKSwKLX0KK0luamVjdGVkU2NyaXB0LlBy
b3BlcnR5RmV0Y2hBY3Rpb24gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAi
Q29udGludWUiLCBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgiY29udGludWUiKSwKKyAgICAiU3RvcCIs
IEBjcmVhdGVQcml2YXRlU3ltYm9sKCJzdG9wIiksCispOwogCiB2YXIgaW5qZWN0ZWRTY3JpcHQg
PSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CiAKQEAgLTk2Miw3ICsxMDIxLDcgQEAgbGV0IFJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9
IHRoaXMuX2dlbmVyYXRlUHJldmlldyhJbmplY3RlZFNjcmlwdEhvc3QucHJveHlUYXJnZXRWYWx1
ZShvYmplY3QpKTsKICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXcubG9zc2xlc3MgPSBmYWxz
ZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRo
aXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3QsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAg
ICAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRoaXMuX2dlbmVyYXRlUHJldmlldyhvYmplY3Qs
IEB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTc3LDcg
KzEwMzYsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gUmVtb3RlT2JqZWN0LmRl
c2NyaWJlKGUpOwogICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgICAgICBh
bGVydChleC5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5lcnJvcihleC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9
ICI8ZmFpbGVkIHRvIGNvbnZlcnQgZXhjZXB0aW9uIHRvIHN0cmluZz4iOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVPYmplY3QoZGVzY3JpcHRpb24pOwpAQCAt
OTg2LDcgKzEwNDUsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAK
ICAgICBzdGF0aWMgY3JlYXRlT2JqZWN0UHJldmlld0ZvclZhbHVlKHZhbHVlLCBnZW5lcmF0ZVBy
ZXZpZXcsIGNvbHVtbk5hbWVzKQogICAgIHsKLSAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IG5l
dyBSZW1vdGVPYmplY3QodmFsdWUsIHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywg
Y29sdW1uTmFtZXMpOworICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gbmV3IFJlbW90ZU9iamVj
dCh2YWx1ZSwgQHVuZGVmaW5lZCwgZmFsc2UsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMp
OwogICAgICAgICBpZiAocmVtb3RlT2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgICAgaW5qZWN0
ZWRTY3JpcHQucmVsZWFzZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwogICAgICAgICBp
ZiAocmVtb3RlT2JqZWN0LmNsYXNzUHJvdG90eXBlICYmIHJlbW90ZU9iamVjdC5jbGFzc1Byb3Rv
dHlwZS5vYmplY3RJZCkKQEAgLTEwMTEsNyArMTA3MCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBj
bGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBGaXJlQnVnJ3MgYXJyYXkgZGV0ZWN0aW9u
LgogICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09
ICJmdW5jdGlvbiIgJiYgaXNGaW5pdGUodmFsdWUubGVuZ3RoKSkKKyAgICAgICAgICAgIGlmICh0
eXBlb2YgdmFsdWUuc3BsaWNlID09PSAiZnVuY3Rpb24iICYmIEBpc0Zpbml0ZSh2YWx1ZS5sZW5n
dGgpKQogICAgICAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICB9IGNhdGNoIHsg
fQogCkBAIC0xMDUwLDggKzExMDksOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAgICAgICAgIGlmIChzdWJ0eXBlID09PSAiYXJyYXkiKQogICAgICAgICAgICAgcmV0
dXJuIGNsYXNzTmFtZTsKIAotICAgICAgICBpZiAoc3VidHlwZSA9PT0gIml0ZXJhdG9yIiAmJiBT
eW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVbU3lt
Ym9sLnRvU3RyaW5nVGFnXTsKKyAgICAgICAgaWYgKHN1YnR5cGUgPT09ICJpdGVyYXRvciIgJiYg
QEB0b1N0cmluZ1RhZyBpbiB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5AQHRvU3Ry
aW5nVGFnOwogCiAgICAgICAgIC8vIE5vZGVMaXN0IGluIEpTQyBpcyBhIGZ1bmN0aW9uLCBjaGVj
ayBmb3IgYXJyYXkgcHJpb3IgdG8gdGhpcy4KICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0g
ImZ1bmN0aW9uIikKQEAgLTEwNjksNiArMTEyOCw3IEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFz
cyBSZW1vdGVPYmplY3QKIAogICAgIHN0YXRpYyBub2RlUHJldmlldyhub2RlKQogICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjM5Nzc0PiBJbmplY3RlZCBzY3JpcHQgc2hv
dWxkIHVzZSBXZWJDb3JlIGJ1aWx0LWlucy4KICAgICAgICAgbGV0IGlzWE1MRG9jdW1lbnQgPSBu
b2RlLm93bmVyRG9jdW1lbnQgJiYgISFub2RlLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAg
ICAgICAgbGV0IG5vZGVOYW1lID0gaXNYTUxEb2N1bWVudCA/IG5vZGUubm9kZU5hbWUgOiBub2Rl
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAKQEAgLTExMDAsMTcgKzExNjAsMTcgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2luaXRpYWxQcmV2aWV3KCkK
ICAgICB7Ci0gICAgICAgIGxldCBwcmV2aWV3ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy50
eXBlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdG9TdHJp
bmcodGhpcy52YWx1ZSksCi0gICAgICAgICAgICBsb3NzbGVzczogdHJ1ZSwKLSAgICAgICAgfTsK
KyAgICAgICAgbGV0IHByZXZpZXcgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAg
ICAgICAgICAgICJ0eXBlIiwgdGhpcy50eXBlLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwg
dGhpcy5kZXNjcmlwdGlvbiB8fCB0b1N0cmluZyh0aGlzLnZhbHVlKSwKKyAgICAgICAgICAgICJs
b3NzbGVzcyIsIHRydWUsCisgICAgICAgICk7CiAKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSkg
ewogICAgICAgICAgICAgcHJldmlldy5zdWJ0eXBlID0gdGhpcy5zdWJ0eXBlOwogICAgICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSAhPT0gIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgcHJldmll
dy5vdmVyZmxvdyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9
IFtdOworICAgICAgICAgICAgICAgIHByZXZpZXcucHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdp
dGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMTI2LDcg
KzExODYsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAKICAgICAg
ICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrc2V0
IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpIHsKICAgICAgICAgICAgIGlmICh0aGlz
LnNpemUpIHsKLSAgICAgICAgICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBbXTsKKyAgICAgICAg
ICAgICAgICBwcmV2aWV3LmVudHJpZXMgPSBAY3JlYXRlQXJyYXlXaXRob3V0UHJvdG90eXBlKCk7
CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIHByZXZpZXcub3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTE0MSwyMyAr
MTIwMSwyMyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAg
IGxldCBpc1RhYmxlUm93c1JlcXVlc3QgPSBzZWNvbmRMZXZlbEtleXMgPT09IG51bGwgfHwgc2Vj
b25kTGV2ZWxLZXlzOwogICAgICAgICBsZXQgZmlyc3RMZXZlbEtleXNDb3VudCA9IGZpcnN0TGV2
ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMubGVuZ3RoIDogMDsKIAotICAgICAgICBsZXQgcHJvcGVy
dGllc1RocmVzaG9sZCA9IHsKLSAgICAgICAgICAgIHByb3BlcnRpZXM6IGlzVGFibGVSb3dzUmVx
dWVzdCA/IDEwMDAgOiBNYXRoLm1heCg1LCBmaXJzdExldmVsS2V5c0NvdW50KSwKLSAgICAgICAg
ICAgIGluZGV4ZXM6IGlzVGFibGVSb3dzUmVxdWVzdCA/IDEwMDAgOiBNYXRoLm1heCgxMCwgZmly
c3RMZXZlbEtleXNDb3VudCkKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXNUaHJl
c2hvbGQgPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgKKyAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAwMCA6IG1heCg1LCBmaXJzdExldmVsS2V5
c0NvdW50KSwKKyAgICAgICAgICAgICJpbmRleGVzIiwgaXNUYWJsZVJvd3NSZXF1ZXN0ID8gMTAw
MCA6IG1heCgxMCwgZmlyc3RMZXZlbEtleXNDb3VudCksCisgICAgICAgICk7CiAKICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgIC8vIE1hcHMsIFNldHMsIGFuZCBJdGVyYXRvcnMgaGF2ZSBlbnRy
aWVzLgogICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gIm1hcCIgfHwgdGhpcy5zdWJ0
eXBlID09PSAic2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJ3ZWFrbWFwIiB8fCB0aGlzLnN1YnR5
cGUgPT09ICJ3ZWFrc2V0IiB8fCB0aGlzLnN1YnR5cGUgPT09ICJpdGVyYXRvciIpCiAgICAgICAg
ICAgICAgICAgdGhpcy5fYXBwZW5kRW50cnlQcmV2aWV3cyhvYmplY3QsIHByZXZpZXcpOwogCi0g
ICAgICAgICAgICBwcmV2aWV3LnByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgICAgIHByZXZpZXcu
cHJvcGVydGllcyA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKIAogICAgICAgICAg
ICAgLy8gSW50ZXJuYWwgUHJvcGVydGllcy4KICAgICAgICAgICAgIGxldCBpbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcnMgPSBpbmplY3RlZFNjcmlwdC5faW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0
b3JzKG9iamVjdCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3JzKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnRlcm5hbFBy
b3BlcnR5RGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGlu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yc1tpXSwgcHJvcGVydGllc1RocmVzaG9sZCwgZmlyc3RM
ZXZlbEtleXMsIHNlY29uZExldmVsS2V5cywge2ludGVybmFsOiB0cnVlfSk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9hcHBlbmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0
LCBwcmV2aWV3LCBpbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcnNbaV0sIHByb3BlcnRpZXNUaHJl
c2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMsIEBjcmVhdGVPYmplY3RXaXRo
b3V0UHJvdG90eXBlKCJpbnRlcm5hbCIsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PT0gSW5qZWN0ZWRTY3JpcHQuUHJvcGVydHlGZXRjaEFjdGlvbi5TdG9wKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXc7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2OSw3ICsxMjI5LDEwIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmpl
Y3QKICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMuCiAgICAgICAgICAgICBpbmplY3RlZFNjcmlw
dC5fZm9yRWFjaFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIEluamVjdGVkU2NyaXB0LkNvbGxl
Y3Rpb25Nb2RlLkFsbFByb3BlcnRpZXMsIChkZXNjcmlwdG9yKSA9PiB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRl
c2NyaXB0b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZl
bEtleXMpOwotICAgICAgICAgICAgfSwge25hdGl2ZUdldHRlcnNBc1ZhbHVlczogdHJ1ZSwgaW5j
bHVkZVByb3RvOiB0cnVlfSkKKyAgICAgICAgICAgIH0sIEBjcmVhdGVPYmplY3RXaXRob3V0UHJv
dG90eXBlKAorICAgICAgICAgICAgICAgICJuYXRpdmVHZXR0ZXJzQXNWYWx1ZXMiLCB0cnVlLAor
ICAgICAgICAgICAgICAgICJpbmNsdWRlUHJvdG8iLCB0cnVlLAorICAgICAgICAgICAgKSk7CiAg
ICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgcHJldmlldy5sb3NzbGVzcyA9IGZhbHNlOwog
ICAgICAgICB9CkBAIC0xMTc3LDcgKzEyNDAsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3Mg
UmVtb3RlT2JqZWN0CiAgICAgICAgIHJldHVybiBwcmV2aWV3OwogICAgIH0KIAotICAgIF9hcHBl
bmRQcm9wZXJ0eVByZXZpZXcob2JqZWN0LCBwcmV2aWV3LCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVz
VGhyZXNob2xkLCBmaXJzdExldmVsS2V5cywgc2Vjb25kTGV2ZWxLZXlzLCB7aW50ZXJuYWx9ID0g
e30pCisgICAgX2FwcGVuZFByb3BlcnR5UHJldmlldyhvYmplY3QsIHByZXZpZXcsIGRlc2NyaXB0
b3IsIHByb3BlcnRpZXNUaHJlc2hvbGQsIGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMs
IHtpbnRlcm5hbH0gPSBAY3JlYXRlT2JqZWN0V2l0aG91dFByb3RvdHlwZSgpKQogICAgIHsKICAg
ICAgICAgLy8gRXJyb3IgaW4gZGVzY3JpcHRvci4KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud2Fz
VGhyb3duKSB7CkBAIC0xMTkwLDkgKzEyNTMsOSBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3Mg
UmVtb3RlT2JqZWN0CiAgICAgICAgIGlmIChuYW1lID09PSAiX19wcm90b19fIikgewogICAgICAg
ICAgICAgLy8gTm9uIGJhc2ljIF9fcHJvdG9fXyBvYmplY3RzIG1heSBoYXZlIGludGVyZXN0aW5n
LCBub24tZW51bWVyYWJsZSwgbWV0aG9kcyB0byBzaG93LgogICAgICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IudmFsdWUgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvcgotICAgICAgICAgICAg
ICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdAotICAgICAgICAg
ICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEFycmF5Ci0gICAgICAg
ICAgICAgICAgJiYgZGVzY3JpcHRvci52YWx1ZS5jb25zdHJ1Y3RvciAhPT0gUmVnRXhwKQorICAg
ICAgICAgICAgICAgICYmIGRlc2NyaXB0b3IudmFsdWUuY29uc3RydWN0b3IgIT09IEBPYmplY3QK
KyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBAQXJy
YXkKKyAgICAgICAgICAgICAgICAmJiBkZXNjcmlwdG9yLnZhbHVlLmNvbnN0cnVjdG9yICE9PSBA
UmVnRXhwKQogICAgICAgICAgICAgICAgIHByZXZpZXcubG9zc2xlc3MgPSBmYWxzZTsKICAgICAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5Qcm9wZXJ0eUZldGNoQWN0aW9uLkNvbnRpbnVl
OwogICAgICAgICB9CkBAIC0xMjA5LDcgKzEyNzIsNyBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGZpbHRlciwgb25seSBz
aG93IHByb3BlcnRpZXMgaW4gdGhlIGZpbHRlci4KICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSB0aGVzZSBmaWx0ZXJzIGRvIG5vdGhpbmcgb24gdGhlIGJhY2tlbmQuCi0gICAgICAgIGlmIChm
aXJzdExldmVsS2V5cyAmJiAhZmlyc3RMZXZlbEtleXMuaW5jbHVkZXMobmFtZSkpCisgICAgICAg
IGlmIChmaXJzdExldmVsS2V5cyAmJiAhQEFycmF5LnByb3RvdHlwZS5AaW5jbHVkZXMuQGNhbGwo
Zmlyc3RMZXZlbEtleXMsIG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5k
UHJldmlldyhwcm9wZXJ0eSkgewpAQCAtMTIyNywyMCArMTI5MCwyOCBAQCBsZXQgUmVtb3RlT2Jq
ZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHkuaW50ZXJuYWwgPSB0cnVlOwogCi0gICAgICAgICAgICBwcmV2
aWV3LnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHBy
ZXZpZXcucHJvcGVydGllcywgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0LlByb3BlcnR5RmV0Y2hBY3Rpb24uQ29udGludWU7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBHZXR0ZXIvc2V0dGVyLgogICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3Ip
KSB7CiAgICAgICAgICAgICBwcmV2aWV3Lmxvc3NsZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kUHJldmlldyh7bmFtZSwgdHlwZTogImFjY2Vzc29yIn0pOworICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisg
ICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0eXBlIiwgImFj
Y2Vzc29yIiwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTnVsbCB2
YWx1ZS4KICAgICAgICAgbGV0IHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZTsKICAgICAgICAgaWYg
KHZhbHVlID09PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoe25hbWUs
IHR5cGU6ICJvYmplY3QiLCBzdWJ0eXBlOiAibnVsbCIsIHZhbHVlOiAibnVsbCJ9KTsKKyAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIs
ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJzdWJ0eXBlIiwgIm51bGwiLAorICAgICAgICAg
ICAgICAgICJ2YWx1ZSIsICJudWxsIiwKKyAgICAgICAgICAgICkpOwogCiAgICAgICAgIC8vIEln
bm9yZSBub24tZW51bWVyYWJsZSBmdW5jdGlvbnMuCiAgICAgICAgIGxldCB0eXBlID0gdHlwZW9m
IHZhbHVlOwpAQCAtMTI1OCw3ICsxMzI5LDExIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2FiYnJldmlhdGVTdHJp
bmcodmFsdWUsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJldmlldy5sb3Nz
bGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFBy
ZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiB0b1N0cmluZ0Rlc2NyaXB0aW9uKHZhbHVlKX0pOwor
ICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFByZXZpZXcoQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90
b3R5cGUoCisgICAgICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorICAgICAgICAgICAgICAgICJ0
eXBlIiwgdHlwZSwKKyAgICAgICAgICAgICAgICAidmFsdWUiLCB0b1N0cmluZ0Rlc2NyaXB0aW9u
KHZhbHVlKSwKKyAgICAgICAgICAgICkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU3ltYm9s
LgpAQCAtMTI2OCwxMSArMTM0MywxOCBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAgICAgICAgICAgICAgICAgc3ltYm9sU3RyaW5nID0gdGhpcy5fYWJicmV2aWF0ZVN0
cmluZyhzeW1ib2xTdHJpbmcsIG1heExlbmd0aCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgcHJl
dmlldy5sb3NzbGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZFByZXZpZXcoe25hbWUsIHR5cGUsIHZhbHVlOiBzeW1ib2xTdHJpbmd9KTsKKyAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRQcmV2aWV3KEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBl
KAorICAgICAgICAgICAgICAgICJuYW1lIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAidHlwZSIs
IHR5cGUsCisgICAgICAgICAgICAgICAgInZhbHVlIiwgc3ltYm9sU3RyaW5nLAorICAgICAgICAg
ICAgKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPYmplY3QuCi0gICAgICAgIGxldCBwcm9w
ZXJ0eSA9IHtuYW1lLCB0eXBlfTsKKyAgICAgICAgbGV0IHByb3BlcnR5ID0gQGNyZWF0ZU9iamVj
dFdpdGhvdXRQcm90b3R5cGUoCisgICAgICAgICAgICAibmFtZSIsIG5hbWUsCisgICAgICAgICAg
ICAidHlwZSIsIHR5cGUsCisgICAgICAgICk7CiAgICAgICAgIGxldCBzdWJ0eXBlID0gUmVtb3Rl
T2JqZWN0LnN1YnR5cGUodmFsdWUpOwogICAgICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgICAg
IHByb3BlcnR5LnN1YnR5cGUgPSBzdWJ0eXBlOwpAQCAtMTMxMyw3ICsxMzk1LDcgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDUpIHsKLSAgICAgICAgICAgIGVudHJpZXMucG9w
KCk7CisgICAgICAgICAgICBAQXJyYXkucHJvdG90eXBlLkBwb3AuQGNhbGwoZW50cmllcyk7CiAg
ICAgICAgICAgICBwcmV2aWV3Lm92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHByZXZpZXcu
bG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTMyMyw3ICsxNDA1LDcgQEAgbGV0IFJl
bW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgICAgIHByZXZpZXcu
bG9zc2xlc3MgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpZXcuZW50cmllcyA9
IGVudHJpZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7CisgICAgICAgIHByZXZpZXcuZW50cmllcyA9
IEBBcnJheS5wcm90b3R5cGUuQG1hcC5AY2FsbChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgewog
ICAgICAgICAgICAgZW50cnkudmFsdWUgPSBSZW1vdGVPYmplY3QuY3JlYXRlT2JqZWN0UHJldmll
d0ZvclZhbHVlKGVudHJ5LnZhbHVlLCBlbnRyeS52YWx1ZSAhPT0gb2JqZWN0KTsKICAgICAgICAg
ICAgIHVwZGF0ZU1haW5QcmV2aWV3KGVudHJ5LnZhbHVlKTsKICAgICAgICAgICAgIGlmICgia2V5
IiBpbiBlbnRyeSkgewpAQCAtMTMzNiw4ICsxNDE4LDggQEAgbGV0IFJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogCiAgICAgX2lzUHJldmlld2FibGVPYmplY3QodmFsdWUsIG9iamVj
dCkKICAgICB7Ci0gICAgICAgIGxldCBzZXQgPSBuZXcgU2V0OwotICAgICAgICBzZXQuYWRkKG9i
amVjdCk7CisgICAgICAgIGxldCBzZXQgPSBuZXcgQFNldDsKKyAgICAgICAgc2V0LkBhZGQob2Jq
ZWN0KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5faXNQcmV2aWV3YWJsZU9iamVjdEludGVybmFs
KHZhbHVlLCBzZXQsIDEpOwogICAgIH0KQEAgLTEzNTcsMTEgKzE0MzksMTEgQEAgbGV0IFJlbW90
ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAgICAgLy8gQ3ljbGljIG9iamVjdHMuCi0gICAgICAgIGlmIChrbm93bk9iamVjdHMuaGFz
KG9iamVjdCkpCisgICAgICAgIGlmIChrbm93bk9iamVjdHMuQGhhcyhvYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGtub3duT2Jq
ZWN0cy5hZGQob2JqZWN0KTsKKyAgICAgICAga25vd25PYmplY3RzLkBhZGQob2JqZWN0KTsKIAog
ICAgICAgICAvLyBBcnJheXMgYXJlIHNpbXBsZSBpZiB0aGV5IGhhdmUgNSBvciBsZXNzIHNpbXBs
ZSBvYmplY3RzLgogICAgICAgICBsZXQgc3VidHlwZSA9IFJlbW90ZU9iamVjdC5zdWJ0eXBlKG9i
amVjdCk7CkBAIC0xMzgxLDEyICsxNDYzLDEyIEBAIGxldCBSZW1vdGVPYmplY3QgPSBjbGFzcyBS
ZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBPYmpl
Y3RzIGFyZSBzaW1wbGUgaWYgdGhleSBoYXZlIDMgb3IgbGVzcyBzaW1wbGUgdmFsdWUgcHJvcGVy
dGllcy4KLSAgICAgICAgbGV0IG93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QpOworICAgICAgICBsZXQgb3duUHJvcGVydHlOYW1lcyA9IEBPYmplY3Qu
QGdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKICAgICAgICAgaWYgKG93blByb3BlcnR5TmFt
ZXMubGVuZ3RoID4gMykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAg
ICBsZXQgcHJvcGVydHlOYW1lID0gb3duUHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAgICAgIGxl
dCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IEBPYmplY3QuQGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvciAmJiAhKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ByZXZpZXdhYmxlT2Jq
ZWN0SW50ZXJuYWwob2JqZWN0W3Byb3BlcnR5TmFtZV0sIGtub3duT2JqZWN0cywgZGVwdGgpKQpA
QCAtMTQwNCw2NiArMTQ4Niw3MiBAQCBsZXQgUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2Jq
ZWN0CiAgICAgICAgIGlmIChtaWRkbGUpIHsKICAgICAgICAgICAgIGxldCBsZWZ0SGFsZiA9IG1h
eExlbmd0aCA+PiAxOwogICAgICAgICAgICAgbGV0IHJpZ2h0SGFsZiA9IG1heExlbmd0aCAtIGxl
ZnRIYWxmIC0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIGxlZnRIYWxm
KSArICJcdTIwMjYiICsgc3RyaW5nLnN1YnN0cihzdHJpbmcubGVuZ3RoIC0gcmlnaHRIYWxmLCBy
aWdodEhhbGYpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAsIGxlZnRIYWxm
KSArICJcdTIwMjYiICsgc3RyaW5nLkBzdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwg
cmlnaHRIYWxmKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAs
IG1heExlbmd0aCkgKyAiXHUyMDI2IjsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5Ac3Vic3RyKDAs
IG1heExlbmd0aCkgKyAiXHUyMDI2IjsKICAgICB9CiB9OwogCiAvLyAtLS0tLS0tCiAKLUluamVj
dGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQot
ewotICAgIHRoaXMuY2FsbEZyYW1lSWQgPSBgeyJvcmRpbmFsIjoke29yZGluYWx9LCJpbmplY3Rl
ZFNjcmlwdElkIjoke2luamVjdGVkU2NyaXB0SWR9fWA7Ci0gICAgdGhpcy5mdW5jdGlvbk5hbWUg
PSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lOwotICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0SWQ6
IFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZSwg
Y29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1ufTsKLSAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0
aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMudGhpcyA9IFJlbW90ZU9i
amVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmplY3QsICJiYWNrdHJhY2UiKTsKLSAgICB0aGlz
LmlzVGFpbERlbGV0ZWQgPSBjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZDsKLX07CitJbmplY3RlZFNj
cmlwdC5DYWxsRnJhbWVQcm94eSA9IGNsYXNzIENhbGxGcmFtZVByb3h5IHsKKyAgICBjb25zdHJ1
Y3RvcihvcmRpbmFsLCBjYWxsRnJhbWUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxGcmFtZUlk
ID0gYHsib3JkaW5hbCI6JHtvcmRpbmFsfSwiaW5qZWN0ZWRTY3JpcHRJZCI6JHtpbmplY3RlZFNj
cmlwdElkfX1gOworICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGNhbGxGcmFtZS5mdW5jdGlv
bk5hbWU7CisKKyAgICAgICAgdGhpcy5sb2NhdGlvbiA9IEBjcmVhdGVPYmplY3RXaXRob3V0UHJv
dG90eXBlKAorICAgICAgICAgICAgInNjcmlwdElkIiwgQFN0cmluZyhjYWxsRnJhbWUuc291cmNl
SUQpLAorICAgICAgICAgICAgImxpbmVOdW1iZXIiLCBjYWxsRnJhbWUubGluZSwKKyAgICAgICAg
ICAgICJjb2x1bW5OdW1iZXIiLCBjYWxsRnJhbWUuY29sdW1uLAorICAgICAgICApOworCisgICAg
ICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Cisg
ICAgICAgIHRoaXMudGhpcyA9IFJlbW90ZU9iamVjdC5jcmVhdGUoY2FsbEZyYW1lLnRoaXNPYmpl
Y3QsICJiYWNrdHJhY2UiKTsKKyAgICAgICAgdGhpcy5pc1RhaWxEZWxldGVkID0gY2FsbEZyYW1l
LmlzVGFpbERlbGV0ZWQ7CisgICAgfQogCi1JbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5w
cm90b3R5cGUgPSB7CiAgICAgX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSkKICAgICB7CiAgICAg
ICAgIGxldCBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIGxldCBz
Y29wZURlc2NyaXB0aW9ucyA9IGNhbGxGcmFtZS5zY29wZURlc2NyaXB0aW9ucygpOwogCi0gICAg
ICAgIGxldCBzY29wZUNoYWluUHJveHkgPSBbXTsKKyAgICAgICAgbGV0IHNjb3BlQ2hhaW5Qcm94
eSA9IEBjcmVhdGVBcnJheVdpdGhvdXRQcm90b3R5cGUoKTsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgc2NvcGVDaGFpblBy
b3h5W2ldID0gSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbihz
Y29wZUNoYWluW2ldLCBzY29wZURlc2NyaXB0aW9uc1tpXSwgImJhY2t0cmFjZSIpOwogICAgICAg
ICByZXR1cm4gc2NvcGVDaGFpblByb3h5OwogICAgIH0KLX07CiAKLUluamVjdGVkU2NyaXB0LkNh
bGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1lcyA9IHsKLSAgICAwOiAiZ2xvYmFsIiwgLy8gR0xP
QkFMX1NDT1BFCi0gICAgMTogIndpdGgiLCAvLyBXSVRIX1NDT1BFCi0gICAgMjogImNsb3N1cmUi
LCAvLyBDTE9TVVJFX1NDT1BFCi0gICAgMzogImNhdGNoIiwgLy8gQ0FUQ0hfU0NPUEUKLSAgICA0
OiAiZnVuY3Rpb25OYW1lIiwgLy8gRlVOQ1RJT05fTkFNRV9TQ09QRQotICAgIDU6ICJnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQiLCAvLyBHTE9CQUxfTEVYSUNBTF9FTlZJUk9OTUVOVF9TQ09QRQot
ICAgIDY6ICJuZXN0ZWRMZXhpY2FsIiwgLy8gTkVTVEVEX0xFWElDQUxfU0NPUEUKLX07CisgICAg
c3RhdGljIF9jcmVhdGVTY29wZUpzb24ob2JqZWN0LCB7bmFtZSwgdHlwZSwgbG9jYXRpb259LCBn
cm91cElkKQorICAgIHsKKyAgICAgICAgbGV0IHNjb3BlID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQ
cm90b3R5cGUoCisgICAgICAgICAgICAib2JqZWN0IiwgUmVtb3RlT2JqZWN0LmNyZWF0ZShvYmpl
Y3QsIGdyb3VwSWQpLAorICAgICAgICAgICAgInR5cGUiLCBJbmplY3RlZFNjcmlwdC5DYWxsRnJh
bWVQcm94eS5fc2NvcGVUeXBlTmFtZXNbdHlwZV0sCisgICAgICAgICk7CiAKLUluamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5Ll9jcmVhdGVTY29wZUpzb24gPSBmdW5jdGlvbihvYmplY3QsIHtu
YW1lLCB0eXBlLCBsb2NhdGlvbn0sIGdyb3VwSWQpCi17Ci0gICAgbGV0IHNjb3BlID0gewotICAg
ICAgICBvYmplY3Q6IFJlbW90ZU9iamVjdC5jcmVhdGUob2JqZWN0LCBncm91cElkKSwKLSAgICAg
ICAgdHlwZTogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzW3R5
cGVdLAotICAgIH07CisgICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgc2NvcGUubmFtZSA9
IG5hbWU7CiAKLSAgICBpZiAobmFtZSkKLSAgICAgICAgc2NvcGUubmFtZSA9IG5hbWU7CisgICAg
ICAgIGlmIChsb2NhdGlvbikKKyAgICAgICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247
CiAKLSAgICBpZiAobG9jYXRpb24pCi0gICAgICAgIHNjb3BlLmxvY2F0aW9uID0gbG9jYXRpb247
CisgICAgICAgIGlmIChpc0VtcHR5T2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICBzY29wZS5l
bXB0eSA9IHRydWU7CiAKLSAgICBpZiAoaXNFbXB0eU9iamVjdChvYmplY3QpKQotICAgICAgICBz
Y29wZS5lbXB0eSA9IHRydWU7CisgICAgICAgIHJldHVybiBzY29wZTsKKyAgICB9Cit9OwogCi0g
ICAgcmV0dXJuIHNjb3BlOwotfQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX3Njb3Bl
VHlwZU5hbWVzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoCisgICAgMCwgImdsb2Jh
bCIsIC8vIEdMT0JBTF9TQ09QRQorICAgIDEsICJ3aXRoIiwgLy8gV0lUSF9TQ09QRQorICAgIDIs
ICJjbG9zdXJlIiwgLy8gQ0xPU1VSRV9TQ09QRQorICAgIDMsICJjYXRjaCIsIC8vIENBVENIX1ND
T1BFCisgICAgNCwgImZ1bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9OX05BTUVfU0NPUEUKKyAgICA1
LCAiZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50IiwgLy8gR0xPQkFMX0xFWElDQUxfRU5WSVJPTk1F
TlQKKyAgICA2LCAibmVzdGVkTGV4aWNhbCIsIC8vIE5FU1RFRF9MRVhJQ0FMX1NDT1BFCispOwog
CiAvLyAtLS0tLS0tCiAKQEAgLTE0NzcsOSArMTU2NSw5IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5l
QVBJKGNhbGxGcmFtZSkKICAgICAgICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKSB7IHJldHVybiBv
cmlnaW5hbFZhbHVlOyB9OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRl
cl9fKCIkIiArIGtleSwgdmFsdWUpOworICAgICAgICBAT2JqZWN0LkBkZWZpbmVQcm9wZXJ0eSh0
aGlzLCAiJCIgKyBrZXksIEBjcmVhdGVPYmplY3RXaXRob3V0UHJvdG90eXBlKCJnZXQiLCB2YWx1
ZSkpOwogICAgICAgICBpZiAoc2F2ZWRSZXN1bHRBbGlhcyAmJiBzYXZlZFJlc3VsdEFsaWFzICE9
PSAiJCIpCi0gICAgICAgICAgICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oc2F2ZWRSZXN1bHRBbGlh
cyArIGtleSwgdmFsdWUpOworICAgICAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGhp
cywgc2F2ZWRSZXN1bHRBbGlhcyArIGtleSwgQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUo
ImdldCIsIHZhbHVlKSk7CiAgICAgfTsKIAogICAgIGlmICgiX2xhc3RSZXN1bHQiIGluIGluamVj
dGVkU2NyaXB0KQpAQCAtMTUwMiw0OCArMTU5MCw0OCBAQCBmdW5jdGlvbiBDb21tYW5kTGluZUFQ
SShjYWxsRnJhbWUpCiAgICAgICAgIHRoaXNbbmFtZV0gPSBDb21tYW5kTGluZUFQSS5tZXRob2Rz
W25hbWVdOwogfQogCi1Db21tYW5kTGluZUFQSS5nZXR0ZXJzID0ge307CitDb21tYW5kTGluZUFQ
SS5nZXR0ZXJzID0gQGNyZWF0ZU9iamVjdFdpdGhvdXRQcm90b3R5cGUoKTsKIAotQ29tbWFuZExp
bmVBUEkubWV0aG9kcyA9IHt9OworQ29tbWFuZExpbmVBUEkubWV0aG9kcyA9IEBjcmVhdGVPYmpl
Y3RXaXRob3V0UHJvdG90eXBlKCk7CiAKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImtleXMiXSA9
IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsgfTsKLUNvbW1h
bmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBP
YmplY3QudmFsdWVzKG9iamVjdCk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJrZXlzIl0g
PSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIEBPYmplY3QuQGtleXMob2JqZWN0KTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInZhbHVlcyJdID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVy
biBAT2JqZWN0LkB2YWx1ZXMob2JqZWN0KTsgfTsKIAotQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeU9iamVjdHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SG9sZGVycyguLi5hcmd1bWVudHMpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1si
cXVlcnlJbnN0YW5jZXMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0
LnF1ZXJ5SW5zdGFuY2VzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1
bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeU9iamVj
dHMiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SW5zdGFu
Y2VzKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJxdWVyeUhvbGRlcnMiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnF1ZXJ5SG9sZGVycyguLi5jcmVhdGVJ
dGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OwogCiBD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJpbnNwZWN0Il0gPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0
dXJuIGluamVjdGVkU2NyaXB0Lmluc3BlY3RPYmplY3Qob2JqZWN0KTsgfTsKIAotQ29tbWFuZExp
bmVBUEkubWV0aG9kc1siYXNzZXJ0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLmFzc2VydCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVB
UEkubWV0aG9kc1siY2xlYXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFs
T2JqZWN0LmNvbnNvbGUuY2xlYXIoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImNvdW50Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmNvdW50KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJjb3VudFJlc2V0Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmNvdW50UmVzZXQoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1l
dGhvZHNbImRlYnVnIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLmRlYnVnKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2Rz
WyJkaXIiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUuZGlyKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJkaXJ4bWwi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGly
eG1sKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJlcnJvciJdID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcigu
Li5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ3JvdXAiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXAoLi4uYXJn
dW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImdyb3VwQ29sbGFwc2VkIl0gPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmdyb3VwQ29s
bGFwc2VkKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cEVu
ZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5n
cm91cEVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1siaW5mbyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5pbmZv
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJsb2ciXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUubG9nKC4uLmFyZ3Vt
ZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJwcm9maWxlIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnByb2ZpbGUoLi4uYXJndW1l
bnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInByb2ZpbGVFbmQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZUVuZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZCguLi5hcmd1
bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sicmVjb3JkRW5kIl0gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnJlY29yZEVuZCguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sic2NyZWVuc2hvdCJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5zY3JlZW5zaG90
KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0YWJsZSJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWJsZSguLi5h
cmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGFrZUhlYXBTbmFwc2hvdCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50YWtl
SGVhcFNuYXBzaG90KC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0
aW1lIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LnRpbWUoLi4uYXJndW1lbnRzKTsgfTsKLUNvbW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVFbmQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZUVuZCguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUxvZyJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1l
TG9nKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lU3RhbXAi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUudGlt
ZVN0YW1wKC4uLmFyZ3VtZW50cyk7IH07Ci1Db21tYW5kTGluZUFQSS5tZXRob2RzWyJ0cmFjZSJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50cmFj
ZSguLi5hcmd1bWVudHMpOyB9OwotQ29tbWFuZExpbmVBUEkubWV0aG9kc1sid2FybiJdID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS53YXJuKC4uLmFy
Z3VtZW50cyk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJhc3NlcnQiXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuYXNzZXJ0KC4uLmNyZWF0
ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitD
b21tYW5kTGluZUFQSS5tZXRob2RzWyJjbGVhciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNw
ZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5jbGVhciguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQ
cm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0
aG9kc1siY291bnQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0
LmNvbnNvbGUuY291bnQoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3Vt
ZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImNvdW50UmVzZXQi
XSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuY291
bnRSZXNldCguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFy
Z3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZGVidWciXSA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZGVidWcoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbImRpciJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0
ZWRHbG9iYWxPYmplY3QuY29uc29sZS5kaXIoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90
eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNb
ImRpcnhtbCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5kaXJ4bWwoLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50
cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImVycm9yIl0gPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKC4uLmNy
ZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07
CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJncm91cCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5ncm91cCguLi5jcmVhdGVJdGVyYWJsZVdpdGhv
dXRQcm90b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEku
bWV0aG9kc1siZ3JvdXBDb2xsYXBzZWQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbImdyb3VwRW5kIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLmdyb3VwRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlw
ZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJp
bmZvIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmluZm8oLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1
bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJLm1ldGhvZHNbImxvZyJdID0gZnVuY3Rpb24oKSB7
IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5sb2coLi4uY3JlYXRlSXRlcmFi
bGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbInByb2ZpbGUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVk
R2xvYmFsT2JqZWN0LmNvbnNvbGUucHJvZmlsZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90
b3R5cGVGcm9tQXJndW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9k
c1sicHJvZmlsZUVuZCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZS5wcm9maWxlRW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZy
b21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNv
cmQiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUu
cmVjb3JkKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJn
dW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJyZWNvcmRFbmQiXSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUucmVjb3JkRW5kKC4u
LmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7
IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJzY3JlZW5zaG90Il0gPSBmdW5jdGlvbigpIHsg
cmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnNjcmVlbnNob3QoLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRhYmxlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3Bl
Y3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRhYmxlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFBy
b3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRo
b2RzWyJ0YWtlSGVhcFNuYXBzaG90Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEds
b2JhbE9iamVjdC5jb25zb2xlLnRha2VIZWFwU25hcHNob3QoLi4uY3JlYXRlSXRlcmFibGVXaXRo
b3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5lQVBJ
Lm1ldGhvZHNbInRpbWUiXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5zcGVjdGVkR2xvYmFsT2Jq
ZWN0LmNvbnNvbGUudGltZSguLi5jcmVhdGVJdGVyYWJsZVdpdGhvdXRQcm90b3R5cGVGcm9tQXJn
dW1lbnRzKGFyZ3VtZW50cykpOyB9OworQ29tbWFuZExpbmVBUEkubWV0aG9kc1sidGltZUVuZCJd
ID0gZnVuY3Rpb24oKSB7IHJldHVybiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1l
RW5kKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZyb21Bcmd1bWVudHMoYXJndW1l
bnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ0aW1lTG9nIl0gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLnRpbWVMb2coLi4uY3JlYXRl
SXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0Nv
bW1hbmRMaW5lQVBJLm1ldGhvZHNbInRpbWVTdGFtcCJdID0gZnVuY3Rpb24oKSB7IHJldHVybiBp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS50aW1lU3RhbXAoLi4uY3JlYXRlSXRlcmFibGVX
aXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVudHMpKTsgfTsKK0NvbW1hbmRMaW5l
QVBJLm1ldGhvZHNbInRyYWNlIl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2Jh
bE9iamVjdC5jb25zb2xlLnRyYWNlKC4uLmNyZWF0ZUl0ZXJhYmxlV2l0aG91dFByb3RvdHlwZUZy
b21Bcmd1bWVudHMoYXJndW1lbnRzKSk7IH07CitDb21tYW5kTGluZUFQSS5tZXRob2RzWyJ3YXJu
Il0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLndh
cm4oLi4uY3JlYXRlSXRlcmFibGVXaXRob3V0UHJvdG90eXBlRnJvbUFyZ3VtZW50cyhhcmd1bWVu
dHMpKTsgfTsKIAogZm9yIChsZXQgbmFtZSBpbiBDb21tYW5kTGluZUFQSS5tZXRob2RzKQogICAg
IENvbW1hbmRMaW5lQVBJLm1ldGhvZHNbbmFtZV0udG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0
dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsK
IAogcmV0dXJuIGluamVjdGVkU2NyaXB0OwotfSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IGE2OTgxYmJmNWFkOTRmOTNmZDc5ODNmZjZmOTc2YzdlMzlkOTk5NTgu
LmJjMjM3YTFmNGY0MGI2NTg3NGE1ODhhM2JmNDg5MDQxYjkzYzZhZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIyMSw3ICsyMjIxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IudHlwZSgpICE9IFBhcnNlckVycm9yOjpTdGFja092ZXJmbG93KQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46ICIs
IGVycm9yLm1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiVW5leHBl
Y3RlZCBlcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubWVzc2FnZSgpLCAiIG9uIGxp
bmUgIiwgZXJyb3IubGluZSgpLCAiLiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZmM3ODg5NDY1MWU5ZDc2OTc3Zjc5NWM0NTRkOTllZTE5ZjEzZTc5
Yy4uZmZjOWM5YzIzMzFkYWUzZDZhNjViZGVmYWM1MGJiMWEwM2YzNjcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJB
cnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgogCkBAIC01Nyw2ICs1OCw4IEBA
IHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29y
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNw
ZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgSlNDX0JV
SUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmlzQXJy
YXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworCisgICAgSlNDX0JVSUxUSU5f
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmZyb21Qcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAppbmRleCA1YTNhYWE5MWU2MjcyOGMyY2E5ZmFlZjU2MWQyZmFiZWRl
NzA1OTVlLi41MTVjODVmZDdkMzFlMTM1ODBjMGU4YTUwZjEwZjdmOGY2YWJmOTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0x
MzAsNyArMTMwLDExIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB9CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQcml2YXRlTmFtZSgpLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQcml2YXRlTmFtZSgp
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZvckVhY2hQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5kZXhPZlByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5kZXhPZlB1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1By
aXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkua2V5c1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwUHJpdmF0ZU5hbWUoKSwgZ2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnBvcFByaXZhdGVOYW1lKCksIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkucG9wUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFt
ZSgpLCBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CiAKICAgICBKU09iamVj
dCogdW5zY29wYWJsZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5u
dWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGY3ZDI3Yjk5NThiZGU2OGNjNTZj
YjE5N2IwZDIxMjVkNWIwMmUxNDcuLjAyYjliZWQ2ODI4MDAzMjg0OTQ4MGQzZDlhNWMwODAwM2Iz
YThkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTI3NSw2ICsyNzUsOCBAQCBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShD
SEVDS19GRUFUVVJFX0ZMQUdfVFlQRSkKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KG1ha2VCb3VuZEZ1bmN0aW9uKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGhh
c093bkxlbmd0aFByb3BlcnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNy
ZWF0ZVByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNv
blBhcnNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdpZnkp
Owogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5hYmxlU3VwZXJTYW1wbGVyKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGRpc2FibGVTdXBlclNhbXBsZXIpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZW5xdWV1ZUpvYik7CkBAIC0zNjEsNiAr
MzYzLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjcmVhdGVQcml2YXRlU3ltYm9sLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1i
b2woKS5nZXQoKSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNvblBhcnNlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBqc29uID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxP
YmplY3QsIGpzb24pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25TdHJpbmdp
ZnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gcmVzdWx0ID0g
SlNPTlN0cmluZ2lmeShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIHJlc3VsdCkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihhc3NlcnRDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewpAQCAtMTA3NCw5ICsxMDkzLDExIEBAIGNhcGl0YWxOYW1lICMj
IENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNh
cGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21p
c2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX3N0cmluZ0NvbnN0cnVj
dG9yLnNldCh2bSwgdGhpcywgc3RyaW5nQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5z
ZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNl
KV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7Ci0gICAgCisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6U3RyaW5nKV0uc2V0KHZtLCB0aGlzLCBzdHJpbmdDb25zdHJ1Y3Rvcik7CisKICAgICBtX2V2
YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0Lmdsb2JhbC0+aW5pdGlh
bGl6ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+KGluaXQpOwpAQCAtMTU1
Myw2ICsxNTc0LDE0IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMg
Q29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CiAgICAgICAg
IH0pOwogCisgICAgLy8gSlNPTiBoZWxwZXJzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6anNvblBhcnNlKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDEsIFN0cmluZygpLCBqc29uUGFyc2UpKTsKKyAgICAgICAgfSk7CisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6anNvblN0cmluZ2lmeSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwganNv
blN0cmluZ2lmeSkpOworICAgICAgICB9KTsKKwogICAgIC8vIFNoYWRvd1JlYWxtcwogICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmNyZWF0ZVJlbW90ZUZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygp
LCBjcmVhdGVSZW1vdGVGdW5jdGlvbikpOwpAQCAtMjE4NCw2ICsyMjEzLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3Ip
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nQ29uc3RydWN0
b3IpOwogCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEw
YWFlZDM0Nzg3YWY2NmE0ZWMyODMyY2I3ODQ3ZmFmMjhhNGZhOWIuLmU5NDg2MDNlMmNlY2EyOTU1
YTJlZDI3MTU0YmIzYjAxNDk3MWFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTI0LDYgKzEyNCw3IEBAIGNsYXNzIFNldEl0ZXJh
dG9yUHJvdG90eXBlOwogY2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIGNs
YXNzIFNvdXJjZU9yaWdpbjsKK2NsYXNzIFN0cmluZ0NvbnN0cnVjdG9yOwogY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0
cnVjdCBBY3RpdmF0aW9uU3RhY2tOb2RlOwpAQCAtMzIwLDYgKzMyMSw3IEBAIHB1YmxpYzoKICAg
ICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9y
OwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1f
aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPFN0cmluZ0NvbnN0
cnVjdG9yPiBtX3N0cmluZ0NvbnN0cnVjdG9yOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTg2ZGU5
Nzc2NGVjNGY1ZDE3N2ZiMWJjMDdhOGM4MDlhNmVmYzJiMC4uMTcyMzY5MjQ0ZDU5NGY0ZjcyZmRl
N2ZkOTM2ZWE1MTQzMGNiYTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAg
ICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1l
KCkuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmll
c1ByaXZhdGVOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwOGNmOWUxNzhmYjFjNzc3
MzhhYTY0NjU2NjE0ZWFhYmQ4YWQxNDcuLmJiNmFmMjU0ZjQ5Njc5ZjUxN2EzOTg3MDQxNWVlZjM3
Y2JlMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDkgKzk5LDE5IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
T2JqCiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIAorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUo
KSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
dE93blByb3BlcnR5RGVzY3JpcHRvclByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlO
YW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5U3ltYm9sc1ByaXZhdGVOYW1lKCksIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
a2V5c1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yS2V5cywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmRlZmluZVByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQ
cm9wZXJ0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVOYW1lKCksIG9iamVjdENv
bnN0cnVjdG9yQ3JlYXRlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMik7Ci0gICAgaWYgKE9wdGlvbnM6OnVzZUhhc093bigpKQorICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CisK
KyAgICBpZiAoT3B0aW9uczo6dXNlSGFzT3duKCkpIHsKICAgICAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzT3duLCBvYmplY3RD
b25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDIpOworICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25Qcml2YXRlTmFt
ZSgpLCBvYmplY3RDb25zdHJ1Y3Rvckhhc093biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOworICAgIH0KIH0KIAogLy8gRVMgMTkuMS4xLjEg
T2JqZWN0KFt2YWx1ZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcAppbmRleCAxZTZiYzFlZThiYjM3ZjVmMTM1NzZjZWEyYTZkNWQ0YTk1ZGQ0ODcx
Li5mN2Y5YzE0MThiZjdjY2YzYTRmNTAzNDRlNDJhNGYyMzBhMDU3NDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDcg
QEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNT
ZXRWYWx1ZXNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVl
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1Ymxp
Y05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRI
T1VUX1RSQU5TSVRJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDIxMzVhMGZlNWI2NDVmNzRmNThkODhmYjQ1MjA4ODFi
NDE1MzZjNTQuLmUzYzA3MDk1YjUwZGNhNmVlY2FmNWI0ZGNjMmE5ZGJhNzA5YTA4ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApA
QCAtMTY0LDYgKzE2NCw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNGdW5jdGlvbiogaXRl
cmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAi
W1N5bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNp
Yyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBpdGVyYXRvckZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdWJz
dHJQcml2YXRlTmFtZSgpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5lbmRzV2l0aFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisKICAgICAv
LyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3Ry
dWN0b3IgaGFzIGJlZW4gYnVpbHQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYTA0Yjdl
Y2ViYmU4M2Y3ZDcyNDc5MzRjOTg4ZGVmNGZmYzFjOGNhLi43OTJhNjcwMTYyN2MxZWEzYzg5YmRl
YTVjOGNmM2IyMmNmY2RkZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEyOSwxOCArMjEy
OSw2IEBAIFdFQktJVF9GUkFNRVdPUktfREVDTEFSRShXZWJDb3JlKQogV0VCS0lUX0ZSQU1FV09S
S19ERUNMQVJFKFdlYkNvcmVUZXN0U3VwcG9ydCkKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxF
U19JRl9FWElTVFMoKQogCi0jIEdlbmVyYXRlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgK
LWFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtXZWJDb3JlX0RFUklWRURfU09VUkNF
U19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIE1BSU5fREVQ
RU5ERU5DWSBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKLSAgICBERVBF
TkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5wbCAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9qc21pbi5weQotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBl
Y2hvICIvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanMiID4gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJ
TW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dFQkNPUkVfRElSfS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtXZWJDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwotICAgIENPTU1B
TkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L3h4ZC5w
bCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzICR7V2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0gICAgVkVSQkFUSU0p
Ci1saXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCi0KLQogTUFLRV9IQVNIX1RPT0xTKCR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9yRGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ29sb3JEYXRhLmNwcCkKIApAQCAt
MjM1Miw2ICsyMzQwLDcgQEAgc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VC
Q09SRV9ESVJ9L2RvbS9UZXh0RGVjb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2Rv
bS9UZXh0RW5jb2RlclN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZ0ludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwogKQogCiBzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1ND
UklQVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOS4uZjU2Nzdl
MmU0NTI1MzU2MmJkMmYwYzkwMmQ1NjI3NmU2MGY3MzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgsNyArOCw4IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRp
b24rUHJvcGVydHlOYW1lcy5pCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9DU1NWYWx1ZUtleXdvcmRzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdT
dHJhdGVneUJ1aWx0aW5zLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01DbGllbnRJc29TdWJzcGFjZXMuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY2M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYx
ZmM2ZmE0MjE2ZTQ2Yy4uYjEyM2FiZjkzZTI3NThkMjExNDhjMTAxYzlkMTczNGQwNDk2ZjlhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjE5LDE2ICsyMjE5LDYgQEAgaWZu
ZXEgKCQoTk9fU1VQUExFTUVOVEFMX0ZJTEVTKSwxKQogLWluY2x1ZGUgJChKU19ET01fSEVBREVS
UzouaD0uZGVwKQogZW5kaWYKIAotIyBJbnNwZWN0b3IgaW50ZXJmYWNlcwotCi1hbGwgOiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCi0KLUNvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgg
OiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwotCWVj
aG8gIi8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5qcyIgPiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQkkKFBZVEhPTikg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvanNtaW4ucHkgPCAkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5taW4uanMKLQkkKFBFUkwpICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4
ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5taW4uanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAotCSQoREVMRVRFKSBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKLQogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAK
IFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKQEAgLTIyNTIsNiArMjI0Miw3IEBAIFdlYkNv
cmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RGVjb2RlclN0
cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dEVuY29kZXJTdHJlYW0uanMgXAogICAg
ICQoV2ViQ29yZSkvYmluZGluZ3MvanMvSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzIFwKKyAgICAk
KFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBcCiAjCiAK
IEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzU3
ZjMyNjE3ZjU3ZDM5NDM1MzIwMTRkOGZiMGIwMWQzMDViMmFhYi4uOWVhZWFmM2MzYzYyNjZkODEw
ZDgyOGNjZWM5ZDk4NmI5MTA0ODFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0yMDY5LDYgKzIw
NjksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5oCiAgICAgJHtXZWJD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1ZhbHVlS2V5d29yZHMuaAorICAgICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5z
LmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRJbnRlcmZhY2VzLmgK
ICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRXZlbnRUYXJnZXRJbnRlcmZhY2Vz
LmgKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSFRNTEVsZW1lbnRUeXBlSGVs
cGVycy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDA5NTM0NmY3YWJjODc1ZGM2NWExOGE3YmFhNjNmZmU0MzVhM2VkNC4uZDdi
MzdiMzgzYTBkZTc2MmUzZGI0ZmVmMmFjZDlkYjAyMTY5OTAxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODk5LDYgKzg5OSw3
IEBACiAJCTJFMzAxQkU4Mjc0NTk0NzIwMEMwNTY0RiAvKiBDb21waWxlZFNlbGVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQ1MTA3NzIwMkM3
RTAxMDA2NTdEMzMgLyogQ29tcGlsZWRTZWxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFMzdERkRCMTJEQkFGQjgwMEE2QjIzMyAvKiBE
T01VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
MzdERkQ4MTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwuaCAqLzsgfTsKIAkJMkUzN0UwMDYxMkRC
QzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTM3RTAwNDEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCAq
LzsgfTsKKwkJMkUzQUVGRkIyODA5RjExRDAwMzcxQTI1IC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFNDM0NjM3MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFNDM0NjRC
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzOTBGNTQ2QTgyMDBCMEYx
QkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oICovOyB9OwpAQCAtMzUxNyw3ICszNTE4LDYg
QEAKIAkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDNF
MURFMEI2MkIwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4MUVEMTMxRkIyODhDRjAw
Q0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4MUVEMTAxRkIyODhDODAwQ0VENEVDIC8qIFNlcnZpY2VX
b3JrZXJBZ2VudC5oICovOyB9OwogCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0
LmggKi87IH07Ci0JCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmggKi87IH07CiAJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1v
ZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4
NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggKi87IH07CiAJ
CUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJFMTg2
NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgfTsKIAkJQTU4
NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMzIxODY0RDVBRjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJSG9zdC5oICovOyB9OwpAQCAtODIwNSw2ICs4MjA1LDggQEAK
IAkJMkUzN0RGRDkxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRE9NVVJMLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUzN0Uw
MDMxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRE9NVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUzN0UwMDQxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJFM0FFRkY5MjgwOUYxMTkwMDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQkyRTNBRUZGRDI4MDlGMjExMDAzNzFBMjUgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJB
IC8qIFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0MzQ2MzUwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2VyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTQxLDcgKzEzOTQzLDYgQEAKIAkJQTU4MUVEMTIxRkIy
ODhDOTAwQ0VENEVDIC8qIFNlcnZpY2VXb3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTg0MEUyMjE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklu
amVjdGVkU2NyaXB0SG9zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1ODQw
RTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMjkx
ODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1h
bmRMaW5lQVBJTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQyOSw3
ICsyMDQzMCw2IEBACiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1ODRGRTI1MTg2
MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUE1
ODRGRTM5MTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCiAJ
CQkJQTU4NEZFM0ExODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmggKi8s
CiAJCQkJOTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCAqLywKQEAgLTIzNTg3LDYgKzIzNTg3LDggQEAKIAkJCQk5OTA4QjBG
MzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNw
cCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENv
bG9yRGF0YS5jcHAgKi8sCisJCQkJMkUzQUVGRkQyODA5RjIxMTAwMzcxQTI1IC8qIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlQnVpbHRpbnMuY3BwICovLAorCQkJCTJFM0FFRkY5MjgwOUYxMTkw
MDM3MUEyNSAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZUJ1aWx0aW5zLmggKi8sCiAJCQkJ
OTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMu
Y3BwICovLAogCQkJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zLmggKi8sCiAJCQkJRTQxRUEwMzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1By
b3BlcnR5TmFtZXMuY3BwICovLApAQCAtMzQwODUsNyArMzQwODcsNyBAQAogCQkJCTI2RTk0NEQ5
MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1ODRGRTM1MTg2NEQ1QUYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSUhvc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTNBRUZG
QjI4MDlGMTFEMDAzNzFBMjUgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzOUM2OUQwMjgxMEQxMUQwMEU2OUJBRCAvKiBDb21tb25B
dG9tU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFNjY0RkMxRTczNzAzMzAwNzY1NTM2
IC8qIENvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcAppbmRleCBkNzdj
NzNkOGFlNDk1MDE2NzUyODIyNjRkMGQzNmQ2NWNjZTc0MmZmLi5kNDFmY2QzNWNhOWUzZjUwM2Nk
NDczODk0NWI0OWI3OWZkZWEzMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogCi0jaW5jbHVkZSAi
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OCw5ICs0NywxNCBAQCBDb21tYW5kTGlu
ZUFQSU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUoKQogewogfQogCi1TdHJpbmcgQ29tbWFu
ZExpbmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0CitKU0Z1bmN0aW9uKiBDb21tYW5kTGluZUFQ
SU1vZHVsZTo6aW5qZWN0TW9kdWxlRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMsIHNpemVvZihDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZV9qcykpOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkuY29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UoKS5tX2luamVjdE1vZHVsZUZ1bmN0aW9uLmdldCgpOworCisgICAg
V1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gZ2V0IGBpbmplY3RNb2R1bGVgIGZ1bmN0aW9uIGZy
b20gYENvbW1hbmRMaW5lQVBJTW9kdWxlYCBmb3Igbm9uLWBKU0RPTUdsb2JhbE9iamVjdGAuIik7
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogSlNWYWx1ZSBDb21tYW5kTGluZUFQSU1vZHVsZTo6aG9zdChJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSU1vZHVsZS5oCmluZGV4IDI3NzE2ZmNhNjdhOWJhOGMyZGViZGVkYWNmN2ZjNmI0MmQyZGY3
NGIuLjBhNTBkNGE1ZjMzM2Q0ZjQ4ZDVkMGMxNzZmMTk1MGJkYWQ3Yjk3ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCkBAIC0zMyw3ICsz
Myw3IEBAIGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDogcHVibGljIEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAgIENvbW1hbmRMaW5lQVBJTW9k
dWxlKCk7CiAKLSAgICBTdHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpK
U0Z1bmN0aW9uKiBpbmplY3RNb2R1bGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFu
YWdlciosIGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwppbmRl
eCBmNTFlMzUxOWNjYjE3OTYwOTBjMzI3NGQ1YjBjMzdiMjU5ZDBlM2VhLi44MTlmYTQ3ZTlkMTBk
MGY0YzdlNzFmOTE5NGIwYmY0ZWY3NjYzYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEy
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcworLy8gQGludGVybmFsCiAKLShmdW5jdGlvbiAo
SW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0
SWQsIGluamVjdGVkU2NyaXB0LCB7UmVtb3RlT2JqZWN0LCBDb21tYW5kTGluZUFQSX0sIENvbW1h
bmRMaW5lQVBJSG9zdCkgeworZnVuY3Rpb24gaW5qZWN0TW9kdWxlKEluamVjdGVkU2NyaXB0SG9z
dCwgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlw
dCwge1JlbW90ZU9iamVjdCwgQ29tbWFuZExpbmVBUEl9LCBDb21tYW5kTGluZUFQSUhvc3QpCit7
CiAKLS8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjk0PiBXZWIgSW5zcGVjdG9y
OiBQYXJzZSBJbmplY3RlZFNjcmlwdFNvdXJjZSBhcyBhIGJ1aWx0LWluIHRvIGdldCBndWFyYW50
ZWVkIG5vbi11c2VyLW92ZXJyaWRkZW4gYnVpbHQtaW5zCisvLyBGSVhNRTogPHdlYmtpdC5vcmcv
Yi8yMzk3NzQ+IEluamVjdGVkIHNjcmlwdCBzaG91bGQgdXNlIFdlYkNvcmUgYnVpbHQtaW5zLgog
CiBpbmplY3RlZFNjcmlwdC5faW5zcGVjdE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQpAQCAtNzAsMTIgKzcxLDEyIEBAIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbImNvcHkiXSA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgIGVsc2UgaWYg
KGluamVjdGVkU2NyaXB0LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSkKICAgICAgICAgc3RyaW5n
ID0gIiIgKyBvYmplY3Q7CiAgICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN5bWJvbCIp
Ci0gICAgICAgIHN0cmluZyA9IGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcob2JqZWN0KTsK
KyAgICAgICAgc3RyaW5nID0gQFN0cmluZyhvYmplY3QpOwogICAgIGVsc2UgaWYgKHR5cGVvZiBv
YmplY3QgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAg
IGVsc2UgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgc3RyaW5nID0gaW5zcGVjdGVkR2xv
YmFsT2JqZWN0LkpTT04uc3RyaW5naWZ5KG9iamVjdCwgbnVsbCwgIiAgIik7CisgICAgICAgICAg
ICBzdHJpbmcgPSBAanNvblN0cmluZ2lmeShvYmplY3QsICIgICIpOwogICAgICAgICB9IGNhdGNo
IHsKICAgICAgICAgICAgIHN0cmluZyA9ICIiICsgb2JqZWN0OwogICAgICAgICB9CkBAIC04OSwy
MyArOTAsMjggQEAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1siZ2V0RXZlbnRMaXN0ZW5lcnMiXSA9
IGZ1bmN0aW9uKHRhcmdldCkgewogfTsKIAogZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRUeXBlcyh0
eXBlcykgewotICAgIGlmICh0eXBlcyA9PT0gdW5kZWZpbmVkKQotICAgICAgICB0eXBlcyA9IFsi
bW91c2UiLCAia2V5IiwgInRvdWNoIiwgImNvbnRyb2wiLCAiYWJvcnQiLCAiYmx1ciIsICJjaGFu
Z2UiLCAiZGV2aWNlbW90aW9uIiwgImRldmljZW9yaWVudGF0aW9uIiwgImVycm9yIiwgImZvY3Vz
IiwgImxvYWQiLCAicmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWFyY2giLCAic2VsZWN0
IiwgInN1Ym1pdCIsICJ1bmxvYWQiXTsKKyAgICBpZiAodHlwZXMgPT09IEB1bmRlZmluZWQpCisg
ICAgICAgIHR5cGVzID0gQGNyZWF0ZUFycmF5V2l0aG91dFByb3RvdHlwZSgibW91c2UiLCAia2V5
IiwgInRvdWNoIiwgImNvbnRyb2wiLCAiYWJvcnQiLCAiYmx1ciIsICJjaGFuZ2UiLCAiZGV2aWNl
bW90aW9uIiwgImRldmljZW9yaWVudGF0aW9uIiwgImVycm9yIiwgImZvY3VzIiwgImxvYWQiLCAi
cmVzZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWFyY2giLCAic2VsZWN0IiwgInN1Ym1pdCIs
ICJ1bmxvYWQiKTsKICAgICBlbHNlIGlmICh0eXBlb2YgdHlwZXMgPT09ICJzdHJpbmciKQotICAg
ICAgICB0eXBlcyA9IFt0eXBlc107CisgICAgICAgIHR5cGVzID0gQGNyZWF0ZUFycmF5V2l0aG91
dFByb3RvdHlwZSh0eXBlcyk7CisKKyAgICBsZXQgcmVzdWx0ID0gbmV3IEBTZXQ7CisgICAgZnVu
Y3Rpb24gYWRkVHlwZXNUb1Jlc3VsdCgpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuQGFkZChhcmd1bWVudHNb
aV0pOworICAgIH0KIAotICAgIGxldCByZXN1bHQgPSBbXTsKICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0gIm1vdXNl
IikKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCJjbGljayIsICJkYmxjbGljayIsICJtb3VzZWRv
d24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3V0IiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgIm1v
dXNld2hlZWwiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImNsaWNrIiwgImRibGNs
aWNrIiwgIm1vdXNlZG93biIsICJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAibW91c2VvdmVyIiwg
Im1vdXNldXAiLCAibW91c2V3aGVlbCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0g
ImtleSIpCi0gICAgICAgICAgICByZXN1bHQucHVzaCgia2V5ZG93biIsICJrZXlwcmVzcyIsICJr
ZXl1cCIsICJ0ZXh0SW5wdXQiKTsKKyAgICAgICAgICAgIGFkZFR5cGVzVG9SZXN1bHQoImtleWRv
d24iLCAia2V5cHJlc3MiLCAia2V5dXAiLCAidGV4dElucHV0Iik7CiAgICAgICAgIGVsc2UgaWYg
KHR5cGVzW2ldID09PSAidG91Y2giKQotICAgICAgICAgICAgcmVzdWx0LnB1c2goInRvdWNoY2Fu
Y2VsIiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSIsICJ0b3VjaHN0YXJ0Iik7CisgICAgICAgICAg
ICBhZGRUeXBlc1RvUmVzdWx0KCJ0b3VjaGNhbmNlbCIsICJ0b3VjaGVuZCIsICJ0b3VjaG1vdmUi
LCAidG91Y2hzdGFydCIpOwogICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wi
KQotICAgICAgICAgICAgcmVzdWx0LnB1c2goImJsdXIiLCAiY2hhbmdlIiwgImZvY3VzIiwgInJl
c2V0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2VsZWN0IiwgInN1Ym1pdCIsICJ6b29tIik7Cisg
ICAgICAgICAgICBhZGRUeXBlc1RvUmVzdWx0KCJibHVyIiwgImNoYW5nZSIsICJmb2N1cyIsICJy
ZXNldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlbGVjdCIsICJzdWJtaXQiLCAiem9vbSIpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7CisgICAgICAg
ICAgICByZXN1bHQuQGFkZCh0eXBlc1tpXSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0xMTgsMTkgKzEyNCwxNyBAQCBmdW5jdGlvbiBsb2dFdmVudChldmVudCkKIENvbW1hbmRM
aW5lQVBJLm1ldGhvZHNbIm1vbml0b3JFdmVudHMiXSA9IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMp
IHsKICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVj
dC5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgICByZXR1cm47Ci0gICAgdHlwZXMgPSBub3Jt
YWxpemVFdmVudFR5cGVzKHR5cGVzKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ld
LCBsb2dFdmVudCwgZmFsc2UpOwotICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBl
c1tpXSwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIEBidWlsdGluU2V0
SXRlcmFibGUobm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcykpKSB7CisgICAgICAgIG9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgIG9iamVj
dC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxvZ0V2ZW50LCBmYWxzZSk7CiAgICAgfQogfTsKIAog
Q29tbWFuZExpbmVBUEkubWV0aG9kc1sidW5tb25pdG9yRXZlbnRzIl0gPSBmdW5jdGlvbihvYmpl
Y3QsIHR5cGVzKSB7CiAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVy
IHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwotICAgIHR5
cGVzID0gbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIo
dHlwZXNbaV0sIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgZm9yIChsZXQgdHlwZSBvZiBAYnVpbHRp
blNldEl0ZXJhYmxlKG5vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpKSkKKyAgICAgICAgb2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbG9nRXZlbnQsIGZhbHNlKTsKIH07CiAKIGlmIChp
bnNwZWN0ZWRHbG9iYWxPYmplY3QuZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5v
ZGUpIHsKQEAgLTE1OCw5ICsxNjIsMTAgQEAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1
bWVudCAmJiBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuTm9kZSkgewogICAgIH07CiAKICAgICBDb21t
YW5kTGluZUFQSS5tZXRob2RzWyIkJCJdID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN0YXJ0KSB7Cisg
ICAgICAgIC8vIERvbid0IHJldHVybiBhIHByb3RvdHlwZWxlc3MgYXJyYXkgaGVyZSBzbyB0aGF0
IGRldmVsb3BlcnMgY2FuIHVzZSB0aGUgcmVzdWx0cyBhcyBhIG5vcm1hbCBBcnJheS4KICAgICAg
ICAgaWYgKGNhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0dXJu
IGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5mcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwo
c2VsZWN0b3IpKTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZEdsb2JhbE9iamVjdC5BcnJheS5m
cm9tKGluc3BlY3RlZEdsb2JhbE9iamVjdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVj
dG9yKSk7CisgICAgICAgICAgICByZXR1cm4gQEFycmF5LkBmcm9tKHN0YXJ0LnF1ZXJ5U2VsZWN0
b3JBbGwoc2VsZWN0b3IpKTsKKyAgICAgICAgcmV0dXJuIEBBcnJheS5AZnJvbShpbnNwZWN0ZWRH
bG9iYWxPYmplY3QuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwogICAgIH07
CiAKICAgICBDb21tYW5kTGluZUFQSS5tZXRob2RzWyIkeCJdID0gZnVuY3Rpb24oeHBhdGgsIGNv
bnRleHQpIHsKQEAgLTE3NSwxMCArMTgwLDExIEBAIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
ZG9jdW1lbnQgJiYgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Lk5vZGUpIHsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQuYm9vbGVhblZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IG5vZGVz
ID0gW107CisgICAgICAgIC8vIERvbid0IHJldHVybiBhIHByb3RvdHlwZWxlc3MgYXJyYXkgaGVy
ZSBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHVzZSB0aGUgcmVzdWx0cyBhcyBhIG5vcm1hbCBBcnJh
eS4KKyAgICAgICAgbGV0IG5vZGVzID0gbmV3IEBBcnJheTsKICAgICAgICAgbGV0IG5vZGUgPSBu
dWxsOwogICAgICAgICB3aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAg
ICAgICAgbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gobm9kZXMsIG5v
ZGUpOwogICAgICAgICByZXR1cm4gbm9kZXM7CiAgICAgfTsKIH0KQEAgLTE4Niw0ICsxOTIsNCBA
QCBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmRvY3VtZW50ICYmIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5Ob2RlKSB7CiBmb3IgKGxldCBuYW1lIGluIENvbW1hbmRMaW5lQVBJLm1ldGhvZHMpCiAg
ICAgQ29tbWFuZExpbmVBUEkubWV0aG9kc1tuYW1lXS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0NvbW1hbmQgTGluZSBBUEldIH0iOyB9
OwogCi19KQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDdlYmJkZTgwNDNmYzBhM2Y2NTRkOWFlMzliODk2MWQ2YThhZDJl
ZGUuLjY2MmRhOThlNDkzNGVmMGZhMzQ3ZGUyN2ZiNTdkMmEzYzg4YTZmOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMi0wNS0xMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMg
YSBidWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0
LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgICogaW5z
cGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvaW5qZWN0ZWQtc2NyaXB0L29ic2VydmFibGUuaHRtbDoKKyAgICAgICAgLSBB
ZGQgc2V2ZXJhbCBtb3JlIHRlc3QgY2FzZXMgZm9yIG92ZXJyaWRpbmcgZnVuY3Rpb25zIGFuZCBl
bnRpcmUgb2JqZWN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3It
aW50ZXJuYWwtc2NyaXB0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLmh0bWw6CisgICAgICAgIC0gQ2hhbmdlZCB0
byB0ZXN0IGEgY3VzdG9tIGludGVybmFsIHNjcmlwdCBzbmlwcGV0IHNpbmNlIHRoZSBpbnNwZWN0
b3IgaW5qZWN0ZWQgc2NyaXB0IGlzIG5vdyBhIGJ1aWx0aW4uCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0UGFyc2VkLmh0bWw6CisgICAgICAgIC0gVGhlIGluc3BlY3RvciBp
bmplY3RlZCBzY3JpcHQgKGFuZCBtb2R1bGVzKSB3aWxsIG5vIGxvbmdlciBhcHBlYXIgYXMgc2Ny
aXB0cyBpbiBXZWIgSW5zcGVjdG9yLgorCisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL3JlbW90
ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS9saW5lLWNvbHVtbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS9saW5lLWNv
bHVtbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQ6CisgICAgICAgIC0gSW5zcGVjdG9yIGluamVj
dGVkIHNjcmlwdCBsaW5lIG51bWJlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHJlbGVhc2UgYW5k
IGRlYnVnIGJ1aWxkcywgc28gZmlsdGVyIHRob3NlIG91dC4KKwogMjAyMi0wNS0xMSAgQmVuIE5o
YW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIFdLMSBub3RpZmljYXRp
b25zIHRlc3QgZXhwZWN0YXRpb25zIGFmdGVyIHIyOTM5MjEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwtc2NyaXB0cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFs
LXNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4IDFlYjE1Mzk4ODI0MDZiYTlmZjRmNGQzM2E2NWZm
NTI3ZGZkODVjOGQuLjU5MzdmYWU5N2Y4OTU4ODQ3Zjg4ZmY0NjdlYmUxNWI4MWUyODdlNGUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJu
YWwtc2NyaXB0cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2
MCBAQAotQ09OU09MRSBNRVNTQUdFOiBbb2JqZWN0IFdpbmRvd10KLUNPTlNPTEUgTUVTU0FHRTog
W29iamVjdCBjb25zb2xlXQotQ09OU09MRSBNRVNTQUdFOiBzdHJpbmcKLUNPTlNPTEUgTUVTU0FH
RTogW29iamVjdCBXaW5kb3ddCi1DT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgY29uc29sZV0KLUNP
TlNPTEUgTUVTU0FHRTogc3RyaW5nCi1DaGVja2luZyB3aGV0aGVyIGNvbnNvbGUubG9nIGNhbiBi
ZSBzdGVwcGVkIGludG8gb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIFdJLnNldHRp
bmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLgorQ2hlY2tpbmcgd2hldGhlciBpbmplY3RlZCAo
aW50ZXJuYWwpIHNjcmlwdHMgY2FuIGJlIHN0ZXBwZWQgaW50byBvciBub3QsIGRlcGVuZGluZyBv
biB0aGUgdmFsdWUgb2YgV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuCiAKIAog
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0
cwogLS0gUnVubmluZyB0ZXN0IHNldHVwLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2Vy
LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRpc2FibGVkCi1FWFBSRVNTSU9OOiBzZXRUaW1l
b3V0KGVudHJ5Q29uc29sZUxvZykKK0VYUFJFU1NJT046IHNldFRpbWVvdXQoZW50cnlJbnRlcm5h
bE9iamVjdCkKIFNURVBTOiBvdmVyLCBpbiwgaW4sIGluLCByZXN1bWUKIFBBVVNFRCAoZGVidWdn
ZXItc3RhdGVtZW50KQotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjg6NQotICAgICAgNCAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xvZy1wYXVzZS1sb2NhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygp
IHsKLSAtPiAgIDcgICAgICAgIHxkZWJ1Z2dlcjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9n
KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAg
ICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmpl
Y3Q6MjY6NQorICAgICAyMiAgICB9CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5
SW50ZXJuYWxPYmplY3QoKSB7CisgLT4gIDI1ICAgICAgICB8ZGVidWdnZXI7CisgICAgIDI2ICAg
ICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmpl
Y3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CiAKIEFD
VElPTjogc3RlcC1vdmVyCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6OTo1Ci0gICAgICA1ICAg
IDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5Q29uc29sZUxvZygpIHsKLSAgICAg
IDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAgfGNvbnNvbGUubG9nKHdpbmRvdyk7
Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xlKTsKLSAgICAgMTAgICAgICAgIGNv
bnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQorUEFVU0UgQVQgZW50cnlJbnRlcm5h
bE9iamVjdDoyNzo1CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVudHJ5SW50ZXJuYWxP
YmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYgICAgICAgIHxpbnRl
cm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgy
KTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgICAgIDI5ICAgIH0K
IAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6MTA6NQotICAgICAg
NiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dl
cjsKLSAgICAgIDggICAgICAgIGNvbnNvbGUubG9nKHdpbmRvdyk7Ci0gLT4gICA5ICAgICAgICB8
Y29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5n
Iik7Ci0gICAgIDExICAgIH0KLSAgICAgMTIKK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6
Mjg6NQorICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAy
NSAgICAgICAgZGVidWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEp
OworIC0+ICAyNyAgICAgICAgfGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAg
ICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CisgICAgIDMwCiAKIEFDVElP
Tjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjExOjUKLSAgICAgIDcgICAgICAg
IGRlYnVnZ2VyOwotICAgICAgOCAgICAgICAgY29uc29sZS5sb2cod2luZG93KTsKLSAgICAgIDkg
ICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotIC0+ICAxMCAgICAgICAgfGNvbnNvbGUubG9n
KCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQotICAgICAxMgotICAgICAxMyAgICAvLyAtLS0tLS0t
LS0KK1BBVVNFIEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjk6NQorICAgICAyNSAgICAgICAgZGVi
dWdnZXI7CisgICAgIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgICAyNyAg
ICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsKKyAtPiAgMjggICAgICAgIHxpbnRlcm5hbE9i
amVjdC50ZXN0KDMpOworICAgICAyOSAgICB9CisgICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0t
LS0tLQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzoxMjoyCi0g
ICAgICA4ICAgICAgICBjb25zb2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29s
ZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0g
LT4gIDExICAgIH18Ci0gICAgIDEyCi0gICAgIDEzICAgIC8vIC0tLS0tLS0tLQotICAgICAxNAor
UEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDozMDoyCisgICAgIDI2ICAgICAgICBpbnRlcm5h
bE9iamVjdC50ZXN0KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgyKTsK
KyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7CisgLT4gIDI5ICAgIH18Cisg
ICAgIDMwCisgICAgIDMxICAgIC8vIC0tLS0tLS0tLQorICAgICAzMgogCiBBQ1RJT046IHJlc3Vt
ZQogUkVTVU1FRApAQCAtNjgsNTcgKzYyLDU3IEBAIFBBU1M6IFNob3VsZCBoYXZlIHVzZWQgYWxs
IHN0ZXBzLgogCiAtLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTog
RGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMuRW5hYmxlZAotRVhQUkVTU0lPTjog
c2V0VGltZW91dChlbnRyeUNvbnNvbGVMb2cpCitFWFBSRVNTSU9OOiBzZXRUaW1lb3V0KGVudHJ5
SW50ZXJuYWxPYmplY3QpCiBTVEVQUzogb3ZlciwgaW4sIGluLCBpbiwgcmVzdW1lCiBQQVVTRUQg
KGRlYnVnZ2VyLXN0YXRlbWVudCkKLVBBVVNFIEFUIGVudHJ5Q29uc29sZUxvZzo4OjUKLSAgICAg
IDQgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sb2ctcGF1c2UtbG9jYXRpb24uanMiPjwvc2Ny
aXB0PgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNv
bGVMb2coKSB7Ci0gLT4gICA3ICAgICAgICB8ZGVidWdnZXI7Ci0gICAgICA4ICAgICAgICBjb25z
b2xlLmxvZyh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0g
ICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7CitQQVVTRSBBVCBlbnRyeUludGVy
bmFsT2JqZWN0OjI2OjUKKyAgICAgMjIgICAgfQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlv
biBlbnRyeUludGVybmFsT2JqZWN0KCkgeworIC0+ICAyNSAgICAgICAgfGRlYnVnZ2VyOworICAg
ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVy
bmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMp
OwogCiBBQ1RJT046IHN0ZXAtb3ZlcgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6NQotICAg
ICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7
Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIHxjb25zb2xlLmxvZyh3
aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0gICAgIDEwICAg
ICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNFIEFUIGVudHJ5
SW50ZXJuYWxPYmplY3Q6Mjc6NQorICAgICAyMworICAgICAyNCAgICBmdW5jdGlvbiBlbnRyeUlu
dGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7CisgLT4gIDI2ICAgICAg
ICB8aW50ZXJuYWxPYmplY3QudGVzdCgxKTsKKyAgICAgMjcgICAgICAgIGludGVybmFsT2JqZWN0
LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDMpOworICAgICAy
OSAgICB9CiAKIEFDVElPTjogc3RlcC1pbgotUEFVU0UgQVQgZW50cnlDb25zb2xlTG9nOjk6MTYK
LSAgICAgIDUgICAgPHNjcmlwdD4KLSAgICAgIDYgICAgZnVuY3Rpb24gZW50cnlDb25zb2xlTG9n
KCkgewotICAgICAgNyAgICAgICAgZGVidWdnZXI7Ci0gLT4gICA4ICAgICAgICBjb25zb2xlLmxv
Z3wod2luZG93KTsKLSAgICAgIDkgICAgICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgICAx
MCAgICAgICAgY29uc29sZS5sb2coInN0cmluZyIpOwotICAgICAxMSAgICB9CitQQVVTRSBBVCBl
bnRyeUludGVybmFsT2JqZWN0OjI3OjI0CisgICAgIDIzCisgICAgIDI0ICAgIGZ1bmN0aW9uIGVu
dHJ5SW50ZXJuYWxPYmplY3QoKSB7CisgICAgIDI1ICAgICAgICBkZWJ1Z2dlcjsKKyAtPiAgMjYg
ICAgICAgIGludGVybmFsT2JqZWN0LnRlc3R8KDEpOworICAgICAyNyAgICAgICAgaW50ZXJuYWxP
YmplY3QudGVzdCgyKTsKKyAgICAgMjggICAgICAgIGludGVybmFsT2JqZWN0LnRlc3QoMyk7Cisg
ICAgIDI5ICAgIH0KIAogQUNUSU9OOiBzdGVwLWluCi1QQVVTRSBBVCBlbnRyeUNvbnNvbGVMb2c6
OToxNgotICAgICAgNSAgICA8c2NyaXB0PgotICAgICAgNiAgICBmdW5jdGlvbiBlbnRyeUNvbnNv
bGVMb2coKSB7Ci0gICAgICA3ICAgICAgICBkZWJ1Z2dlcjsKLSAtPiAgIDggICAgICAgIGNvbnNv
bGUubG9nfCh3aW5kb3cpOwotICAgICAgOSAgICAgICAgY29uc29sZS5sb2coY29uc29sZSk7Ci0g
ICAgIDEwICAgICAgICBjb25zb2xlLmxvZygic3RyaW5nIik7Ci0gICAgIDExICAgIH0KK1BBVVNF
IEFUIGVudHJ5SW50ZXJuYWxPYmplY3Q6Mjc6MjQKKyAgICAgMjMKKyAgICAgMjQgICAgZnVuY3Rp
b24gZW50cnlJbnRlcm5hbE9iamVjdCgpIHsKKyAgICAgMjUgICAgICAgIGRlYnVnZ2VyOworIC0+
ICAyNiAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdHwoMSk7CisgICAgIDI3ICAgICAgICBpbnRl
cm5hbE9iamVjdC50ZXN0KDIpOworICAgICAyOCAgICAgICAgaW50ZXJuYWxPYmplY3QudGVzdCgz
KTsKKyAgICAgMjkgICAgfQogCiBBQ1RJT046IHN0ZXAtaW4KLVBBVVNFIEFUIGVudHJ5Q29uc29s
ZUxvZzo5OjE2Ci0gICAgICA1ICAgIDxzY3JpcHQ+Ci0gICAgICA2ICAgIGZ1bmN0aW9uIGVudHJ5
Q29uc29sZUxvZygpIHsKLSAgICAgIDcgICAgICAgIGRlYnVnZ2VyOwotIC0+ICAgOCAgICAgICAg
Y29uc29sZS5sb2d8KHdpbmRvdyk7Ci0gICAgICA5ICAgICAgICBjb25zb2xlLmxvZyhjb25zb2xl
KTsKLSAgICAgMTAgICAgICAgIGNvbnNvbGUubG9nKCJzdHJpbmciKTsKLSAgICAgMTEgICAgfQor
UEFVU0UgQVQgZW50cnlJbnRlcm5hbE9iamVjdDoyNzoyNAorICAgICAyMworICAgICAyNCAgICBm
dW5jdGlvbiBlbnRyeUludGVybmFsT2JqZWN0KCkgeworICAgICAyNSAgICAgICAgZGVidWdnZXI7
CisgLT4gIDI2ICAgICAgICBpbnRlcm5hbE9iamVjdC50ZXN0fCgxKTsKKyAgICAgMjcgICAgICAg
IGludGVybmFsT2JqZWN0LnRlc3QoMik7CisgICAgIDI4ICAgICAgICBpbnRlcm5hbE9iamVjdC50
ZXN0KDMpOworICAgICAyOSAgICB9CiAKIEFDVElPTjogcmVzdW1lCiBSRVNVTUVECmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtZm9yLWludGVybmFsLXNj
cmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50
ZXJuYWwtc2NyaXB0cy5odG1sCmluZGV4IGQxNjhhNzI1NGNlMWVmMDRkNzNhOWZiMzVjNmNiZDcz
OGZiYzMxZTMuLmU1YjBkOWM4YjcxOGUxYjI1NmVhZWY2NzgyMjZiNjI3MGU3MWIzMTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1mb3ItaW50ZXJuYWwt
c2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1m
b3ItaW50ZXJuYWwtc2NyaXB0cy5odG1sCkBAIC00LDExICs0LDI5IEBACiA8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbG9nLXBhdXNlLWxvY2F0aW9uLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBlbnRyeUNvbnNvbGVMb2coKSB7CisKK2xldCBp
bnRlcm5hbE9iamVjdCA9IHsgdGVzdDogZnVuY3Rpb24oKSB7fSB9OworCitpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgIGludGVybmFsT2JqZWN0ID0gd2luZG93LmludGVybmFscy5ldmFsdWF0
ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbigidGVzdFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIiwg
YAorICAgICAgICAvLyMgc291cmNlVVJMPV9fSW5qZWN0ZWRTY3JpcHRfVGVzdFBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzLmpzCisgICAgICAgIGxldCBJbnRlcm5hbE9iamVjdCA9IGNsYXNzIEludGVy
bmFsT2JqZWN0IHsKKyAgICAgICAgICAgIHRlc3QoaW52b2NhdGlvbk51bWJlcikgeworICAgICAg
ICAgICAgICAgIGxldCBhID0gNjsKKyAgICAgICAgICAgICAgICBsZXQgYiA9IDc7CisgICAgICAg
ICAgICAgICAgbGV0IGFuc3dlciA9IGEgKiBiOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIG5ldyBJbnRlcm5hbE9iamVjdDsKKyAgICBgKTsKK30KKworZnVuY3Rpb24gZW50
cnlJbnRlcm5hbE9iamVjdCgpIHsKICAgICBkZWJ1Z2dlcjsKLSAgICBjb25zb2xlLmxvZyh3aW5k
b3cpOwotICAgIGNvbnNvbGUubG9nKGNvbnNvbGUpOwotICAgIGNvbnNvbGUubG9nKCJzdHJpbmci
KTsKKyAgICBpbnRlcm5hbE9iamVjdC50ZXN0KDEpOworICAgIGludGVybmFsT2JqZWN0LnRlc3Qo
Mik7CisgICAgaW50ZXJuYWxPYmplY3QudGVzdCgzKTsKIH0KIAogLy8gLS0tLS0tLS0tCkBAIC0y
MSwzMSArMzksMzEgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBhZGRTdGVwcGluZ1Rlc3RDYXNl
KHsKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLkRp
c2FibGVkIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3Rl
cCBpbnRvIGNvbnNvbGUubG9nIHN0YXRlbWVudHMgd2hpY2ggdXNlIHRoZSBJbnRlcm5hbCBJbmpl
Y3RlZFNjcmlwdC4iLAotICAgICAgICBleHByZXNzaW9uOiAic2V0VGltZW91dChlbnRyeUNvbnNv
bGVMb2cpIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbm90IGJlIGFibGUgdG8gc3Rl
cCBpbnRvIHN0YXRlbWVudHMgd2hpY2ggdXNlIGludGVybmFsIGluamVjdGVkIHNjcmlwdHMuIiwK
KyAgICAgICAgZXhwcmVzc2lvbjogInNldFRpbWVvdXQoZW50cnlJbnRlcm5hbE9iamVjdCkiLAog
ICAgICAgICAvLyBDYWxsIG91dCBkaXJlY3RseSB0byB0aGUgYmFja2VuZCBzaW5jZSB0aGVyZSBp
cyBubyBvdGhlciB3YXkgdG8gd2FpdCBvbiB0aGUgY29tbWFuZCByZXN1bHQgaWYgY2hhbmdpbmcg
dmlhIHRoZSBzZXR0aW5nLgogICAgICAgICBzZXR1cDogYXN5bmMgKCkgPT4geyByZXR1cm4gRGVi
dWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhmYWxzZSk7IH0sCiAgICAgICAg
IHN0ZXBzOiBbCiAgICAgICAgICAgICAib3ZlciIsCi0gICAgICAgICAgICAgICAgImluIiwgLy8g
Y29uc29sZS5sb2cod2luZG93KQotICAgICAgICAgICAgICAgICJpbiIsIC8vIGNvbnNvbGUubG9n
KGNvbnNvbGUpCi0gICAgICAgICAgICAgICAgImluIiwgLy8gY29uc29sZS5sb2coInN0cmluZyIp
CisgICAgICAgICAgICAgICAgImluIiwgLy8gaW50ZXJuYWxPYmplY3QudGVzdCgxKQorICAgICAg
ICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMikKKyAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBpbnRlcm5hbE9iamVjdC50ZXN0KDMpCiAgICAgICAgICAgICAicmVzdW1lIiwK
ICAgICAgICAgXQogICAgIH0pOwogCiAgICAgYWRkU3RlcHBpbmdUZXN0Q2FzZSh7CiAgICAgICAg
IG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cy5FbmFibGVkIiwKLSAg
ICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0byBzdGVwIG92ZXIgY29uc29sZS5s
b2cgc3RhdGVtZW50cyB3aGljaCB1c2UgdGhlIEludGVybmFsIEluamVjdGVkU2NyaXB0LiIsCi0g
ICAgICAgIGV4cHJlc3Npb246ICJzZXRUaW1lb3V0KGVudHJ5Q29uc29sZUxvZykiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlNob3VsZCBiZSBhYmxlIHRvIHN0ZXAgaW50byBzdGF0ZW1lbnRzIHdo
aWNoIHVzZSBpbnRlcm5hbCBpbmplY3RlZCBzY3JpcHRzLiIsCisgICAgICAgIGV4cHJlc3Npb246
ICJzZXRUaW1lb3V0KGVudHJ5SW50ZXJuYWxPYmplY3QpIiwKICAgICAgICAgLy8gQ2FsbCBvdXQg
ZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHdh
aXQgb24gdGhlIGNvbW1hbmQgcmVzdWx0IGlmIGNoYW5naW5nIHZpYSB0aGUgc2V0dGluZy4KICAg
ICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHsgcmV0dXJuIERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VG
b3JJbnRlcm5hbFNjcmlwdHModHJ1ZSk7IH0sCiAgICAgICAgIHRlYXJkb3duOiBhc3luYyAoKSA9
PiB7IHJldHVybiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGZhbHNl
KTsgfSwKICAgICAgICAgc3RlcHM6IFsKICAgICAgICAgICAgICJvdmVyIiwKLSAgICAgICAgICAg
ICAgICAiaW4iLCAvLyBjb25zb2xlLmxvZyh3aW5kb3cpCi0gICAgICAgICAgICAgICAgImluIiwg
Ly8gW1NvbWV3aGVyZSBpbnNpZGUgY29uc29sZS5sb2cod2luZG93KV0KLSAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBjb25zb2xlLmxvZyh3aW5kb3cpXQorICAgICAg
ICAgICAgICAgICJpbiIsIC8vIGludGVybmFsT2JqZWN0LnRlc3QoMSkKKyAgICAgICAgICAgICAg
ICAiaW4iLCAvLyBbU29tZXdoZXJlIGluc2lkZSBpbnRlcm5hbE9iamVjdC50ZXN0KDEpXQorICAg
ICAgICAgICAgICAgICJpbiIsIC8vIFtTb21ld2hlcmUgaW5zaWRlIGludGVybmFsT2JqZWN0LnRl
c3QoMSldCiAgICAgICAgICAgICAicmVzdW1lIiwKICAgICAgICAgXQogICAgIH0pOwpAQCAtNTcs
NiArNzUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotPHA+Q2hlY2tpbmcgd2hldGhlciBjb25zb2xlLmxvZyBjYW4gYmUg
c3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5n
cy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48L3A+Cis8cD5DaGVja2luZyB3aGV0aGVyIGluamVj
dGVkIChpbnRlcm5hbCkgc2NyaXB0cyBjYW4gYmUgc3RlcHBlZCBpbnRvIG9yIG5vdCwgZGVwZW5k
aW5nIG9uIHRoZSB2YWx1ZSBvZiBXSS5zZXR0aW5ncy5wYXVzZUZvckludGVybmFsU2NyaXB0cy48
L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0UGFyc2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CmluZGV4IDVkZWU5NWVkZjg4ZTVl
OWM4NjE1OGNjZWNkMmM3M2RiZmY5ZjAxODguLjYzYTZlNWI3NDg0Yjg2ODljN2QxNDVkNTRiYTU4
YTdmNTI5YjRlN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNSBAQCBQQVNTOiBTaG91
bGQgZmluZCBFeHRlcm5hbCBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0
IFRhZyBTY3JpcHQuCiBQQVNTOiBTaG91bGQgZmluZCBJbmxpbmUgQXR0cmlidXRlIEV2ZW50IExp
c3RlbmVyIFNjcmlwdC4KIFBBU1M6IFNob3VsZCBmaW5kIEV2YWwgU2NyaXB0LgotUEFTUzogU2hv
dWxkIGZpbmQgSW5zcGVjdG9yIEluamVjdGVkU2NyaXB0U291cmNlIFNjcmlwdC4KLVBBU1M6IFNo
b3VsZCBmaW5kIEluc3BlY3RvciBDb21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuCiBQQVNTOiBT
aG91bGQgbm90IHJlY2VpdmUgYW55IHVuZXhwZWN0ZWQgc2NyaXB0cy4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdFBhcnNlZC5odG1sCmluZGV4IGQ0ZjhmMzg2
ODJmYzRlMTVjNTAwMzQ0NWE2YmExZDEzNTQ5ZDlhNWYuLmQ2NzdiYTJkZWRkZjFmNTE2ODkwMmEx
NTZjZTJmMTkxYWJhMTE0OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRQYXJzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0UGFyc2VkLmh0bWwKQEAgLTE5LDE0ICsxOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAvLyAgIC0gaW5saW5lIDxzY3JpcHQ+ICh0aGlzKSBzdGFydGluZyBvbiBsaW5lIDUKICAg
ICAvLyAgIC0gaW5saW5lIGJvZHkgb25sb2FkIGV2ZW50IGxpc3RlbmVyIGF0dHJpYnV0ZSBvbiA8
Ym9keT4gbGluZSBiZWxvdwogICAgIC8vICAgLSBldmFsIHNvdXJjZSBhYm92ZSBvbiBsaW5lIDcK
LSAgICAvLyAgIC0gaW5zcGVjdG9yIGludGVybmFsIHNjcmlwdHMgSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKIAogICAgIGxldCBmb3VuZEV4dGVy
bmFsU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lU2NyaXB0VGFnU2NyaXB0ID0g
ZmFsc2U7CiAgICAgbGV0IGZvdW5kSW5saW5lQXR0cmlidXRlRXZlbnRMaXN0ZW5lclNjcmlwdCA9
IGZhbHNlOwogICAgIGxldCBmb3VuZEV2YWxTY3JpcHQgPSBmYWxzZTsKLSAgICBsZXQgZm91bmRJ
bmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdCA9IGZhbHNlOwotICAgIGxldCBmb3VuZENvbW1hbmRM
aW5lQVBJU291cmNlU2NyaXB0ID0gZmFsc2U7CiAgICAgbGV0IGZvdW5kVW5leHBlY3RlZFNjcmlw
dCA9IGZhbHNlOwogCiAgICAgZnVuY3Rpb24gaXNFeHRlcm5hbFNjcmlwdChwYXJhbXMpIHsKQEAg
LTQyLDIxICszOSwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAKICAgICBmdW5jdGlvbiBp
c0lubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJTY3JpcHQocGFyYW1zKSB7Ci0gICAgICAgIHJl
dHVybiBpc0lubGluZVNjcmlwdChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUgPj0gMTAwOyAv
LyBFc3RpbWF0ZSBvZiA8Ym9keT4gYmVsb3cuCisgICAgICAgIHJldHVybiBpc0lubGluZVNjcmlw
dChwYXJhbXMpICYmIHBhcmFtcy5zdGFydExpbmUgPj0gOTk7IC8vIEVzdGltYXRlIG9mIDxib2R5
PiBiZWxvdy4KICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0V2YWxTY3JpcHQocGFyYW1zKSB7CiAg
ICAgICAgIHJldHVybiBwYXJhbXMuc291cmNlVVJMID09PSAiZXZhbC5qcyI7CiAgICAgfQogCi0g
ICAgZnVuY3Rpb24gaXNJbmplY3RlZFNjcmlwdFNvdXJjZVNjcmlwdChwYXJhbXMpIHsKLSAgICAg
ICAgcmV0dXJuIHBhcmFtcy5zb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8i
KSAmJiBwYXJhbXMuc291cmNlVVJMLmVuZHNXaXRoKCIuanMiKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBpc0NvbW1hbmRMaW5lQVBJU291cmNlU2NyaXB0KHBhcmFtcykgewotICAgICAgICByZXR1
cm4gcGFyYW1zLnNvdXJjZVVSTC5pbmRleE9mKCJDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSIp
ICE9PSAtMTsKLSAgICB9Ci0KICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6
ICJFbmFibGVEZWJ1Z2dlckRvbWFpbkFuZENoZWNrSW5pdGlhbFNjcmlwdHMiLAogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAtNzksMTAgKzY4LDYgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZElubGluZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXJTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRFdmFs
U2NyaXB0ICYmIGlzRXZhbFNjcmlwdChwYXJhbXMpKQogICAgICAgICAgICAgICAgICAgICAgICAg
Zm91bmRFdmFsU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZv
dW5kQ29tbWFuZExpbmVBUElTb3VyY2VTY3JpcHQgJiYgaXNDb21tYW5kTGluZUFQSVNvdXJjZVNj
cmlwdChwYXJhbXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDb21tYW5kTGluZUFQ
SVNvdXJjZVNjcmlwdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb3Vu
ZEluamVjdGVkU2NyaXB0U291cmNlU2NyaXB0ICYmIGlzSW5qZWN0ZWRTY3JpcHRTb3VyY2VTY3Jp
cHQocGFyYW1zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5qZWN0ZWRTY3JpcHRT
b3VyY2VTY3JpcHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlVORVhQRUNURUQgU0NSSVBUOiAiICsg
SlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Zm91bmRVbmV4cGVjdGVkU2NyaXB0ID0gdHJ1ZTsKQEAgLTkzLDggKzc4LDYgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxp
bmVTY3JpcHRUYWdTY3JpcHQsICJTaG91bGQgZmluZCBJbmxpbmUgU2NyaXB0IFRhZyBTY3JpcHQu
Iik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmxpbmVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyU2NyaXB0LCAiU2hvdWxkIGZpbmQgSW5saW5lIEF0dHJpYnV0
ZSBFdmVudCBMaXN0ZW5lciBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0
LmV4cGVjdFRoYXQoZm91bmRFdmFsU2NyaXB0LCAiU2hvdWxkIGZpbmQgRXZhbCBTY3JpcHQuIik7
Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQoZm91bmRJbmplY3RlZFNj
cmlwdFNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBJbmplY3RlZFNjcmlwdFNv
dXJjZSBTY3JpcHQuIik7Ci0gICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdFRoYXQo
Zm91bmRDb21tYW5kTGluZUFQSVNvdXJjZVNjcmlwdCwgIlNob3VsZCBmaW5kIEluc3BlY3RvciBD
b21tYW5kTGluZUFQSVNvdXJjZSBTY3JpcHQuIik7CiAgICAgICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LmV4cGVjdFRoYXQoIWZvdW5kVW5leHBlY3RlZFNjcmlwdCwgIlNob3VsZCBub3QgcmVjZWl2
ZSBhbnkgdW5leHBlY3RlZCBzY3JpcHRzLiIpOwogCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNl
cnZhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmplY3RlZC1zY3Jp
cHQvb2JzZXJ2YWJsZS1leHBlY3RlZC50eHQKaW5kZXggODgzM2E4ZmQyYTY1Y2MyYzg0NTJjYzMw
NjBiZTY4NjQyY2IwM2FiNy4uNDlmNGFmMmMxMzg0YTQ2NjdiN2ZiZThiYzhlMWZlOGQ3ZWZlNTA5
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNjcmlwdC9vYnNl
cnZhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5qZWN0ZWQt
c2NyaXB0L29ic2VydmFibGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMTcgQEAKIENPTlNPTEUg
TUVTU0FHRTogW29iamVjdCBPYmplY3RdCi1UZXN0IHRoYXQgY2VydGFpbiBJbmplY3RlZFNjcmlw
dFNvdXJjZSBvcGVyYXRpb25zIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSB1c2VyIGNvZGUuCitDT05T
T0xFIE1FU1NBR0U6IGEsYixjCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09O
U09MRSBNRVNTQUdFOiBbb2JqZWN0IFNldF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmpl
Y3RdCitDT05TT0xFIE1FU1NBR0U6IFtvYmplY3QgTWFwXQorQ09OU09MRSBNRVNTQUdFOiBbb2Jq
ZWN0IE9iamVjdF0KK0NPTlNPTEUgTUVTU0FHRTogW29iamVjdCBPYmplY3RdCitDT05TT0xFIE1F
U1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBjb3VudCBvZiAxCitDT05T
T0xFIE1FU1NBR0U6IFtvYmplY3QgT2JqZWN0XQorQ09OU09MRSBNRVNTQUdFOiBoZWxsbworQ09O
U09MRSBNRVNTQUdFOiBbb2JqZWN0IE9iamVjdF0KK1Rlc3QgdGhhdCBJbmplY3RlZCBTY3JpcHQg
b3BlcmF0aW9ucyBhcmUgbm90IG9ic2VydmFibGUgYnkgdXNlciBjb2RlLgogCiAKID09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZQpAQCAtOCwzICsyMCwzOCBA
QCBQQVNTOiBQYXVzZWQuCiBQQVNTOiBSZXN1bWVkLgogUEFTUzogQXJyYXkucHJvdG90eXBlW1N5
bWJvbC5pdGVyYXRvcl0gY2FsbCBjb3VudCBzaG91bGQgYmUgMS4KIAorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlw
ZVtTeW1ib2wuaXRlcmF0b3JdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9s
Lml0ZXJhdG9yXQorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IE1hcC5wcm90
b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAxLgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2JzZXJ2YWJsZTpBcnJheS5wcm90b3R5cGUu
cHVzaAorUEFTUzogUGF1c2VkLgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlw
ZVsicHVzaCJdIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUuYWRkCitQQVNTOiBQYXVz
ZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU2V0LnByb3RvdHlwZVsiYWRkIl0gY2FsbCBjb3Vu
dCBzaG91bGQgYmUgMS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEluamVjdGVkU2NyaXB0Lk9i
c2VydmFibGU6U3RyaW5nCitQQVNTOiBQYXVzZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogU3Ry
aW5nIGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmpl
Y3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3RvdHlwZS5pbmRleAorUEFTUzogUGF1c2Vk
LgorUEFTUzogUmVzdW1lZC4KK1BBU1M6IEFycmF5LnByb3RvdHlwZVsiNDIiXSBjYWxsIGNvdW50
IHNob3VsZCBiZSAxLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5qZWN0ZWRTY3JpcHQuT2Jz
ZXJ2YWJsZTpPYmplY3QucHJvdG90eXBlLmRlc3RydWN0dXJlZFByb3BlcnR5CitQQVNTOiBQYXVz
ZWQuCitQQVNTOiBSZXN1bWVkLgorUEFTUzogT2JqZWN0LnByb3RvdHlwZVsiZmV0Y2hTdGFydCJd
IGNhbGwgY291bnQgc2hvdWxkIGJlIDEuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbmplY3RlZC1zY3JpcHQvb2JzZXJ2YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2luamVjdGVkLXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKaW5kZXggNGQ4ZDY2ZTUyZmJjYjE3
MWFiMWM5MGE3NjU4ZDlkOTNjODQ3ZDY5NS4uM2E1MWZjNzYyYjFhMjIyMTA3YTk0MjNiNDg1MWZk
YzhmOTk1NDc1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVkLXNj
cmlwdC9vYnNlcnZhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luamVjdGVk
LXNjcmlwdC9vYnNlcnZhYmxlLmh0bWwKQEAgLTMsNjMgKzMsMjA1IEBACiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLS8vIE5PVEU6IE1vcmUgY2FzZXMgc2hvdWxkIGJl
IHRlc3RlZCBhbmQgYWRkcmVzc2VkIGJ5OgotLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MjI5
ND4gV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBidWlsdC1p
biB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gYnVpbHQtaW5zCi0KLWZ1bmN0
aW9uIHRyaWdnZXJJdGVyYXRpb24oKSB7CitmdW5jdGlvbiByZXBsYWNlQW5kVGVzdFByb3RvdHlw
ZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1
bmN0aW9uKSB7CisgICAgdHJ5IHsKICAgICBsZXQgY2FsbENvdW50ID0gMDsKIAotICAgIGNvbnN0
IG9yaWdpbmFsSXRlcmF0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFycmF5
LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yKTsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
QXJyYXkucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IsIHsKKyAgICBsZXQgb3JpZ2luYWxQcm9w
ZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvdHlw
ZSwgcHJvcGVydHkpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3Bl
cnR5LCB7CiAgICAgICAgIGdldCgpIHsKICAgICAgICAgICAgICsrY2FsbENvdW50OwotICAgICAg
ICAgICAgcmV0dXJuIG9yaWdpbmFsSXRlcmF0b3IudmFsdWU7CisgICAgICAgICAgICByZXR1cm4g
b3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3I/LnZhbHVlOwogICAgICAgICB9CiAgICAgfSk7CiAK
LSAgICBsZXQgYXJyYXkgPSBbXTsKLQogICAgIGRlYnVnZ2VyOwogCiAgICAgLy8gUHJldmlldyBh
biBvYmplY3QuCiAgICAgY29uc29sZS5sb2coe2E6MSwgYjoyLCBjOnt9fSk7CiAKLSAgICAvLyBV
c2UgQXJyYXkgSXRlcmF0b3IgYXQgbGVhc3Qgb25jZS4KLSAgICBmb3IgKGxldCB4IG9mIGFycmF5
KSB7IH0KKyAgICBpbnZva2VPdmVycmlkZGVuUHJvcGVydHlGdW5jdGlvbigpOwogCi0gICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yLCBvcmln
aW5hbEl0ZXJhdG9yKTsKKyAgICBpZiAob3JpZ2luYWxQcm9wZXJ0eURlc2NyaXB0b3IpCisgICAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsIHByb3BlcnR5LCBvcmlnaW5hbFBy
b3BlcnR5RGVzY3JpcHRvcik7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgcHJvdG90eXBlW3By
b3BlcnR5XTsKIAogICAgIHJldHVybiBjYWxsQ291bnQ7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICByZXR1cm4gU3RyaW5nKGUpOworICAgIH0KK30KKworZnVuY3Rpb24gcmVwbGFjZUFuZFRl
c3RPYmplY3Qob2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb24pIHsK
KyAgICBsZXQgY2FsbENvdW50ID0gMDsKKyAgICAKKyAgICBsZXQgb3JpZ2luYWxPYmplY3QgPSBl
dmFsKG9iamVjdFN0cmluZyk7CisgICAgZXZhbChgCisgICAgICAgICR7b2JqZWN0U3RyaW5nfSA9
ICgpID0+IHsKKyAgICAgICAgICAgICsrY2FsbENvdW50OworICAgICAgICAgICAgcmV0dXJuIG9y
aWdpbmFsT2JqZWN0KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAgYCk7CisKKyAgICBk
ZWJ1Z2dlcjsKKworICAgIC8vIFByZXZpZXcgYW4gb2JqZWN0LgorICAgIGNvbnNvbGUubG9nKHth
OjEsIGI6MiwgYzp7fX0pOworCisgICAgaW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9uKCk7
CisKKyAgICBldmFsKGAke29iamVjdFN0cmluZ30gPSBvcmlnaW5hbE9iamVjdDtgKTsKKyAgICBj
b25zb2xlLmxvZygiY291bnQgb2YgIiArIGNhbGxDb3VudCk7CisgICAgcmV0dXJuIGNhbGxDb3Vu
dDsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlIik7CiAKLSAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgZnVuY3Rpb24gYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0
Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3RvdHlwZVN0cmluZywgcHJvcGVydHlTdHJpbmcs
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9ufSkgeworICAgICAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlcGxhY2VBbmRUZXN0UHJvdG90eXBlUHJvcGVydHko
JHtwcm90b3R5cGVTdHJpbmd9LCAke3Byb3BlcnR5U3RyaW5nfSwgJHtpbnZva2VPdmVycmlkZGVu
UHJvcGVydHlGdW5jdGlvbi50b1N0cmluZygpfSk7YCwgKGVycm9yLCByZXN1bHQpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEsIGAk
e3Byb3RvdHlwZVN0cmluZ31bJHtwcm9wZXJ0eVN0cmluZ31dIGNhbGwgY291bnQgc2hvdWxkIGJl
IDEuYCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7CisgICAgICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKS5jYXRjaChyZWplY3QpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiUmVz
dW1lZC4iKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0p
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE9iamVjdFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlw
dGlvbiwgb2JqZWN0U3RyaW5nLCBpbnZva2VPdmVycmlkZGVuT2JqZWN0RnVuY3Rpb259KSB7Cisg
ICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAg
ICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwbGFjZUFuZFRlc3RP
YmplY3QoIiR7b2JqZWN0U3RyaW5nfSIsICR7aW52b2tlT3ZlcnJpZGRlbk9iamVjdEZ1bmN0aW9u
LnRvU3RyaW5nKCl9KTtgLCAoZXJyb3IsIHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3VsdCwgMSwgYCR7b2JqZWN0U3RyaW5nfSBj
YWxsIGNvdW50IHNob3VsZCBiZSAxLmApOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygi
UGF1c2VkLiIpOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1l
KCkuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlJlc3VtZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnBhc3MoIlJlc3VtZWQuIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRl
c3RDYXNlKHsKICAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXku
cHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0iLAotICAgICAgICBkZXNjcmlwdGlvbjogIkFycmF5
IGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlIiwK
LSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJJdGVyYXRpb24oKWAsIChlcnJvciwgcmVzdWx0KSA9
PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXN1bHQsIDEs
ICJBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSBjYWxsIGNvdW50IHNob3VsZCBiZSAx
LiIpOwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQuIik7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLnJlc3VtZSgpLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKCJSZXN1bWVkLiIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheSBpdGVyYXRpb24gaW4gSW5qZWN0ZWQgU2Ny
aXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6
ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVy
YXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7
CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbImEiLCAiYiIsICJjIl07CisgICAgICAgICAgICBm
b3IgKGxldCB4IG9mIGFycmF5KSB7IH0KKworICAgICAgICAgICAgY29uc29sZS5sb2coYXJyYXkp
OworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5
cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2V0IGl0ZXJhdGlv
biBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IHByb3RvdHlwZVN0cmluZzogIlNldC5wcm90b3R5cGUiLAorICAgICAgICBwcm9wZXJ0eVN0cmlu
ZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1
bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgc2V0ID0gbmV3IFNldChbImEiLCAiYiIs
ICJjIl0pOworICAgICAgICAgICAgZm9yIChsZXQgeCBvZiBzZXQpIHsgfQorCisgICAgICAgICAg
ICBjb25zb2xlLmxvZyhzZXQpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90
eXBlUHJvcGVydHlUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNl
cnZhYmxlOk1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiTWFwIGl0ZXJhdGlvbiBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNl
cnZhYmxlLiIsCisgICAgICAgIHByb3RvdHlwZVN0cmluZzogIk1hcC5wcm90b3R5cGUiLAorICAg
ICAgICBwcm9wZXJ0eVN0cmluZzogIlN5bWJvbC5pdGVyYXRvciIsCisgICAgICAgIGludm9rZU92
ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgbWFwID0g
bmV3IE1hcChbWyJhIiwgIjEiXSwgWyJiIiwgIjIiXSwgWyJjIiwgIjMiXV0pOworICAgICAgICAg
ICAgZm9yIChsZXQgeCBvZiBtYXApIHsgfQorCisgICAgICAgICAgICBjb25zb2xlLmxvZyhtYXAp
OworICAgICAgICB9LAogICAgIH0pOwogCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOkFycmF5LnByb3Rv
dHlwZS5wdXNoIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJBcnJheS5wdXNoIGluIEluamVjdGVk
IFNjcmlwdCBzaG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3Ry
aW5nOiAiQXJyYXkucHJvdG90eXBlIiwKKyAgICAgICAgcHJvcGVydHlTdHJpbmc6ICJcInB1c2hc
IiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7Cisg
ICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAgICAgIGFycmF5LnB1c2goNDIpOwor
ICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkUHJvdG90eXBlUHJvcGVydHlUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJJbmplY3RlZFNjcmlwdC5PYnNlcnZhYmxlOlNldC5wcm90b3R5cGUu
YWRkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTZXQuYWRkIGluIEluamVjdGVkIFNjcmlwdCBz
aG91bGQgbm90IGJlIG9ic2VydmFibGUuIiwKKyAgICAgICAgcHJvdG90eXBlU3RyaW5nOiAiU2V0
LnByb3RvdHlwZSIsCisgICAgICAgIHByb3BlcnR5U3RyaW5nOiAiXCJhZGRcIiIsCisgICAgICAg
IGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBs
ZXQgc2V0ID0gbmV3IFNldDsKKyAgICAgICAgICAgIHNldC5hZGQoNDIpOworICAgICAgICB9LAor
ICAgIH0pOworCisgICAgYWRkT2JqZWN0VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5qZWN0
ZWRTY3JpcHQuT2JzZXJ2YWJsZTpTdHJpbmciLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN0cmlu
ZyBpbiBJbmplY3RlZCBTY3JpcHQgc2hvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLiIsCisgICAgICAg
IG9iamVjdFN0cmluZzogIlN0cmluZyIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5PYmplY3RG
dW5jdGlvbjogKCkgPT4geworICAgICAgICAgICAgbGV0IGFuc3dlciA9IFN0cmluZyg0Mik7Cisg
ICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQcm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0Lk9ic2VydmFibGU6QXJyYXkucHJvdG90eXBl
LmluZGV4IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJPdmVycmlkZW4gaW5kZXhlcyBpbiBBcnJh
eSBwcm90b3R5cGUgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4i
LAorICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJBcnJheS5wcm90b3R5cGUiLAorICAgICAgICBw
cm9wZXJ0eVN0cmluZzogIlwiNDJcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Qcm9wZXJ0
eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgYXJyYXkgPSBbXTsKKyAgICAgICAg
ICAgIGFycmF5LnB1c2goImhlbGxvIik7CisgICAgICAgICAgICBjb25zb2xlLmxvZyhhcnJheSk7
CisgICAgICAgICAgICBhcnJheVs0Ml07CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRQ
cm90b3R5cGVQcm9wZXJ0eVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluamVjdGVkU2NyaXB0
Lk9ic2VydmFibGU6T2JqZWN0LnByb3RvdHlwZS5kZXN0cnVjdHVyZWRQcm9wZXJ0eSIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiT2JqZWN0IGRlc3RydWN0dXJpbmcgKGZvciBgb3B0aW9uc2AgcGFy
YW1ldGVycykgaW4gSW5qZWN0ZWQgU2NyaXB0IHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4iLAor
ICAgICAgICBwcm90b3R5cGVTdHJpbmc6ICJPYmplY3QucHJvdG90eXBlIiwKKyAgICAgICAgcHJv
cGVydHlTdHJpbmc6ICJcImZldGNoU3RhcnRcIiIsCisgICAgICAgIGludm9rZU92ZXJyaWRkZW5Q
cm9wZXJ0eUZ1bmN0aW9uOiAoKSA9PiB7CisgICAgICAgICAgICBsZXQgeCA9IHt9LmZldGNoU3Rh
cnQ7CisgICAgICAgIH0sCisgICAgfSk7CisKKworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KLTxwPlRlc3QgdGhhdCBjZXJ0YWluIEluamVjdGVkU2NyaXB0U291cmNlIG9wZXJhdGlvbnMg
YXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+Cis8cD5UZXN0IHRoYXQgSW5qZWN0
ZWQgU2NyaXB0IG9wZXJhdGlvbnMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXIgY29kZS48L3A+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9k
ZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggZDQ0MjE3ZDM2
MmVhNGY5YTI1MjY0YTBkOGMzMGFhZjRhZmUyMzgxNi4uYWZiZDMyZDUwMzdlNTJhZTkwYzIzM2Yy
MmI1MzkzOTZlZTFmOGFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QvZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0L2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMzEsNyArMzEs
NyBAQCBFWFBSRVNTSU9OOiBlcnJvciA9IG51bGw7IHRyeSB7IFtdLngueDsgfSBjYXRjaCAoZSkg
eyBlcnJvciA9IGU7IH07IGVycm9yCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIs
CiAgICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogImdsb2JhbCBj
b2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBD
YWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJnbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uQFtuYXRpdmUgY29kZV1cbkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2
ZSBjb2RlXSIKICAgICAgIH0KICAgICBdLAogICAgICJfZW50cmllcyI6IG51bGwKQEAgLTcwLDcg
KzcwLDcgQEAgRVhQUkVTU0lPTjogZXJyb3IgPSBudWxsOyB0cnkgeyBldmFsKCJpZigpIik7IH0g
Y2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9OyBlcnJvcgogICAgICAgewogICAgICAgICAiX25hbWUi
OiAic3RhY2siLAogICAgICAgICAiX3R5cGUiOiAic3RyaW5nIiwKLSAgICAgICAgIl92YWx1ZSI6
ICJldmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb25AW25hdGl2ZSBjb2RlXVxuQFxuX3dyYXBDYWxsQCIKKyAgICAgICAgIl92YWx1ZSI6ICJl
dmFsQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU2NvcGVF4oCmdGl2
ZSBjb2RlXVxuQFtuYXRpdmUgY29kZV1cbl93cmFwQ2FsbEBbbmF0aXZlIGNvZGVdIgogICAgICAg
fQogICAgIF0sCiAgICAgIl9lbnRyaWVzIjogbnVsbApAQCAtMTA0LDcgKzEwNCw3IEBAIEVYUFJF
U1NJT046IGVycm9yID0gbnVsbDsgdHJ5IHsgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLnNw
bGl0VGV4dCgxMDApOyB9IGNhCiAgICAgICB7CiAgICAgICAgICJfbmFtZSI6ICJzdGFjayIsCiAg
ICAgICAgICJfdHlwZSI6ICJzdHJpbmciLAotICAgICAgICAiX3ZhbHVlIjogInNwbGl0VGV4dEBb
bmF0aXZlIGNvZGVdXG5nbG9iYWwgY29kZUBcbmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uQFtu
YXRpdmUgY29kZV1cbkBcbl93cmFwQ2FsbEAiCisgICAgICAgICJfdmFsdWUiOiAic3BsaXRUZXh0
QFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlQFxuZXZhbHVhdGVXaXRoU+KApnRpdmUgY29kZV1c
bkBbbmF0aXZlIGNvZGVdXG5fd3JhcENhbGxAW25hdGl2ZSBjb2RlXSIKICAgICAgIH0sCiAgICAg
ICB7CiAgICAgICAgICJfbmFtZSI6ICJjb2RlIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4tZXhwZWN0ZWQudHh0CmluZGV4IDVlNGE4NThh
NDljZmVkYTA2ZjlmYmJmODRkMWNmN2YyNGVhYmQ2YmEuLjEyMzNlYjM5NDgxNzNiNDA3NmQzMzA5
YjMwMzNhNjZjZmQ5ZDRiMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS9saW5lLWNvbHVtbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjQsOCArNjQsOCBAQCBQQVNT
OiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAog
ICAgICAgICAgICAgICAidXJsIjogIiIsCiAgICAgICAgICAgICAgICJzY3JpcHRJZCI6ICI8Zmls
dGVyZWQ+IiwKLSAgICAgICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAgICAgICAgICAg
ICJjb2x1bW5OdW1iZXIiOiA5NworICAgICAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAg
ICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIs
CkBAIC0xMTcsOCArMTE3LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAg
ImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2Ny
aXB0SWQiOiAiPGZpbHRlcmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAg
ICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9
CiAgICAgICBdLAogICAgICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCkBAIC0xNzcsOCArMTc3
LDggQEAgUEFTUzogQ2FwdHVyaW5nIHN0YXJ0ZWQuCiAgICAgICAgICAgImZ1bmN0aW9uTmFtZSI6
ICIiLAogICAgICAgICAgICJ1cmwiOiAiIiwKICAgICAgICAgICAic2NyaXB0SWQiOiAiPGZpbHRl
cmVkPiIsCi0gICAgICAgICAgImxpbmVOdW1iZXIiOiAxNDEsCi0gICAgICAgICAgImNvbHVtbk51
bWJlciI6IDk3CisgICAgICAgICAgImxpbmVOdW1iZXIiOiAiPGZpbHRlcmVkPiIsCisgICAgICAg
ICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgICAgICB9CiAgICAgICBdLAogICAg
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUvbGluZS1jb2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS9saW5lLWNvbHVtbi5odG1sCmluZGV4IDY3MmIzNTMzODAwY2JlMjU5ZWU4ODg3YWJl
MTg4NzgxYmViZjA0NGUuLmE0NTIzMDZjYmQ0ZTQ1NWQ4NjkzYzhkYWJlNDI5NTY0MzFkOTUxMzgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi5odG1s
CkBAIC00MiwxMSArNDIsMjcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAvLyBUbyBhdm9pZCBm
bGFraW5lc3MgcHJpbnQgb25seSBldmVudHMgdGhhdCB3ZSBhbHdheXMgZXhwZWN0LgogICAgIGNv
bnN0IGV2ZW50QWxsb3dsaXN0ID0gbmV3IFNldChbIlJlbmRlcmluZ0ZyYW1lIiwgIkNvbnNvbGVQ
cm9maWxlIiwgIkV2ZW50RGlzcGF0Y2giLCAiRnVuY3Rpb25DYWxsIl0pOworCisgICAgLy8gVGhl
IGluc3BlY3RvciBpbmplY3RlZCBzY3JpcHQgY2FsbCBmcmFtZShzKSBoYXZlIGRpZmZlcmVudCBs
aW5lIG51bWJlcnMgYmV0d2VlbiByZWxlYXNlIGFuZCBkZWJ1ZyBidWlsZHMuIFdlIG9ubHkKKyAg
ICAvLyB3YW50IHRvIGZpbHRlciB0aG9zZSB2YWx1ZXMgZm9yIHRob3NlIHNwZWNpZmljIGNhbGwg
ZnJhbWVzIGluIG9yZGVyIHRvIGVuc3VyZSBvdGhlciBsaW5lL2NvbHVtbiBudW1iZXJzIHJlbWFp
biBzdGFibGUuCisgICAgbGV0IGZ1bmN0aW9uTmFtZUxlbmd0aCA9IDA7CisgICAgbGV0IHVybExl
bmd0aCA9IDA7CisKICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAg
IGlmIChrZXkgPT09ICJmdW5jdGlvbk5hbWUiKSB7CisgICAgICAgICAgICBmdW5jdGlvbk5hbWVM
ZW5ndGggPSB2YWx1ZS5sZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGlmIChrZXkgPT09ICJjaGlsZHJlbiIgJiYgdGhpcy5zdGFy
dFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGUgPT4gZXZlbnRBbGxvd2xp
c3QuaGFzKGUudHlwZSkpOwogICAgICAgICBpZiAoa2V5ID09PSAic3RhcnRUaW1lIiB8fCBrZXkg
PT09ICJlbmRUaW1lIiB8fCBrZXkgPT09ICJzY3JpcHRJZCIgfHwga2V5ID09PSAiZnJhbWVJZCIp
CiAgICAgICAgICAgICByZXR1cm4gIjxmaWx0ZXJlZD4iOworICAgICAgICBpZiAoKGtleSA9PT0g
ImxpbmVOdW1iZXIiIHx8IGtleSA9PT0gImNvbHVtbk51bWJlciIpICYmICFmdW5jdGlvbk5hbWVM
ZW5ndGggJiYgIXVybExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRlcmVkPiI7CisK
KyAgICAgICAgaWYgKGtleSA9PT0gInVybCIpCisgICAgICAgICAgICB1cmxMZW5ndGggPSB2YWx1
ZS5sZW5ndGg7CiAgICAgICAgIGlmIChrZXkgPT09ICJ1cmwiIHx8IGtleSA9PT0gInNjcmlwdE5h
bWUiKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL14uK0xheW91dFRlc3RzXC9p
bnNwZWN0b3JcLy8sICIiKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2luc3BlY3Rvci90aW1lbGluZS9saW5lLWNvbHVtbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dAppbmRleCBjOTYyZDY4MTAxY2Y0NzMxNWQ1ZTAxZGMzZjBk
M2ZlMzU5ZDYyNTQ3Li41NmQxODQwOGJkZGU5YTdiMDcwMjM5NmI5NGY5Nzk3NmNmM2JkYWVkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5zcGVjdG9yL3RpbWVsaW5lL2xp
bmUtY29sdW1uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW5z
cGVjdG9yL3RpbWVsaW5lL2xpbmUtY29sdW1uLWV4cGVjdGVkLnR4dApAQCAtNjAsOCArNjAsOCBA
QCBQQVNTOiBDYXB0dXJpbmcgc3RhcnRlZC4KICAgICAgICAgICAiZnVuY3Rpb25OYW1lIjogIiIs
CiAgICAgICAgICAgInVybCI6ICIiLAogICAgICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+
IiwKLSAgICAgICAgICAibGluZU51bWJlciI6IDE0MSwKLSAgICAgICAgICAiY29sdW1uTnVtYmVy
IjogOTcKKyAgICAgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAi
Y29sdW1uTnVtYmVyIjogIjxmaWx0ZXJlZD4iCiAgICAgICAgIH0KICAgICAgIF0sCiAgICAgICAi
ZnJhbWVJZCI6ICI8ZmlsdGVyZWQ+IiwKQEAgLTExMyw4ICsxMTMsOCBAQCBQQVNTOiBDYXB0dXJp
bmcgc3RhcnRlZC4KICAgICAgICJmdW5jdGlvbk5hbWUiOiAiIiwKICAgICAgICJ1cmwiOiAiIiwK
ICAgICAgICJzY3JpcHRJZCI6ICI8ZmlsdGVyZWQ+IiwKLSAgICAgICJsaW5lTnVtYmVyIjogMTQx
LAotICAgICAgImNvbHVtbk51bWJlciI6IDk3CisgICAgICAibGluZU51bWJlciI6ICI8ZmlsdGVy
ZWQ+IiwKKyAgICAgICJjb2x1bW5OdW1iZXIiOiAiPGZpbHRlcmVkPiIKICAgICB9CiAgIF0sCiAg
ICJmcmFtZUlkIjogIjxmaWx0ZXJlZD4iLApAQCAtMTY1LDggKzE2NSw4IEBAIFBBU1M6IENhcHR1
cmluZyBzdGFydGVkLgogICAgICAgImZ1bmN0aW9uTmFtZSI6ICIiLAogICAgICAgInVybCI6ICIi
LAogICAgICAgInNjcmlwdElkIjogIjxmaWx0ZXJlZD4iLAotICAgICAgImxpbmVOdW1iZXIiOiAx
NDEsCi0gICAgICAiY29sdW1uTnVtYmVyIjogOTcKKyAgICAgICJsaW5lTnVtYmVyIjogIjxmaWx0
ZXJlZD4iLAorICAgICAgImNvbHVtbk51bWJlciI6ICI8ZmlsdGVyZWQ+IgogICAgIH0KICAgXSwK
ICAgImZyYW1lSWQiOiAiPGZpbHRlcmVkPiIsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>