<?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>191494</bug_id>
          
          <creation_ts>2018-11-09 16:03:09 -0800</creation_ts>
          <short_desc>Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)</short_desc>
          <delta_ts>2018-11-14 13:42:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477158</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 16:03:09 -0800</bug_when>
    <thetext>Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)

Web Inspector needs to:

  - be capable of detaching and reattaching to a page
  - connecting to a page through the UIProcess instead of the WebContentProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477159</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 16:04:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/45469854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477160</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 16:05:00 -0800</bug_when>
    <thetext>Starting with Remote Web Inspector support, then will follow-up with Local Inspector. This is because the remote path is simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477198</commentid>
    <comment_count>3</comment_count>
      <attachid>354420</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 17:19:40 -0800</bug_when>
    <thetext>Created attachment 354420
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477199</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-09 17:23:31 -0800</bug_when>
    <thetext>Attachment 354420 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.h:65:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WebKit/UIProcess/InspectorTargetProxy.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/UIProcess/WebPageInspectorTargetAgent.h:38:  &quot;virtual&quot; is redundant since function is already declared as &quot;final&quot;  [readability/inheritance] [4]
ERROR: Source/WebKit/UIProcess/WebPageInspectorTargetAgent.cpp:32:  &quot;virtual&quot; is redundant since function is already declared as &quot;final&quot;  [readability/inheritance] [4]
ERROR: Source/WebKit/UIProcess/WebPageInspectorTargetAgent.cpp:33:  &quot;virtual&quot; is redundant since function is already declared as &quot;final&quot;  [readability/inheritance] [4]
ERROR: Source/JavaScriptCore/inspector/InspectorTarget.h:37:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebKit/UIProcess/WebPageInspectorController.cpp:160:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/ChangeLog:9:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 8 in 71 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477200</commentid>
    <comment_count>5</comment_count>
      <attachid>354420</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 17:26:52 -0800</bug_when>
    <thetext>Comment on attachment 354420
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:103
&gt; +        this._addTarget(target);

It is debatable whether or not we should trigger a TargetAdded event for the MultiplexingBackendTarget. Since it doesn&apos;t appear in `WI.targets`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477251</commentid>
    <comment_count>6</comment_count>
      <attachid>354444</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 22:49:35 -0800</bug_when>
    <thetext>Created attachment 354444
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477252</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-09 22:52:07 -0800</bug_when>
    <thetext>Attachment 354444 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebPageInspectorController.cpp:162:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 71 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477405</commentid>
    <comment_count>8</comment_count>
      <attachid>354444</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-11 13:30:26 -0800</bug_when>
    <thetext>Comment on attachment 354444
[PATCH] Proposed Fix

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

Overall, this looks good.  I am somewhat new at the WebInspector process architecture, so you might want to seek another opinion on those parts of the patch.  I&apos;d like a few of my comments/concerns addressed if possible.

Generally speaking, I&apos;ve been &quot;screwed&quot; in the past by trying to add support for things before they are needed (e.g. Canvas protocol changes not compiling once actually used somewhere).  For those changes, I&apos;d rather there be a good comment explaining why they&apos;re added in this &quot;implementation&quot; patch, or moved into the a different &quot;usage&quot; patch.

&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:52
&gt; +    virtual void connect(FrontendChannel*) = 0;
&gt; +    virtual void disconnect(FrontendChannel*) = 0;

From what I can tell, it seems like these will never be `nullptr`.  Is that true?  If so, make them references.

&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:56
&gt; +    virtual void resumeIfPaused() { }

This doesn&apos;t appear to be used.  Is it needed (e.g. a future patch)?

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:64
&gt; +        errorString = &quot;Target not found.&quot;_s;

NIT: our usual error string style is &quot;No target for given identifier&quot;, but I also like the succinct-ness of this, so I&apos;m fine with it as is

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:122
&gt; +    m_frontendDispatcher-&gt;targetCreated(buildTargetInfoObject(target));

Should this only be dispatched when `m_isConnected`?

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:127
&gt; +    m_frontendDispatcher-&gt;targetTerminated(target.identifier());

Ditto (122)

NIT: is there a reason this isn&apos;t the last call in this function?

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:139
&gt; +    for (auto&amp; entry : m_targets) {

NIT: you could use `m_targets.values()` to iterate over just the values instead

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:150
&gt; +    for (auto&amp; entry : m_targets) {

Ditto (139)

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.h:49
&gt; +    virtual FrontendChannel* frontendChannel() = 0;

Make this a reference

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.h:52
&gt; +    void exists(ErrorString&amp;) final;

This could use an explanation somewhere as to why it&apos;s really needed.

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.h:58
&gt; +    void targetTerminated(InspectorTarget&amp;);

NIT: is there a reason to use &quot;terminated&quot;?  You could call this `targetDestroyed` to match the lifecycle of other agent objects.

&gt; Source/JavaScriptCore/inspector/protocol/Target.json:3
&gt; +    &quot;availability&quot;: [&quot;web&quot;],

IIUC, this may eventually become available everywhere, but for now it&apos;s limited to actual pages?

&gt; Source/WebCore/ChangeLog:26
&gt; +        When a frontend connects just always enable the developer extras for the Page.

Typo: &quot;connects, always&quot;

&gt; Source/WebCore/ChangeLog:27
&gt; +        This is pretty much only for the remote path, which allowed inspection if developer

Typo&quot; which allows inspection&quot;

&gt; Source/WebInspectorUI/ChangeLog:10
&gt; +        Specifically a backend connection that is persistent, but the ability to connect

Typo: &quot;but has the&quot;

&gt; Source/WebInspectorUI/ChangeLog:32
&gt; +          - In a direct-target world, there is a single target which is
&gt; +            should be used for global agents and in WI.targets.

Typo: &quot;which should be&quot;

&gt; Source/WebInspectorUI/ChangeLog:38
&gt; +        In the multi-target world, there are now commonly two Targets. The

Typo: &quot;In a multi-target&quot; (consistent with next paragraph)

&gt; Source/WebInspectorUI/ChangeLog:44
&gt; +        as soon as it opens (via the Target.targetCreated). In order to support

Typo: &quot;via Target.targetCreated&quot;

&gt; Source/WebInspectorUI/ChangeLog:45
&gt; +        this frontend initialization happens without a main target being available.

Typo: &quot;this, frontend&quot;

&gt; Source/WebInspectorUI/ChangeLog:53
&gt; +        WI.pageTarget. When a pageTranition happens the WI.pageTarget changes, and the

Typo: &quot;a page transition happens&quot;

&gt; Source/WebInspectorUI/ChangeLog:56
&gt; +        For the most part the UI behaves fine as long once there is a main frame

Typo: &quot;fine once there are main&quot;

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:154
&gt; +    WI.pageTarget = null;

While I do understand the &quot;need&quot; for something like this, I feel like our usage of `WI.pageTarget` is such that it doesn&apos;t need to be a different object from `WI.backendTarget`.  Furthermore, it seems like `WI.backendTarget` isn&apos;t actually directly needed, so could we move `WI.pageTarget` into `WI.mainTarget`.  Is it ever necessary that `WI.mainTarget` be the `WI.backendTarget` (e.g. some caller of `WI.mainTarget` expects that case to be true)?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:43
&gt; +            this._cachedTargetsList = Array.from(this._targets.values()).filter((target) =&gt; !(target instanceof WI.MultiplexingBackendTarget));

If it is necessary to keep `allTargets`, you could use that here ` = this.allTargets.filter(`

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:47
&gt; +    get allTargets()

This doesn&apos;t appear to be used.  Is it needed (e.g. a future patch)?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:65
&gt; +    targetCreated(targetInfo)

NIT: add `// Called from WI.TargetObserver.`

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:69
&gt; +            this.createMultiplexingBackendTarget(targetInfo);

Should you return after this call?  Otherwise, the `_addTarget` call below will override this entry in `_targets`.

It also seems weird to use the same event for the &quot;initial&quot; target, and any subsequent targets thereafter.  If we&apos;re always expecting the first `targetCreated` to be a multiplexing target, I&apos;d rather us have a separate event `multiplexerCreated` for that target, and have the rest of the &quot;normal&quot; targets go through `targetCreated`.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:79
&gt; +    targetTerminated(targetId)

Ditto (65)

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:86
&gt; +    dispatchMessageFromTarget(targetId, message)

Ditto (65)

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:121
&gt; +    _addTarget(target)

Considering that this function is used elsewhere (e.g. `WI.WorkerManager`), it should remain public

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:132
&gt; +    _removeTarget(target)

Ditto (121)

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:190
&gt; +        clearTimeout(this._transitionTimeoutIdentifier);

This should also be cleared each time a new `WI.pageTarget` is set.  Instead of having the early return inside the callback of the `setTimeout`, we should clear the `setTimeout` itself and prevent it from firing.  It firing at all should be the &quot;error&quot;.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:324
&gt; +        for (let domain in InspectorBackend._agents) {

NIT: use `Object.entries`

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:36
&gt; +        const type = WI.Target.Type.Page;
&gt; +        const displayName = WI.UIString(&quot;Page&quot;);

NIT: I&apos;ve been starting to inline these types of constants if the value has something related to the parameter name (e.g. `WI.Target.Type.Page` has &quot;type&quot; already in it)

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:37
&gt; +

Style: remove newline

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:40
&gt; +        // Restrict to just TargetAgent.

NIT: this comment is unnecessary IMO since the code right below it is pretty self-explanatory

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:41
&gt; +        const supportedMultiplexingDomains = [&quot;Target&quot;];

Are you planning on adding to this array in the future?  If not, I&apos;d remove all the loop code and just write it once.

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:60
&gt; +        console.error(&quot;Called name on a MultiplexingBackendTarget&quot;);

Should this `throw new WI.NotImplementedError` instead?

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:66
&gt; +        console.error(&quot;Called executionContext on a MultiplexingBackendTarget&quot;);

Ditto (60)

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:72
&gt; +        console.error(&quot;Called mainResource on a MultiplexingBackendTarget&quot;);

Ditto (60)

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:32
&gt; +        this._executionContext = new WI.ExecutionContext(this, WI.RuntimeManager.TopLevelContextExecutionIdentifier, this.name, true, null);

NIT: use `this.displayName`

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:39
&gt; +        return WI.displayNameForURL(this._name);

`this._name` is constructed with `WI.UIString(&quot;Page&quot;)` on TargetManager.js:151, so it won&apos;t be a URL

&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:215
&gt; +            this._targetAdded({data: {target}});

Rather than do this &quot;hack&quot;, I&apos;d prefer you create a `_addTarget` function that is called by `_targetAdded` (you could also rename `_targetAdded` to `_handleTargetAdded`)

&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:221
&gt; +        for (let script of WI.debuggerManager.knownNonResourceScripts)

Considering how large this diff already is, I&apos;d remove this and &quot;fix&quot; it later

&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:743
&gt; +            this._mainTargetTreeElement = treeElement;

When the `WI.mainTarget` changes, we should also remove the old `WI.TreeElement` (you might even want to replace the old one with the new one to ensure the right ordering)

&gt; Source/WebInspectorUI/UserInterface/Views/QuickConsole.js:116
&gt; +        if (!WI.mainTarget || !WI.mainTarget.executionContext)

If the `WI.mainTarget` doesn&apos;t have an `executionContext`, shouldn&apos;t we clear the `_mainExecutionContextPathComponent`?

&gt; Source/WebInspectorUI/UserInterface/Views/QuickConsole.js:119
&gt; +        this._mainExecutionContextPathComponent = this._createExecutionContextPathComponent(WI.mainTarget.executionContext);

Should we do anything to the old `_mainExecutionContextPathComponet` if it exists?  If the `WI.PathComponent` is displayed anywhere in the UI, we should also update that (e.g. the execution context picker).

&gt; Source/WebInspectorUI/UserInterface/Views/QuickConsole.js:321
&gt; +        if (target.type !== WI.Target.Type.Worker)

What about `ServiceWorker`?

&gt; Source/WebInspectorUI/UserInterface/Views/QuickConsole.js:335
&gt; +        if (target.type !== WI.Target.Type.Worker)

Ditto (321)

&gt; Source/WebKit/ChangeLog:20
&gt; +        stay alive and reconnect to a page when the inspected page crashes!

\(0.0)/

&gt; Source/WebKit/UIProcess/WebPageDebuggable.cpp:71
&gt; +    WebPageInspectorController&amp; inspectorController = m_page.inspectorController();

NIT: is it necessary to save this to a local variable?

&gt; Source/WebKit/UIProcess/WebPageDebuggable.cpp:77
&gt; +    WebPageInspectorController&amp; inspectorController = m_page.inspectorController();

Ditto (71)

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:65
&gt; +bool WebPageInspectorController::hasRemoteFrontend() const

You can use this object&apos;s `hasRemoteFrontend()` instead of re-calling `m_frontendRouter-&gt; hasRemoteFrontend()` in the functions below

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:70
&gt; +void WebPageInspectorController::connectFrontend(Inspector::FrontendChannel* frontendChannel, bool, bool)

It seems like this should be reworked so as to pass a reference, not a pointer

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:74
&gt; +    bool connectedFirstFrontend = !m_frontendRouter-&gt;hasFrontends();

NIT: this should be present/future tense, as you haven&apos;t connected yet: `connectingFirstFrontend` or even just `hasFrontend` (negating it in the `if` below)

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:89
&gt; +void WebPageInspectorController::disconnectFrontend(FrontendChannel* frontendChannel)

Ditto (70)

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:100
&gt; +    if (!m_frontendRouter-&gt;hasFrontends())

Should this be `hasRemoteFrontend`?

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:155
&gt; +    m_targets.append(makeRefPtr(target.get()));

Correct me if I&apos;m wrong, but wouldn&apos;t `m_targets.append(target.copyRef())` also work?

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:162
&gt; +    auto position = m_targets.findMatching([&amp;](const auto&amp; item) { return item-&gt;identifier() == targetId; });

Use a `HashMap&lt;String, RefPtr&lt;InspectorTargetProxy&gt;&gt;` to avoid this iterative lookup

&gt; Source/WebKit/UIProcess/WebPageInspectorController.h:74
&gt; +    Inspector::InspectorTargetAgent* m_targetAgent;

This can be a value/reference, since it&apos;s always guaranteed to exist

&gt; Source/WebKit/UIProcess/WebPageInspectorTargetAgent.cpp:32
&gt; +    ConnectionType connectionType() const final { return Inspector::FrontendChannel::ConnectionType::Remote; }

Should this always be `Remote`, or is this only for this patch (since you&apos;re only adding remote support)?

&gt; Source/WebKit/UIProcess/WebPageProxy.h:396
&gt; +    void showInspectorIndication();
&gt; +    void hideInspectorIndication();

Is there a reason to move these outside `PLATFORM(IOS_FAMILY)`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477750</commentid>
    <comment_count>9</comment_count>
      <attachid>354444</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-12 15:13:47 -0800</bug_when>
    <thetext>Comment on attachment 354444
[PATCH] Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:122
&gt;&gt; +    m_frontendDispatcher-&gt;targetCreated(buildTargetInfoObject(target));
&gt; 
&gt; Should this only be dispatched when `m_isConnected`?

I suppose yes none of will do anything if we are not connected, I&apos;ll bail above.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:127
&gt;&gt; +    m_frontendDispatcher-&gt;targetTerminated(target.identifier());
&gt; 
&gt; Ditto (122)
&gt; 
&gt; NIT: is there a reason this isn&apos;t the last call in this function?

Sure I&apos;ll make these changes.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.h:52
&gt;&gt; +    void exists(ErrorString&amp;) final;
&gt; 
&gt; This could use an explanation somewhere as to why it&apos;s really needed.

The explanation was in the imp.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.h:58
&gt;&gt; +    void targetTerminated(InspectorTarget&amp;);
&gt; 
&gt; NIT: is there a reason to use &quot;terminated&quot;?  You could call this `targetDestroyed` to match the lifecycle of other agent objects.

Done. It was &quot;Terminated&quot; because this came from the Worker pattern, and Workers can be terminated.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Target.json:3
&gt;&gt; +    &quot;availability&quot;: [&quot;web&quot;],
&gt; 
&gt; IIUC, this may eventually become available everywhere, but for now it&apos;s limited to actual pages?

I don&apos;t plan to do this everywhere... In fact it doesn&apos;t need to live in JavaScriptCore, but in case we do add a new such target in the future I put it here.

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:154
&gt;&gt; +    WI.pageTarget = null;
&gt; 
&gt; While I do understand the &quot;need&quot; for something like this, I feel like our usage of `WI.pageTarget` is such that it doesn&apos;t need to be a different object from `WI.backendTarget`.  Furthermore, it seems like `WI.backendTarget` isn&apos;t actually directly needed, so could we move `WI.pageTarget` into `WI.mainTarget`.  Is it ever necessary that `WI.mainTarget` be the `WI.backendTarget` (e.g. some caller of `WI.mainTarget` expects that case to be true)?

WI.mainTarget should be the WI.backendTarget whenever there is a direct connection (JSContext inspection, Service Worker Inspection).

In cases where the frontend is using `WI.mainTarget.FooAgent.method` it should work regardless of being connected to a Page / JSContext / ServiceWorker.
In cases where the frontend is using `WI.pageTarget.FooAgent.method` it expected that we are connected to a Page and not a JSContext / ServiceWorker.

Assuming we can get rid of all unprefixed agent uses, then we can likely get rid of the pageTarget concept.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:47
&gt;&gt; +    get allTargets()
&gt; 
&gt; This doesn&apos;t appear to be used.  Is it needed (e.g. a future patch)?

I left this in only for debugging purposes.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:69
&gt;&gt; +            this.createMultiplexingBackendTarget(targetInfo);
&gt; 
&gt; Should you return after this call?  Otherwise, the `_addTarget` call below will override this entry in `_targets`.
&gt; 
&gt; It also seems weird to use the same event for the &quot;initial&quot; target, and any subsequent targets thereafter.  If we&apos;re always expecting the first `targetCreated` to be a multiplexing target, I&apos;d rather us have a separate event `multiplexerCreated` for that target, and have the rest of the &quot;normal&quot; targets go through `targetCreated`.

Currently the frontend waits to create the multiplexing backend target when we get told about the first target. This should be eliminated when both the local inspector and remote inspector support the multiplexing path. At that point:

    - We can remote Target.exists
    - Main.js can just check the existence of window.TargetAgent to decide whether to create a MultiplexingBackendTarget or DirectBackendTarget

So this is a temporary measure for now. I&apos;ll add a FIXME like the one by Target.exists.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:190
&gt;&gt; +        clearTimeout(this._transitionTimeoutIdentifier);
&gt; 
&gt; This should also be cleared each time a new `WI.pageTarget` is set.  Instead of having the early return inside the callback of the `setTimeout`, we should clear the `setTimeout` itself and prevent it from firing.  It firing at all should be the &quot;error&quot;.

I think ultimately we should remove this code in a month or so if it never triggers. I just left this hack to help detect any cases where a transition didn&apos;t happen properly. In practice I never once hit this.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:41
&gt;&gt; +        const supportedMultiplexingDomains = [&quot;Target&quot;];
&gt; 
&gt; Are you planning on adding to this array in the future?  If not, I&apos;d remove all the loop code and just write it once.

We may ultimately move Network and Storage up here, but I agree it is unnecessary now. I reduced this to:

        let agents = this._agents;
        this._agents = {
            Target: agents.Target,
        };

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:60
&gt;&gt; +        console.error(&quot;Called name on a MultiplexingBackendTarget&quot;);
&gt; 
&gt; Should this `throw new WI.NotImplementedError` instead?

Hmm, no. NotImplemented expects a subclass to implement. This won&apos;t be subclasses. We don&apos;t want these to be called at all. If they are we should figure out who called these on the backend target and eliminate the use cases. I haven&apos;t seen these called at all, but I wanted to catch any cases that did.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:32
&gt;&gt; +        this._executionContext = new WI.ExecutionContext(this, WI.RuntimeManager.TopLevelContextExecutionIdentifier, this.name, true, null);
&gt; 
&gt; NIT: use `this.displayName`

Unlike other targets (which are likely sub-targets) we want the ExecutionContext to be the name &quot;Page&quot; and not the url. At least that was old behavior and makes sense in the execution context picker. Maybe we can improve this to be &quot;Page – &lt;domain&gt;&quot;.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:39
&gt;&gt; +        return WI.displayNameForURL(this._name);
&gt; 
&gt; `this._name` is constructed with `WI.UIString(&quot;Page&quot;)` on TargetManager.js:151, so it won&apos;t be a URL

You&apos;re right, I&apos;ll just drop displayName in this class.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:743
&gt;&gt; +            this._mainTargetTreeElement = treeElement;
&gt; 
&gt; When the `WI.mainTarget` changes, we should also remove the old `WI.TreeElement` (you might even want to replace the old one with the new one to ensure the right ordering)

Good point, this might need some work, but I think this works as is. When the new target is the new mainTarget (page transition) it&apos;ll go through here and update the mainTargetTreeElement.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:65
&gt;&gt; +bool WebPageInspectorController::hasRemoteFrontend() const
&gt; 
&gt; You can use this object&apos;s `hasRemoteFrontend()` instead of re-calling `m_frontendRouter-&gt; hasRemoteFrontend()` in the functions below

Removed hasRemoteFrontend.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:70
&gt;&gt; +void WebPageInspectorController::connectFrontend(Inspector::FrontendChannel* frontendChannel, bool, bool)
&gt; 
&gt; It seems like this should be reworked so as to pass a reference, not a pointer

Yep, lets do that in a follow-up. Since that exists in many places.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:100
&gt;&gt; +    if (!m_frontendRouter-&gt;hasFrontends())
&gt; 
&gt; Should this be `hasRemoteFrontend`?

Changed this to just be `if (hasLocalFrontend())`. The Remote Inspector listing state has a bit for &quot;has local debugger&quot; or not. If that is changing here, we update the state.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:155
&gt;&gt; +    m_targets.append(makeRefPtr(target.get()));
&gt; 
&gt; Correct me if I&apos;m wrong, but wouldn&apos;t `m_targets.append(target.copyRef())` also work?

Works!

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:162
&gt;&gt; +    auto position = m_targets.findMatching([&amp;](const auto&amp; item) { return item-&gt;identifier() == targetId; });
&gt; 
&gt; Use a `HashMap&lt;String, RefPtr&lt;InspectorTargetProxy&gt;&gt;` to avoid this iterative lookup

The expectation is that the list of targets will be very few. In fact right now it is just one. If that expectation changes we should convert this to a map.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorTargetAgent.cpp:32
&gt;&gt; +    ConnectionType connectionType() const final { return Inspector::FrontendChannel::ConnectionType::Remote; }
&gt; 
&gt; Should this always be `Remote`, or is this only for this patch (since you&apos;re only adding remote support)?

Correct. When adding a local inspector this stub will need to know which type is connected from the UIProcess side.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:396
&gt;&gt; +    void hideInspectorIndication();
&gt; 
&gt; Is there a reason to move these outside `PLATFORM(IOS_FAMILY)`?

Oops, good catch, I&apos;ll add that back. I was moving this to be public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477784</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-12 16:29:22 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #5)
&gt; Comment on attachment 354420 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354420&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:103
&gt; &gt; +        this._addTarget(target);
&gt; 
&gt; It is debatable whether or not we should trigger a TargetAdded event for the
&gt; MultiplexingBackendTarget. Since it doesn&apos;t appear in `WI.targets`.

I changed this to not do this for Multi Backend. This simplifies the code elsewhere that was ignoring instanceof WI.MultiplexingBackendTarget. Since this is not in `WI.targets` I think it shouldn&apos;t receive an event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477787</commentid>
    <comment_count>11</comment_count>
      <attachid>354608</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-12 16:31:26 -0800</bug_when>
    <thetext>Created attachment 354608
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477792</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-12 16:34:38 -0800</bug_when>
    <thetext>Attachment 354608 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebPageInspectorController.cpp:157:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 71 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478101</commentid>
    <comment_count>13</comment_count>
      <attachid>354690</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-13 12:52:34 -0800</bug_when>
    <thetext>Created attachment 354690
[PATCH] Follow-up for Local Inspector

This is an expected follow-up to disable PSON for the local inspector until we add support for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478533</commentid>
    <comment_count>14</comment_count>
      <attachid>354608</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 11:02:40 -0800</bug_when>
    <thetext>Comment on attachment 354608
[PATCH] Proposed Fix

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

r=me, do we need to retry the win bot?  Also, is there any way for you to write some tests for this?

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        New protocol domain, modelled after Worker.json, to allow for

Typo: &quot;domain, modeled after&quot;

&gt; Source/JavaScriptCore/ChangeLog:22
&gt; +        provide an identifier, type, and means of connecting/disconnecting
&gt; +        a frontend channel.

Grammar: &quot;disconnecting to a&quot;

&gt; Source/JavaScriptCore/ChangeLog:39
&gt; +        Implementation of TargetAgent holds a list of targets, and

You could just drop the &quot;Implementation of TargetAgent&quot;, as the rest of the sentence reads just fine without it (clearer actually).

&gt; Source/JavaScriptCore/inspector/protocol/Target.json:10
&gt; +                { &quot;name&quot;: &quot;targetId&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Unique identifier for the target.&quot; },

NIT: should this be a separate type, like `Network.RequestId`?  That way we could use it in other places as well (e.g. `Network.event.requestWillBeSent`).

&gt; Source/WebCore/ChangeLog:28
&gt; +        extras were not already enabled (iOS). This simplifies the logic, and toggling

NIT: the &quot;(iOS)&quot; should be moved to be right before the comma

&gt; Source/WebCore/inspector/InspectorController.cpp:-354
&gt; -    ASSERT(!m_frontendRouter-&gt;hasRemoteFrontend());

If you are changing this, theres another `m_frontendRouter-&gt;hasRemoteFrontend()` call in `InspectorController::connectFrontend` :)

&gt; Source/WebInspectorUI/ChangeLog:116
&gt; +        Workers are still special target like things that multiplex through

NIT: &quot;special target-like things&quot;

&gt; Source/WebInspectorUI/ChangeLog:118
&gt; +        be full targets in the future.

link/FIXME?

&gt; Source/WebInspectorUI/ChangeLog:140
&gt; +        therefore execution context is available. Just return null, when

NIT: &quot;context, is&quot;

&gt; Source/WebInspectorUI/UserInterface/Models/DefaultDashboard.js:53
&gt; +        WI.notifications.addEventListener(WI.Notification.TransitionPageTarget, this._transitionPageTarget, this);

NIT: I try to have every event handler begin with `_handle*` so it&apos;s easier to search for event related code

&gt; Source/WebInspectorUI/UserInterface/Protocol/DirectBackendTarget.js:65
&gt; +                type: WI.Target.Type.Page,
&gt; +                displayName: WI.UIString(&quot;Main&quot;),

Should we assume `WI.Target.Type.JSContext`, similar to `Inspector::targetTypeToProtocolType`?

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:59
&gt; +        return WI.UIString(&quot;Page&quot;);

Ditto (DirectBackendTarget.js:64)

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:32
&gt; +        this._executionContext = new WI.ExecutionContext(this, WI.RuntimeManager.TopLevelContextExecutionIdentifier, this.displayName, true, null);

NIT: add `const isPageContext = true;` and drop the last argument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478540</commentid>
    <comment_count>15</comment_count>
      <attachid>354690</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 11:21:25 -0800</bug_when>
    <thetext>Comment on attachment 354690
[PATCH] Follow-up for Local Inspector

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

r=me

&gt; Source/WebKit/ChangeLog:3
&gt; +        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)

Do you want to make a new bug for this, or just have it as part of the same one?

&gt; Source/WebKit/WebProcess/WebPage/WebInspector.cpp:105
&gt; +    m_page-&gt;setHasLocalInspectorFrontend(true);

NIT: I&apos;d move this before the message send, as you&apos;d want to set the state before notifying listeners that the state has changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478583</commentid>
    <comment_count>16</comment_count>
      <attachid>354608</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-14 12:56:34 -0800</bug_when>
    <thetext>Comment on attachment 354608
[PATCH] Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Target.json:10
&gt;&gt; +                { &quot;name&quot;: &quot;targetId&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Unique identifier for the target.&quot; },
&gt; 
&gt; NIT: should this be a separate type, like `Network.RequestId`?  That way we could use it in other places as well (e.g. `Network.event.requestWillBeSent`).

Good idea, I&apos;ll do that in a follow-up.

&gt;&gt; Source/WebCore/inspector/InspectorController.cpp:-354
&gt;&gt; -    ASSERT(!m_frontendRouter-&gt;hasRemoteFrontend());
&gt; 
&gt; If you are changing this, theres another `m_frontendRouter-&gt;hasRemoteFrontend()` call in `InspectorController::connectFrontend` :)

I changed that one above as well.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/DirectBackendTarget.js:65
&gt;&gt; +                displayName: WI.UIString(&quot;Main&quot;),
&gt; 
&gt; Should we assume `WI.Target.Type.JSContext`, similar to `Inspector::targetTypeToProtocolType`?

Hmm, okay I&apos;ll do that. And then I can get rid of the localized string &quot;Main&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478588</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-14 13:07:20 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/238192/webkit
https://trac.webkit.org/changeset/238193/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478599</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-14 13:42:09 -0800</bug_when>
    <thetext>https://trac.webkit.org/r238195 - wincairo build fix</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354420</attachid>
            <date>2018-11-09 17:19:40 -0800</date>
            <delta_ts>2018-11-09 22:49:35 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>it-1.patch</filename>
            <type>text/plain</type>
            <size>197775</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ODk5OTgzZWJjMC4uYjE1MWYxODhlMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEtlZXAgV2ViIEluc3BlY3RvciB3aW5kb3cgYWxpdmUgYWNyb3Nz
IHByb2Nlc3Mgc3dhcHMgKFBTT04pIChSZW1vdGUgSW5zcGVjdG9yKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDk0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80NTQ2OTg1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3RhcmdldC1tYW5hZ2VyLmh0bWw6Cisg
ICAgICAgIFdJLnRhcmdldHMgaGFzIHN3aXRjaGVkIHRvIGJlaW5nIGFuIGFycmF5IGluc3RlYWQg
b2YgYSBzZXQuCisKIDIwMTgtMTEtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGNhbk1ha2VQYXltZW50KCkgc2hvdWxkIG5vdCBj
b25zaWRlciBzZXJpYWxpemVkIHBheW1lbnQgbWV0aG9kIGRhdGEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3RhcmdldC1tYW5hZ2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90YXJnZXQtbWFuYWdlci5odG1sCmluZGV4IDFhNjU3
MjIwMTVhLi43YmM5Y2M1YWNhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvdGFyZ2V0LW1hbmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dW5pdC10ZXN0cy90YXJnZXQtbWFuYWdlci5odG1sCkBAIC0yNyw3ICsyNyw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIldlIHNob3VsZCBhbHdheXMgaGF2ZSB0aGUg
bWFpbiB0YXJnZXQuIiwKICAgICAgICAgYXN5bmMgdGVzdCgpIHsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KFdJLnRhcmdldHMgPT09IFdJLnRhcmdldE1hbmFnZXIudGFyZ2V0cyk7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJLnRhcmdldHMuc2l6ZSwg
MSwgIlRhcmdldHMgbGlzdCBzaG91bGQgYWx3YXlzIHN0YXJ0IG91dCB3aXRoIHRoZSBtYWluIHRh
cmdldC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kudGFyZ2V0
cy5sZW5ndGgsIDEsICJUYXJnZXRzIGxpc3Qgc2hvdWxkIGFsd2F5cyBzdGFydCBvdXQgd2l0aCB0
aGUgbWFpbiB0YXJnZXQuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KFsuLi5XSS50YXJnZXRzXVswXSwgV0kubWFpblRhcmdldCwgIlRhcmdldCBsaXN0IHNob3VsZCBh
bHdheXMgY29udGFpbiB0aGUgbWFpbiB0YXJnZXQuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdE5vdE51bGwoV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0LCAiTWFpbiB0
YXJnZXQgc2hvdWxkIGhhdmUgYW4gRXhlY3V0aW9uQ29udGV4dC4iKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kubWFpblRhcmdldC5SdW50aW1lQWdlbnQsIFJ1bnRp
bWVBZ2VudCwgIk1haW4gdGFyZ2V0IHNob3VsZCBoYXZlIHRoZSBnbG9iYWwgUnVudGltZUFnZW50
LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI2MTcwMDdhZWNjLi5l
MGZlYmZlMzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjI3LDYg
KzYyNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmgKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCiAgICAgaW5zcGVjdG9yL1Bl
ckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaApAQCAtNjQyLDYgKzY0Myw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQuaAorICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaAogCiAgICAgaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudC5oCiAKQEAgLTEwODMsNiArMTA4NSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9JTlNQRUNUT1JfRE9NQUlOUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
cHJvdG9jb2wvUmVjb3JkaW5nLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvcHJvdG9jb2wvU2NyaXB0UHJvZmlsZXIuanNvbgorICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24KICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1dvcmtlci5qc29uCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBmZDAwYWY2NDJjYS4uOWQ2YTAwMDYyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTExLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIgSW5z
cGVjdG9yIHdpbmRvdyBhbGl2ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90ZSBJ
bnNwZWN0b3IpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE0OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICBOZXcgZG9tYWluIGFuZCByZXNvdXJjZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246IEFkZGVkLgorICAgICAgICBOZXcgcHJvdG9jb2wgZG9tYWluLCBtb2Rl
bGxlZCBhZnRlciBXb3JrZXIuanNvbiwgdG8gYWxsb3cgZm9yCisgICAgICAgIG11bHRpcGxleGlu
ZyBiZXR3ZWVuIGRpZmZlcmVudCB0YXJnZXRzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclRhcmdldC5oOgorICAgICAgICBFYWNoIHRhcmdldCB3aWxsIGluc3RhbnRpYXRlIGFuIElu
c3BlY3RvclRhcmdldCBhbmQgbXVzdAorICAgICAgICBwcm92aWRlIGFuIGlkZW50aWZpZXIsIHR5
cGUsIGFuZCBtZWFucyBvZiBjb25uZWN0aW5nL2Rpc2Nvbm5lY3RpbmcKKyAgICAgICAgYSBmcm9u
dGVuZCBjaGFubmVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJn
ZXRBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmV4aXN0cyk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50Ojppbml0aWFsaXplZCk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRv
VGFyZ2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRN
ZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjp0YXJnZXRU
eXBlVG9Qcm90b2NvbFR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9P
YmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0
Q3JlYXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJn
ZXRUZXJtaW5hdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6ZGlzY29ubmVjdEZyb21UYXJnZXRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRhcmdldEFnZW50Lmg6IEFkZGVkLgorICAgICAgICBJbXBsZW1lbnRhdGlvbiBv
ZiBUYXJnZXRBZ2VudCBob2xkcyBhIGxpc3Qgb2YgdGFyZ2V0cywgYW5kCisgICAgICAgIGNvbm5l
Y3RzL2Rpc2Nvbm5lY3RzIHRvIGVhY2ggb2YgdGhlIHRhcmdldHMgd2hlbiBhIGZyb250ZW5kCisg
ICAgICAgIGNvbm5lY3RzL2Rpc2Nvbm5lY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0b3IucHk6CisgICAgICAgIEJldHRlciBlbnVtIGNhc2luZyBvZiBT
ZXJ2aWNlV29ya2VyLgorCiAyMDE4LTExLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIExMSW50IFZlY3RvclNpemVPZmZzZXQgc2hvdWxkIGJlIGJh
c2VkIG9uIG9mZnNldCBleHRyYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGZjYmY0YjVkN2FiLi5iMDZlMjg3YTYzZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIzOCw2ICsyMzgsNyBAQCBJTlNQRUNU
T1JfRE9NQUlOUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wv
UmVjb3JkaW5nLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9TY3JpcHRQcm9maWxlci5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvVGFyZ2V0Lmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9w
cm90b2NvbC9UaW1lbGluZS5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvV29ya2VyLmpzb24gXAogIwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNzRhZjllOTc1Zi4uYzAxM2QxNTA1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzQxLDYgKzEzNDEsNyBAQAogCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oICovOyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVB
Njg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIElu
amVjdGVkU2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1
NUZGM0QyMTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUzMTFDMzYxQzc3Q0VD
NTAwRTZCMUI2IC8qIEhlYXBTbmFwc2hvdEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzExQzM1MUM3N0NFQUMwMEU2QjFCNiAvKiBIZWFw
U25hcHNob3RCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUzMjQzODIxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
MzI0MzhBMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4NDE4
NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzYwLDYgKzEzNjEs
NyBAQAogCQlBNTUxNjVEMzFCREYwQjlFMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTUx
NjVENTFCREYxMzVBMDAzQjc1QzEgLyogU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTE2NUQ0MUJERjEzNEQwMDNC
NzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oICovOyB9OwogCQlBNTUyQzM4MDFBRERCOEZF
MDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTJDMzdFMUFEREI4RkUwMDEzOTcyNiAvKiBKU1JlbW90
ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE1NTVGRjNCMjE1OUQyRjUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjM4MjE1OUQy
RDYwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTU3MTRCRTFDRDgwNDlGMDAwNEQyQzYgLyogQ29u
c29sZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU1NzE0QkQxQ0Q4MDQ4RTAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuaCAqLzsgfTsKIAkJ
QTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQTQxODUwMTJBODAw
NDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00MTE4LDYgKzQxMjAsOSBAQAogCQlBNTUxNjVENDFCREYxMzREMDAzQjc1QzEgLyogU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1MkMzN0Qx
QUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVtb3RlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU1MkMzN0UxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5z
cGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlSW5zcGVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTVGRjM4MjE1OUQyRDYwMEZD
RDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTVG
RjNDMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTU3MTRCQzFDRDgwNDhFMDAwNEQyQzYgLyogQ29uc29sZU9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zb2xlT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1NzE0QkQxQ0Q4MDQ4RTAwMDRE
MkM2IC8qIENvbnNvbGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc29sZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVEOTNBMzE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03OTM3LDYgKzc5NDIsOCBAQAogCQkJCUE1MEU0QjVFMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLywKIAkJCQlBNTUxNjVEMDFC
REVGREJEMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgKi8sCiAJ
CQkJQTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuaCAqLywKKwkJCQlBNTU1RkYzQzIxNTlENDFFMDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwICovLAorCQkJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JU
YXJnZXRBZ2VudC5oICovLAogCQkJCUE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovLAogCQkJCUE1N0QyM0U4MTg5MUIwNzcwMDMxQzdG
QSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCAqLywKIAkJCQlBNTBFNEI1RjE4ODA5
REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICovLApAQCAtODAw
Nyw2ICs4MDE0LDcgQEAKIAkJCQk5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9y
RnJvbnRlbmRSb3V0ZXIuY3BwICovLAogCQkJCTk5RjFBNzAwMUI5OEZCRUMwMDQ2M0IyNiAvKiBJ
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovLAogCQkJCUE1NUQ5M0FCMTg1MTRGNzkwMDQwMERF
RCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCisJCQkJQTU1NUZGMzgyMTU5RDJENjAw
RkNEODI2IC8qIEluc3BlY3RvclRhcmdldC5oICovLAogCQkJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKIAkJCQlBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJCUE1QzNBMUEzMThDMDQ5
MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovLApAQCAtOTA1
OSw2ICs5MDY3LDggQEAKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhB
NDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MTY1
RDMxQkRGMEI5RTAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1NTVGRjNCMjE1OUQyRjUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJn
ZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0OUU5QUEyMEFCNEQwMDAw
MUNBMEFBIC8qIEluc3RhbmNlT2ZBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIz
OTlCRjIwQUY2QjNGMDAxN0UyMTMgLyogSW5zdGFuY2VPZlN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCMzk5QzAyMEFGNkI0MzAwMTdFMjEzIC8qIEluc3RhbmNlT2ZWYXJpYW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZmZhMjE3YTVmYS4u
MWFkOTlmMGU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTU4NCw2ICs1ODQs
NyBAQCBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcAogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAoraW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAK
IGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAogaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE3NTkwNjNmYzYyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAt
MCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK2VudW0gY2xhc3MgSW5zcGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeworICAgIEphdmFT
Y3JpcHRDb250ZXh0LAorICAgIFBhZ2UsCisgICAgRGVkaWNhdGVkV29ya2VyLCAvLyBGSVhNRTog
QWRkIERlZGljYXRlZFdvcmtlciBJbnNwZWN0b3IgVGFyZ2V0cworICAgIFNlcnZpY2VXb3JrZXIs
ICAgLy8gRklYTUU6IEFkZCBTZXJ2aWNlV29ya2VyIEluc3BlY3RvciBUYXJnZXRzCit9OworCitj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJnZXQgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkluc3BlY3RvclRhcmdldCgpID0gZGVmYXVsdDsKKworICAgIC8vIFN0YXRlLgorICAg
IHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnNw
ZWN0b3JUYXJnZXRUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDb25uZWN0aW9uIG1h
bmFnZW1lbnQuCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJikg
PSAwOworCisgICAgLy8gT3B0aW9uYWwgYWN0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
SWZQYXVzZWQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxJbnNwZWN0b3I6Okluc3Bl
Y3RvclRhcmdldFR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUsCisgICAgICAgIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0VHlwZTo6SmF2YVNjcmlwdENvbnRleHQsCisgICAgICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSwKKyAgICAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JU
YXJnZXRUeXBlOjpEZWRpY2F0ZWRXb3JrZXIsCisgICAgICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0VHlwZTo6U2VydmljZVdvcmtlcgorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMjZmMWUzZDA0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAg
LTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
aCIKKworI2luY2x1ZGUgIkluc3BlY3RvclRhcmdldC5oIgorCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKKworSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5k
Um91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRj
aGVyKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQiX3MpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKK3sKK30KKwordm9p
ZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKQoreworICAgIG1faXNDb25uZWN0ZWQgPSB0
cnVlOworCisgICAgY29ubmVjdFRvVGFyZ2V0cygpOworfQorCit2b2lkIEluc3BlY3RvclRhcmdl
dEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQor
eworICAgIGRpc2Nvbm5lY3RGcm9tVGFyZ2V0cygpOworCisgICAgbV9pc0Nvbm5lY3RlZCA9IGZh
bHNlOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpleGlzdHMoRXJyb3JTdHJpbmcm
KQoreworICAgIC8vIEludGVudGlvbmFsbHkgZG8gbm90aGluZyB0byByZXR1cm4gc3VjY2Vzcy4K
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB0aGUgbG9jYWwgaW5zcGVjdG9yIGhhcyBz
d2l0Y2hlZCBvdmVyIHRvIHRoZSBtb2Rlcm4gcGF0aC4KK30KKwordm9pZCBJbnNwZWN0b3JUYXJn
ZXRBZ2VudDo6aW5pdGlhbGl6ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkKQoreworICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRz
LmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVGFyZ2V0IG5vdCBmb3VuZC4iX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0
YXJnZXQtPnJlc3VtZUlmUGF1c2VkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
OnNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgSW5zcGVjdG9yVGFy
Z2V0KiB0YXJnZXQgPSBtX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICBpZiAoIXRhcmdldCkg
eworICAgICAgICBlcnJvclN0cmluZyA9ICJUYXJnZXQgbm90IGZvdW5kLiJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHRhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQo
bWVzc2FnZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRNZXNzYWdlRnJv
bVRhcmdldFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV90YXJnZXRzLmdldCh0YXJnZXRJ
ZCksICJTZW5kaW5nIGEgbWVzc2FnZSBmcm9tIGFuIHVudHJhY2tlZCB0YXJnZXQgdG8gdGhlIGZy
b250ZW5kLiIpOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2FnZUZy
b21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpOworfQorCitzdGF0aWMgUHJvdG9jb2w6OlRhcmdl
dDo6VGFyZ2V0SW5mbzo6VHlwZSB0YXJnZXRUeXBlVG9Qcm90b2NvbFR5cGUoSW5zcGVjdG9yVGFy
Z2V0VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSW5zcGVjdG9y
VGFyZ2V0VHlwZTo6SmF2YVNjcmlwdENvbnRleHQ6CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6
VGFyZ2V0OjpUYXJnZXRJbmZvOjpUeXBlOjpKYXZhU2NyaXB0OworICAgIGNhc2UgSW5zcGVjdG9y
VGFyZ2V0VHlwZTo6UGFnZToKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpUYXJnZXQ6OlRhcmdl
dEluZm86OlR5cGU6OlBhZ2U7CisgICAgY2FzZSBJbnNwZWN0b3JUYXJnZXRUeXBlOjpEZWRpY2F0
ZWRXb3JrZXI6CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpU
eXBlOjpXb3JrZXI7CisgICAgY2FzZSBJbnNwZWN0b3JUYXJnZXRUeXBlOjpTZXJ2aWNlV29ya2Vy
OgorICAgICAgICByZXR1cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlwZTo6U2Vy
dmljZVdvcmtlcjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlwZTo6SmF2YVNjcmlwdDsKK30KKwor
c3RhdGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdldEluZm9P
YmplY3QoY29uc3QgSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgcmV0dXJuIFByb3Rv
Y29sOjpUYXJnZXQ6OlRhcmdldEluZm86OmNyZWF0ZSgpCisgICAgICAgIC5zZXRUYXJnZXRJZCh0
YXJnZXQuaWRlbnRpZmllcigpKQorICAgICAgICAuc2V0VHlwZSh0YXJnZXRUeXBlVG9Qcm90b2Nv
bFR5cGUodGFyZ2V0LnR5cGUoKSkpCisgICAgICAgIC5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQp
Cit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RhcmdldHMuc2V0KHRhcmdldC5pZGVudGlmaWVy
KCksICZ0YXJnZXQpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CisKKyAgICBpZiAobV9pc0Nvbm5lY3RlZCkKKyAgICAgICAgdGFyZ2V0LmNvbm5l
Y3QoZnJvbnRlbmRDaGFubmVsKCkpOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdl
dENyZWF0ZWQoYnVpbGRUYXJnZXRJbmZvT2JqZWN0KHRhcmdldCkpOworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldEFnZW50Ojp0YXJnZXRUZXJtaW5hdGVkKEluc3BlY3RvclRhcmdldCYgdGFyZ2V0
KQoreworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXRUZXJtaW5hdGVkKHRhcmdldC5p
ZGVudGlmaWVyKCkpOworCisgICAgbV90YXJnZXRzLnJlbW92ZSh0YXJnZXQuaWRlbnRpZmllcigp
KTsKKworICAgIGlmIChtX2lzQ29ubmVjdGVkKQorICAgICAgICB0YXJnZXQuZGlzY29ubmVjdChm
cm9udGVuZENoYW5uZWwoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5l
Y3RUb1RhcmdldHMoKQoreworICAgIGF1dG8qIGNoYW5uZWwgPSBmcm9udGVuZENoYW5uZWwoKTsK
KworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3RhcmdldHMpIHsKKyAgICAgICAgSW5zcGVjdG9y
VGFyZ2V0KiB0YXJnZXQgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgdGFyZ2V0LT5jb25uZWN0KGNo
YW5uZWwpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWls
ZFRhcmdldEluZm9PYmplY3QoKnRhcmdldCkpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JU
YXJnZXRBZ2VudDo6ZGlzY29ubmVjdEZyb21UYXJnZXRzKCkKK3sKKyAgICBhdXRvKiBjaGFubmVs
ID0gZnJvbnRlbmRDaGFubmVsKCk7CisKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV90YXJnZXRz
KSB7CisgICAgICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0ID0gZW50cnkudmFsdWU7CisgICAg
ICAgIHRhcmdldC0+ZGlzY29ubmVjdChjaGFubmVsKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJmNDdjNDhhYzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEluc3BlY3RvclRhcmdldDsKKwordHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rv
clRhcmdldEFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIFRhcmdldEJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yVGFyZ2V0QWdlbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIEluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiwgQmFja2VuZERpc3BhdGNo
ZXImKTsKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUYXJnZXRBZ2VudCgpID0gZGVmYXVsdDsKKwor
ICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFj
a2VuZERpc3BhdGNoZXIqKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOworCisgICAgdmlydHVhbCBGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpID0gMDsKKworICAgIC8vIFRhcmdldEJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcgorICAgIHZvaWQgZXhpc3RzKEVycm9yU3RyaW5nJikgZmluYWw7CisgICAg
dm9pZCBpbml0aWFsaXplZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpIGZp
bmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CisKKyAgICAvLyBU
YXJnZXQgbGlmZWN5Y2xlLgorICAgIHZvaWQgdGFyZ2V0Q3JlYXRlZChJbnNwZWN0b3JUYXJnZXQm
KTsKKyAgICB2b2lkIHRhcmdldFRlcm1pbmF0ZWQoSW5zcGVjdG9yVGFyZ2V0Jik7CisKKyAgICAv
LyBUYXJnZXQgbWVzc2FnZXMuCisgICAgdm9pZCBzZW5kTWVzc2FnZUZyb21UYXJnZXRUb0Zyb250
ZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK3By
aXZhdGU6CisgICAgdm9pZCBjb25uZWN0VG9UYXJnZXRzKCk7CisgICAgdm9pZCBkaXNjb25uZWN0
RnJvbVRhcmdldHMoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXJnZXRGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZjxUYXJnZXRCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9y
VGFyZ2V0Kj4gbV90YXJnZXRzOworICAgIGJvb2wgbV9pc0Nvbm5lY3RlZCB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4wYzA4MTBiYjg1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KQEAgLTAsMCAr
MSw1NyBAQAoreworICAgICJkb21haW4iOiAiVGFyZ2V0IiwKKyAgICAiYXZhaWxhYmlsaXR5Ijog
WyJ3ZWIiXSwKKyAgICAidHlwZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJU
YXJnZXRJbmZvIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRGVzY3JpcHRpb24gb2YgYSB0YXJnZXQuIiwKKyAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0
YXJnZXQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0
cmluZyIsICJlbnVtIjogWyJqYXZhc2NyaXB0IiwgInBhZ2UiLCAid29ya2VyIiwgInNlcnZpY2V3
b3JrZXIiXSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21tYW5k
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZXhpc3RzIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB0aGUgbG9jYWwgaW5z
cGVjdG9yIGhhcyBzd2l0Y2hlZCBvdmVyIHRvIHRoZSBtb2Rlcm4gcGF0aC4iCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImluaXRpYWxpemVkIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIHNob3VsZCBiZSBzZW50IGV4YWN0bHkgb25jZSBhZnRl
ciB0aGUgZnJvbnRlbmQgaGFzIHNlbnQgYWxsIGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIGFuZCBj
YW4gcmVzdW1lIHRoaXMgdGFyZ2V0LiBUaGlzIGlzIHVzZWZ1bCB0byBpbml0aWFsaXplIHN0YXRl
IChzdWNoIGFzIGJyZWFrcG9pbnRzKSBpbiB0aGUgdGFyZ2V0IGJlZm9yZSBleGVjdXRpb24uIFRo
aXMgY29tbWFuZCBpcyByZXF1aXJlZCB0byBhbGxvdyBleGVjdXRpb24gaW4gdGhlIFRhcmdldC4i
LAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0YXJnZXRJZCIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZW5kTWVzc2FnZVRvVGFyZ2V0IiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZW5kIGFuIEluc3BlY3RvciBQcm90b2NvbCBt
ZXNzYWdlIHRvIGJlIGRpc3BhdGNoZWQgdG8gYSBUYXJnZXQncyBhZ2VudHMuIiwKKyAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQi
LCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZXNzYWdl
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkpTT04gSW5zcGVjdG9yIFByb3Rv
Y29sIG1lc3NhZ2UgKGNvbW1hbmQpIHRvIGJlIGRpc3BhdGNoZWQgb24gdGhlIGJhY2tlbmQuIiB9
CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJldmVudHMiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInRhcmdldENyZWF0ZWQiLAorICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJbmZvIiwg
IiRyZWYiOiAiVGFyZ2V0SW5mbyIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJ0YXJnZXRUZXJtaW5hdGVkIiwKKyAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAi
dHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCIsCisgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRhcmdldElk
IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWVzc2Fn
ZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJKU09OIEluc3BlY3RvciBQcm90
b2NvbCBtZXNzYWdlIChyZXNwb25zZSBvciBldmVudCkgdG8gYmUgZGlzcGF0Y2hlZCBvbiB0aGUg
ZnJvbnRlbmQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0b3IucHkKaW5kZXggZGRkYmUyNmEwMjkuLjIyYmRjODFkMGFmIDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdG9yLnB5CkBAIC00Miw3ICs0Miw3IEBAIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCdnbG9iYWwnKQogZGVmIHVjZmlyc3Qoc3RyKToKICAgICByZXR1cm4gc3RyWzoxXS51cHBlcigp
ICsgc3RyWzE6XQogCi1fQUxXQVlTX1NQRUNJQUxDQVNFRF9FTlVNX1ZBTFVFX1NVQlNUUklOR1Mg
PSBzZXQoWycyRCcsICdBUEknLCAnQ1NTJywgJ0RPTScsICdIVE1MJywgJ0pJVCcsICdYSFInLCAn
WE1MJywgJ0lPUycsICdNYWNPUycsICdKYXZhU2NyaXB0J10pCitfQUxXQVlTX1NQRUNJQUxDQVNF
RF9FTlVNX1ZBTFVFX1NVQlNUUklOR1MgPSBzZXQoWycyRCcsICdBUEknLCAnQ1NTJywgJ0RPTScs
ICdIVE1MJywgJ0pJVCcsICdYSFInLCAnWE1MJywgJ0lPUycsICdNYWNPUycsICdKYXZhU2NyaXB0
JywgJ1NlcnZpY2VXb3JrZXInXSkKIF9BTFdBWVNfU1BFQ0lBTENBU0VEX0VOVU1fVkFMVUVfTE9P
S1VQX1RBQkxFID0gZGljdChbKHMudXBwZXIoKSwgcykgZm9yIHMgaW4gX0FMV0FZU19TUEVDSUFM
Q0FTRURfRU5VTV9WQUxVRV9TVUJTVFJJTkdTXSkKIAogX0VOVU1fSURFTlRJRklFUl9SRU5BTUVf
TUFQID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg2ODNlODc4YzcyLi5mYWViMzQyYWRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTExLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIgSW5zcGVjdG9y
IHdpbmRvdyBhbGl2ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90ZSBJbnNwZWN0
b3IpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0
OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50OjphbGxvd1JlbW90ZUluc3BlY3Rpb25Ub1BhZ2VEaXJlY3RseSBjb25z
dCk6CisgICAgICAgIFByb3ZpZGUgYSBob29rIHNvIHRoYXQgYSBjbGllbnQgbWF5IHdpc2ggdG8g
YWxsb3cgZGlyZWN0IHJlbW90ZSBpbnNwZWN0aW9uIG9mIHRoZSBQYWdlLgorICAgICAgICBUaGlz
IGlzIHVzZWQgYnkgV2ViS2l0TGVnYWN5IG9ubHkuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoUGFnZTo6UGFnZSk6CisgICAgICAgIE9ubHkgZW5hYmxlIHRoZSBQYWdlRGVi
dWdnYWJsZSBpZiB0aGUgY2xpZW50IHdpc2hlcyByZW1vdGUgaW5zcGVjdGlvbiBvZiB0aGUgUGFn
ZSBkaXJlY3RseS4KKyAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IFdlYktpdExlZ2FjeSBvbmx5Lgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZURl
YnVnZ2FibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmNvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgV2hlbiBhIGZyb250ZW5kIGNvbm5l
Y3RzIGp1c3QgYWx3YXlzIGVuYWJsZSB0aGUgZGV2ZWxvcGVyIGV4dHJhcyBmb3IgdGhlIFBhZ2Uu
CisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggb25seSBmb3IgdGhlIHJlbW90ZSBwYXRoLCB3
aGljaCBhbGxvd2VkIGluc3BlY3Rpb24gaWYgZGV2ZWxvcGVyCisgICAgICAgIGV4dHJhcyB3ZXJl
IG5vdCBhbHJlYWR5IGVuYWJsZWQgKGlPUykuIFRoaXMgc2ltcGxpZmllcyB0aGUgbG9naWMsIGFu
ZCB0b2dnbGluZworICAgICAgICBkZXZlbG9wZXIgZXh0cmFzIGFmdGVyIGl0IHdhcyBhbHJlYWR5
IGVuYWJsZWQgaXMgbm90IHJlYWxseSBpbXBvcnRhbnQuCisKIDIwMTgtMTEtMDkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERyYXcgY2FwcyBsb2Nr
IGluZGljYXRvciBpbiBwYXNzd29yZCBmaWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaAppbmRleCA3MzZlZGNhZDEyOS4uNjA5ZDEyNTJlMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTYyLDYgKzYyLDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCkgeyB9CiAK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dSZW1v
dGVJbnNwZWN0aW9uVG9QYWdlRGlyZWN0bHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkb0Rpc3BhdGNoTWVzc2FnZU9u
RnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCA3YTEyYTdhYjIxZC4uNzQyOTc5NjFjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI1OSw2ICsyNTksOSBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaAogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRDaGFubmVs
LCBmcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVChtX2luc3BlY3RvckNsaWVudCk7CiAKKyAg
ICAvLyBJZiBhIGZyb250ZW5kIGhhcyBjb25uZWN0ZWQgZW5hYmxlIHRoZSBkZXZlbG9wZXIgZXh0
cmFzIGFuZCBrZWVwIHRoZW0gZW5hYmxlZC4KKyAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5zZXREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOworCiAgICAgY3JlYXRlTGF6eUFnZW50cygpOwogCiAg
ICAgYm9vbCBjb25uZWN0ZWRGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zy
b250ZW5kcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggYjQ1ZDZhMzA1MzcuLjlmZGQzYjcxNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgTm9kZSogaGlnaGxpZ2h0ZWRO
b2RlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2Rl
SGlnaGxpZ2h0RGF0YT4+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlcygpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBlNDc2ZGQ4Mzk4OS4uMDk0MGZlMTk2NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVt
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCkBAIC0yOTQsNyArMjk1LDggQEAgUGFnZTo6UGFnZShQ
YWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsK
KyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0b3JDbGllbnQoKSAmJiBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RvckNsaWVudCgpLT5hbGxvd1JlbW90ZUluc3BlY3Rp
b25Ub1BhZ2VEaXJlY3RseSgpKQorICAgICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQo
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURl
YnVnZ2FibGUuY3BwCmluZGV4IGIzMTgwYzcwNGJkLi4zMmU0Y2I3YWE1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTcxLDEyICs3MSw2IEBAIGJvb2wgUGFnZURl
YnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAogCiB2b2lkIFBhZ2VEZWJ1Z2dhYmxl
Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0
b21hdGljQ29ubmVjdGlvbiwgYm9vbCBpbW1lZGlhdGVseVBhdXNlKQogewotICAgIGlmICghbV9w
YWdlLnNldHRpbmdzKCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSB7Ci0gICAgICAgIG1fZm9y
Y2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIG1fcGFnZS5zZXR0aW5n
cygpLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IGZhbHNlOwotCiAgICAgSW5zcGVjdG9y
Q29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9s
bGVyKCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQoY2hhbm5lbCwg
aXNBdXRvbWF0aWNDb25uZWN0aW9uLCBpbW1lZGlhdGVseVBhdXNlKTsKIH0KQEAgLTg1LDExICs3
OSw2IEBAIHZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIGNoYW5uZWwpCiB7CiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9y
Q29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgaW5zcGVjdG9y
Q29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7Ci0KLSAgICBpZiAobV9mb3Jj
ZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7Ci0gICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5zZXREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKLSAgICB9CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2FibGU6
OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDE2ZmI0Yjg4YjAwLi4xMDA5MjliYTFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtNTgsNyArNTgsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBTdHJpbmcgbV9uYW1lT3ZlcnJp
ZGU7Ci0gICAgYm9vbCBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
ZDRiOTM1NDk2YTEuLjc4MzU3YjA5OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjUgQEAKKzIwMTgtMTEtMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdlYiBJbnNwZWN0b3Igd2luZG93
IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVtb3RlIEluc3BlY3RvcikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzdGFydHMgaW50cm9kdWNpbmcgbXVsdGktdGFy
Z2V0IHN1cHBvcnQgaW50byB0aGUgV2ViIEluc3BlY3RvciBmcm9udGVuZC4KKyAgICAgICAgU3Bl
Y2lmaWNhbGx5IGEgYmFja2VuZCBjb25uZWN0aW9uIHRoYXQgaXMgcGVyc2lzdGVudCwgYnV0IHRo
ZSBhYmlsaXR5IHRvIGNvbm5lY3QKKyAgICAgICAgdG8gYW5kIHRyYW5zaXRpb24gYmV0d2VlbiBQ
YWdlIHRhcmdldHMgcmVjZWl2ZWQgdGhyb3VnaCB0aGF0IGJhY2tlbmQgY29ubmVjdGlvbi4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGNvbmNlcHQgb2YgYSAiQmFja2VuZCBU
YXJnZXQiIHdoaWNoIGlzIHRoZSBzaW5nbGUKKyAgICAgICAgY29ubmVjdGlvbiB0aGF0IHRoZSBm
cm9udGVuZCBjb250YWlucyB0byBhIGJhY2tlbmQuIFRoZSBvbGQgd2F5IG9mIGNvbm5lY3RpbmcK
KyAgICAgICAgZGlyZWN0bHkgdG8gYSB0YXJnZXQgaXMgc3RpbGwgc3VwcG9ydGVkLiBJbiB0aGF0
IGNhc2UgdGhlIGZyb250ZW5kIGNvbnN0cnVjdHMKKyAgICAgICAgYSBEaXJlY3RCYWNrZW5kVGFy
Z2V0IGZvciB0aGUgZGVidWdnYWJsZSB0eXBlIHRoZSBmcm9udGVuZCB3YXMgc3Bhd25zIGZvci4K
KyAgICAgICAgSG93ZXZlciwgaWYgdGhlIGZyb250ZW5kIG9wZW5zIGFuZCBoYXMgYSBUYXJnZXRB
Z2VudCwgdGhlbiBpdCBpcyBsaWtlbHkKKyAgICAgICAgY29ubmVjdGVkIHRvIGEgbXVsdGktdGFy
Z2V0IHN1cHBvcnRpbmcgYmFja2VuZCBhbmQgaW5zdGVhZCBjb25zdHJ1Y3RzIGEKKyAgICAgICAg
TXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCwgYW5kIHdpbGwgcmVjZWl2ZSBmdXJ0aGVyIGluZm9y
bWF0aW9uIGFib3V0CisgICAgICAgIHN1Yi10YXJnZXRzIHRvIGNvbm5lY3QgdG8uIFRoZSBvbmx5
IHN1Yi10YXJnZXQgYXQgdGhlIG1vbWVudCBpcyBhIFBhZ2UKKyAgICAgICAgc3ViLXRhcmdldC4K
KworICAgICAgICBBcyBwYXJ0IG9mIGJyaW5naW5nIHVwIG11bHRpLXRhcmdldCBzdXBwb3J0IHRo
aXMgYWRkcyBhIGZldyBtZWFzdXJlcyB0bworICAgICAgICBoYW5kbGUgc2l0dWF0aW9ucyB3aGVy
ZSB0aGUgZnJvbnRlbmQgaXMgcGxheWluZyBmYXN0IGFuZCBsb29zZSB3aXRoIGFnZW50cy4KKyAg
ICAgICAgV2hlbiB0aGUgZnJvbnRlbmQgZG9lcyBgRm9vQWdlbnQubWV0aG9kYCBpdCBpbnRlbmRz
IHRoYXQgdG8gYmUgcGVyZm9ybWVkCisgICAgICAgIG9uIHRoZSAibWFpbiIgdGFyZ2V0IGJlaW5n
IGRlYnVnZ2VkLiBMaWtld2lzZSB3aGVuIHRoZSBmcm9udGVuZCBsb29wcworICAgICAgICBvdmVy
IHRhcmdldHMgaXQgZXhwZWN0cyB0aGVtIHRvIGJlIHRoZSBkZWJ1Z2dhYmxlIHRhcmdldHMuIFRo
aXMgcGF0Y2gKKyAgICAgICAgcHJvZmlsZXMgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgYFdJLm1h
aW5UYXJnZXRgIGFuZCBgV0kudGFyZ2V0c2AgdG8KKyAgICAgICAgbWF0Y2ggdGhlIGFzc3VtcHRp
b25zIGJlaW5nIG1hZGUgYnkgdGhlIGZyb250ZW5kLgorCisgICAgICAgICAgLSBJbiBhIGRpcmVj
dC10YXJnZXQgd29ybGQsIHRoZXJlIGlzIGEgc2luZ2xlIHRhcmdldCB3aGljaCBpcworICAgICAg
ICAgICAgc2hvdWxkIGJlIHVzZWQgZm9yIGdsb2JhbCBhZ2VudHMgYW5kIGluIFdJLnRhcmdldHMu
CisKKyAgICAgICAgICAtIEluIGEgbXVsdGktdGFyZ2V0IHdvcmxkLCB0aGUgcGFnZSB0YXJnZXQg
aXMgdGhlIG9uZSB0aGF0CisgICAgICAgICAgICBzaG91bGQgYmUgdXNlZCBmb3IgZ2xvYmFsIGFn
ZW50cyBhbmQgV0kudGFyZ2V0cyBpcyB0aGUgbGlzdAorICAgICAgICAgICAgb2Ygc3ViLXRhcmdl
dHMgKGV4Y2x1ZGluZyB0aGUgTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCkuCisKKyAgICAgICAg
SW4gdGhlIG11bHRpLXRhcmdldCB3b3JsZCwgdGhlcmUgYXJlIG5vdyBjb21tb25seSB0d28gVGFy
Z2V0cy4gVGhlCisgICAgICAgIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgYW5kIGEgUGFnZVRh
cmdldCBzdWItdGFyZ2V0LiBJbiB0aGUgZnV0dXJlCisgICAgICAgIHRoaXMgbWF5IGluY2x1ZGUg
bW9yZSB0YXJnZXRzLCBzdWNoIGFzIFNlcnZpY2VXb3JrZXJzLCBEZWRpY2F0ZWRXb3JrZXJzLAor
ICAgICAgICBhbmQgcGVyaGFwcyBldmVuIGZyYW1lcy4KKworICAgICAgICBJbiBhIG11bHRpLXRh
cmdldCB3b3JsZCwgdGhlIGZyb250ZW5kIGlzIGltbWVkaWF0ZWx5IHRvbGQgYWJvdXQgdGFyZ2V0
cworICAgICAgICBhcyBzb29uIGFzIGl0IG9wZW5zICh2aWEgdGhlIFRhcmdldC50YXJnZXRDcmVh
dGVkKS4gSW4gb3JkZXIgdG8gc3VwcG9ydAorICAgICAgICB0aGlzIGZyb250ZW5kIGluaXRpYWxp
emF0aW9uIGhhcHBlbnMgd2l0aG91dCBhIG1haW4gdGFyZ2V0IGJlaW5nIGF2YWlsYWJsZS4KKyAg
ICAgICAgU28gdGhpcyBtYWtlcyBhIGZldyBzbWFsbCBjaGFuZ2VzIHRvIGZyb250ZW5kIGluaXRp
YWxpemF0aW9uIHRvIHBlcmZvcm0KKyAgICAgICAgYSBiaXQgb2Ygd29yayBvbmNlIHdlIGtub3cg
d2hhdCB0aGUgbWFpbiB0YXJnZXQgaXMuCisKKyAgICAgICAgRHVyaW5nIGEgcGFnZSB0cmFuc2l0
aW9uIHRoZSBmcm9udGVuZCBpcyB0b2xkIHRvIGRlc3Ryb3kgZXhpc3RpbmcgdGFyZ2V0cworICAg
ICAgICBhbmQgaXMgc29vbiBhZnRlciB0b2xkIGFib3V0IGFueSBuZXcgcGFnZSB0YXJnZXRzICh2
aWEgVGFyZ2V0LnRhcmdldFRlcm1pbmF0ZWQKKyAgICAgICAgYW5kIFRhcmdldC50YXJnZXRDcmVh
dGVkKS4gVGhlIGZyb250ZW5kIHNwZWNpYWwgY2FzZXMgdGhpcyBwYWdlIHRyYW5zaXRpb24uCisg
ICAgICAgIEl0IGV4cGVjdHMgb25seSBvbmUgUGFnZSB0YXJnZXQgdG8gYmUgYWxpdmUgYXQgYW55
IHRpbWUsIGFjY2Vzc2libGUgdGhyb3VnaAorICAgICAgICBXSS5wYWdlVGFyZ2V0LiBXaGVuIGEg
cGFnZVRyYW5pdGlvbiBoYXBwZW5zIHRoZSBXSS5wYWdlVGFyZ2V0IGNoYW5nZXMsIGFuZCB0aGUK
KyAgICAgICAgZnJvbnRlbmQgcGVyZm9ybXMgYSBiaXQgb2Ygd29yayB0byBwcmVwYXJlIHRoZSBV
SSB0byBoYW5kbGUgdGhlIHRyYW5zaXRpb246CisgICAgICAgIGA8TWFuYWdlcj4udHJhbnNpdGlv
blBhZ2VUYXJnZXRgIC8gV0kuTm90aWZpY2F0aW9uLlRyYW5zaXRpb25QYWdlVGFyZ2V0LgorICAg
ICAgICBGb3IgdGhlIG1vc3QgcGFydCB0aGUgVUkgYmVoYXZlcyBmaW5lIGFzIGxvbmcgb25jZSB0
aGVyZSBpcyBhIG1haW4gZnJhbWUKKyAgICAgICAgY2hhbmdlIGFuZCBtYWluIHJlc291cmNlIGNo
YW5nZSBldmVudHMsIGJ1dCB0aG9zZSBvdGhlciBldmVudHMgYWxsb3cKKyAgICAgICAgdGhlIGZy
b250ZW5kIHRvIHJlc3BvbmQgdG8gdGhlIHNwZWNpZmljIHBhZ2UgdHJhbnNpdGlvbiBjYXNlcy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kubG9h
ZGVkKToKKyAgICAgICAgKFdJLmluaXRpYWxpemVCYWNrZW5kVGFyZ2V0KToKKyAgICAgICAgKFdJ
LmluaXRpYWxpemVQYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLnRyYW5zaXRpb25QYWdlVGFyZ2V0
KToKKyAgICAgICAgKFdJLnRlcm1pbmF0ZVBhZ2VUYXJnZXQpOgorICAgICAgICAoV0kucmVzZXRN
YWluRXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1Rv
Q29ubmVjdGlvbik6CisgICAgICAgIChXSS5jb250ZW50TG9hZGVkKToKKyAgICAgICAgTmV3IGds
b2JhbCBmdW5jdGlvbnMgZm9yIHRhcmdldCBpbml0aWFsaXphdGlvbgorICAgICAgICBhbmQgcGFn
ZSB0cmFuc2l0aW9uaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanM6
CisgICAgICAgIChXSS5sb2FkZWQpOgorICAgICAgICAoV0kuaW5pdGlhbGl6ZUJhY2tlbmRUYXJn
ZXQpOgorICAgICAgICAoV0kuaW5pdGlhbGl6ZVBhZ2VUYXJnZXQpOgorICAgICAgICAoV0kudHJh
bnNpdGlvblBhZ2VUYXJnZXQpOgorICAgICAgICAoV0kudGVybWluYXRlUGFnZVRhcmdldCk6Cisg
ICAgICAgIChXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdJLnJlZGly
ZWN0R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uKToKKyAgICAgICAgTmV3IGdsb2JhbCBmdW5jdGlv
bnMgZm9yIHRhcmdldCBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgVGVzdHMgY29udGludWUgdG8g
YmUgYSBkaXJlY3QgY29ubmVjdGlvbiB0byB0aGUgUGFnZS4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvVGFyZ2V0T2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5UYXJnZXRPYnNl
cnZlci5wcm90b3R5cGUudGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgIChXSS5UYXJnZXRPYnNlcnZl
ci5wcm90b3R5cGUudGFyZ2V0VGVybWluYXRlZCk6CisgICAgICAgIChXSS5UYXJnZXRPYnNlcnZl
ci5wcm90b3R5cGUuZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCk6CisgICAgICAgIE5ldyBvYnNl
cnZlciBnb2VzIHRvIHRoZSBtYW5hZ2VyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlcik6Cisg
ICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5nZXQgdGFyZ2V0cyk6CisgICAgICAg
IChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5nZXQgYWxsVGFyZ2V0cyk6CisgICAgICAgIChX
SS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS50YXJnZXRGb3JJZGVudGlmaWVyKToKKyAgICAgICAg
KFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoV0ku
VGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0VGVybWluYXRlZCk6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KToKKyAgICAg
ICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZU11bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuY3JlYXRlRGlyZWN0
QmFja2VuZFRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRk
VGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9yZW1vdmVUYXJn
ZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6
CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdl
VGFyZ2V0VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5f
Y2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRpb24pOgorICAgICAgICAoV0kuVGFyZ2V0
TWFuYWdlci5wcm90b3R5cGUuYWRkVGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlRhcmdl
dE1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVRhcmdldCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplTWFpblRhcmdldCk6IERlbGV0ZWQuCisg
ICAgICAgIFRhcmdldE1hbmFnZXIgaXMgd2hlcmUgd2UgaGFuZGxlIGNyZWF0aW5nIGFuZCBkZXN0
cm95aW5nIHRhcmdldHMKKyAgICAgICAgYW5kIHRoZWlyIGNvbm5lY3Rpb25zLiBJbiBvcmRlciB0
byBzaW1wbGlmeSB0aGluZ3MgYSBiaXQgd2UgbWFrZQorICAgICAgICBgV0kudGFyZ2V0c2AsIHdo
aWNoIGdvZXMgdGhyb3VnaCBgZ2V0IHRhcmdldHMoKWAgYW4gYXJyYXkgaW5zdGVhZAorICAgICAg
ICBvZiBhIFNldC4gQW5kIHRoaXMgaW5jbHVkZXMgb25seSB0aGUgc3ViLXRhcmdldHMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanM6CisgICAg
ICAgIChXSS5Xb3JrZXJNYW5hZ2VyLnByb3RvdHlwZS53b3JrZXJDcmVhdGVkKToKKyAgICAgICAg
KFdJLldvcmtlck1hbmFnZXIucHJvdG90eXBlLndvcmtlclRlcm1pbmF0ZWQpOgorICAgICAgICBX
b3JrZXJzIGFyZSBzdGlsbCBzcGVjaWFsIHRhcmdldCBsaWtlIHRoaW5ncyB0aGF0IG11bHRpcGxl
eCB0aHJvdWdoCisgICAgICAgIFdvcmtlckFnZW50IGluc3RlYWQgb2YgVGFyZ2V0QWdlbnQuIFdl
J2QgbGlrZSB0byBwcm9tb3RlIHRoZXNlIHRvCisgICAgICAgIGJlIGZ1bGwgdGFyZ2V0cyBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9EaXJlY3RCYWNr
ZW5kVGFyZ2V0LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcy4KKyAgICAgICAgKFdJLkRpcmVjdEJhY2tlbmRU
YXJnZXQpOgorICAgICAgICAoV0kuRGlyZWN0QmFja2VuZFRhcmdldC5jb25uZWN0aW9uSW5mb0Zv
ckRlYnVnZ2FibGUpOgorICAgICAgICAoV0kuRGlyZWN0QmFja2VuZFRhcmdldC5wcm90b3R5cGUu
Z2V0IG1haW5SZXNvdXJjZSk6CisgICAgICAgIChXSS5EaXJlY3RCYWNrZW5kVGFyZ2V0LnByb3Rv
dHlwZS5zZXQgbWFpblJlc291cmNlKToKKyAgICAgICAgVGhpcyBpcyB0aGUgb25seSAiTWFpblRh
cmdldCIgY2xhc3MuIEl0IGlzIHRoZSBiYWNrZW5kIHRhcmdldCBmb3IgYSBkaXJlY3QgY29ubmVj
dGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgor
ICAgICAgICAoV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5wcm90b3R5cGUuaW5pdGlhbGl6
ZSk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5nZXQg
bmFtZSk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5n
ZXQgZXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFy
Z2V0LnByb3RvdHlwZS5nZXQgbWFpblJlc291cmNlKToKKyAgICAgICAgVGhpcyBpcyB0aGUgbmV3
IGJhY2tlbmQgdGFyZ2V0IGZvciBhIG11bHRpLXRhcmdldCBjb25uZWN0aW9uLgorICAgICAgICBX
ZSBkb24ndCBleHBlY3QgaXQgdG8gYmUgdHJlYXRlZCBsaWtlIG90aGVyIHRhcmdldHMsIHNvIHdl
IGRvbid0CisgICAgICAgIGV4cGVjdCBhbnlvbmUgdG8gYXNrIGl0IGZvciByZXNvdXJjZXMvZXhl
Y3V0aW9uQ29udGV4dC9uYW1lIGluZm8uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90
b3R5cGUuZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyk6CisgICAgICAgIFRoaXMgY2FuIGJlIHRy
aWdnZXJlZCBieSB3YXRjaCBleHByZXNzaW9ucyBiZWZvcmUgYW55IHRhcmdldCwgYW5kCisgICAg
ICAgIHRoZXJlZm9yZSBleGVjdXRpb24gY29udGV4dCBpcyBhdmFpbGFibGUuIEp1c3QgcmV0dXJu
IG51bGwsIHdoZW4KKyAgICAgICAgYW4gZXhlY3V0aW9uIGNvbnRleHQgaXMgYXZhaWxhYmxlIHRo
b3NlIGNsaWVudHMgd2lsbCB0cnkgYWdhaW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Rl
YnVnL0Jvb3RzdHJhcC5qczoKKyAgICAgICAgUHJvdmlkZSBhbiBXSS5pc0VuZ2luZWVyaW5nQnVp
bGQgYm9vbGVhbiB0aGF0IGNhbiBiZSB1c2VkIGZvciB2YXJpb3VzCisgICAgICAgIGRlYnVnZ2lu
ZyBmZWF0dXJlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICBOZXcgcmVzb3VyY2VzLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzOgorICAg
ICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5kaXNwYXRjaCk6CisgICAgICAg
IChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNo
ZXMpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5BZ2VudCk6CisgICAgICAgIGBJbnNwZWN0
b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uYCB3YXMgcmVuYW1lZCBgSW5zcGVjdG9yQmFja2VuZC5i
YWNrZW5kQ29ubmVjdGlvbmAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nv
bm5lY3Rpb24uanM6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uLnByb3RvdHlwZS5fZGlzcGF0Y2hSZXNw
b25zZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24ucHJvdG90eXBlLl9z
ZW5kQ29tbWFuZFRvQmFja2VuZFdpdGhDYWxsYmFjayk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kLkNvbm5lY3Rpb24ucHJvdG90eXBlLl9zZW5kQ29tbWFuZFRvQmFja2VuZEV4cGVjdGluZ1By
b21pc2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5CYWNrZW5kQ29ubmVjdGlvbik6Cisg
ICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkJhY2tlbmRDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5k
TWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5l
Y3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKToKKyAg
ICAgICAgKEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbi5zZW5kTWVzc2FnZVRvQmFj
a2VuZCk6CisgICAgICAgIFVzZSBhIGdsb2JhbCBzZXF1ZW5jZSBpZCB0byBtYWtlIGZpbHRlcmlu
ZyBhIGJpdCBlYXNpZXIgaW4gcHJvdG9jb2wgdHJhY2luZy4KKyAgICAgICAgVGFyZ2V0Q29ubmVj
dGlvbiBpcyBpZGVudGljYWwgdG8gV29ya2VyQ29ubmVjdGlvbiBleGNlcHQgaXQgdXNlcyBUYXJn
ZXRBZ2VudAorICAgICAgICBpbnN0ZWFkIG9mIFdvcmtlckFnZW50IHRvIHBlcmZvcm0gbXVsdGlw
bGV4aW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9KYXZhU2NyaXB0Q29u
dGV4dFRhcmdldC5qczoKKyAgICAgICAgKFdJLkphdmFTY3JpcHRDb250ZXh0VGFyZ2V0KToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAgIChX
SS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLlBhZ2VUYXJnZXQucHJvdG90eXBlLmdldCBkaXNw
bGF5TmFtZSk6CisgICAgICAgIFNwZWNpYWxpemVkIHRhcmdldCB0eXBlcy4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChX
SS5EZWJ1Z2dlclNpZGViYXJQYW5lbCk6CisgICAgICAgIChXSS5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5wcm90b3R5cGUuX3RhcmdldEFkZGVkKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5fdGFyZ2V0UmVtb3ZlZCk6CisgICAgICAgIChXSS5EZWJ1Z2dlclNpZGVi
YXJQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUNhbGxTdGFja1RyZWVPdXRsaW5lKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAo
V0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl90YXJnZXRBZGRlZCk6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3RhcmdldFJlbW92ZWQpOgorICAg
ICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9jYWxsRnJhbWVzRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fdXBkYXRl
VGhyZWFkSW5kaWNhdG9yV2lkZ2V0KToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZS5fcmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAgKFdJLlF1aWNrQ29uc29s
ZS5wcm90b3R5cGUuaW5pdGlhbGl6ZU1haW5FeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCk6
CisgICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl90YXJnZXRBZGRlZCk6CisgICAg
ICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl90YXJnZXRSZW1vdmVkKToKKyAgICAgICAg
V2UgbWFrZSB0YXJnZXQgYWRkZWQgZ2V0IGNhbGxlZCB3aXRoIGFsbCB0YXJnZXRzLCBpbmNsdWRp
bmcgdGhlCisgICAgICAgIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgYW5kIFBhZ2VUYXJnZXRz
LCBib3RoIG9mIHdoaWNoIHdvdWxkCisgICAgICAgIG5vdCBoYXZlIGhhcHBlbmVkIGJlZm9yZS4g
QmVmb3JlIGl0IHdhcyBvbmx5IFdvcmtlclRhcmdldHMuIE1ha2UKKyAgICAgICAgdGhlc2Ugc2l0
ZXMgYSBsaXR0bGUgbW9yZSByb2J1c3QgZm9yIHRoZSB0eXBlIG9mIHRhcmdldCB0aGV5IGV4cGVj
dAorICAgICAgICB0byBiZSBhYmxlIHRvIGhhbmRsZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQmFzZS9PYmplY3QuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
T01NYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9NTWFuYWdlcik6CisgICAgICAgIChXSS5ET01N
YW5hZ2VyLnByb3RvdHlwZS50cmFuc2l0aW9uUGFnZVRhcmdldCk6CisgICAgICAgIChXSS5ET01N
YW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RG9jdW1lbnQpOgorICAgICAgICAoV0kuRE9NTWFuYWdl
ci5wcm90b3R5cGUuX3NldERvY3VtZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIpOgor
ICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnRyYW5zaXRpb25QYWdlVGFyZ2V0
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5leGVjdXRpb25Db250ZXh0
Q3JlYXRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX3Byb2Nlc3NN
YWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZCk6
CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl90cmFuc2l0
aW9uUGFnZVRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFi
bGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3KToK
KyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWFpblJlc291
cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fdHJhbnNpdGlvblBhZ2VUYXJnZXQpOgorICAgICAgICBTcGVjaWFsIGNhc2UgaGFuZGxp
bmcgd2hlbiBwZXJmb3JtaW5nIGEgcGFnZSB0cmFuc2l0aW9uLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5qczoKKyAgICAgICAgRG9j
dW1lbnQgcmVsb2FkcyBhcmUgbm90IHN1cHBvcnRlZCByaWdodCBub3cuCisKIDIwMTgtMTEtMDkg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbmNsdWRlIHRhcmdldCBpZGVudGlmaWVyIGluIHByb3RvY29sIGxvZ2dpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRl
eCBkNTE5NGU1OTlkMi4uNWJmMmVhNDZhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTUxLDYgKzUxLDggQEAgV0kuTGF5b3V0
RGlyZWN0aW9uID0gewogV0kubG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFJlZ2lzdGVy
IG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCisgICAgaWYg
KEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJUYXJnZXREaXNwYXRjaGVyKQorICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyVGFyZ2V0RGlzcGF0Y2hlcihuZXcgV0kuVGFyZ2V0T2JzZXJ2
ZXIpOwogICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySW5zcGVjdG9yRGlzcGF0Y2hl
cikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlckluc3BlY3RvckRpc3BhdGNoZXIo
bmV3IFdJLkluc3BlY3Rvck9ic2VydmVyKTsKICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3RlclBhZ2VEaXNwYXRjaGVyKQpAQCAtMTQ4LDEzICsxNTAsOTIgQEAgV0kubG9hZGVkID0gZnVu
Y3Rpb24oKQogICAgIHRoaXMuX3dpbmRvd0tleWRvd25MaXN0ZW5lcnMgPSBbXTsKIAogICAgIC8v
IFRhcmdldHMuCi0gICAgV0kubWFpblRhcmdldCA9IG5ldyBXSS5NYWluVGFyZ2V0OwotICAgIFdJ
Lm1haW5UYXJnZXQuaW5pdGlhbGl6ZSgpOwotICAgIFdJLnBhZ2VUYXJnZXQgPSBXSS5zaGFyZWRB
cHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLldlYiA/IFdJLm1haW5UYXJn
ZXQgOiBudWxsOworICAgIFdJLmJhY2tlbmRUYXJnZXQgPSBudWxsOworICAgIFdJLnBhZ2VUYXJn
ZXQgPSBudWxsOwogCi0gICAgLy8gUG9zdC10YXJnZXQgaW5pdGlhbGl6YXRpb24uCi0gICAgV0ku
dGFyZ2V0TWFuYWdlci5pbml0aWFsaXplTWFpblRhcmdldCgpOwotICAgIFdJLnJ1bnRpbWVNYW5h
Z2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBXSS5tYWluVGFyZ2V0LmV4ZWN1dGlvbkNvbnRl
eHQ7CisgICAgaWYgKCF3aW5kb3cuVGFyZ2V0QWdlbnQpCisgICAgICAgIFdJLnRhcmdldE1hbmFn
ZXIuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCgpOworICAgIGVsc2UgeworICAgICAgICAvLyBG
SVhNRTogRWxpbWluYXRlIGBUYXJnZXRBZ2VudC5leGlzdHNgIG9uY2UgdGhlIGxvY2FsIGluc3Bl
Y3RvcgorICAgICAgICAvLyBpcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgTXVsdGlwbGV4aW5nIGNv
ZGUgcGF0aC4KKyAgICAgICAgVGFyZ2V0QWdlbnQuZXhpc3RzKChlcnJvcikgPT4geworICAgICAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuY3JlYXRl
RGlyZWN0QmFja2VuZFRhcmdldCgpOworICAgICAgICB9KTsKKyAgICB9Cit9OworCitXSS5pbml0
aWFsaXplQmFja2VuZFRhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKK3sKKyAgICBjb25zb2xlLmFz
c2VydCghV0kubWFpblRhcmdldCk7CisKKyAgICBXSS5iYWNrZW5kVGFyZ2V0ID0gdGFyZ2V0Owor
CisgICAgV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCgpOworfTsKKworV0kuaW5pdGlhbGl6
ZVBhZ2VUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCit7CisgICAgY29uc29sZS5hc3NlcnQoV0ku
c2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpOworICAg
IGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlID09PSBXSS5UYXJnZXQuVHlwZS5QYWdlIHx8IHRh
cmdldCBpbnN0YW5jZW9mIFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQpOworCisgICAgV0kucGFnZVRh
cmdldCA9IHRhcmdldDsKKworICAgIFdJLnJlZGlyZWN0R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9u
KFdJLnBhZ2VUYXJnZXQuY29ubmVjdGlvbik7CisKKyAgICBXSS5yZXNldE1haW5FeGVjdXRpb25D
b250ZXh0KCk7Cit9OworCitXSS50cmFuc2l0aW9uUGFnZVRhcmdldCA9IGZ1bmN0aW9uKHRhcmdl
dCkKK3sKKyAgICBjb25zb2xlLmFzc2VydCghV0kucGFnZVRhcmdldCk7CisgICAgY29uc29sZS5h
c3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5X
ZWIpOworICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlID09PSBXSS5UYXJnZXQuVHlwZS5Q
YWdlKTsKKworICAgIFdJLnBhZ2VUYXJnZXQgPSB0YXJnZXQ7CisKKyAgICBXSS5yZWRpcmVjdEds
b2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5wYWdlVGFyZ2V0LmNvbm5lY3Rpb24pOworCisgICAg
V0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCgpOworCisgICAgLy8gQWN0aW9ucyB0byB0cmFu
c2l0aW9uIHRoZSBwYWdlIHRhcmdldC4KKyAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLk5vdGlmaWNhdGlvbi5UcmFuc2l0aW9uUGFnZVRhcmdldCk7Cisg
ICAgV0kuZG9tTWFuYWdlci50cmFuc2l0aW9uUGFnZVRhcmdldCgpOworICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLnRyYW5zaXRpb25QYWdlVGFyZ2V0KCk7Cit9OworCitXSS50ZXJtaW5hdGVQYWdlVGFy
Z2V0ID0gZnVuY3Rpb24odGFyZ2V0KQoreworICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnBhZ2VUYXJn
ZXQpOworICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnBhZ2VUYXJnZXQgPT09IHRhcmdldCk7CisgICAg
Y29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dh
YmxlVHlwZS5XZWIpOworCisgICAgV0kucGFnZVRhcmdldCA9IG51bGw7CisKKyAgICBXSS5yZWRp
cmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5iYWNrZW5kQ29ubmVjdGlvbik7Cit9Owor
CitXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0ID0gZnVuY3Rpb24oKQoreworICAgIGlmIChX
SS5tYWluVGFyZ2V0IGluc3RhbmNlb2YgV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKFdJLm1haW5UYXJnZXQuZXhlY3V0aW9uQ29udGV4dCkg
eworICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5hY3RpdmVFeGVjdXRpb25Db250ZXh0ID0gV0ku
bWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0OworICAgICAgICBpZiAoV0kucXVpY2tDb25zb2xl
KQorICAgICAgICAgICAgV0kucXVpY2tDb25zb2xlLmluaXRpYWxpemVNYWluRXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnQoKTsKKyAgICB9Cit9OworCitXSS5yZWRpcmVjdEdsb2JhbEFnZW50
c1RvQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKGNvbm5lY3Rpb24pCit7CisgICAgLy8gVGhpcyBtYWtl
cyBnbG9iYWwgd2luZG93LkZvb0FnZW50IGRpc3BhdGNoIHRvIHRoZSBhY3RpdmUgcGFnZSB0YXJn
ZXQuCisgICAgZm9yIChsZXQgZG9tYWluIGluIEluc3BlY3RvckJhY2tlbmQuX2FnZW50cykgewor
ICAgICAgICBpZiAoZG9tYWluICE9PSAiVGFyZ2V0IikgeworICAgICAgICAgICAgbGV0IGFnZW50
ID0gSW5zcGVjdG9yQmFja2VuZC5fYWdlbnRzW2RvbWFpbl07CisgICAgICAgICAgICBhZ2VudC5j
b25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgfQorICAgIH0KIH07CiAKIFdJLmNvbnRl
bnRMb2FkZWQgPSBmdW5jdGlvbigpCkBAIC00NzUsOCArNTU2LDggQEAgV0kuY29udGVudExvYWRl
ZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBTdG9yZSB0aGlzIG9uIHRoZSB3aW5kb3cgaW4gY2FzZSB0
aGUgV2ViSW5zcGVjdG9yIGdsb2JhbCBnZXRzIGNvcnJ1cHRlZC4KICAgICB3aW5kb3cuX19mcm9u
dGVuZENvbXBsZXRlZExvYWQgPSB0cnVlOwogCi0gICAgaWYgKHRoaXMucnVuQm9vdHN0cmFwT3Bl
cmF0aW9ucykKLSAgICAgICAgdGhpcy5ydW5Cb290c3RyYXBPcGVyYXRpb25zKCk7CisgICAgaWYg
KFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMpCisgICAgICAgIFdJLnJ1bkJvb3RzdHJhcE9wZXJh
dGlvbnMoKTsKIH07CiAKIFdJLnBlcmZvcm1PbmVUaW1lRnJvbnRlbmRJbml0aWFsaXphdGlvbnNV
c2luZ1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKQEAgLTE1MDUsNiArMTU4Niw3IEBAIFdJLl9j
b250ZXh0TWVudVJlcXVlc3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBwcm9wb3NlZENv
bnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKICAgICAg
ICAgcHJvcG9zZWRDb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgcHJvcG9z
ZWRDb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLnVubG9jYWxpemVkU3RyaW5nKCJSZWxvYWQgV2Vi
IEluc3BlY3RvciIpLCAoKSA9PiB7CisgICAgICAgICAgICAvLyBGSVhNRTogUmVsb2FkIFdlYiBJ
bnNwZWN0b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuCiAg
ICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgIH0pOwogCkBAIC0y
MTczLDYgKzIyNTUsNyBAQCBXSS5zZXRMYXlvdXREaXJlY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkK
ICAgICBpZiAoV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0
aW9uLkxUUiAmJiB0aGlzLl9kb2NrQ29uZmlndXJhdGlvbiA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRp
b24uTGVmdCkKICAgICAgICAgdGhpcy5fZG9ja1JpZ2h0KCk7CiAKKyAgICAvLyBGSVhNRTogUmVs
b2FkIFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQuCiAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogfTsKIApAQCAtMjY3NSw2ICsy
NzU4LDE5IEBAIFdJLnJlcG9ydEludGVybmFsRXJyb3IgPSBmdW5jdGlvbihlcnJvck9yU3RyaW5n
LCBkZXRhaWxzID0ge30pCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogfTsKIAorLy8g
TWFueSBwbGFjZXMgYXNzdW1lIHRoZSAibWFpbiIgdGFyZ2V0IGhhcyByZXNvdXJjZXMuCisvLyBJ
biB0aGUgY2FzZSB3aGVyZSB0aGUgbWFpbiBiYWNrZW5kIHRhcmdldCBpcyBhIE11bHRpcGxleGlu
Z0JhY2tlbmRUYXJnZXQKKy8vIHRoYXQgdGFyZ2V0IGhhcyBlc3NlbnRpYWxseSBub3RoaW5nLiBJ
biB0aGF0IGNhc2UgZGVmZXIgdG8gdGhlIHBhZ2UKKy8vIHRhcmdldCwgc2luY2UgdGhhdCBpcyB0
aGUgcmVhbCAibWFpbiIgdGFyZ2V0IHRoZSBmcm9udGVuZCBpcyBhc3N1bWluZy4KK09iamVjdC5k
ZWZpbmVQcm9wZXJ0eShXSSwgIm1haW5UYXJnZXQiLAoreworICAgIGdldCgpIHsgcmV0dXJuIFdJ
LnBhZ2VUYXJnZXQgfHwgV0kuYmFja2VuZFRhcmdldDsgfQorfSk7CisKKy8vIFRoaXMgbGlzdCBv
ZiB0YXJnZXRzIGFyZSBub24tTXVsdGlwbGV4aW5nIHRhcmdldHMuCisvLyBTbyBpZiB0aGVyZSBp
cyBhIG11bHRpcGxleGluZyB0YXJnZXQsIGFuZCBtdWx0aXBsZSBzdWItdGFyZ2V0cworLy8gdGhp
cyBpcyBqdXN0IHRoZSBsaXN0IG9mIHN1Yi10YXJnZXRzLiBBbG1vc3Qgbm8gY29kZSBleHBlY3Rz
CisvLyB0byBhY3R1YWxseSBpbnRlcmFjdCB3aXRoIHRoZSBNdWx0aXBsZXhpbmcgdGFyZ2V0Lgog
T2JqZWN0LmRlZmluZVByb3BlcnR5KFdJLCAidGFyZ2V0cyIsCiB7CiAgICAgZ2V0KCkgeyByZXR1
cm4gV0kudGFyZ2V0TWFuYWdlci50YXJnZXRzOyB9CkBAIC0yNjg5LDYgKzI3ODUsOCBAQCBXSS5h
c3N1bWluZ01haW5UYXJnZXQgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIFdJLm1haW5UYXJnZXQ7
CiB9OwogCitXSS5pc0VuZ2luZWVyaW5nQnVpbGQgPSBmYWxzZTsKKwogLy8gT3BlblJlc291cmNl
RGlhbG9nIGRlbGVnYXRlCiAKIFdJLmRpYWxvZ1dhc0Rpc21pc3NlZFdpdGhSZXByZXNlbnRlZE9i
amVjdCA9IGZ1bmN0aW9uKGRpYWxvZywgcmVwcmVzZW50ZWRPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL09iamVjdC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzCmluZGV4IGNlNWMz
YzMyOTFhLi5lM2JiNWM3Yzk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKQEAgLTIyNSw0ICsyMjUsNSBAQCBXSS5Ob3RpZmlj
YXRpb24gPSB7CiAgICAgRXh0cmFEb21haW5zQWN0aXZhdGVkOiAiZXh0cmEtZG9tYWlucy1hY3Rp
dmF0ZWQiLAogICAgIERlYnVnVUlFbmFibGVkRGlkQ2hhbmdlOiAiZGVidWctdWktZW5hYmxlZC1k
aWQtY2hhbmdlIiwKICAgICBWaXNpYmlsaXR5U3RhdGVEaWRDaGFuZ2U6ICJ2aXNpYmlsaXR5LXN0
YXRlLWRpZC1jaGFuZ2UiLAorICAgIFRyYW5zaXRpb25QYWdlVGFyZ2V0OiAidHJhbnNpdGlvbi1w
YWdlLXRhcmdldCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IGJiYzU3N2QxNGVlLi4wYzhiZDUyMDQxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5n
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGlu
Zy5qcwpAQCAtMTM3LDggKzEzNyw4IEBAIFdJLnNldHRpbmdzID0gewogICAgIC8vIERlYnVnVUkK
ICAgICBhdXRvTG9nUHJvdG9jb2xNZXNzYWdlczogbmV3IFdJLlNldHRpbmcoImF1dG8tY29sbGVj
dC1wcm90b2NvbC1tZXNzYWdlcyIsIGZhbHNlKSwKICAgICBhdXRvTG9nVGltZVN0YXRzOiBuZXcg
V0kuU2V0dGluZygiYXV0by1jb2xsZWN0LXRpbWUtc3RhdHMiLCBmYWxzZSksCi0gICAgZW5hYmxl
VW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlcjogbmV3IFdJLlNldHRpbmcoImVuYWJsZS11bmNhdWdo
dC1leGNlcHRpb24tcmVwb3J0ZXIiLCB0cnVlKSwKICAgICBlbmFibGVMYXlvdXRGbGFzaGluZzog
bmV3IFdJLlNldHRpbmcoImVuYWJsZS1sYXlvdXQtZmxhc2hpbmciLCBmYWxzZSksCisgICAgZW5h
YmxlVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlcjogbmV3IFdJLlNldHRpbmcoImVuYWJsZS11bmNh
dWdodC1leGNlcHRpb24tcmVwb3J0ZXIiLCB0cnVlKSwKICAgICBsYXlvdXREaXJlY3Rpb246IG5l
dyBXSS5TZXR0aW5nKCJsYXlvdXQtZGlyZWN0aW9uLW92ZXJyaWRlIiwgInN5c3RlbSIpLAogICAg
IHBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzOiBuZXcgV0kuU2V0dGluZygicGF1c2UtZm9yLWludGVy
bmFsLXNjcmlwdHMiLCBmYWxzZSksCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKaW5kZXgg
OGVjZGY3NzhlYzIuLjhhMDI0YzlkNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKQEAg
LTQ3LDYgKzQ3LDkgQEAgV0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50c0ZvckV2ZW50TGlzdGVuZXJzID0g
bmV3IE1hcDsKIAorICAgICAgICB0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1bWVudCA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gbnVsbDsKKwog
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9
CiAKQEAgLTY1LDYgKzY4LDExIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB0cmFuc2l0aW9uUGFnZVRh
cmdldCgpCisgICAgeworICAgICAgICB0aGlzLl9kb2N1bWVudFVwZGF0ZWQoKTsKKyAgICB9CisK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBldmVudExpc3RlbmVyQnJlYWtwb2ludHMoKQpAQCAt
NzksMjQgKzg3LDMxIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcykgeworICAgICAgICBpZiAodGhp
cy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcykKICAgICAgICAgICAgIHRoaXMuX3Bl
bmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBb
Y2FsbGJhY2tdOworCisgICAgICAgIGlmICh0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1bWVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIVdJLnBhZ2VUYXJnZXQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFXSS5wYWdlVGFyZ2V0LkRPTUFnZW50KQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fcGVuZGluZ0RvY3Vt
ZW50UmVxdWVzdENhbGxiYWNrcyA9IFtjYWxsYmFja107CisgICAgICAgIHRoaXMuX2hhc1JlcXVl
c3RlZERvY3VtZW50ID0gdHJ1ZTsKIAotICAgICAgICBpZiAod2luZG93LkRPTUFnZW50KSB7Ci0g
ICAgICAgICAgICBET01BZ2VudC5nZXREb2N1bWVudCgoZXJyb3IsIHJvb3QpID0+IHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWVycm9yKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXREb2N1
bWVudChyb290KTsKKyAgICAgICAgV0kucGFnZVRhcmdldC5ET01BZ2VudC5nZXREb2N1bWVudCgo
ZXJyb3IsIHJvb3QpID0+IHsKKyAgICAgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICAg
ICAgdGhpcy5fc2V0RG9jdW1lbnQocm9vdCk7CiAKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBj
YWxsYmFjayBvZiB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzKQotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1bWVudCk7CisgICAgICAgICAgICBmb3Ig
KGxldCBjYWxsYmFjayBvZiB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzKQor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2RvY3VtZW50KTsKIAotICAgICAgICAgICAg
ICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBudWxsOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJl
cXVlc3RDYWxsYmFja3MgPSBudWxsOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBlbnN1cmVE
b2N1bWVudCgpCkBAIC0yNzQsNiArMjg5LDEwIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01N
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5fZG9jdW1lbnQgPSBuZXdEb2N1bWVudDsKKworICAgICAgICBpZiAoIXRoaXMuX2RvY3Vt
ZW50KQorICAgICAgICAgICAgdGhpcy5faGFzUmVxdWVzdGVkRG9jdW1lbnQgPSBmYWxzZTsKKwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50
LkRvY3VtZW50VXBkYXRlZCwge2RvY3VtZW50OiB0aGlzLl9kb2N1bWVudH0pOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwppbmRleCA5NGQ4OWM3ZjY1MC4uOWU4MTE3
Y2RkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0zOCw2ICszOCw3
IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgdGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMID0gbmV3IE1hcDsK
IAogICAgICAgICB0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCA9
IHRydWU7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gZmFsc2U7CiAK
ICAgICAgICAgdGhpcy5fc291cmNlTWFwVVJMTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5f
ZG93bmxvYWRpbmdTb3VyY2VNYXBzID0gbmV3IFNldDsKQEAgLTcwLDYgKzcxLDEyIEBAIFdJLk5l
dHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgICAgIHRoaXMuYWRvcHRPcnBoYW5lZFJlc291cmNlc0ZvclRhcmdldCh0YXJnZXQpOwog
ICAgIH0KIAorICAgIHRyYW5zaXRpb25QYWdlVGFyZ2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fd2FpdGluZ0Zv
ck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQgPSB0cnVlOworICAgIH0KKwogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IG1haW5GcmFtZSgpCkBAIC01NjIsMTMgKzU2OSwxNCBAQCBXSS5OZXR3
b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5SdW50aW1lT2JzZXJ2ZXIuCiAKLSAgICAgICAg
dmFyIGZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZpZXIoY29udGV4dFBheWxvYWQuZnJhbWVJ
ZCk7CisgICAgICAgIGxldCBmcmFtZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGNvbnRleHRQ
YXlsb2FkLmZyYW1lSWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZSk7CiAgICAgICAg
IGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGRpc3BsYXlO
YW1lID0gY29udGV4dFBheWxvYWQubmFtZSB8fCBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5h
bWU7Ci0gICAgICAgIHZhciBleGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRl
eHQoV0kubWFpblRhcmdldCwgY29udGV4dFBheWxvYWQuaWQsIGRpc3BsYXlOYW1lLCBjb250ZXh0
UGF5bG9hZC5pc1BhZ2VDb250ZXh0LCBmcmFtZSk7CisgICAgICAgIGxldCBkaXNwbGF5TmFtZSA9
IGNvbnRleHRQYXlsb2FkLm5hbWUgfHwgZnJhbWUubWFpblJlc291cmNlLmRpc3BsYXlOYW1lOwor
ICAgICAgICBsZXQgdGFyZ2V0ID0gZnJhbWUubWFpblJlc291cmNlLnRhcmdldDsKKyAgICAgICAg
bGV0IGV4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0YXJnZXQsIGNv
bnRleHRQYXlsb2FkLmlkLCBkaXNwbGF5TmFtZSwgY29udGV4dFBheWxvYWQuaXNQYWdlQ29udGV4
dCwgZnJhbWUpOwogICAgICAgICBmcmFtZS5hZGRFeGVjdXRpb25Db250ZXh0KGV4ZWN1dGlvbkNv
bnRleHQpOwogICAgIH0KIApAQCAtNzc5LDYgKzc4NywxNCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9
IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgaWYgKHRo
aXMuX21haW5GcmFtZSAhPT0gb2xkTWFpbkZyYW1lKQogICAgICAgICAgICAgdGhpcy5fbWFpbkZy
YW1lRGlkQ2hhbmdlKG9sZE1haW5GcmFtZSk7CisKKyAgICAgICAgLy8gRW11bGF0ZSBhIG1haW4g
cmVzb3VyY2UgY2hhbmdlIHdpdGhpbiB0aGlzIHBhZ2UgZXZlbiB0aG91Z2ggd2UgYXJlIHN3YXBw
aW5nIG91dCBtYWluIGZyYW1lcy4KKyAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIG1hbnkgbWFu
YWdlcnMgbGlzdGVuIG9ubHkgZm9yIG1haW4gcmVzb3VyY2UgY2hhbmdlIGV2ZW50cyB0byBwZXJm
b3JtIHdvcmssCisgICAgICAgIC8vIGJ1dCB0aGV5IGRvbid0IGxpc3RlbiBmb3IgbWFpbiBmcmFt
ZSBjaGFuZ2VzLgorICAgICAgICBpZiAodGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpIHsK
KyAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gZmFsc2U7CisgICAg
ICAgICAgICB0aGlzLl9tYWluRnJhbWUuX2Rpc3BhdGNoTWFpblJlc291cmNlRGlkQ2hhbmdlRXZl
bnQob2xkTWFpbkZyYW1lLm1haW5SZXNvdXJjZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBf
Y3JlYXRlRnJhbWUocGF5bG9hZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKaW5k
ZXggNDdjNjU1OGYyZjMuLjVhMTQ1NDJhZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFu
YWdlci5qcwpAQCAtNjgsNiArNjgsMTEgQEAgV0kuUnVudGltZU1hbmFnZXIgPSBjbGFzcyBSdW50
aW1lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZXZhbHVhdGVJbkluc3BlY3RlZFdp
bmRvdyhleHByZXNzaW9uLCBvcHRpb25zLCBjYWxsYmFjaykKICAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fYWN0aXZlRXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVs
bCwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgbGV0
IHtvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldywgc2F2ZVJl
c3VsdCwgc291cmNlVVJMQXBwZW5kZXJ9ID0gb3B0aW9uczsKIAogICAgICAgICBpbmNsdWRlQ29t
bWFuZExpbmVBUEkgPSBpbmNsdWRlQ29tbWFuZExpbmVBUEkgfHwgZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRN
YW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvVGFyZ2V0TWFuYWdlci5qcwppbmRleCBjNzU3Y2I2NDU2OC4uZTEyOWYwNmY3MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rh
cmdldE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxNCArMjksMjQgQEAgV0kuVGFyZ2V0TWFu
YWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAg
ICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fdGFyZ2V0cyA9IG5ldyBTZXQ7CisgICAgICAg
IHRoaXMuX3RhcmdldHMgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9jYWNoZWRUYXJnZXRzTGlz
dCA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlZW5QYWdlVGFyZ2V0ID0gZmFsc2U7CisgICAgICAg
IHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKICAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0YXJnZXRzKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl90YXJnZXRzOworICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFRhcmdldHNMaXN0KQor
ICAgICAgICAgICAgdGhpcy5fY2FjaGVkVGFyZ2V0c0xpc3QgPSBBcnJheS5mcm9tKHRoaXMuX3Rh
cmdldHMudmFsdWVzKCkpLmZpbHRlcigodGFyZ2V0KSA9PiAhKHRhcmdldCBpbnN0YW5jZW9mIFdJ
Lk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hl
ZFRhcmdldHNMaXN0OworICAgIH0KKworICAgIGdldCBhbGxUYXJnZXRzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3RhcmdldHMudmFsdWVzKCkpOwogICAgIH0KIAog
ICAgIHRhcmdldEZvcklkZW50aWZpZXIodGFyZ2V0SWQpCkBAIC00NCwxMCArNTQsNyBAQCBXSS5U
YXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICBpZiAoIXRhcmdldElkKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAg
aWYgKHRhcmdldElkID09PSBXSS5tYWluVGFyZ2V0LmlkZW50aWZpZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gV0kubWFpblRhcmdldDsKLQotICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGhpcy5f
dGFyZ2V0cykgeworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGhpcy5fdGFyZ2V0cy52YWx1
ZXMoKSkgewogICAgICAgICAgICAgaWYgKHRhcmdldC5pZGVudGlmaWVyID09PSB0YXJnZXRJZCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgICAgICB9CkBAIC01NSwyNCArNjIs
MTQwIEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAgIGFkZFRhcmdldCh0YXJn
ZXQpCisgICAgdGFyZ2V0Q3JlYXRlZCh0YXJnZXRJbmZvKQogICAgIHsKLSAgICAgICAgdGhpcy5f
dGFyZ2V0cy5hZGQodGFyZ2V0KTsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBiYWNrZW5kIHRhcmdl
dCBpZiBpdCBkaWRuJ3QgZXhpc3QgeWV0LgorICAgICAgICBpZiAodGhpcy5fdGFyZ2V0cy5zaXpl
ID09PSAwKQorICAgICAgICAgICAgdGhpcy5jcmVhdGVNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0
KHRhcmdldEluZm8pOworCisgICAgICAgIGxldCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJh
Y2tlbmQuVGFyZ2V0Q29ubmVjdGlvbih0YXJnZXRJbmZvLnRhcmdldElkKTsKKyAgICAgICAgbGV0
IHRhcmdldCA9IHRoaXMuX2NyZWF0ZVRhcmdldCh0YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsKKyAg
ICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbih0YXJnZXQpOwor
ICAgICAgICB0YXJnZXQuaW5pdGlhbGl6ZSgpOworCisgICAgICAgIHRoaXMuX2FkZFRhcmdldCh0
YXJnZXQpOworICAgIH0KKworICAgIHRhcmdldFRlcm1pbmF0ZWQodGFyZ2V0SWQpCisgICAgewor
ICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAgICAg
ICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUZXJtaW5hdGlvbih0YXJnZXQpOworICAg
ICAgICB0aGlzLl9yZW1vdmVUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAgICBkaXNwYXRjaE1l
c3NhZ2VGcm9tVGFyZ2V0KHRhcmdldElkLCBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgbGV0IHRh
cmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGFyZ2V0KTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgfQorCisg
ICAgY3JlYXRlTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCh0YXJnZXRJbmZvKQorICAgIHsKKyAg
ICAgICAgbGV0IHRhcmdldCA9IG5ldyBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0OworICAg
ICAgICB0YXJnZXQuaW5pdGlhbGl6ZSgpOworCisgICAgICAgIFdJLmluaXRpYWxpemVCYWNrZW5k
VGFyZ2V0KHRhcmdldCk7CisKKyAgICAgICAgdGhpcy5fYWRkVGFyZ2V0KHRhcmdldCk7CisgICAg
fQorCisgICAgY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCgpCisgICAgeworICAgICAgICBsZXQg
dGFyZ2V0ID0gbmV3IFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQ7CisgICAgICAgIHRhcmdldC5pbml0
aWFsaXplKCk7CisKKyAgICAgICAgV0kuaW5pdGlhbGl6ZUJhY2tlbmRUYXJnZXQodGFyZ2V0KTsK
KworICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dh
YmxlVHlwZS5XZWIpCisgICAgICAgICAgICBXSS5pbml0aWFsaXplUGFnZVRhcmdldCh0YXJnZXQp
OworCisgICAgICAgIHRoaXMuX2FkZFRhcmdldCh0YXJnZXQpOworICAgIH0KKworICAgIC8vIFBy
aXZhdGUKKworICAgIF9hZGRUYXJnZXQodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGFyZ2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3RhcmdldHMuaGFz
KHRhcmdldC5pZGVudGlmaWVyKSk7CisKKyAgICAgICAgdGhpcy5fY2FjaGVkVGFyZ2V0c0xpc3Qg
PSBudWxsOworICAgICAgICB0aGlzLl90YXJnZXRzLnNldCh0YXJnZXQuaWRlbnRpZmllciwgdGFy
Z2V0KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRN
YW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCB7dGFyZ2V0fSk7CiAgICAgfQogCi0gICAgcmVtb3Zl
VGFyZ2V0KHRhcmdldCkKKyAgICBfcmVtb3ZlVGFyZ2V0KHRhcmdldCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3RhcmdldHMuZGVsZXRlKHRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRh
cmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCAhPT0gV0kubWFpblRhcmdldCk7
CisKKyAgICAgICAgdGhpcy5fY2FjaGVkVGFyZ2V0c0xpc3QgPSBudWxsOworICAgICAgICB0aGlz
Ll90YXJnZXRzLmRlbGV0ZSh0YXJnZXQuaWRlbnRpZmllcik7CiAKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVk
LCB7dGFyZ2V0fSk7CiAgICAgfQogCi0gICAgaW5pdGlhbGl6ZU1haW5UYXJnZXQoKQorICAgIF9j
cmVhdGVUYXJnZXQodGFyZ2V0SW5mbywgY29ubmVjdGlvbikKICAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KFdJLm1haW5UYXJnZXQpOwotICAgICAgICB0aGlzLl90YXJnZXRzLmFkZChXSS5t
YWluVGFyZ2V0KTsKKyAgICAgICAgbGV0IHt0YXJnZXRJZCwgdHlwZX0gPSB0YXJnZXRJbmZvOwor
CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFRhcmdldEFnZW50LlRhcmdl
dEluZm9UeXBlLkphdmFTY3JpcHQ6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLkphdmFTY3Jp
cHRDb250ZXh0VGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiSmF2YVNjcmlwdCBDb250ZXh0
IiksIGNvbm5lY3Rpb24pOworICAgICAgICBjYXNlIFRhcmdldEFnZW50LlRhcmdldEluZm9UeXBl
LlBhZ2U6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlBhZ2VUYXJnZXQodGFyZ2V0SWQsIFdJ
LlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24pOworICAgICAgICBjYXNlIFRhcmdldEFnZW50
LlRhcmdldEluZm9UeXBlLldvcmtlcjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuV29ya2Vy
VGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAg
ICAgICBjYXNlIFRhcmdldEFnZW50LlRhcmdldEluZm9UeXBlLlNlcnZpY2VXb3JrZXI6CisgICAg
ICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldCh0YXJnZXRJZCwgV0kuVUlTdHJpbmco
IlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgIH0KKworICAgICAgICB0aHJv
dyAiVW5rbm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7CisgICAgfQorCisgICAgX2NoZWNrQW5k
SGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24odGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRh
cmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5QYWdlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIC8vIEZpcnN0IHBhZ2UgdGFyZ2V0LgorICAgICAgICBpZiAoIVdJLnBhZ2VUYXJn
ZXQgJiYgIXRoaXMuX3NlZW5QYWdlVGFyZ2V0KSB7CisgICAgICAgICAgICB0aGlzLl9zZWVuUGFn
ZVRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBXSS5pbml0aWFsaXplUGFnZVRhcmdldCh0YXJn
ZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gVHJhbnNp
dGlvbmluZyBwYWdlIHRhcmdldC4KKyAgICAgICAgV0kudHJhbnNpdGlvblBhZ2VUYXJnZXQodGFy
Z2V0KTsKKyAgICB9CisKKyAgICBfY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRpb24o
dGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlw
ZS5QYWdlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRh
cmdldCA9PT0gV0kucGFnZVRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Nl
ZW5QYWdlVGFyZ2V0KTsKKworICAgICAgICAvLyBUZXJtaW5hdGluZyB0aGUgcGFnZVRhcmdldC4K
KyAgICAgICAgV0kudGVybWluYXRlUGFnZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIC8vIEVu
c3VyZSB3ZSB0cmFuc2l0aW9uIGluIGEgcmVhc29uYWJsZSBhbW91bnQgb2YgdGltZSwgb3RoZXJ3
aXNlIGNsb3NlLgorICAgICAgICBjb25zdCB0aW1lVG9UcmFuc2l0aW9uID0gMjAwMDsKKyAgICAg
ICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRpZmllcik7CisgICAg
ICAgIHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQoKCkgPT4g
eworICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRpbWVvdXRJZGVudGlmaWVyID0gdW5kZWZp
bmVkOworICAgICAgICAgICAgaWYgKFdJLnBhZ2VUYXJnZXQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgaWYgKFdJLmlzRW5naW5lZXJpbmdCdWlsZCkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkVycm9yOiBObyBuZXcgcGFnZVRhcmdldCBzb21lIHRpbWUg
YWZ0ZXIgbGFzdCBwYWdlIHRhcmdldCB3YXMgdGVybWluYXRlZC4gRmFpbGVkIHRyYW5zaXRpb24/
Iik7CisgICAgICAgICAgICBXSS5jbG9zZSgpOworICAgICAgICB9LCB0aW1lVG9UcmFuc2l0aW9u
KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcwppbmRleCA1Mzcz
NTRiMmMwMC4uNTAzNjNhYzY4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcwpA
QCAtNDgsNyArNDgsNyBAQCBXSS5Xb3JrZXJNYW5hZ2VyID0gY2xhc3MgV29ya2VyTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgd29ya2VyVGFyZ2V0ID0gbmV3IFdJLldvcmtl
clRhcmdldCh3b3JrZXJJZCwgdXJsLCBjb25uZWN0aW9uKTsKICAgICAgICAgd29ya2VyVGFyZ2V0
LmluaXRpYWxpemUoKTsKIAotICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZFRhcmdldCh3b3Jr
ZXJUYXJnZXQpOworICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLl9hZGRUYXJnZXQod29ya2VyVGFy
Z2V0KTsKIAogICAgICAgICB0aGlzLl9jb25uZWN0aW9ucy5zZXQod29ya2VySWQsIGNvbm5lY3Rp
b24pOwogCkBAIC02MCw3ICs2MCw3IEBAIFdJLldvcmtlck1hbmFnZXIgPSBjbGFzcyBXb3JrZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBsZXQgY29ubmVjdGlvbiA9
IHRoaXMuX2Nvbm5lY3Rpb25zLnRha2Uod29ya2VySWQpOwogCi0gICAgICAgIFdJLnRhcmdldE1h
bmFnZXIucmVtb3ZlVGFyZ2V0KGNvbm5lY3Rpb24udGFyZ2V0KTsKKyAgICAgICAgV0kudGFyZ2V0
TWFuYWdlci5fcmVtb3ZlVGFyZ2V0KGNvbm5lY3Rpb24udGFyZ2V0KTsKICAgICB9CiAKICAgICBk
aXNwYXRjaE1lc3NhZ2VGcm9tV29ya2VyKHdvcmtlcklkLCBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFwLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFwLmpzCmlu
ZGV4IGE5Y2MxZDFmYTBkLi5hMjMzYzhiMzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0cmFwLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qcwpAQCAtMjMsNiArMjMs
OCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK1dJLmlzRW5n
aW5lZXJpbmdCdWlsZCA9IHRydWU7CisKIC8vIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBhZnRl
ciB0aGUgaW5zcGVjdG9yIGhhcyBsb2FkZWQuCiBXSS5ydW5Cb290c3RyYXBPcGVyYXRpb25zID0g
ZnVuY3Rpb24oKSB7CiAgICAgV0kuc2hvd0RlYnVnVUlTZXR0aW5nID0gbmV3IFdJLlNldHRpbmco
InNob3ctZGVidWctdWkiLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4Y2VwdGlvblJlcG9ydGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25S
ZXBvcnRlci5qcwppbmRleCA0YzdkYTkyOWUwMy4uN2M2MTg5NDRiMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL1VuY2F1Z2h0RXhjZXB0aW9u
UmVwb3J0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVi
dWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5qcwpAQCAtMjU3LDYgKzI1Nyw3IEBAIERvY3Vt
ZW50IGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgYmUgdXNlZnVsIGluIHJl
c29sdmluZyB0aGUgcHJvYmxlCiAgICAgICAgIDxkZD48YSBjbGFzcz0iYnlwYXNzLWV2ZW50LWJs
b2NraW5nIiBpZD0iZGlzbWlzcy1lcnJvci1zaGVldCI+Q2xpY2sgdG8gY2xvc2UgdGhpcyB2aWV3
PC9hPiBhbmQgcmV0dXJuCiAgICAgICAgIHRvIHRoZSBXZWIgSW5zcGVjdG9yIHdpdGhvdXQgcmVs
b2FkaW5nLiBIb3dldmVyLCBzb21lIHRoaW5ncyBtaWdodCBub3Qgd29yayB3aXRob3V0IHJlbG9h
ZGluZyBpZiB0aGUgZXJyb3IgY29ycnVwdGVkIHRoZSBJbnNwZWN0b3IncyBpbnRlcm5hbCBzdGF0
ZS48L2RkPmA7CiAKKyAgICAvLyBGSVhNRTogUmVsb2FkIFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qg
d29yayB3aXRoIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuCiAgICAgbGV0IHNoZWV0RWxlbWVu
dCA9IHdpbmRvdy5fX3NoZWV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgIHNoZWV0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaGVldC1jb250YWluZXIiKTsKICAg
ICBzaGVldEVsZW1lbnQuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9InVuY2F1Z2h0LWV4Y2VwdGlv
bi1zaGVldCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKaW5kZXggMDBiNWNmZmU5ZjkuLmNmODU0ZWUzMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yOTcsNyArMjk3LDEwIEBACiAgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL1JlbW90ZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlByb3RvY29sL1RhcmdldC5qcyI+PC9zY3JpcHQ+CiAKLSAgICA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2wvTWFpblRhcmdldC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlBy
b3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJQcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iUHJvdG9jb2wvSmF2YVNjcmlwdENvbnRleHRUYXJnZXQuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9QYWdlVGFyZ2V0LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzIj48L3NjcmlwdD4KIAogICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMiPjwvc2Ny
aXB0PgpAQCAtMzE2LDYgKzMxOSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1BhZ2VP
YnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1J1bnRpbWVP
YnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1NjcmlwdFBy
b2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9U
YXJnZXRPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1Rp
bWVsaW5lT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9X
b3JrZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMK
aW5kZXggYjIzYjE0YTdhM2EuLjIxMGUyNmE2MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2Fy
ZC5qcwpAQCAtNDUsNiArNDUsMTMgQEAgV0kuRGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERlZmF1
bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRo
aXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwogICAgICAgICBXSS5jb25zb2xlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2Fn
ZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhp
cyk7CiAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIG9yZGVy
IG9mIGV2ZW50cy4gTm9ybWFsIHBhZ2UgbmF2aWdhdGlvbgorICAgICAgICAvLyB0cmlnZ2VycyBh
IE1haW5SZXNvdXJjZSBjaGFuZ2UgYW5kIHRoZW4gYSBNYWluRnJhbWUgY2hhbmdlLiBQYWdlIFRy
YW5zaXRpb24KKyAgICAgICAgLy8gdHJpZ2dlcnMgYSBNYWluRnJhbWUgY2hhbmdlIHRoZW4gYSBN
YWluUmVzb3VyY2UgY2hhbmdlLgorICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdl
dCA9IGZhbHNlOworCisgICAgICAgIFdJLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Ob3RpZmljYXRpb24uVHJhbnNpdGlvblBhZ2VUYXJnZXQsIHRoaXMuX3RyYW5zaXRpb25QYWdl
VGFyZ2V0LCB0aGlzKTsKKwogICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDA7CiAgICAg
ICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOwogICAgICAgICB0aGlzLl90aW1lID0gMDsKQEAg
LTEzNSw5ICsxNDIsMTEgQEAgV0kuRGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNo
Ym9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWlu
RnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl90aW1lID0gMDsK
LSAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAxOwotICAgICAgICB0aGlzLl9yZXNvdXJj
ZXNTaXplID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zaXplIHx8
IDA7CisgICAgICAgIGlmICghdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQg
PSAxOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9IFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZS5tYWluUmVzb3VyY2Uuc2l6ZSB8fCAwOworICAgICAgICB9CiAKICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgdHJhY2sgcmVzb3VyY2Ugc2l6ZXMgb24gZnJlc2ggbG9hZHMuCiAg
ICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tp
bmdTaXplKSB7CkBAIC0xNDYsNyArMTU1LDEyIEBAIFdJLkRlZmF1bHREYXNoYm9hcmQgPSBjbGFz
cyBEZWZhdWx0RGFzaGJvYXJkIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KIAogICAgICAg
ICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Ci0gICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdUaW1l
KCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkKKyAgICAg
ICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdUaW1lKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3Ry
YW5zaXRpb25pbmdQYWdlVGFyZ2V0KQorICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1Bh
Z2VUYXJnZXQgPSBmYWxzZTsKICAgICB9CiAKICAgICBfY2FwdHVyaW5nU3RvcHBlZChldmVudCkK
QEAgLTI2MSw2ICsyNzUsMTcgQEAgV0kuRGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHRE
YXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fZXJyb3JzID0gMDsKICAg
ICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOwogICAgIH0KKworICAgIF90cmFuc2l0aW9uUGFn
ZVRhcmdldCgpCisgICAgeworICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9
IHRydWU7CisKKyAgICAgICAgdGhpcy5fdGltZSA9IDA7CisgICAgICAgIHRoaXMuX3Jlc291cmNl
c0NvdW50ID0gMDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9IDA7CisKKyAgICAgICAg
dGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KIH07CiAKIFdJLkRlZmF1bHREYXNoYm9hcmQu
RXZlbnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwppbmRleCA2MzFmYWQ5ZGUxMi4uOTlkOTcwZmY1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0Nvbm5lY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwpAQCAtMzAsMTEgKzMwLDEyIEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKK0luc3BlY3RvckJhY2tlbmQuZ2xvYmFsU2VxdWVuY2VJZCA9IDE7CisKIElu
c3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0
aW9uCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgdGhpcy5fbGFzdFNlcXVl
bmNlSWQgPSAxOwogICAgICAgICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzID0gbmV3IE1hcDsKICAg
ICAgICAgdGhpcy5fYWdlbnRzID0ge307CiAgICAgICAgIHRoaXMuX2RlZmVycmVkU2NyaXB0cyA9
IFtdOwpAQCAtMTAwLDcgKzEwMSw3IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNs
YXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBsZXQg
c2VxdWVuY2VJZCA9IG1lc3NhZ2VPYmplY3RbImlkIl07Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX3BlbmRpbmdSZXNwb25zZXMuaGFzKHNlcXVlbmNlSWQpLCBzZXF1ZW5jZUlkLCB0aGlz
Ll9wZW5kaW5nUmVzcG9uc2VzKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGVuZGlu
Z1Jlc3BvbnNlcy5oYXMoc2VxdWVuY2VJZCksIHNlcXVlbmNlSWQsIHRoaXMuX3RhcmdldCA/IHRo
aXMuX3RhcmdldC5pZGVudGlmaWVyIDogIih1bmtub3duKSIsIHRoaXMuX3BlbmRpbmdSZXNwb25z
ZXMpOwogCiAgICAgICAgIGxldCByZXNwb25zZURhdGEgPSB0aGlzLl9wZW5kaW5nUmVzcG9uc2Vz
LnRha2Uoc2VxdWVuY2VJZCkgfHwge307CiAgICAgICAgIGxldCB7cmVxdWVzdCwgY29tbWFuZCwg
Y2FsbGJhY2ssIHByb21pc2V9ID0gcmVzcG9uc2VEYXRhOwpAQCAtMjA3LDcgKzIwOCw3IEBAIElu
c3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0
aW9uCiAKICAgICBfc2VuZENvbW1hbmRUb0JhY2tlbmRXaXRoQ2FsbGJhY2soY29tbWFuZCwgcGFy
YW1ldGVycywgY2FsbGJhY2spCiAgICAgewotICAgICAgICBsZXQgc2VxdWVuY2VJZCA9IHRoaXMu
X2xhc3RTZXF1ZW5jZUlkKys7CisgICAgICAgIGxldCBzZXF1ZW5jZUlkID0gSW5zcGVjdG9yQmFj
a2VuZC5nbG9iYWxTZXF1ZW5jZUlkKys7CiAKICAgICAgICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB7
CiAgICAgICAgICAgICAiaWQiOiBzZXF1ZW5jZUlkLApAQCAtMjI4LDcgKzIyOSw3IEBAIEluc3Bl
Y3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9u
CiAKICAgICBfc2VuZENvbW1hbmRUb0JhY2tlbmRFeHBlY3RpbmdQcm9taXNlKGNvbW1hbmQsIHBh
cmFtZXRlcnMpCiAgICAgewotICAgICAgICBsZXQgc2VxdWVuY2VJZCA9IHRoaXMuX2xhc3RTZXF1
ZW5jZUlkKys7CisgICAgICAgIGxldCBzZXF1ZW5jZUlkID0gSW5zcGVjdG9yQmFja2VuZC5nbG9i
YWxTZXF1ZW5jZUlkKys7CiAKICAgICAgICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB7CiAgICAgICAg
ICAgICAiaWQiOiBzZXF1ZW5jZUlkLApAQCAtMjcyLDcgKzI3Myw3IEBAIEluc3BlY3RvckJhY2tl
bmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAgICAgfQog
fTsKIAotSW5zcGVjdG9yQmFja2VuZC5NYWluQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJh
Y2tlbmRNYWluQ29ubmVjdGlvbiBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbgor
SW5zcGVjdG9yQmFja2VuZC5CYWNrZW5kQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tl
bmRCYWNrZW5kQ29ubmVjdGlvbiBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbgog
ewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CkBAIC0yOTgsNyArMjk5LDcgQEAgSW5zcGVjdG9y
QmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZFdvcmtlckNv
bm5lY3Rpb24gZXh0ZW4KICAgICAgICAgLy8gQ2xvbmUgYWdlbnRzIHRoYXQgd2lsbCB1c2UgdGhp
cyBjb25uZWN0aW9uLgogICAgICAgICBmb3IgKGxldCBkb21haW4gaW4gSW5zcGVjdG9yQmFja2Vu
ZC5fYWdlbnRzKSB7CiAgICAgICAgICAgICBsZXQgYWdlbnQgPSBJbnNwZWN0b3JCYWNrZW5kLl9h
Z2VudHNbZG9tYWluXTsKLSAgICAgICAgICAgIGxldCBjbG9uZSA9IE9iamVjdC5jcmVhdGUoSW5z
cGVjdG9yQmFja2VuZC5fYWdlbnRzW2RvbWFpbl0pOworICAgICAgICAgICAgbGV0IGNsb25lID0g
T2JqZWN0LmNyZWF0ZShhZ2VudCk7CiAgICAgICAgICAgICBjbG9uZS5jb25uZWN0aW9uID0gdGhp
czsKICAgICAgICAgICAgIGlmIChhZ2VudC5kaXNwYXRjaGVyKQogICAgICAgICAgICAgICAgIGNs
b25lLmRpc3BhdGNoZXIgPSBuZXcgYWdlbnQuZGlzcGF0Y2hlci5jb25zdHJ1Y3RvcjsKQEAgLTMx
Miw0ICszMTMsMjggQEAgSW5zcGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uID0gY2xhc3Mg
SW5zcGVjdG9yQmFja2VuZFdvcmtlckNvbm5lY3Rpb24gZXh0ZW4KICAgICB9CiB9OwogCi1JbnNw
ZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuTWFpbkNv
bm5lY3Rpb247CitJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb24gPSBjbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kVGFyZ2V0Q29ubmVjdGlvbiBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuQ29u
bmVjdGlvbgoreworICAgIGNvbnN0cnVjdG9yKHRhcmdldElkKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl90YXJnZXRJZCA9IHRhcmdldElkOworCisgICAgICAgIGZv
ciAobGV0IGRvbWFpbiBpbiBJbnNwZWN0b3JCYWNrZW5kLl9hZ2VudHMpIHsKKyAgICAgICAgICAg
IGxldCBhZ2VudCA9IEluc3BlY3RvckJhY2tlbmQuX2FnZW50c1tkb21haW5dOworICAgICAgICAg
ICAgbGV0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShhZ2VudCk7CisgICAgICAgICAgICBjbG9uZS5j
b25uZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAgIGlmIChhZ2VudC5kaXNwYXRjaGVyKQorICAg
ICAgICAgICAgICAgIGNsb25lLmRpc3BhdGNoZXIgPSBuZXcgYWdlbnQuZGlzcGF0Y2hlci5jb25z
dHJ1Y3RvcjsKKyAgICAgICAgICAgIHRoaXMuX2FnZW50c1tkb21haW5dID0gY2xvbmU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgVGFyZ2V0QWdlbnQuc2VuZE1lc3NhZ2VUb1RhcmdldCh0aGlzLl90YXJnZXRJZCwg
bWVzc2FnZSk7CisgICAgfQorfTsKKworSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlv
biA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLkJhY2tlbmRDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2Vu
ZFRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0RpcmVjdEJhY2tlbmRUYXJnZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjUxMzdmNDAzM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcwpAQCAtMCww
ICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHdoZW4gY29ubmVj
dGluZyBkaXJlY3RseSB0byBhIHNpbmdsZSB0YXJnZXQuCisvLyBUaGUgbWFpbiBjb25uZWN0aW9u
IGlzIGEgZGlyZWN0IGNvbm5lY3Rpb24gdG8gYSB0YXJnZXQuCisKK1dJLkRpcmVjdEJhY2tlbmRU
YXJnZXQgPSBjbGFzcyBEaXJlY3RCYWNrZW5kVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0Cit7Cisg
ICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgbGV0IHt0eXBlLCBkaXNwbGF5TmFtZX0g
PSBEaXJlY3RCYWNrZW5kVGFyZ2V0LmNvbm5lY3Rpb25JbmZvRm9yRGVidWdnYWJsZSgpOworCisg
ICAgICAgIHN1cGVyKCJkaXJlY3QiLCBkaXNwbGF5TmFtZSwgdHlwZSwgSW5zcGVjdG9yQmFja2Vu
ZC5iYWNrZW5kQ29ubmVjdGlvbik7CisKKyAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9
IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVs
Q29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCB0cnVlLCBudWxsKTsKKyAg
ICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVsbDsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMK
KworICAgIHN0YXRpYyBjb25uZWN0aW9uSW5mb0ZvckRlYnVnZ2FibGUoKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUpIHsKKyAgICAgICAgY2FzZSBX
SS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0OgorICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5KU0NvbnRleHQsCisgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6IFdJLlVJU3RyaW5nKCJKYXZhU2NyaXB0IENvbnRleHQiKSwKKyAgICAg
ICAgICAgIH07CisgICAgICAgIGNhc2UgV0kuRGVidWdnYWJsZVR5cGUuU2VydmljZVdvcmtlcjoK
KyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogV0kuVGFyZ2V0LlR5
cGUuU2VydmljZVdvcmtlciwKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogV0kuVUlTdHJp
bmcoIlNlcnZpY2VXb3JrZXIiKSwKKyAgICAgICAgICAgIH07CisgICAgICAgIGNhc2UgV0kuRGVi
dWdnYWJsZVR5cGUuV2ViOgorICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0
eXBlOiBXSS5UYXJnZXQuVHlwZS5QYWdlLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBX
SS5VSVN0cmluZygiUGFnZSIpLAorICAgICAgICAgICAgfTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgZGVidWdnYWJsZSB0eXBlOiAiLCBX
SS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUpOworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5QYWdlLAorICAgICAgICAgICAgICAgIGRp
c3BsYXlOYW1lOiBXSS5VSVN0cmluZygiTWFpbiIpLAorICAgICAgICAgICAgfTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAoVGFyZ2V0KQorCisgICAgZ2V0IG1haW5SZXNv
dXJjZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbWFpblJlc291cmNlKQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX21haW5SZXNvdXJjZTsKKworICAgICAgICBsZXQgbWFpbkZyYW1lID0g
V0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworICAgICAgICByZXR1cm4gbWFpbkZyYW1lID8g
bWFpbkZyYW1lLm1haW5SZXNvdXJjZSA6IG51bGw7CisgICAgfQorCisgICAgc2V0IG1haW5SZXNv
dXJjZShyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZSA9IHJlc291
cmNlOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwppbmRleCA0OWVj
OWI3MTNjMi4uNzZiNjJjZjY0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwpA
QCAtMTU3LDEzICsxNTcsMTMgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVj
dG9yQmFja2VuZENsYXNzCiAKICAgICBkaXNwYXRjaChtZXNzYWdlKQogICAgIHsKLSAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5tYWluQ29ubmVjdGlvbi5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbi5kaXNwYXRjaChtZXNzYWdlKTsK
ICAgICB9CiAKICAgICBydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHNjcmlwdCkKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyByZXNwZWN0IHBlbmRpbmcgZGlzcGF0Y2hlcyBp
biBhbGwgY29ubmVjdGlvbnM/Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQubWFpbkNvbm5lY3Rp
b24ucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzY3JpcHQpOworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc2NyaXB0
KTsKICAgICB9CiAKICAgICBhY3RpdmF0ZURvbWFpbihkb21haW5OYW1lLCBhY3RpdmF0aW9uRGVi
dWdnYWJsZVR5cGVzKQpAQCAtMjIwLDcgKzIyMCw3IEBAIEluc3BlY3RvckJhY2tlbmQuQWdlbnQg
PSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQWdlbnQKICAgICAgICAgdGhpcy5fZG9tYWluTmFtZSA9
IGRvbWFpbk5hbWU7CiAKICAgICAgICAgLy8gRGVmYXVsdCBjb25uZWN0aW9uIGlzIHRoZSBtYWlu
IGNvbm5lY3Rpb24uCi0gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBJbnNwZWN0b3JCYWNrZW5k
Lm1haW5Db25uZWN0aW9uOworICAgICAgICB0aGlzLl9jb25uZWN0aW9uID0gSW5zcGVjdG9yQmFj
a2VuZC5iYWNrZW5kQ29ubmVjdGlvbjsKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hlciA9IG51bGw7
CiAKICAgICAgICAgLy8gQWdlbnRzIGFyZSBhbHdheXMgY3JlYXRlZCwgYnV0IGFyZSBvbmx5IHVz
ZWFibGUgYWZ0ZXIgdGhleSBhcmUgYWN0aXZhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSmF2YVNjcmlwdENvbnRleHRUYXJnZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9KYXZhU2Ny
aXB0Q29udGV4dFRhcmdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uNDhmZGU4MGEzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9KYXZhU2NyaXB0Q29udGV4dFRhcmdldC5qcwpAQCAtMCww
ICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuSmF2YVNjcmlwdENvbnRleHRUYXJnZXQgPSBjbGFz
cyBKYXZhU2NyaXB0Q29udGV4dFRhcmdldCBleHRlbmRzIFdJLlRhcmdldAoreworICAgIGNvbnN0
cnVjdG9yKHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgc3VwZXIo
dGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldC5UeXBlLkpTQ29udGV4dCwgY29ubmVjdGlvbik7CisK
KyAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0
KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZp
ZXIsIHRoaXMuZGlzcGxheU5hbWUsIGZhbHNlLCBudWxsKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdl
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5U
YXJnZXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMDg0ZmVkNzg0Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9NYWluVGFyZ2V0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLVdJLk1haW5UYXJnZXQgPSBjbGFzcyBNYWluVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0Ci17
Ci0gICAgY29uc3RydWN0b3IoY29ubmVjdGlvbikKLSAgICB7Ci0gICAgICAgIGxldCB7dHlwZSwg
ZGlzcGxheU5hbWV9ID0gTWFpblRhcmdldC5tYWluQ29ubmVjdGlvbkluZm8oKTsKLQotICAgICAg
ICBzdXBlcigibWFpbiIsIGRpc3BsYXlOYW1lLCB0eXBlLCBJbnNwZWN0b3JCYWNrZW5kLm1haW5D
b25uZWN0aW9uKTsKLQotICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4
ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHRydWUsIG51bGwpOwotICAgICAgICB0aGlz
Ll9tYWluUmVzb3VyY2UgPSBudWxsOwotICAgIH0KLQotICAgIC8vIFN0YXRpYwotCi0gICAgc3Rh
dGljIG1haW5Db25uZWN0aW9uSW5mbygpCi0gICAgewotICAgICAgICBzd2l0Y2ggKFdJLnNoYXJl
ZEFwcC5kZWJ1Z2dhYmxlVHlwZSkgewotICAgICAgICBjYXNlIFdJLkRlYnVnZ2FibGVUeXBlLkph
dmFTY3JpcHQ6Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFdJ
LlRhcmdldC5UeXBlLkpTQ29udGV4dCwKLSAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogV0ku
VUlTdHJpbmcoIkphdmFTY3JpcHQgQ29udGV4dCIpLAotICAgICAgICAgICAgfTsKLSAgICAgICAg
Y2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5TZXJ2aWNlV29ya2VyOgotICAgICAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5TZXJ2aWNlV29ya2VyLAot
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBXSS5VSVN0cmluZygiU2VydmljZVdvcmtlciIp
LAotICAgICAgICAgICAgfTsKLSAgICAgICAgY2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWI6Ci0g
ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFdJLlRhcmdldC5UeXBl
LlBhZ2UsCi0gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IFdJLlVJU3RyaW5nKCJQYWdlIiks
Ci0gICAgICAgICAgICB9OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29uc29sZS5l
cnJvcigiVW5leHBlY3RlZCBkZWJ1Z2dhYmxlIHR5cGU6ICIsIFdJLnNoYXJlZEFwcC5kZWJ1Z2dh
YmxlVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFdJ
LlRhcmdldC5UeXBlLlBhZ2UsCi0gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IFdJLlVJU3Ry
aW5nKCJNYWluIiksCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
UHJvdGVjdGVkIChUYXJnZXQpCi0KLSAgICBnZXQgbWFpblJlc291cmNlKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9tYWluUmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFp
blJlc291cmNlOwotCi0gICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5t
YWluRnJhbWU7Ci0gICAgICAgIHJldHVybiBtYWluRnJhbWUgPyBtYWluRnJhbWUubWFpblJlc291
cmNlIDogbnVsbDsKLSAgICB9Ci0KLSAgICBzZXQgbWFpblJlc291cmNlKHJlc291cmNlKQotICAg
IHsKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gcmVzb3VyY2U7Ci0gICAgfQotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011
bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNGZhMTVhNDZjMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxl
eGluZ0JhY2tlbmRUYXJnZXQuanMKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRo
aXMgY2xhc3MgaXMgdXNlZCB3aGVuIGNvbm5lY3RpbmcgdG8gYSB0YXJnZXQgd2hpY2ggbXVsdGlw
bGV4ZXMgdG8gb3RoZXIgdGFyZ2V0cy4KKy8vIFRoZSBtYWluIGNvbm5lY3Rpb24gaXMgdG8gYSB0
YXJnZXQgdGhhdCwgY3VycmVudGx5LCBoYXMgb25seSBhIFRhcmdldCBhZ2VudC4KKy8vIEFsbCBv
dGhlciBUYXJnZXRzIHdpbGwgaGF2ZSB0aGVpciBtZXNzYWdlcyBiZSBtdWx0aXBsZXhlZCB0aHJv
dWdoIHRoaXMKKy8vIG1haW4gY29ubmVjdGlvbidzIFRhcmdldCBhZ2VudC4KKworV0kuTXVsdGlw
bGV4aW5nQmFja2VuZFRhcmdldCA9IGNsYXNzIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0
ZW5kcyBXSS5UYXJnZXQKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBjb25z
dCB0eXBlID0gV0kuVGFyZ2V0LlR5cGUuUGFnZTsKKyAgICAgICAgY29uc3QgZGlzcGxheU5hbWUg
PSBXSS5VSVN0cmluZygiUGFnZSIpOworCisgICAgICAgIHN1cGVyKCJtdWx0aSIsIGRpc3BsYXlO
YW1lLCB0eXBlLCBJbnNwZWN0b3JCYWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uKTsKKworICAgICAg
ICAvLyBSZXN0cmljdCB0byBqdXN0IFRhcmdldEFnZW50LgorICAgICAgICBjb25zdCBzdXBwb3J0
ZWRNdWx0aXBsZXhpbmdEb21haW5zID0gWyJUYXJnZXQiXTsKKyAgICAgICAgbGV0IGFnZW50cyA9
IHRoaXMuX2FnZW50czsKKyAgICAgICAgdGhpcy5fYWdlbnRzID0ge307CisgICAgICAgIGZvciAo
bGV0IGRvbWFpbiBvZiBzdXBwb3J0ZWRNdWx0aXBsZXhpbmdEb21haW5zKQorICAgICAgICAgICAg
dGhpcy5fYWdlbnRzW2RvbWFpbl0gPSBhZ2VudHNbZG9tYWluXTsKKyAgICB9CisKKyAgICAvLyBU
YXJnZXQKKworICAgIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgLy8gSW50ZW50aW9uYWxs
eSBkbyBub3RoaW5nLCBpbmNsdWRpbmcgbm90IGNhbGxpbmcgc3VwZXIuCisgICAgICAgIC8vIE5v
IGFnZW50cyBvdGhlciB0aGFuIHRoZSBUYXJnZXRBZ2VudCwgbm90aGluZyB0byBpbml0aWFsaXpl
LgorICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAoVGFyZ2V0KQorCisgICAgZ2V0IG5hbWUoKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5lcnJvcigiQ2FsbGVkIG5hbWUgb24gYSBNdWx0aXBsZXhp
bmdCYWNrZW5kVGFyZ2V0Iik7CisgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiUGFnZSIpOwor
ICAgIH0KKworICAgIGdldCBleGVjdXRpb25Db250ZXh0KCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuZXJyb3IoIkNhbGxlZCBleGVjdXRpb25Db250ZXh0IG9uIGEgTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldCIpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBnZXQgbWFpblJl
c291cmNlKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNhbGxlZCBtYWluUmVzb3Vy
Y2Ugb24gYSBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0Iik7CisgICAgICAgIHJldHVybiBudWxs
OworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNGFkMzhiNGQwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5QYWdlVGFyZ2V0ID0gY2xhc3MgUGFnZVRhcmdldCBl
eHRlbmRzIFdJLlRhcmdldAoreworICAgIGNvbnN0cnVjdG9yKHRhcmdldElkLCBuYW1lLCBjb25u
ZWN0aW9uKQorICAgIHsKKyAgICAgICAgc3VwZXIodGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldC5U
eXBlLlBhZ2UsIGNvbm5lY3Rpb24pOworCisgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQg
PSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBXSS5SdW50aW1lTWFuYWdlci5Ub3BMZXZl
bENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0aGlzLm5hbWUsIHRydWUsIG51bGwpOworICAg
IH0KKworICAgIC8vIFByb3RlY3RlZCAoVGFyZ2V0KQorCisgICAgZ2V0IGRpc3BsYXlOYW1lKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBXSS5kaXNwbGF5TmFtZUZvclVSTCh0aGlzLl9uYW1lKTsK
KyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvVGFyZ2V0T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXRPYnNlcnZlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMjllNDg2ZWQ0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXRPYnNlcnZlci5q
cwpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuVGFyZ2V0T2JzZXJ2ZXIgPSBjbGFz
cyBUYXJnZXRPYnNlcnZlcgoreworICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiVGFyZ2V0
IiBkb21haW4uCisKKyAgICB0YXJnZXRDcmVhdGVkKHRhcmdldEluZm8pCisgICAgeworICAgICAg
ICBXSS50YXJnZXRNYW5hZ2VyLnRhcmdldENyZWF0ZWQodGFyZ2V0SW5mbyk7CisgICAgfQorCisg
ICAgdGFyZ2V0VGVybWluYXRlZCh0YXJnZXRJZCkKKyAgICB7CisgICAgICAgIFdJLnRhcmdldE1h
bmFnZXIudGFyZ2V0VGVybWluYXRlZCh0YXJnZXRJZCk7CisgICAgfQorCisgICAgZGlzcGF0Y2hN
ZXNzYWdlRnJvbVRhcmdldCh0YXJnZXRJZCwgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIFdJLnRh
cmdldE1hbmFnZXIuZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCh0YXJnZXRJZCwgbWVzc2FnZSk7
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbAppbmRleCBiZTYwZGQzMTU1OC4uYTgwZGIzNzdjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTczLDcgKzczLDggQEAKICAgICA8
c2NyaXB0IHNyYz0iUHJvdG9jb2wvTWVzc2FnZURpc3BhdGNoZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UYXJnZXQuanMiPjwvc2NyaXB0PgogCi0gICAgPHNjcmlw
dCBzcmM9IlByb3RvY29sL01haW5UYXJnZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJQcm90b2NvbC9EaXJlY3RCYWNrZW5kVGFyZ2V0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtlclRhcmdldC5qcyI+PC9zY3JpcHQ+CiAKICAg
ICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgpA
QCAtOTEsNiArOTIsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9SZW1vdGVPYmplY3Qu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9TY3JpcHRQcm9maWxlck9i
c2VydmVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvVGFyZ2V0T2Jz
ZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UaW1lbGluZU9i
c2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvV29ya2VyT2Jz
ZXJ2ZXIuanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggNWM2YjlkYzAwYWIuLmE2MTJiNjI0Y2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBA
IC0yNyw2ICsyNyw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBSZWdpc3Rl
ciBvYnNlcnZlcnMgZm9yIGV2ZW50cyBmcm9tIHRoZSBJbnNwZWN0b3JCYWNrZW5kLgogICAgIC8v
IFRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBzaG91bGQgbWF0Y2ggdGhlIHNhbWUgaW4gTWFpbi5q
cy4KKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyVGFyZ2V0RGlzcGF0Y2hlcihuZXcgV0ku
VGFyZ2V0T2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JE
aXNwYXRjaGVyKG5ldyBXSS5JbnNwZWN0b3JPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlclBhZ2VEaXNwYXRjaGVyKG5ldyBXSS5QYWdlT2JzZXJ2ZXIpOwogICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJDb25zb2xlRGlzcGF0Y2hlcihuZXcgV0kuQ29uc29sZU9ic2Vy
dmVyKTsKQEAgLTcxLDE1ICs3Miw1NyBAQCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgV0ku
c2V0dGluZ3Muc2hvd1NoYWRvd0RPTS52YWx1ZSA9IHRydWU7CiAKICAgICAvLyBUYXJnZXRzLgot
ICAgIFdJLm1haW5UYXJnZXQgPSBuZXcgV0kuTWFpblRhcmdldDsKLSAgICBXSS5tYWluVGFyZ2V0
LmluaXRpYWxpemUoKTsKLSAgICBXSS5wYWdlVGFyZ2V0ID0gV0kuc2hhcmVkQXBwLmRlYnVnZ2Fi
bGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIgPyBXSS5tYWluVGFyZ2V0IDogbnVsbDsK
KyAgICBXSS5iYWNrZW5kVGFyZ2V0ID0gbnVsbDsKKyAgICBXSS5wYWdlVGFyZ2V0ID0gbnVsbDsK
KworICAgIC8vIFRlc3RzIGRpcmVjdGx5IGNvbm5lY3QgdG8gYSBwYWdlIHRhcmdldC4KKyAgICBX
SS50YXJnZXRNYW5hZ2VyLmNyZWF0ZURpcmVjdEJhY2tlbmRUYXJnZXQoKTsKK307CisKK1dJLmlu
aXRpYWxpemVCYWNrZW5kVGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KQoreworICAgIFdJLmJhY2tl
bmRUYXJnZXQgPSB0YXJnZXQ7CisKKyAgICBXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0KCk7
Cit9OworCitXSS5pbml0aWFsaXplUGFnZVRhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKK3sKKyAg
ICBXSS5wYWdlVGFyZ2V0ID0gdGFyZ2V0OworCisgICAgV0kucmVkaXJlY3RHbG9iYWxBZ2VudHNU
b0Nvbm5lY3Rpb24oV0kucGFnZVRhcmdldC5jb25uZWN0aW9uKTsKKworICAgIFdJLnJlc2V0TWFp
bkV4ZWN1dGlvbkNvbnRleHQoKTsKK307CisKK1dJLnRyYW5zaXRpb25QYWdlVGFyZ2V0ID0gZnVu
Y3Rpb24odGFyZ2V0KQoreworICAgIGNvbnNvbGUuZXJyb3IoIldJLnRyYW5zaXRpb25QYWdlVGFy
Z2V0IHNob3VsZCBub3QgYmUgcmVhY2hlZCBpbiB0ZXN0cy4iKTsKK307CisKK1dJLnRlcm1pbmF0
ZVBhZ2VUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCit7CisgICAgY29uc29sZS5lcnJvcigiV0ku
dGVybWluYXRlUGFnZVRhcmdldCBzaG91bGQgbm90IGJlIHJlYWNoZWQgaW4gdGVzdHMuIik7Cit9
OworCitXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0ID0gZnVuY3Rpb24oKQoreworICAgIGNv
bnNvbGUuYXNzZXJ0KFdJLm1haW5UYXJnZXQuZXhlY3V0aW9uQ29udGV4dCk7CiAKLSAgICAvLyBQ
b3N0LXRhcmdldCBpbml0aWFsaXphdGlvbi4KLSAgICBXSS50YXJnZXRNYW5hZ2VyLmluaXRpYWxp
emVNYWluVGFyZ2V0KCk7CiAgICAgV0kucnVudGltZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29u
dGV4dCA9IFdJLm1haW5UYXJnZXQuZXhlY3V0aW9uQ29udGV4dDsKIH07CiAKK1dJLnJlZGlyZWN0
R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uID0gZnVuY3Rpb24oY29ubmVjdGlvbikKK3sKKyAgICAv
LyBUaGlzIG1ha2VzIGdsb2JhbCB3aW5kb3cuRm9vQWdlbnQgZGlzcGF0Y2ggdG8gdGhlIGFjdGl2
ZSBwYWdlIHRhcmdldC4KKyAgICBmb3IgKGxldCBkb21haW4gaW4gSW5zcGVjdG9yQmFja2VuZC5f
YWdlbnRzKSB7CisgICAgICAgIGlmIChkb21haW4gIT09ICJUYXJnZXQiKSB7CisgICAgICAgICAg
ICBsZXQgYWdlbnQgPSBJbnNwZWN0b3JCYWNrZW5kLl9hZ2VudHNbZG9tYWluXTsKKyAgICAgICAg
ICAgIGFnZW50LmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgICAgICB9CisgICAgfQorfTsK
KwogV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBTaWduYWwgdGhhdCB0
aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCkBAIC0xMDMsNiAr
MTQ2LDExIEBAIFdJLnBlcmZvcm1PbmVUaW1lRnJvbnRlbmRJbml0aWFsaXphdGlvbnNVc2luZ1Rh
cmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKICAgICB9CiB9OwogCitPYmplY3QuZGVmaW5lUHJvcGVy
dHkoV0ksICJtYWluVGFyZ2V0IiwKK3sKKyAgICBnZXQoKSB7IHJldHVybiBXSS5wYWdlVGFyZ2V0
IHx8IFdJLmJhY2tlbmRUYXJnZXQ7IH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoV0ks
ICJ0YXJnZXRzIiwKIHsKICAgICBnZXQoKSB7IHJldHVybiBXSS50YXJnZXRNYW5hZ2VyLnRhcmdl
dHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggZmRiZThiODczYjMu
LmJkNWJhNTdlN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpAQCAtMTgz
LDE3ICsxODMsMTMgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNp
ZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgdGhpcy5fY2Fs
bFN0YWNrVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZShzdXBwcmVz
c0ZpbHRlcmluZyk7CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja1RyZWVPdXRsaW5lLmFkZEV2ZW50
TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl90
cmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgICAgICB0aGlzLl9tYWluVGFyZ2V0
VHJlZUVsZW1lbnQgPSBuZXcgV0kuVGhyZWFkVHJlZUVsZW1lbnQoV0kubWFpblRhcmdldCk7Ci0g
ICAgICAgIHRoaXMuX2NhbGxTdGFja1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX21haW5U
YXJnZXRUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlQ2FsbFN0YWNrVHJlZU91
dGxpbmUoKTsKLQogICAgICAgICB0aGlzLl9jYWxsU3RhY2tSb3cgPSBuZXcgV0kuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja1Jvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2NhbGxTdGFja1RyZWVPdXRsaW5lLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2Nh
bGxTdGFja0dyb3VwID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX2NhbGxTdGFj
a1Jvd10pOwogICAgICAgICB0aGlzLl9jYWxsU3RhY2tTZWN0aW9uID0gbmV3IFdJLkRldGFpbHNT
ZWN0aW9uKCJjYWxsLXN0YWNrIiwgV0kuVUlTdHJpbmcoIkNhbGwgU3RhY2siKSwgW3RoaXMuX2Nh
bGxTdGFja0dyb3VwXSk7CiAKKyAgICAgICAgdGhpcy5fbWFpblRhcmdldFRyZWVFbGVtZW50ID0g
bnVsbDsKICAgICAgICAgdGhpcy5fYWN0aXZlQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBudWxsOwog
CiAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSBudWxsOwpAQCAtMjE1LDEw
ICsyMTEsMTQgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGVi
YXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgaWYgKEluc3BlY3Rv
ckJhY2tlbmQuZG9tYWlucy5EZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucyAmJiBXSS5zZXR0
aW5ncy5zaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LnZhbHVlKQogICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2Vy
dGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7CiAKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJ
LnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLl90YXJnZXRBZGRlZCh7ZGF0YToge3RhcmdldH19
KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ2FsbFN0YWNrVHJlZU91dGxpbmUoKTsKKwogICAgICAg
ICBpZiAoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lKQogICAgICAgICAgICAgdGhpcy5fYWRk
UmVzb3VyY2VzUmVjdXJzaXZlbHlGb3JGcmFtZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUp
OwogCi0gICAgICAgIGZvciAodmFyIHNjcmlwdCBvZiBXSS5kZWJ1Z2dlck1hbmFnZXIua25vd25O
b25SZXNvdXJjZVNjcmlwdHMpCisgICAgICAgIGZvciAobGV0IHNjcmlwdCBvZiBXSS5kZWJ1Z2dl
ck1hbmFnZXIua25vd25Ob25SZXNvdXJjZVNjcmlwdHMpCiAgICAgICAgICAgICB0aGlzLl9hZGRT
Y3JpcHQoc2NyaXB0KTsKIAogICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBv
cnRlZCkgewpAQCAtNzMzLDE1ICs3MzMsMjQgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBj
bGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAg
ICBfdGFyZ2V0QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQu
ZGF0YS50YXJnZXQ7CisgICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBXSS5NdWx0aXBsZXhp
bmdCYWNrZW5kVGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB0cmVl
RWxlbWVudCA9IG5ldyBXSS5UaHJlYWRUcmVlRWxlbWVudCh0YXJnZXQpOwogICAgICAgICB0aGlz
Ll9jYWxsU3RhY2tUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CiAKKyAgICAg
ICAgaWYgKHRhcmdldCA9PT0gV0kubWFpblRhcmdldCkKKyAgICAgICAgICAgIHRoaXMuX21haW5U
YXJnZXRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50OworCiAgICAgICAgIHRoaXMuX3VwZGF0ZUNh
bGxTdGFja1RyZWVPdXRsaW5lKCk7CiAgICAgfQogCiAgICAgX3RhcmdldFJlbW92ZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7CisgICAgICAg
IGlmICh0YXJnZXQgaW5zdGFuY2VvZiBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KQorICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IHRoaXMuX2ZpbmRU
aHJlYWRUcmVlRWxlbWVudEZvclRhcmdldCh0YXJnZXQpOwogICAgICAgICB0aGlzLl9jYWxsU3Rh
Y2tUcmVlT3V0bGluZS5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCk7CiAKQEAgLTc1MCw5ICs3NTks
MTAgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5l
bCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgIF91cGRhdGVDYWxsU3RhY2tUcmVl
T3V0bGluZSgpCiAgICAgewotICAgICAgICBsZXQgc2luZ2xlVGhyZWFkU2hvd2luZyA9IFdJLnRh
cmdldHMuc2l6ZSA9PT0gMTsKKyAgICAgICAgbGV0IHNpbmdsZVRocmVhZFNob3dpbmcgPSBXSS50
YXJnZXRzLmxlbmd0aCA8PSAxOwogICAgICAgICB0aGlzLl9jYWxsU3RhY2tUcmVlT3V0bGluZS5l
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10aHJlYWQiLCBzaW5nbGVUaHJlYWRTaG93
aW5nKTsKLSAgICAgICAgdGhpcy5fbWFpblRhcmdldFRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSAh
c2luZ2xlVGhyZWFkU2hvd2luZzsKKyAgICAgICAgaWYgKHRoaXMuX21haW5UYXJnZXRUcmVlRWxl
bWVudCkKKyAgICAgICAgICAgIHRoaXMuX21haW5UYXJnZXRUcmVlRWxlbWVudC5zZWxlY3RhYmxl
ID0gIXNpbmdsZVRocmVhZFNob3dpbmc7CiAgICAgfQogCiAgICAgX2hhbmRsZURlYnVnZ2VyT2Jq
ZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFi
bGVDb250ZW50Vmlldy5qcwppbmRleCA4ZDlkY2JlNTNhZi4uZjhmZjVhZGQxMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCkBAIC0xMzgsNiArMTM4LDEzIEBAIFdJ
Lk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIFdJLnRpbWVsaW5lTWFuYWdlci5wZXJzaXN0
ZW50TmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmUuRXZlbnQuUmVj
b3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIAogICAg
ICAgICB0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSA9IHRydWU7CisKKyAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIG9yZGVyIG9mIGV2ZW50cy4gTm9ybWFsIHBh
Z2UgbmF2aWdhdGlvbgorICAgICAgICAvLyB0cmlnZ2VycyBhIE1haW5SZXNvdXJjZSBjaGFuZ2Ug
YW5kIHRoZW4gYSBNYWluRnJhbWUgY2hhbmdlLiBQYWdlIFRyYW5zaXRpb24KKyAgICAgICAgLy8g
dHJpZ2dlcnMgYSBNYWluRnJhbWUgY2hhbmdlIHRoZW4gYSBNYWluUmVzb3VyY2UgY2hhbmdlLgor
ICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZhbHNlOworICAgICAgICAK
KyAgICAgICAgV0kubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdJLk5vdGlmaWNhdGlv
bi5UcmFuc2l0aW9uUGFnZVRhcmdldCwgdGhpcy5fdHJhbnNpdGlvblBhZ2VUYXJnZXQsIHRoaXMp
OwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtMTQwMSw2ICsxNDA4LDEzIEBAIFdJLk5ldHdv
cmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmllCiAKICAgICAgICAgdGhpcy5yZXNldCgpOwogCisgICAgICAgIGlmICh0
aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkgeworICAgICAgICAgICAgdGhpcy5fdHJhbnNp
dGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX25lZWRzSW5pdGlh
bFBvcHVsYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlV2l0aEluaXRpYWxS
ZXNvdXJjZXNJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAg
ICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShmcmFtZS5tYWluUmVzb3Vy
Y2UpOwogICAgIH0KIApAQCAtMTk5NCw0ICsyMDA4LDkgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVu
dFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWUKICAgICB7CiAgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZFZpc2libGVDb2x1bW5DZWxscyh0
aGlzLl93YXRlcmZhbGxDb2x1bW4pOwogICAgIH0KKworICAgIF90cmFuc2l0aW9uUGFnZVRhcmdl
dChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0g
dHJ1ZTsKKyAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCmluZGV4IGFmZmVkMzI4MGIyLi4xZDIz
YmM0MzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAtMzIsNyArMzIsOCBAQCBXSS5RdWlja0Nv
bnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMu
X3RvZ2dsZU9yRm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQo
bnVsbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZvY3Vz
LmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5Ym9hcmRTaG9ydGN1
dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fbWFp
bkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnQoV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0KTsKKyAgICAg
ICAgdGhpcy5fbWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5pbml0aWFsaXplTWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50KCk7CiAK
ICAgICAgICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsK
ICAgICAgICAgdGhpcy5fZnJhbWVUb1BhdGhDb21wb25lbnQgPSBuZXcgTWFwOwpAQCAtMTEwLDYg
KzExMSwxNCBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogICAgIH0KIAorICAgIGluaXRpYWxpemVN
YWluRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoKQorICAgIHsKKyAgICAgICAgaWYgKCFX
SS5tYWluVGFyZ2V0IHx8ICFXSS5tYWluVGFyZ2V0LmV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29t
cG9uZW50ID0gdGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoV0kubWFp
blRhcmdldC5leGVjdXRpb25Db250ZXh0KTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAog
ICAgIGxheW91dCgpCkBAIC0zMDksNiArMzE4LDkgQEAgV0kuUXVpY2tDb25zb2xlID0gY2xhc3Mg
UXVpY2tDb25zb2xlIGV4dGVuZHMgV0kuVmlldwogICAgIF90YXJnZXRBZGRlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAgICAgaWYg
KHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5Xb3JrZXIpCisgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0LnR5cGUgPT09IFdJLlRhcmdldC5U
eXBlLldvcmtlcik7CiAgICAgICAgIGxldCBwcmVmZXJyZWROYW1lID0gV0kuVUlTdHJpbmcoIldv
cmtlciBcdTIwMTQgJXMiKS5mb3JtYXQodGFyZ2V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgbGV0
IGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnQodGFyZ2V0LmV4ZWN1dGlvbkNvbnRleHQsIHByZWZlcnJlZE5hbWUp
OwpAQCAtMzIwLDYgKzMzMiw5IEBAIFdJLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29s
ZSBleHRlbmRzIFdJLlZpZXcKICAgICBfdGFyZ2V0UmVtb3ZlZChldmVudCkKICAgICB7CiAgICAg
ICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAgICAgaWYgKHRhcmdldC50
eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5Xb3JrZXIpCisgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fdGFyZ2V0VG9Q
YXRoQ29tcG9uZW50LnRha2UodGFyZ2V0KTsKICAgICAgICAgdGhpcy5fcmVtb3ZlT3RoZXJFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudChleGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDI4N2NkNzY1Mjgz
Li45OTFkZDc2OTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCkBA
IC0yNTgsNiArMjU4LDcgQEAgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRp
bmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmkKICAgICAgICAgZXhwZXJp
bWVudGFsU2V0dGluZ3NWaWV3LmFkZFNldHRpbmcoV0kuVUlTdHJpbmcoIlVzZXIgSW50ZXJmYWNl
OiIpLCBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXIsIFdJLlVJU3RyaW5n
KCJFbmFibGUgTmV3IFRhYiBCYXIiKSk7CiAgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmll
dy5hZGRTZXBhcmF0b3IoKTsKIAorICAgICAgICAvLyBGSVhNRTogUmVsb2FkIFdlYiBJbnNwZWN0
b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuCiAgICAgICAg
IGxldCByZWxvYWRJbnNwZWN0b3JCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0
b24iKTsKICAgICAgICAgcmVsb2FkSW5zcGVjdG9yQnV0dG9uLnRleHRDb250ZW50ID0gV0kuVUlT
dHJpbmcoIlJlbG9hZCBXZWIgSW5zcGVjdG9yIik7CiAgICAgICAgIHJlbG9hZEluc3BlY3RvckJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsgd2luZG93LmxvY2F0aW9uLnJl
bG9hZCgpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggZjM2ZGQw
NjFjZjQuLjc5MWMyZTUyYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpA
QCAtNjY3LDI1ICs2NjcsMjggQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3Vy
Y2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKIAogICAgIF90YXJnZXRBZGRl
ZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChXSS50YXJnZXRzLnNpemUgPT09IDIpCisgICAg
ICAgIGlmIChXSS50YXJnZXRzLmxlbmd0aCA9PT0gMikKICAgICAgICAgICAgIHRoaXMuX3JlaW5z
ZXJ0QWxsVGhyZWFkSW5kaWNhdG9ycygpOwogICAgIH0KIAogICAgIF90YXJnZXRSZW1vdmVkKGV2
ZW50KQogICAgIHsKLSAgICAgICAgaWYgKFdJLnRhcmdldHMuc2l6ZSA9PT0gMSkgeworICAgICAg
ICBpZiAoV0kudGFyZ2V0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgIC8vIEJhY2sgdG8g
b25lIHRocmVhZCwgcmVtb3ZlIHRocmVhZCBpbmRpY2F0b3JzLgogICAgICAgICAgICAgdGhpcy5f
cmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7CisgICAgICAg
IGlmICh0YXJnZXQgaW5zdGFuY2VvZiBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KQorICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMuX3JlbW92ZVRocmVhZEluZGljYXRvckZv
clRhcmdldCh0YXJnZXQpOwogICAgIH0KIAogICAgIF9jYWxsRnJhbWVzRGlkQ2hhbmdlKGV2ZW50
KQogICAgIHsKLSAgICAgICAgaWYgKFdJLnRhcmdldHMuc2l6ZSA9PT0gMSkKKyAgICAgICAgaWYg
KFdJLnRhcmdldHMubGVuZ3RoID09PSAxKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKQEAgLTc3MSw3ICs3NzQsNyBAQCBXSS5T
b3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMg
V0kuVGV4dEVkaXRvcgogICAgICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBjb25zb2xlLmFzc2VydChXSS50YXJnZXRzLnNpemUgPiAxKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoV0kudGFyZ2V0cy5sZW5ndGggPiAxKTsKIAogICAgICAgICBsZXQgd2lk
Z2V0RWxlbWVudCA9IHdpZGdldC53aWRnZXRFbGVtZW50OwogICAgICAgICB3aWRnZXRFbGVtZW50
LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0xNTY5LDggKzE1NzIsOSBAQCBXSS5Tb3VyY2VDb2RlVGV4
dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRv
cgogICAgICAgICAvLyBDbGVhciBvdGhlciBtYXBzLgogICAgICAgICB0aGlzLl90aHJlYWRUYXJn
ZXRNYXAuY2xlYXIoKTsKIAotICAgICAgICBpZiAoV0kudGFyZ2V0cy5zaXplID4gMSkgewotICAg
ICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgIGxldCBkZWJ1
Z2dhYmxlVGFyZ2V0cyA9IFdJLnRhcmdldHM7CisgICAgICAgIGlmIChkZWJ1Z2dhYmxlVGFyZ2V0
cy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgZGVidWdnYWJs
ZVRhcmdldHMpCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkVGhyZWFkSW5kaWNhdG9yRm9yVGFy
Z2V0KHRhcmdldCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkODgxN2I0MTYxLi41
MzhmZjc1MDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTIgQEAKKzIwMTgtMTEtMDkgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBLZWVwIFdlYiBJbnNwZWN0b3Igd2luZG93IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQ
U09OKSAoUmVtb3RlIEluc3BlY3RvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gc3Vw
cG9ydCBwcm9jZXNzIHN3YXBwaW5nIGEgc2xpbSBXZWIgSW5zcGVjdG9yIGJhY2tlbmQgbGl2ZXMg
aW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgVGhlIFdlYiBJbnNwZWN0b3IgZnJvbnRlbmQgY29u
bmVjdHMgdG8gaXQgYW5kIGlzIHRvbGQgYWJvdXQgc3ViLXRhcmdldHMsIG5hbWVseQorICAgICAg
ICBwYWdlcywgdGhhdCBpdCBjYW4gZnVydGhlciBjb25uZWN0IHRvLiBXaGVuIHBlcmZvcm1pbmcg
YSBwcm9jZXNzIHN3YXAgdGhlIGJhY2tlbmQKKyAgICAgICAgdGVsbHMgdGhlIGZyb250ZW5kIHRv
IGRlc3Ryb3kgZXhpc3RpbmcgdGFyZ2V0cyBhbmQgY3JlYXRlIG5ldyB0YXJnZXRzLgorCisgICAg
ICAgIEluIHRoZSBVSVByb2Nlc3MgdGhlIFdlYlBhZ2VQcm94eSBoYXMgYSBXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlciwgd2l0aCBhIHNpbmdsZQorICAgICAgICBUYXJnZXRBZ2VudCBob2xkaW5n
IEluc3BlY3RvclRhcmdldFByb3hpZXMgdG8gdGFyZ2V0cyBpdCBrbm93cyBhYm91dC4gSW5zcGVj
dG9yCisgICAgICAgIHByb3RvY29sIG1lc3NhZ2VzIGdvIHRocm91Z2ggdGhpcyBpbnNwZWN0b3Ig
Y29udHJvbGxlciBhbmQgYXJlIHJvdXRlZCB0byB0aGUKKyAgICAgICAgV2ViUGFnZSBhbmQgaXRz
IFdlYkNvcmU6OlBhZ2UncyBJbnNwZWN0b3JDb250cm9sbGVyLiBUaGUgV2ViUGFnZVByb3h5IGRl
Y2lkZXMKKyAgICAgICAgd2hlbiB0byBjbG9zZSBhbmQgZXhwb3NlIG5ldyBwYWdlIHRhcmdldHMg
ZHVyaW5nIHByb2Nlc3Mgc3dhcCwgb3IgYmFzaWNhbGx5CisgICAgICAgIGFueSB0aW1lIGl0IHJl
Y29ubmVjdHMgdG8gYSBXZWJQcm9jZXNzLiBTbyB0aGlzIHBhdGNoIGFsc28gbWFrZXMgV2ViIElu
c3BlY3RvcgorICAgICAgICBzdGF5IGFsaXZlIGFuZCByZWNvbm5lY3QgdG8gYSBwYWdlIHdoZW4g
dGhlIGluc3BlY3RlZCBwYWdlIGNyYXNoZXMhCisKKyAgICAgICAgSW4gdGhlIFdlYkNvbnRlbnRQ
cm9jZXNzIHRoZSBXZWJQYWdlIGhhcyBhIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuIEl0IGFsc28K
KyAgICAgICAgaGFzIGEgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIgaW4gYW50aWNp
cGF0aW9uIG9mIGZ1cnRoZXIgc3ViLXRhcmdldHMKKyAgICAgICAgd2l0aGluIHRoZSBwYWdlICh3
b3JrZXJzLCBmcmFtZXMpIGJ1dCBub25lIGV4aXN0IGF0IHRoZSBtb21lbnQuIFRoZSBXZWJQYWdl
CisgICAgICAgIHJlbGllcyBvbiB0aGUgV2ViUGFnZVByb3h5IHRvIGtub3cgd2hlbiB0byBleHBv
c2UgdGhpcyB0YXJnZXQgYXMgYSBkZWJ1Z2dhYmxlLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE5l
dyBmaWxlcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAg
ICBSZW1vdGUgaW5zcGVjdG9yIHN0YXRlIGNhbiBub3cgc3RheSBpbiB0aGUgVUlQcm9jZXNzIGFu
ZCBkb2VzIG5vdCBuZWVkIHRvCisgICAgICAgIGJlIHBhc3NlZCBkb3duIHRvIHRoZSBXZWJDb250
ZW50UHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlRGVidWdnYWJsZS5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6V2ViUGFnZURlYnVnZ2FibGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlciBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdn
YWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZURl
YnVnZ2FibGU6OnNldE5hbWVPdmVycmlkZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VE
ZWJ1Z2dhYmxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2Fi
bGUuaC4KKyAgICAgICAgUmVtb3RlIGRlYnVnZ2FibGUgZW50cnkgcG9pbnQgaW50byB0aGUgVUlQ
cm9jZXNzIGZvciBhIHBhZ2UuCisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggaWRlbnRpY2Fs
IHRvIHRoZSBQYWdlRGVidWdnYWJsZSBpbiBXZWJDb3JlLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNldEluZGljYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmFsbG93c1JlbW90ZUluc3BlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9u
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3Rv
clRhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZUluc3BlY3Rv
clRhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1l
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Omluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJp
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBPd24gbW9yZSBpbnNwZWN0b3Igc3RhdGUgaW4g
dGhlIFVJUHJvY2VzcyBpbmNsdWRpbmcgYSBkZWJ1Z2dhYmxlIGFuZCBpbnNwZWN0b3IgY29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6
OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluZGljYXRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJUYXJn
ZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0
ZUluc3BlY3RvclRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZCk6Cisg
ICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIgd2l0aCBhIHNpbmdsZSBUYXJnZXRBZ2VudCBpbiB0
aGUgVUlQcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRBZ2VudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Oldl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6ZnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgVGFyZ2V0IGFnZW50
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJnZXRQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5Ojpjb25uZWN0KToK
KyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yVGFyZ2V0UHJveHk6OmRpc2Nvbm5lY3QpOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJh
Y2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAg
ICAgICBVSVByb2Nlc3MgcHJveHkgZm9yIGFuIEluc3BlY3RvclRhcmdldCBpbiB0aGUgV2ViQ29u
dGVudFByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRl
cm5hbCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fc2hvdWxkQXR0YWNoRHJhd2luZ0FyZWFPblBhZ2VUcmFuc2l0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29ubmVjdEluc3BlY3Rvcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpc2Nvbm5lY3RJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluZGljYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0OjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUlu
c3BlY3RvclRhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQpOgorICAgICAgICBJbnNw
ZWN0b3JUYXJnZXQgZm9yIHRoaXMgV2ViUGFnZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6V2ViUGFnZUluc3Bl
Y3RvclRhcmdldENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Q29udHJvbGxlcjo6fldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OmFkZFRhcmdl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyOjpy
ZW1vdmVUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29u
dHJvbGxlcjo6Y29ubmVjdEluc3BlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRDb250cm9sbGVyOjpkaXNjb25uZWN0SW5zcGVjdG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OnNlbmRNZXNzYWdlVG9UYXJn
ZXRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI6OnNlbmRNZXNzYWdlVG9UYXJnZXRGcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZy
b250ZW5kQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRGcm9udGVuZENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVu
ZENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRl
bmRDaGFubmVsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBQcmVwYXJhdGlvbiBm
b3IgbW9yZSB0YXJnZXQgbWFuYWdtZW50IGluIHRoZSBXZWJDb250ZW50UHJvY2Vzcy4KKwogMjAx
OC0xMS0wOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gRHJhdyBjYXBzIGxvY2sgaW5kaWNhdG9yIGluIHBhc3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNzVkYjFhNmFkNTIuLjFjNTkxMTM3
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTM4OSw2
ICszODksNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ01hY2hTZW5k
UmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPiddLAogICAgICAgICAnSlNDOjpNZXNzYWdl
TGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0pT
Qzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAor
ICAgICAgICAnSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlJzogWyc8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yVGFyZ2V0Lmg+J10sCiAgICAgICAgICdNb25vdG9uaWNUaW1lJzogWyc8d3Rm
L01vbm90b25pY1RpbWUuaD4nXSwKICAgICAgICAgJ1NlY29uZHMnOiBbJzx3dGYvU2Vjb25kcy5o
PiddLAogICAgICAgICAnV2FsbFRpbWUnOiBbJzx3dGYvV2FsbFRpbWUuaD4nXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
YTc3NzQzOWY4ZTkuLjQxY2QzNDA2ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzQsMTAgKzc0LDYgQEAgdm9pZCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7
CiAgICAgZW5jb2RlciA8PCBjb250cm9sbGVkQnlBdXRvbWF0aW9uOwogCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0gICAgZW5jb2RlciA8PCBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uOwot
ICAgIGVuY29kZXIgPDwgcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZTsKLSNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7CiAgICAgZW5jb2RlciA8
PCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwpAQCAtMjMxLDEzICsyMjcsNiBAQCBzdGQ6Om9wdGlvbmFs
PFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb250cm9sbGVk
QnlBdXRvbWF0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5h
bGxvd3NSZW1vdGVJbnNwZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVy
cmlkZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMjA1YjE5YWIyNDIuLjdiZjUxNzg0
ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC0xMzAsMTEgKzEzMCw2IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKIAogICAgIGJvb2wgY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAotI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgIGJvb2wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKLSAgICBT
dHJpbmcgcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0
ZW1BcHBlYXJhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZWRiYjVlMWY2NzkuLmRjNWMxZTE2OTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTIyNyw2ICsyMjcsNyBAQCBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5jcHAKIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAKIFVJUHJvY2Vzcy9HZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKK1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94
eS5jcHAKIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAogVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcAogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCkBAIC0yNjgs
OSArMjY5LDEyIEBAIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNw
cAogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCitVSVByb2Nl
c3MvV2ViUGFnZURlYnVnZ2FibGUuY3BwCiBVSVByb2Nlc3MvV2ViUGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKIFVJUHJvY2Vzcy9XZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCitVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmNwcAog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
Y3BwCiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC01MzEsNiArNTM1LDkgQEAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAor
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCitXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwCitXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAKIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
VGFza1Byb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFy
Z2V0UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZGUz
Y2M3NDUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3RvclRhcmdldFByb3h5LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvclRhcmdldFByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitSZWY8
SW5zcGVjdG9yVGFyZ2V0UHJveHk+IEluc3BlY3RvclRhcmdldFByb3h5OjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3Rv
clRhcmdldFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JU
YXJnZXRQcm94eShwYWdlLCB0YXJnZXRJZCwgdHlwZSkpOworfQorCitJbnNwZWN0b3JUYXJnZXRQ
cm94eTo6SW5zcGVjdG9yVGFyZ2V0UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKKyAgICA6
IG1fcGFnZShwYWdlKQorICAgICwgbV9pZGVudGlmaWVyKHRhcmdldElkKQorICAgICwgbV90eXBl
KHR5cGUpCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqKQoreworICAgIGlmIChtX3BhZ2UuaXNWYWxpZCgpKQorICAg
ICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNw
ZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKwordm9pZCBJbnNwZWN0
b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopCit7
CisgICAgaWYgKG1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBt
X3BhZ2UucGFnZUlEKCkpOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpzZW5kTWVz
c2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1f
cGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdl
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzEyMDJiZWE4ZjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZVByb3h5OworCisvLyBOT1RFOiBUaGlzIFVJUHJvY2VzcyBzaWRlIEluc3Bl
Y3RvclRhcmdldCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlIGZyb250ZW5kIGNoYW5uZWwsIHNpbmNl
CisvLyBhbnkgdGFyZ2V0IC0+IGZyb250ZW5kIG1lc3NhZ2VzIHdpbGwgYmUgcm91dGVkIHRvIHRo
ZSBXZWJQYWdlUHJveHkgd2l0aCBhIHRhcmdldElkLgorCitjbGFzcyBJbnNwZWN0b3JUYXJnZXRQ
cm94eSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldCwgcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yVGFyZ2V0UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUYXJnZXRQcm94eSk7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JUYXJnZXRQcm94eT4gY3JlYXRlKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFy
Z2V0VHlwZSk7CisgICAgSW5zcGVjdG9yVGFyZ2V0UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlKTsKKyAgICB+
SW5zcGVjdG9yVGFyZ2V0UHJveHkoKSA9IGRlZmF1bHQ7CisKKyAgICBJbnNwZWN0b3I6Okluc3Bl
Y3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHlwZTsgfQorICAg
IFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2
b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgSW5z
cGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA2MzlhMTJiMTRkYy4uN2VkMjY3YjY0OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjkyZGZkZTNjOGNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2FibGUuY3BwCkBAIC0wLDAgKzEsOTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZURlYnVnZ2FibGUuaCIKKworI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgorI2luY2x1ZGUg
IldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitX
ZWJQYWdlRGVidWdnYWJsZTo6V2ViUGFnZURlYnVnZ2FibGUoV2ViUGFnZVByb3h5JiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmluZyBXZWJQYWdlRGVidWdnYWJsZTo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hbWVPdmVycmlkZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIG1fbmFtZU92ZXJyaWRlOworCisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1lKCkt
PnRpdGxlKCk7Cit9CisKK1N0cmluZyBXZWJQYWdlRGVidWdnYWJsZTo6dXJsKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fcGFnZS5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluRnJhbWUoKS0+dXJsKCkuc3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgPyAiYWJvdXQ6YmxhbmsiX3MgOiB1cmw7Cit9CisKK2Jv
b2wgV2ViUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmhhc0xvY2FsRnJvbnRlbmQoKTsKK30K
Kwordm9pZCBXZWJQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCogY2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24sIGJvb2wgaW1tZWRpYXRl
bHlQYXVzZSkKK3sKKyAgICBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29u
dHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci5jb25uZWN0RnJvbnRlbmQoY2hhbm5lbCwgaXNBdXRvbWF0aWNDb25uZWN0aW9uLCBp
bW1lZGlhdGVseVBhdXNlKTsKK30KKwordm9pZCBXZWJQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVj
dChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sKKyAgICBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JD
b250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQo
Y2hhbm5lbCk7Cit9CisKK3ZvaWQgV2ViUGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fcGFnZS5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworfQorCit2
b2lkIFdlYlBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKK3sK
KyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluZGljYXRpbmcoaW5kaWNhdGlu
Zyk7Cit9CisKK3ZvaWQgV2ViUGFnZURlYnVnZ2FibGU6OnNldE5hbWVPdmVycmlkZShjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgbV9uYW1lT3ZlcnJpZGUgPSBuYW1lOworICAgIHVwZGF0ZSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZURl
YnVnZ2FibGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VEZWJ1Z2dhYmxlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFiMjE0YmQ0NzU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2FibGUu
aApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKKworY2xhc3MgV2ViUGFnZURlYnVnZ2FibGUgZmluYWwgOiBwdWJsaWMgSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJQYWdlRGVidWdnYWJsZSk7CitwdWJs
aWM6CisgICAgV2ViUGFnZURlYnVnZ2FibGUoV2ViUGFnZVByb3h5Jik7CisgICAgfldlYlBhZ2VE
ZWJ1Z2dhYmxlKCkgPSBkZWZhdWx0OworCisgICAgSW5zcGVjdG9yOjpSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQ6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpUeXBlOjpXZWI7IH0KKworICAgIFN0cmluZyBuYW1lKCkg
Y29uc3QgZmluYWw7CisgICAgU3RyaW5nIHVybCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFz
TG9jYWxEZWJ1Z2dlcigpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBjb25uZWN0KEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24gPSBmYWxzZSwg
Ym9vbCBpbW1lZGlhdGVseVBhdXNlID0gZmFsc2UpIGZpbmFsOworICAgIHZvaWQgZGlzY29ubmVj
dChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQg
c2V0SW5kaWNhdGluZyhib29sKSBmaW5hbDsKKworICAgIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lT3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldE5hbWVP
dmVycmlkZShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlUHJveHkmIG1f
cGFnZTsKKyAgICBTdHJpbmcgbV9uYW1lT3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DT05UUk9MTEFCTEVfVEFSR0VUKFdlYktp
dDo6V2ViUGFnZURlYnVnZ2FibGUsIFdlYik7CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uOTUwNTgzMjU4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUg
IldlYkZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
aCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZy
b250ZW5kUm91dGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCitXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAg
LCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVy
LmNvcHlSZWYoKSkpCit7CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKworICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2Vu
dC5nZXQoKTsKKworICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHRhcmdldEFnZW50KSk7Cit9
CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnBhZ2VDbG9zZWQoKQoreworICAg
IGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKKworICAgIG1fYWdlbnRzLmRpc2NhcmRWYWx1ZXMo
KTsKK30KKworYm9vbCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVu
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJvbnRlbmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRl
bmQoKTsKK30KKworYm9vbCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVtb3RlRnJv
bnRlbmQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Zyb250ZW5kUm91dGVyLT5oYXNSZW1vdGVG
cm9udGVuZCgpOworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9v
bCwgYm9vbCkKK3sKKyAgICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFu
bmVsKTsKKworICAgIGJvb2wgY29ubmVjdGVkRmlyc3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91
dGVyLT5oYXNGcm9udGVuZHMoKTsKKworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9u
dGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAgaWYgKGNvbm5lY3RlZEZpcnN0RnJvbnRlbmQp
CisgICAgICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVu
ZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworCisgICAgbV9wYWdl
LmRpZENoYW5nZUluc3BlY3RvckZyb250ZW5kQ291bnQobV9mcm9udGVuZFJvdXRlci0+ZnJvbnRl
bmRDb3VudCgpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9m
cm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICAgICAgbV9wYWdlLnJlbW90
ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsKQoreworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RG
cm9udGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAgYm9vbCBkaXNjb25uZWN0ZWRMYXN0RnJv
bnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CisgICAgaWYgKGRpc2Nv
bm5lY3RlZExhc3RGcm9udGVuZCkKKyAgICAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAg
IG1fcGFnZS5kaWRDaGFuZ2VJbnNwZWN0b3JGcm9udGVuZENvdW50KG1fZnJvbnRlbmRSb3V0ZXIt
PmZyb250ZW5kQ291bnQoKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBp
ZiAoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpKQorICAgICAgICBtX3BhZ2UucmVt
b3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgorfQorCit2b2lkIFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCkKK3sKKyAg
ICAvLyBGSVhNRTogSGFuZGxlIGEgbG9jYWwgaW5zcGVjdG9yIGNsaWVudC4KKworICAgIGlmICgh
bV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIE5vdGlmeSBhZ2VudHMgZmlyc3QsIHNpbmNlIHRoZXkgbWF5IG5lZWQgdG8gdXNlIEluc3Bl
Y3RvckNsaWVudC4KKyAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworCisgICAgLy8gRGlz
Y29ubmVjdCBhbnkgcmVtYWluaW5nIHJlbW90ZSBmcm9udGVuZHMuCisgICAgbV9mcm9udGVuZFJv
dXRlci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOworCisgICAgbV9wYWdlLmRpZENoYW5nZUlu
c3BlY3RvckZyb250ZW5kQ291bnQobV9mcm9udGVuZFJvdXRlci0+ZnJvbnRlbmRDb3VudCgpKTsK
KworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0
b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7
Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluZGljYXRpbmcoYm9v
bCBpbmRpY2F0aW5nKQoreworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIG1fcGFnZS5z
ZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOworI2Vsc2UKKyAgICBpZiAoaW5kaWNhdGluZykKKyAg
ICAgICAgbV9wYWdlLnNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CisgICAgZWxzZQorICAgICAg
ICBtX3BhZ2UuaGlkZUluc3BlY3RvckluZGljYXRpb24oKTsKKyNlbmRpZgorfQorCit2b2lkIFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpjbGVhclRhcmdldHMoKQoreworICAgIGZvciAoYXV0
byYgdGFyZ2V0IDogbV90YXJnZXRzKQorICAgICAgICBtX3RhcmdldEFnZW50LT50YXJnZXRUZXJt
aW5hdGVkKCp0YXJnZXQuZ2V0KCkpOworCisgICAgbV90YXJnZXRzLmNsZWFyKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUluc3BlY3RvclRhcmdldChjb25z
dCBTdHJpbmcmIHRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkK
K3sKKyAgICBhdXRvIHRhcmdldCA9IEluc3BlY3RvclRhcmdldFByb3h5OjpjcmVhdGUobV9wYWdl
LCB0YXJnZXRJZCwgdHlwZSk7CisgICAgbV90YXJnZXRzLmFwcGVuZChtYWtlUmVmUHRyKHRhcmdl
dC5nZXQoKSkpOworCisgICAgbV90YXJnZXRBZ2VudC0+dGFyZ2V0Q3JlYXRlZCh0YXJnZXQuZ2V0
KCkpOworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkZXN0cm95SW5zcGVj
dG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgYXV0byBwb3NpdGlvbiA9
IG1fdGFyZ2V0cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0
ZW0tPmlkZW50aWZpZXIoKSA9PSB0YXJnZXRJZDsgfSk7CisgICAgaWYgKHBvc2l0aW9uID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiB0YXJnZXQgPSBtX3RhcmdldHNb
cG9zaXRpb25dOworICAgIG1fdGFyZ2V0QWdlbnQtPnRhcmdldFRlcm1pbmF0ZWQoKnRhcmdldC5n
ZXQoKSk7CisKKyAgICBtX3RhcmdldHMucmVtb3ZlKHBvc2l0aW9uKTsKK30KKwordm9pZCBXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNv
bnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3Rh
cmdldEFnZW50LT5zZW5kTWVzc2FnZUZyb21UYXJnZXRUb0Zyb250ZW5kKHRhcmdldElkLCBtZXNz
YWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWQ1MzBkYmFhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3BlY3RvclRhcmdldFByb3h5LmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldEFnZW50Lmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlz
cGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsKKworICAgIHZvaWQgcGFnZUNsb3NlZCgp
OworCisgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CisgICAgYm9vbCBoYXNSZW1v
dGVGcm9udGVuZCgpIGNvbnN0OworCisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlLCBi
b29sIGltbWVkaWF0ZWx5UGF1c2UgPSBmYWxzZSk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RBbGxG
cm9udGVuZHMoKTsKKworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisKKyAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CisKKyAg
ICB2b2lkIGNsZWFyVGFyZ2V0cygpOworICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yVGFyZ2V0KGNv
bnN0IFN0cmluZyYgdGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSk7Cisg
ICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOwor
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdGFy
Z2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZVBy
b3h5JiBtX3BhZ2U7CisgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRl
bmRSb3V0ZXI7CisgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7CisgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAg
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQqIG1fdGFyZ2V0QWdlbnQ7CisgICAgVmVj
dG9yPFJlZlB0cjxJbnNwZWN0b3JUYXJnZXRQcm94eT4+IG1fdGFyZ2V0czsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjNhZTkxYTI0MjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU3R1YkZyb250ZW5kQ2hhbm5lbCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgdmlydHVhbCBDb25uZWN0
aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KK307CisK
K1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudDo6V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50
KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICA6IEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQoZnJvbnRlbmRSb3V0ZXIsIGJhY2tlbmREaXNwYXRjaGVyKQorewor
fQorCitJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViUGFnZUluc3BlY3RvclRhcmdldEFn
ZW50Ojpmcm9udGVuZENoYW5uZWwoKQoreworICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCisg
ICAgICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxTdHViRnJvbnRlbmRD
aGFubmVsPigpOworICAgIHJldHVybiBtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi4wMzBjYzM3NjU5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldEFnZW50Lmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudCB7CitwdWJsaWM6
CisgICAgV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0
ZXImLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJik7CisgICAgdmlydHVhbCB+V2ViUGFn
ZUluc3BlY3RvclRhcmdldEFnZW50KCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZpcnR1
YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGZpbmFsOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250
ZW5kQ2hhbm5lbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGI3MmIzZTNhMmUuLjliZjZhNjg0YzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwOSw4ICsxMDks
MTAgQEAKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VEZWJ1Z2dhYmxlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgpAQCAtMjIzLDYgKzIyNSwxMCBAQAogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNw
ZWN0b3IuaD4KKyNlbmRpZgorCiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQogI2luY2x1ZGUgIlNl
Y0tleVByb3h5U3RvcmUuaCIKICNlbmRpZgpAQCAtNDI1LDYgKzQzMSwxMCBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCiAgICAg
LCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCisjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRD
cmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNl
dFJlY2VudENyYXNoQ291bnQpCiB7CiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFk
ZE9ic2VydmVyKG1fdmlzaXRlZExpbmtTdG9yZSk7CkBAIC00ODEsNiArNDkxLDEzIEBAIFdlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgdWluCiAgICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNo
YW5nZSgpOwogICAgIH0pOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1
ZSk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CisjZW5kaWYKKworICAgIGNy
ZWF0ZUluc3BlY3RvclRhcmdldHMoKTsKIH0KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KCkKQEAgLTgwNiw2ICs4MjMsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaEF0dGFjaGlu
Z1RvV2ViUHJvY2VzcyhTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhIHMKIAogICAgIGlu
aXRpYWxpemVXZWJQYWdlKHNob3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0FyZWEpOwogCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgcmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25E
aWRDaGFuZ2UoKTsKKyNlbmRpZgorCisgICAgY2xlYXJJbnNwZWN0b3JUYXJnZXRzKCk7CisgICAg
Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpOworCiAgICAgcGFnZUNsaWVudCgpLmRpZFJlbGF1bmNo
UHJvY2VzcygpOwogICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVP
bk5leHRQYWludCgpOwogfQpAQCAtOTE2LDYgKzk0MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bG9zZSgpCiAjZW5kaWYKIAogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5wYWdlQ2xvc2VkKCk7Cisg
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5wYWdlQ2xvc2VkKCk7CiAgICAgcGFnZUNsaWVudCgp
LnBhZ2VDbG9zZWQoKTsKIAogICAgIG1fcHJvY2Vzcy0+ZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdl
KHRoaXMpOwpAQCAtMTM2MSwzMSArMTM4Niw2NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29u
dHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihtX3dlYnNpdGVEYXRhU3RvcmUt
PnNlc3Npb25JRCgpLCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24pKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBJ
bnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKK3sKKyAgICBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldCh0YXJnZXRJZCwgdHlwZSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFy
Z2V0SWQpCit7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kZXN0cm95SW5zcGVjdG9yVGFy
Z2V0KHRhcmdldElkKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNw
ZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZW5kTWVzc2FnZVRvSW5zcGVjdG9y
RnJvbnRlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpOworfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
Cit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5kaWNhdGluZyhpbmRpY2F0aW5nKSwgbV9w
YWdlSUQpOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6YWxsb3dzUmVtb3RlSW5zcGVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVtb3RlRGVidWdn
aW5nQWxsb3dlZCgpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWxsb3dzUmVtb3RlSW5z
cGVjdGlvbihib29sIGFsbG93KQogewotICAgIGlmIChtX2FsbG93c1JlbW90ZUluc3BlY3Rpb24g
PT0gYWxsb3cpCi0gICAgICAgIHJldHVybjsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNl
dFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoYWxsb3cpOworfQogCi0gICAgbV9hbGxvd3NSZW1vdGVJ
bnNwZWN0aW9uID0gYWxsb3c7Ci0KLSAgICBpZiAoaXNWYWxpZCgpKQotICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYWxs
b3cpLCBtX3BhZ2VJRCk7CitTdHJpbmcgV2ViUGFnZVByb3h5OjpyZW1vdGVJbnNwZWN0aW9uTmFt
ZU92ZXJyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5u
YW1lT3ZlcnJpZGUoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFJlbW90ZUluc3BlY3Rp
b25OYW1lT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChtX3JlbW90ZUlu
c3BlY3Rpb25OYW1lT3ZlcnJpZGUgPT0gbmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9y
ZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlID0gbmFtZTsKLQotICAgIGlmIChpc1ZhbGlkKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UmVtb3RlSW5z
cGVjdGlvbk5hbWVPdmVycmlkZShtX3JlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUpLCBtX3Bh
Z2VJRCk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXROYW1lT3ZlcnJpZGUobmFtZSk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENo
YW5nZSgpCit7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT51cGRhdGUoKTsKK30KICNlbmRp
ZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJJbnNwZWN0b3JUYXJnZXRzKCkKK3sKKyAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPmNsZWFyVGFyZ2V0cygpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCit7CisgICAgU3RyaW5nIHBhZ2VUYXJnZXRJ
ZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgU3RyaW5nOjpudW1iZXIobV9wYWdlSUQpKTsKKyAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7Cit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiB7CiAgICAg
aWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dyb3VuZCkKQEAgLTM3OTksNiArMzg2
MCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJh
bWUoKSkKICAgICAgICAgaW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCk7CiAjZW5kaWYKKworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkK
KyAgICAgICAgcmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCkBAIC0zOTc1LDYgKzQwNDEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdGl0bGUKICAg
ICBmcmFtZS0+ZGlkQ2hhbmdlVGl0bGUodGl0bGUpOwogICAgIAogICAgIG1fcGFnZUxvYWRTdGF0
ZS5jb21taXRDaGFuZ2VzKCk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJlbW90ZUluc3BlY3RvckluZm9ybWF0
aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUodWludDY0X3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTYz
NzksMTAgKzY0NTAsNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRFeHRlbmRzQmV5
b25kUGFnZSA9IG1fYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOwogICAgIHBhcmFtZXRlcnMu
bGF5ZXJIb3N0aW5nTW9kZSA9IG1fbGF5ZXJIb3N0aW5nTW9kZTsKICAgICBwYXJhbWV0ZXJzLmNv
bnRyb2xsZWRCeUF1dG9tYXRpb24gPSBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb247Ci0jaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgcGFyYW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0
aW9uID0gbV9hbGxvd3NSZW1vdGVJbnNwZWN0aW9uOwotICAgIHBhcmFtZXRlcnMucmVtb3RlSW5z
cGVjdGlvbk5hbWVPdmVycmlkZSA9IG1fcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZTsKLSNl
bmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBwYWdl
Q2xpZW50KCkuY29sb3JTcGFjZSgpOwogICAgIHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5j
ZSA9IG1fdXNlU3lzdGVtQXBwZWFyYW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNjE1YTA4ZDg1YWMuLjZkMTkyOTdlYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjQ4LDcgKzI0OCw5IEBAIGNsYXNzIFdlYktleWJvYXJk
RXZlbnQ7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViTW91c2VFdmVudDsK
IGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CitjbGFzcyBXZWJQYWdlRGVi
dWdnYWJsZTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKK2NsYXNzIFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwpAQCAtMzg4LDExICszOTAsMjIgQEAg
cHVibGljOgogICAgIGJvb2wgaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRDb250cm9sbGVkQnlB
dXRvbWF0aW9uKGJvb2wpOwogCisgICAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXImIGluc3Bl
Y3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9CisKKyAg
ICB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CisgICAgdm9pZCBoaWRlSW5zcGVjdG9y
SW5kaWNhdGlvbigpOworCisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JUYXJnZXQoY29uc3QgU3Ry
aW5nJiB0YXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlKTsKKyAgICB2b2lk
IGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQot
ICAgIGJvb2wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dz
UmVtb3RlSW5zcGVjdGlvbjsgfQorICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKKyAgICBi
b29sIGFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdDsKICAgICB2b2lkIHNldEFsbG93c1Jl
bW90ZUluc3BlY3Rpb24oYm9vbCk7Ci0gICAgU3RyaW5nIHJlbW90ZUluc3BlY3Rpb25OYW1lT3Zl
cnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU7IH0K
KyAgICBTdHJpbmcgcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSgpIGNvbnN0OwogICAgIHZv
aWQgc2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTE3MzcsOSArMTc1MCw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzaG93SW5zcGVjdG9ySGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkhpZ2hsaWdodCYp
OwogICAgIHZvaWQgaGlkZUluc3BlY3RvckhpZ2hsaWdodCgpOwogCi0gICAgdm9pZCBzaG93SW5z
cGVjdG9ySW5kaWNhdGlvbigpOwotICAgIHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24oKTsK
LQogICAgIHZvaWQgZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpOwogICAgIHZvaWQgZGlzYWJs
ZUluc3BlY3Rvck5vZGVTZWFyY2goKTsKICAgICB2b2lkIGFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
Q2FsbGJhY2soY29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mLCBDYWxsYmFja0lEKTsKQEAg
LTE4MjcsNiArMTgzNyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVU
YXNrcygpOwogCisgICAgdm9pZCBjbGVhckluc3BlY3RvclRhcmdldHMoKTsKKyAgICB2b2lkIGNy
ZWF0ZUluc3BlY3RvclRhcmdldHMoKTsKKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtMjEwMiwxMCArMjEx
NSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZh
bHNlIH07CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBib29sIG1fYWxsb3dz
UmVtb3RlSW5zcGVjdGlvbiB7IHRydWUgfTsKLSAgICBTdHJpbmcgbV9yZW1vdGVJbnNwZWN0aW9u
TmFtZU92ZXJyaWRlOwotI2VuZGlmCiAgICAgdW5zaWduZWQgbV9pbnNwZWN0b3JGcm9udGVuZENv
dW50IHsgMCB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMjU4LDYgKzIyNjcsMTEgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpbms+IG1fZGlzcGxheUxpbms7
CiAjZW5kaWYKIAorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxXZWJQYWdlRGVidWdnYWJsZT4gbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBzdGQ6Om9wdGlvbmFsPFNwZWxsRG9jdW1l
bnRUYWc+IG1fc3BlbGxEb2N1bWVudFRhZzsKIAogICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3Rvbmlj
VGltZT4gbV9wYWdlTG9hZFN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDU4MjVkZTgzNGNiLi4zNGZkNmZiNTIzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNDIxLDYgKzQyMSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRGlk
Q2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1aW50NjRfdCBjb3VudCkKIAorICAgIENyZWF0
ZUluc3BlY3RvclRhcmdldChTdHJpbmcgdGFyZ2V0SWQsIGVudW06dWludDhfdCBJbnNwZWN0b3I6
Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKKyAgICBEZXN0cm95SW5zcGVjdG9yVGFyZ2V0KFN0
cmluZyB0YXJnZXRJZCkKKyAgICBTZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoU3RyaW5n
IHRhcmdldElkLCBTdHJpbmcgbWVzc2FnZSkKKwogICAgICMgU2VhcmNoIHBvcHVwIG1lbnVzCiAg
ICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50
U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUp
IC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpIExlZ2FjeVN5bmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlNGE4NzcwNDc1
Ny4uOWJkZjZlMDdjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTIxMjEsMTEgKzIxMjEsNiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmCiAgICAg
ICAgIHJldHVybiBwYWdlLnByb2Nlc3MoKTsKICAgICB9CiAKLSAgICBpZiAocGFnZS5pbnNwZWN0
b3JGcm9udGVuZENvdW50KCkgPiAwKSB7Ci0gICAgICAgIHJlYXNvbiA9ICJBIFdlYiBJbnNwZWN0
b3IgZnJvbnRlbmQgaXMgY29ubmVjdGVkIl9zOwotICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNz
KCk7Ci0gICAgfQotCiAgICAgaWYgKG1fYXV0b21hdGlvblNlc3Npb24pIHsKICAgICAgICAgcmVh
c29uID0gIkFuIGF1dG9tYXRpb24gc2Vzc2lvbiBpcyBhY3RpdmUiX3M7CiAgICAgICAgIHJldHVy
biBwYWdlLnByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDgxZjY3NzlkYzhiLi44ODhmYTY0YjM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjY5LDggKzEy
NjksMTMgQEAKIAkJQTFFQTAyNDAxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlz
dGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFFQTAyM0UxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94
eS5oICovOyB9OwogCQlBMUZCNjgyNDFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNjgy
MjFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFGQjY4MjcxRjZFNTFDMTAwQzQzRjlG
IC8qIENyYXNoUmVwb3J0ZXJDbGllbnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExRkI2ODI2MUY2RTUxQzEwMEM0M0Y5RiAvKiBDcmFzaFJlcG9y
dGVyQ2xpZW50U1BJLmggKi87IH07CisJCUE1MTNGNTQwMjE1NEE1RDcwMDY2Mjg0MSAvKiBXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUxM0Y1M0UyMTU0QTVDQzAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyLmggKi87IH07CiAJCUE1MThCNUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0lu
c3BlY3RvcldLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUxOEI1RDAxRkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3
LmggKi87IH07CiAJCUE1NDI5M0E0MTk1QTQzREEwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU0MjkzQTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CisJCUE1NDNFMzA3MjE1QUQxMzcwMDI3
OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQzRTMwNTIxNUFEMTJEMDAy
NzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oICovOyB9Owor
CQlBNTQzRTMwQzIxNUM4QThEMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0M0UzMDgyMTVD
OEE4MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCAqLzsgfTsKKwkJQTU0M0Uz
MEQyMTVDOEE5MDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQzRTMwQjIx
NUM4QTg0MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCAqLzsg
fTsKKwkJQTU0M0UzMTAyMTVEOENFNjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
M0UzMEUyMTVEOENFMjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICov
OyB9OwogCQlBNTVCQTgxMDFCQTEzMTdFMDA3Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NUJBODBDMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE1NUJBODE3MUJBMjNFMTIwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1QkE4
MTMxQkEyM0UwNTAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJLmggKi87IH07CiAJCUE1
NUJBODFGMUJBMjVCMjcwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1QkE4MTkxQkEyNUIx
RTAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5LmggKi87IH07CkBAIC0xMjgxLDYg
KzEyODYsOCBAQAogCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFu
ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEI2
RjA2MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovOyB9OwogCQlBNUMw
RjBBNzIwMDA2NTREMDA1MzY1MzYgLyogX1dLTlNXaW5kb3dFeHRyYXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzBGMEE2MjAwMDY1NDQwMDUzNjUz
NiAvKiBfV0tOU1dpbmRvd0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1QzBGMEFCMjAwMDY1ODIwMDUzNjUzNiAvKiBXS0luc3BlY3Rv
cldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVDMEYwQUEyMDAwNjU2RTAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93LmggKi87IH07CisJ
CUE1RTM5MUZEMjE4M0MxRjgwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFMzkxRkMyMTgzQzFF
OTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggKi87IH07CisJCUE1RUM2QUQ0MjE1
MUJEN0IwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQzZBRDMyMTUxQkQ2OTAwNjc3RDE3IC8qIFdl
YlBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBX
S1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1RUZEMzhCMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBNzhDQ0REQjE5M0FDOUY4MDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5n
LnNiIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhD
Q0REODE5M0FDOUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiICov
OyB9OwogCQlBNzhDQ0REQzE5M0FDOUZCMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzhDQ0REOTE5M0FDOUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiICovOyB9OwpAQCAtMzgxMCwxMCArMzgxNywyMCBAQAogCQlBMUZCNjgyMjFGNkU1MTgyMDBD
NDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3Jhc2hSZXBvcnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZCNjgyMzFGNkU1MTgyMDBDNDNG
OUYgLyogV0tDcmFzaFJlcG9ydGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tDcmFzaFJl
cG9ydGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZCNjgyNjFGNkU1MUMx
MDBDNDNGOUYgLyogQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmFz
aFJlcG9ydGVyQ2xpZW50U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTNG
NTNFMjE1NEE1Q0MwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTEzRjUzRjIxNTRBNUNEMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE4QjVEMDFGRTFENTVC
MDBGOUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJbnNw
ZWN0b3JXS1dlYlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxOEI1RDEx
RkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tJbnNwZWN0b3JXS1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1NDI5M0EyMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hH
ZXN0dXJlUmVjb2duaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3Rvck5vZGVTZWFyY2hH
ZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1
cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NDI5M0EzMTk1
QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNv
Z25pemVyLm1tOyBwYXRoID0gaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwNTIxNUFEMTJEMDAy
NzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NDNFMzA2MjE1QUQxMkUwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTQzRTMwODIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3Rv
clRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NDNFMzA5MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1NDNFMzBBMjE1QzhBODQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwQjIxNUM4QTg0MDAyNzlDRDkgLyogV2Vi
UGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUlu
c3BlY3RvclRhcmdldENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU0M0UzMEUyMTVEOENFMjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0M0UzMEYyMTVEOENFMjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVCQTgw
QzFCQTEyQkUxMDA3Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1QkE4MEQx
QkExMkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
NUJBODEyMUJBMjNFMDUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODM1LDYgKzM4NTIsMTAgQEAKIAkJQTVD
MEYwQTkyMDAwNjU2RTAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JXaW5kb3cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzBGMEFBMjAwMDY1NkUwMDUzNjUzNiAvKiBXS0lu
c3BlY3RvcldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3Bl
Y3RvcldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUQzNTA0RDFENzhG
MEQyMDA1MTI0QTkgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFMzkxRkIyMTgzQzFFOTAwQzhGQjMx
IC8qIEluc3BlY3RvclRhcmdldFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvclRhcmdldFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVFMzkxRkMyMTgzQzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclRhcmdldFByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0Qx
NyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlRGVi
dWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUM2QUQzMjE1MUJE
NjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdl
RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUVGRDM4QjE2QjBF
ODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhDQ0RENzE5
M0FDOUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5TdG9yYWdlLnNiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5h
cHBsZS5XZWJLaXQuU3RvcmFnZS5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcx
NjYsNiArNzE4NywxMiBAQAogCQkJCUMwQ0U3MjU4MTI0N0U0REEwMEJDMEVDNCAvKiBXZWJQYWdl
Lm1lc3NhZ2VzLmluICovLAogCQkJCUJDN0I2MjE0MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXBQcm94eS5jcHAgKi8sCiAJCQkJQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBh
Z2VHcm91cFByb3h5LmggKi8sCisJCQkJQTU0M0UzMEEyMTVDOEE4NDAwMjc5Q0Q5IC8qIFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQuY3BwICovLAorCQkJCUE1NDNFMzA4MjE1QzhBODMwMDI3OUNEOSAv
KiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmggKi8sCisJCQkJQTU0M0UzMDkyMTVDOEE4MzAwMjc5
Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcCAqLywKKwkJCQlBNTQz
RTMwQjIxNUM4QTg0MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIu
aCAqLywKKwkJCQlBNTQzRTMwNjIxNUFEMTJFMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRh
cmdldEZyb250ZW5kQ2hhbm5lbC5jcHAgKi8sCisJCQkJQTU0M0UzMDUyMTVBRDEyRDAwMjc5Q0Q5
IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuaCAqLywKIAkJCQkyRDVD
OUQwMzE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5
RDA0MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oICovLAogCQkJCUJDQTBFRjdF
MTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5jcHAgKi8sCkBAIC03MjE5LDYgKzcyNDYs
OCBAQAogCQkJCTJERDVBNzJBMUVCRjA5QTcwMDlCQTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGlu
Z0F1dG9JbmNyZWFzZXNDb3VudGVyLmggKi8sCiAJCQkJODM5QTJGMkYxRTIwNjczOTAwMzkwNTdF
IC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCAqLywKIAkJCQk4MzlB
MkYzMDFFMjA2NzM5MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBs
ZXIuaCAqLywKKwkJCQlBNUUzOTFGQjIxODNDMUU5MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFyZ2V0
UHJveHkuY3BwICovLAorCQkJCUE1RTM5MUZDMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JU
YXJnZXRQcm94eS5oICovLAogCQkJCTMxNjA3RjM4MTk2MjcwMDIwMDlCODdEQSAvKiBMZWdhY3lT
ZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyog
UGFnZUNsaWVudC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9h
ZFN0YXRlLmNwcCAqLywKQEAgLTczMjEsMTIgKzczNTAsMTggQEAKIAkJCQk3Q0NDQzhGOTFBNUY1
MEZEMDA4RkIwREEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJQkMxREZFQTMxMkIz
MUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLAog
CQkJCUJDMURGRUEyMTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmggKi8sCisJCQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1
Z2dhYmxlLmNwcCAqLywKKwkJCQlBNUVDNkFEMzIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURl
YnVnZ2FibGUuaCAqLywKIAkJCQk4MzcyREIyNjFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcCAqLywKIAkJCQk4MzcyREIyNzFBNjc1NjI4MDBDNjk3
QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJQkM3QjYyMDUx
MjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJQkM3QjYyMDQxMjlB
MEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oICovLAogCQkJCTJEOUVBMzEwMUE5NkQ5RUIw
MDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwICovLAogCQkJCTJEOUVB
MzBFMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywK
KwkJCQlBNTEzRjUzRjIxNTRBNUNEMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwICovLAorCQkJCUE1MTNGNTNFMjE1NEE1Q0MwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5oICovLAorCQkJCUE1NDNFMzBGMjE1RDhDRTIwMDI3OUNEOSAvKiBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwICovLAorCQkJCUE1NDNFMzBFMjE1RDhDRTIwMDI3
OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLywKIAkJCQlCQzExMUIwQjEx
MkY1RTRGMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCAqLywKIAkJCQlCQzAzMkRDQjEwRjQz
ODlGMDA1OEMxNUEgLyogV2ViUGFnZVByb3h5LmggKi8sCiAJCQkJQkNCRDM4RkExMjVCQUI5QTAw
RDJDMjlGIC8qIFdlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTg5NDQsNiArODk3OSw3
IEBACiAJCQkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTRERjc3MTIwQjVCNzkwMDgyNkMwQyAvKiBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ0NUFERTFF
NUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1RTM5MUZEMjE4M0MxRjgwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzVCQ0U1REYxQzUwNzY2QTAwQ0RFM0ZBIC8qIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDREMkM4MTFE
RjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRTQ5QTQ5MTFGRkE4Q0UwMDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmggaW4g
SGVhZGVycyAqLywKQEAgLTkzNDMsMTEgKzkzNzksMTcgQEAKIAkJCQlCQzg1N0Y4NTEyQjgyRDBC
MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMURGRUE0MTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4RjEwRjQzN0EwMDA1OEMxNUEgLyog
V2ViUGFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQzZBRDQyMTUxQkQ3QjAwNjc3RDE3IC8q
IFdlYlBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyREIyOTFBNjc1NjI4
MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBh
Z2VHcm91cFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4
MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTEzRjU0MDIxNTRBNUQ3MDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1NDNFMzBDMjE1QzhBOEQwMDI3OUNEOSAvKiBXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQzRTMxMDIxNUQ4Q0U2MDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTQzRTMwRDIxNUM4QTkwMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NDNFMzA3MjE1QUQxMzcwMDI3OUNEOSAvKiBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MENFNzJBMTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDVDOUQwNjE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQkQzOTE1MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYyZGJhM2ZiMjg3Li41MWQyNDNmNjcxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEwNCw2ICsxMDQs
NyBAQAogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlT3ZlcmxheS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC0zNzEsNiArMzcyLDcgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCiAgICAgLCBtX3VpQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50Pigp
KQogICAgICwgbV9maW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0
aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3VzZXJD
b250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBh
cmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NBVElP
TikKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1
ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDkw
LDExICs0OTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBtX3BhZ2UtPnNldENvbnRyb2xs
ZWRCeUF1dG9tYXRpb24ocGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uKTsKIAotI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1fcGFnZS0+c2V0UmVtb3RlSW5zcGVjdGlv
bkFsbG93ZWQocGFyYW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKTsKLSAgICBtX3BhZ2Ut
PnNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUocGFyYW1ldGVycy5yZW1vdGVJbnNwZWN0
aW9uTmFtZU92ZXJyaWRlKTsKLSNlbmRpZgotCiAgICAgbV9wYWdlLT5zZXRDYW5TdGFydE1lZGlh
KGZhbHNlKTsKICAgICBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBwYXJhbWV0ZXJzLm1h
eVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CiAKQEAgLTI3NjUsNiArMjc2MiwyMSBAQCB2b2lkIFdl
YlBhZ2U6OnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQogICAgIG1f
cGFnZS0+c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKTsKIH0KIAordm9pZCBX
ZWJQYWdlOjpjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAg
bV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLT5jb25uZWN0SW5zcGVjdG9yKHRhcmdldElkKTsK
K30KKwordm9pZCBXZWJQYWdlOjpkaXNjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFy
Z2V0SWQpCit7CisgICAgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLT5kaXNjb25uZWN0SW5z
cGVjdG9yKHRhcmdldElkKTsKK30KKwordm9pZCBXZWJQYWdlOjpzZW5kTWVzc2FnZVRvVGFyZ2V0
QmFja2VuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLT5zZW5kTWVzc2FnZVRvVGFyZ2V0QmFj
a2VuZCh0YXJnZXRJZCwgbWVzc2FnZSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6aW5zZXJ0TmV3bGlu
ZUluUXVvdGVkQ29udGVudCgpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI3NzQsMTQgKzI3ODYsOSBAQCB2
b2lkIFdlYlBhZ2U6Omluc2VydE5ld2xpbmVJblF1b3RlZENvbnRlbnQoKQogfQogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi12b2lkIFdlYlBhZ2U6OnNldEFsbG93c1JlbW90ZUluc3Bl
Y3Rpb24oYm9vbCBhbGxvdykKK3ZvaWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGlj
YXRpbmcpCiB7Ci0gICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZChhbGxvdyk7
Ci19Ci0KLXZvaWQgV2ViUGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShjb25z
dCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92
ZXJyaWRlKG5hbWUpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluZGlj
YXRpbmcoaW5kaWNhdGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk5ZjQ0MjRiN2Y5Li45OTI2N2JmZTU5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjA1LDI3ICsyMDUs
MjggQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcjsKIGNsYXNzIFdlYkRvY3VtZW50TG9hZGVyOwogY2xhc3MgV2ViRXZlbnQ7
CitjbGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOworY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CitjbGFz
cyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsK
IGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKIGNsYXNzIFdlYkluc3BlY3RvclVJOwotY2xhc3Mg
V2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFdlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eTsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJOb3RpZmlj
YXRpb25DbGllbnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIGNsYXNzIFdl
YlBhZ2VHcm91cFByb3h5OworY2xhc3MgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI7
CiBjbGFzcyBXZWJQYWdlT3ZlcmxheTsKLWNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiBj
bGFzcyBXZWJQb3B1cE1lbnU7CitjbGFzcyBXZWJUb3VjaEV2ZW50OworY2xhc3MgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5OwogY2xhc3MgV2ViVW5kb1N0ZXA7CiBjbGFzcyBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI7Ci1jbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViV2hl
ZWxFdmVudDsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjsKIAogZW51bSBjbGFzcyBEZXZpY2VBY2Nlc3NTdGF0ZSA6IHVpbnQ4X3Q7CkBAIC0x
MDQxLDYgKzEwNDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wpOwog
CisgICAgdm9pZCBjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOworICAg
IHZvaWQgZGlzY29ubmVjdEluc3BlY3Rvcihjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKKyAgICB2
b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisKICAgICB2b2lkIGluc2VydE5ld2xpbmVJblF1b3RlZENv
bnRlbnQoKTsKIAogI2lmIFVTRShPU19TVEFURSkKQEAgLTEyMTgsOCArMTIyMyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KENhbGxi
YWNrSUQpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgdm9pZCBzZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwotICAgIHZvaWQgc2V0UmVtb3RlSW5zcGVjdGlvbk5h
bWVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7
CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOwpAQCAtMTU1NCw2
ICsxNTU4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBtX2luc3BlY3Rv
cjsKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAgICAgUmVmUHRy
PFJlbW90ZVdlYkluc3BlY3RvclVJPiBtX3JlbW90ZUluc3BlY3RvclVJOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4gbV9pbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyOwogCiAjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQp
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQog
ICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCA3NjI2ZmJiMjY1My4uNGVkY2ZlYTQ5NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MTExLDkgKzExMSwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAog
ICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQogCisgICAgQ29u
bmVjdEluc3BlY3RvcihTdHJpbmcgdGFyZ2V0SWQpCisgICAgRGlzY29ubmVjdEluc3BlY3RvcihT
dHJpbmcgdGFyZ2V0SWQpCisgICAgU2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoU3RyaW5nIHRh
cmdldElkLCBTdHJpbmcgbWVzc2FnZSkKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQot
ICAgIFNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYm9vbCBhbGxvdykKLSAgICBTZXRSZW1vdGVJ
bnNwZWN0aW9uTmFtZU92ZXJyaWRlKFN0cmluZyBuYW1lKQorICAgIFNldEluZGljYXRpbmcoYm9v
bCBpbmRpY2F0aW5nKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43ZmE4YjZhMjY1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIgorCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKKworV2ViUGFnZUluc3BlY3RvclRhcmdldDo6V2ViUGFnZUluc3Bl
Y3RvclRhcmdldChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0
cmluZyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBTdHJpbmc6Om51bWJlcihtX3BhZ2UucGFnZUlEKCkp
KTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQoreworICAgIGlmIChtX3BhZ2UuY29yZVBhZ2UoKSkK
KyAgICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0
RnJvbnRlbmQoY2hhbm5lbCk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6ZGlz
Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sKKyAgICBpZiAo
bV9wYWdlLmNvcmVQYWdlKCkpCisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKGNoYW5uZWwpOworfQorCit2b2lkIFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQ6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9wYWdlLmNvcmVQYWdlKCkpCisgICAgICAgIG1fcGFn
ZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZy
b250ZW5kKG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmEzYmU4OTg2NmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFyZ2V0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFy
Z2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KTsKK3B1YmxpYzoKKyAgICBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0KFdlYlBhZ2UmKTsKKyAgICB+V2ViUGFnZUluc3BlY3RvclRhcmdldCgpID0gZGVm
YXVsdDsKKworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlOyB9CisK
KyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBjb25uZWN0
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBkaXNjb25uZWN0KEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKik7CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0QmFj
a2VuZChjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlJiBtX3BhZ2U7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250
cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmRhNGU3
YWRmODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3Bl
Y3RvclRhcmdldENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUGFn
ZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9s
bGVyKFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fcGFnZVRhcmdl
dChwYWdlKQoreworICAgIC8vIERvIG5vdCBzZW5kIHRoZSBwYWdlIHRhcmdldCB0byB0aGUgVUlQ
cm9jZXNzLCB0aGUgV2ViUGFnZVByb3h5IHdpbGwgbWFuYWdlciB0aGlzIGZvciB1cy4KKyAgICBt
X3RhcmdldHMuc2V0KG1fcGFnZVRhcmdldC5pZGVudGlmaWVyKCksICZtX3BhZ2VUYXJnZXQpOwor
fQorCitXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6fldlYlBhZ2VJbnNwZWN0b3JU
YXJnZXRDb250cm9sbGVyKCkKK3sKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29u
dHJvbGxlcjo6YWRkVGFyZ2V0KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCit7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RhcmdldHMuc2V0KHRhcmdldC5pZGVudGlmaWVyKCks
ICZ0YXJnZXQpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVJ
bnNwZWN0b3JUYXJnZXQodGFyZ2V0LmlkZW50aWZpZXIoKSwgdGFyZ2V0LnR5cGUoKSkpOworfQor
Cit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyOjpyZW1vdmVUYXJnZXQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHRhcmdldC5pZGVudGlmaWVyKCkgIT0gbV9wYWdlVGFyZ2V0LmlkZW50aWZpZXIoKSwgIlNo
b3VsZCBuZXZlciByZW1vdmUgdGhlIG1haW4gdGFyZ2V0LiIpOworCisgICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVzdHJveUluc3BlY3RvclRhcmdldCh0YXJnZXQuaWRl
bnRpZmllcigpKSk7CisKKyAgICBtX3RhcmdldHMucmVtb3ZlKHRhcmdldC5pZGVudGlmaWVyKCkp
OworICAgIG1fdGFyZ2V0RnJvbnRlbmRDaGFubmVscy5yZW1vdmUodGFyZ2V0LmlkZW50aWZpZXIo
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OmNvbm5lY3RJ
bnNwZWN0b3IoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBJbnNwZWN0b3JUYXJnZXQq
IHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAgIGlmICghdGFyZ2V0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5k
Q2hhbm5lbD4gY2hhbm5lbCA9IG1fdGFyZ2V0RnJvbnRlbmRDaGFubmVscy5nZXQodGFyZ2V0SWQp
OworICAgIGlmICghY2hhbm5lbCkgeworICAgICAgICBjaGFubmVsID0gV2ViUGFnZUluc3BlY3Rv
clRhcmdldEZyb250ZW5kQ2hhbm5lbDo6Y3JlYXRlKCp0aGlzLCB0YXJnZXRJZCk7CisgICAgICAg
IG1fdGFyZ2V0RnJvbnRlbmRDaGFubmVscy5zZXQodGFyZ2V0LT5pZGVudGlmaWVyKCksIGNoYW5u
ZWwpOworICAgIH0KKworICAgIHRhcmdldC0+Y29ubmVjdChjaGFubmVsLmdldCgpKTsKK30KKwor
dm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6ZGlzY29ubmVjdEluc3BlY3Rv
cihjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0
ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJlZlB0cjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVs
PiBjaGFubmVsID0gbV90YXJnZXRGcm9udGVuZENoYW5uZWxzLnRha2UodGFyZ2V0SWQpOworICAg
IGlmICghY2hhbm5lbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGFyZ2V0LT5kaXNjb25uZWN0
KGNoYW5uZWwuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9s
bGVyOjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgSW5zcGVjdG9yVGFyZ2V0KiB0YXJnZXQgPSBt
X3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdGFyZ2V0LT5zZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChtZXNzYWdlKTsKK30K
Kwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6c2VuZE1lc3NhZ2VUb1Rh
cmdldEZyb250ZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZW5kTWVzc2Fn
ZVRvSW5zcGVjdG9yRnJvbnRlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmNjYjZlMWQ3ODEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgSW5zcGVjdG9y
VGFyZ2V0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xh
c3MgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVy
KFdlYlBhZ2UmKTsKKyAgICB+V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIoKTsKKwor
ICAgIHZvaWQgYWRkVGFyZ2V0KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0Jik7CisgICAgdm9p
ZCByZW1vdmVUYXJnZXQoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQmKTsKKworICAgIHZvaWQg
Y29ubmVjdEluc3BlY3Rvcihjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKKyAgICB2b2lkIGRpc2Nv
bm5lY3RJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CisgICAgdm9pZCBzZW5kTWVz
c2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEZyb250ZW5kKGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK3ByaXZhdGU6CisgICAg
V2ViUGFnZSYgbV9wYWdlOworICAgIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQgbV9wYWdlVGFyZ2V0
OworICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldCo+IG1fdGFy
Z2V0czsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRG
cm9udGVuZENoYW5uZWw+PiBtX3RhcmdldEZyb250ZW5kQ2hhbm5lbHM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hh
bm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxYTRiZjYw
ZTlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFu
bmVsPiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsOjpjcmVhdGUoV2ViUGFn
ZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXImIHRhcmdldENvbnRyb2xsZXIsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0SWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZUluc3BlY3Rv
clRhcmdldEZyb250ZW5kQ2hhbm5lbCh0YXJnZXRDb250cm9sbGVyLCB0YXJnZXRJZCkpOworfQor
CitXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsOjpXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0RnJvbnRlbmRDaGFubmVsKFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyJiB0
YXJnZXRDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHRhcmdldElkKQorICAgIDogbV90YXJnZXRD
b250cm9sbGVyKHRhcmdldENvbnRyb2xsZXIpCisgICAgLCBtX3RhcmdldElkKHRhcmdldElkKQor
eworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV90YXJnZXRD
b250cm9sbGVyLnNlbmRNZXNzYWdlVG9UYXJnZXRGcm9udGVuZChtX3RhcmdldElkLCBtZXNzYWdl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0RnJvbnRlbmRDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmZjOWFjZGQwZTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjsKKworY2xh
c3MgV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw+LCBwdWJsaWMg
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5k
Q2hhbm5lbD4gY3JlYXRlKFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyJiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXRJZCk7CisgICAgdmlydHVhbCB+V2ViUGFnZUluc3BlY3RvclRhcmdldEZy
b250ZW5kQ2hhbm5lbCgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsKFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVy
JiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CisKKyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0
aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbm5lY3Rpb25UeXBlOjpSZW1vdGU7
IH0KKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9s
bGVyJiBtX3RhcmdldENvbnRyb2xsZXI7CisgICAgU3RyaW5nIG1fdGFyZ2V0SWQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAyMjUz
ODQzYmI3YS4uODgyNGI4ZjczMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEtlZXAgV2ViIEluc3BlY3RvciB3aW5kb3cg
YWxpdmUgYWNyb3NzIHByb2Nlc3Mgc3dhcHMgKFBTT04pIChSZW1vdGUgSW5zcGVjdG9yKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDk0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80NTQ2OTg1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oOgorICAgICAgICBXZWJLaXRMZWdhY3kgd2lsbCBzdGlsbCBoYXZlIHJlbW90ZSBpbnNwZWN0
aW9uIG9mIHRoZSBQYWdlIGRpcmVjdGx5LgorCiAyMDE4LTExLTA5ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEcmF3IGNhcHMgbG9jayBpbmRpY2F0
b3IgaW4gcGFzc3dvcmQgZmllbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGQ4MjYzOWM5
ODFmLi5lZGI4ZTQwMTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgY2xhc3MgUGFnZTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKLWNs
YXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQs
IHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CitjbGFzcyBXZWJJbnNwZWN0b3JD
bGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3Bl
Y3RvckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KTsKIApAQCAtNjEsNiArNjEsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRl
SGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dSZW1vdGVJbnNwZWN0aW9uVG9QYWdlRGlyZWN0bHkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwogICAg
IHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354444</attachid>
            <date>2018-11-09 22:49:35 -0800</date>
            <delta_ts>2018-11-12 16:31:26 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>v3.patch</filename>
            <type>text/plain</type>
            <size>197786</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ODk5OTgzZWJjMC4uYjE1MWYxODhlMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEtlZXAgV2ViIEluc3BlY3RvciB3aW5kb3cgYWxpdmUgYWNyb3Nz
IHByb2Nlc3Mgc3dhcHMgKFBTT04pIChSZW1vdGUgSW5zcGVjdG9yKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDk0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80NTQ2OTg1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3RhcmdldC1tYW5hZ2VyLmh0bWw6Cisg
ICAgICAgIFdJLnRhcmdldHMgaGFzIHN3aXRjaGVkIHRvIGJlaW5nIGFuIGFycmF5IGluc3RlYWQg
b2YgYSBzZXQuCisKIDIwMTgtMTEtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGNhbk1ha2VQYXltZW50KCkgc2hvdWxkIG5vdCBj
b25zaWRlciBzZXJpYWxpemVkIHBheW1lbnQgbWV0aG9kIGRhdGEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3RhcmdldC1tYW5hZ2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90YXJnZXQtbWFuYWdlci5odG1sCmluZGV4IDFhNjU3
MjIwMTVhLi43YmM5Y2M1YWNhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvdGFyZ2V0LW1hbmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dW5pdC10ZXN0cy90YXJnZXQtbWFuYWdlci5odG1sCkBAIC0yNyw3ICsyNyw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIldlIHNob3VsZCBhbHdheXMgaGF2ZSB0aGUg
bWFpbiB0YXJnZXQuIiwKICAgICAgICAgYXN5bmMgdGVzdCgpIHsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KFdJLnRhcmdldHMgPT09IFdJLnRhcmdldE1hbmFnZXIudGFyZ2V0cyk7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJLnRhcmdldHMuc2l6ZSwg
MSwgIlRhcmdldHMgbGlzdCBzaG91bGQgYWx3YXlzIHN0YXJ0IG91dCB3aXRoIHRoZSBtYWluIHRh
cmdldC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kudGFyZ2V0
cy5sZW5ndGgsIDEsICJUYXJnZXRzIGxpc3Qgc2hvdWxkIGFsd2F5cyBzdGFydCBvdXQgd2l0aCB0
aGUgbWFpbiB0YXJnZXQuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KFsuLi5XSS50YXJnZXRzXVswXSwgV0kubWFpblRhcmdldCwgIlRhcmdldCBsaXN0IHNob3VsZCBh
bHdheXMgY29udGFpbiB0aGUgbWFpbiB0YXJnZXQuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdE5vdE51bGwoV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0LCAiTWFpbiB0
YXJnZXQgc2hvdWxkIGhhdmUgYW4gRXhlY3V0aW9uQ29udGV4dC4iKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kubWFpblRhcmdldC5SdW50aW1lQWdlbnQsIFJ1bnRp
bWVBZ2VudCwgIk1haW4gdGFyZ2V0IHNob3VsZCBoYXZlIHRoZSBnbG9iYWwgUnVudGltZUFnZW50
LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI2MTcwMDdhZWNjLi5l
MGZlYmZlMzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjI3LDYg
KzYyNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmgKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCiAgICAgaW5zcGVjdG9yL1Bl
ckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaApAQCAtNjQyLDYgKzY0Myw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQuaAorICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaAogCiAgICAgaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudC5oCiAKQEAgLTEwODMsNiArMTA4NSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9JTlNQRUNUT1JfRE9NQUlOUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
cHJvdG9jb2wvUmVjb3JkaW5nLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvcHJvdG9jb2wvU2NyaXB0UHJvZmlsZXIuanNvbgorICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24KICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1dvcmtlci5qc29uCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBmZDAwYWY2NDJjYS4uOWQ2YTAwMDYyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTExLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIgSW5z
cGVjdG9yIHdpbmRvdyBhbGl2ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90ZSBJ
bnNwZWN0b3IpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE0OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICBOZXcgZG9tYWluIGFuZCByZXNvdXJjZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246IEFkZGVkLgorICAgICAgICBOZXcgcHJvdG9jb2wgZG9tYWluLCBtb2Rl
bGxlZCBhZnRlciBXb3JrZXIuanNvbiwgdG8gYWxsb3cgZm9yCisgICAgICAgIG11bHRpcGxleGlu
ZyBiZXR3ZWVuIGRpZmZlcmVudCB0YXJnZXRzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclRhcmdldC5oOgorICAgICAgICBFYWNoIHRhcmdldCB3aWxsIGluc3RhbnRpYXRlIGFuIElu
c3BlY3RvclRhcmdldCBhbmQgbXVzdAorICAgICAgICBwcm92aWRlIGFuIGlkZW50aWZpZXIsIHR5
cGUsIGFuZCBtZWFucyBvZiBjb25uZWN0aW5nL2Rpc2Nvbm5lY3RpbmcKKyAgICAgICAgYSBmcm9u
dGVuZCBjaGFubmVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJn
ZXRBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmV4aXN0cyk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50Ojppbml0aWFsaXplZCk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRv
VGFyZ2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRN
ZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjp0YXJnZXRU
eXBlVG9Qcm90b2NvbFR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9P
YmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0
Q3JlYXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJn
ZXRUZXJtaW5hdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6ZGlzY29ubmVjdEZyb21UYXJnZXRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRhcmdldEFnZW50Lmg6IEFkZGVkLgorICAgICAgICBJbXBsZW1lbnRhdGlvbiBv
ZiBUYXJnZXRBZ2VudCBob2xkcyBhIGxpc3Qgb2YgdGFyZ2V0cywgYW5kCisgICAgICAgIGNvbm5l
Y3RzL2Rpc2Nvbm5lY3RzIHRvIGVhY2ggb2YgdGhlIHRhcmdldHMgd2hlbiBhIGZyb250ZW5kCisg
ICAgICAgIGNvbm5lY3RzL2Rpc2Nvbm5lY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0b3IucHk6CisgICAgICAgIEJldHRlciBlbnVtIGNhc2luZyBvZiBT
ZXJ2aWNlV29ya2VyLgorCiAyMDE4LTExLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIExMSW50IFZlY3RvclNpemVPZmZzZXQgc2hvdWxkIGJlIGJh
c2VkIG9uIG9mZnNldCBleHRyYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGZjYmY0YjVkN2FiLi5iMDZlMjg3YTYzZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIzOCw2ICsyMzgsNyBAQCBJTlNQRUNU
T1JfRE9NQUlOUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wv
UmVjb3JkaW5nLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9TY3JpcHRQcm9maWxlci5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvVGFyZ2V0Lmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9w
cm90b2NvbC9UaW1lbGluZS5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvV29ya2VyLmpzb24gXAogIwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNzRhZjllOTc1Zi4uYzAxM2QxNTA1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzQxLDYgKzEzNDEsNyBAQAogCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oICovOyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVB
Njg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIElu
amVjdGVkU2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1
NUZGM0QyMTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUzMTFDMzYxQzc3Q0VD
NTAwRTZCMUI2IC8qIEhlYXBTbmFwc2hvdEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzExQzM1MUM3N0NFQUMwMEU2QjFCNiAvKiBIZWFw
U25hcHNob3RCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUzMjQzODIxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
MzI0MzhBMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4NDE4
NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzYwLDYgKzEzNjEs
NyBAQAogCQlBNTUxNjVEMzFCREYwQjlFMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTUx
NjVENTFCREYxMzVBMDAzQjc1QzEgLyogU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTE2NUQ0MUJERjEzNEQwMDNC
NzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oICovOyB9OwogCQlBNTUyQzM4MDFBRERCOEZF
MDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTJDMzdFMUFEREI4RkUwMDEzOTcyNiAvKiBKU1JlbW90
ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE1NTVGRjNCMjE1OUQyRjUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjM4MjE1OUQy
RDYwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTU3MTRCRTFDRDgwNDlGMDAwNEQyQzYgLyogQ29u
c29sZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU1NzE0QkQxQ0Q4MDQ4RTAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuaCAqLzsgfTsKIAkJ
QTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQTQxODUwMTJBODAw
NDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00MTE4LDYgKzQxMjAsOSBAQAogCQlBNTUxNjVENDFCREYxMzREMDAzQjc1QzEgLyogU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1MkMzN0Qx
QUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVtb3RlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU1MkMzN0UxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5z
cGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlSW5zcGVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTVGRjM4MjE1OUQyRDYwMEZD
RDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTVG
RjNDMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTU3MTRCQzFDRDgwNDhFMDAwNEQyQzYgLyogQ29uc29sZU9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zb2xlT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1NzE0QkQxQ0Q4MDQ4RTAwMDRE
MkM2IC8qIENvbnNvbGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc29sZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVEOTNBMzE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03OTM3LDYgKzc5NDIsOCBAQAogCQkJCUE1MEU0QjVFMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLywKIAkJCQlBNTUxNjVEMDFC
REVGREJEMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgKi8sCiAJ
CQkJQTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuaCAqLywKKwkJCQlBNTU1RkYzQzIxNTlENDFFMDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwICovLAorCQkJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JU
YXJnZXRBZ2VudC5oICovLAogCQkJCUE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovLAogCQkJCUE1N0QyM0U4MTg5MUIwNzcwMDMxQzdG
QSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCAqLywKIAkJCQlBNTBFNEI1RjE4ODA5
REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICovLApAQCAtODAw
Nyw2ICs4MDE0LDcgQEAKIAkJCQk5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9y
RnJvbnRlbmRSb3V0ZXIuY3BwICovLAogCQkJCTk5RjFBNzAwMUI5OEZCRUMwMDQ2M0IyNiAvKiBJ
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovLAogCQkJCUE1NUQ5M0FCMTg1MTRGNzkwMDQwMERF
RCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCisJCQkJQTU1NUZGMzgyMTU5RDJENjAw
RkNEODI2IC8qIEluc3BlY3RvclRhcmdldC5oICovLAogCQkJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKIAkJCQlBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJCUE1QzNBMUEzMThDMDQ5
MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovLApAQCAtOTA1
OSw2ICs5MDY3LDggQEAKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhB
NDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MTY1
RDMxQkRGMEI5RTAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1NTVGRjNCMjE1OUQyRjUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJn
ZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0OUU5QUEyMEFCNEQwMDAw
MUNBMEFBIC8qIEluc3RhbmNlT2ZBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIz
OTlCRjIwQUY2QjNGMDAxN0UyMTMgLyogSW5zdGFuY2VPZlN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCMzk5QzAyMEFGNkI0MzAwMTdFMjEzIC8qIEluc3RhbmNlT2ZWYXJpYW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZmZhMjE3YTVmYS4u
MWFkOTlmMGU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTU4NCw2ICs1ODQs
NyBAQCBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcAogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAoraW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAK
IGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAogaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhOWMzNWQ1NzViCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKKy8vIEZJWE1FOiBBZGQgRGVkaWNhdGVkV29ya2VyIEluc3BlY3RvciBUYXJnZXRzCisvLyBG
SVhNRTogQWRkIFNlcnZpY2VXb3JrZXIgSW5zcGVjdG9yIFRhcmdldHMKK2VudW0gY2xhc3MgSW5z
cGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeworICAgIEphdmFTY3JpcHRDb250ZXh0LAorICAg
IFBhZ2UsCisgICAgRGVkaWNhdGVkV29ya2VyLAorICAgIFNlcnZpY2VXb3JrZXIsCit9OworCitj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJnZXQgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkluc3BlY3RvclRhcmdldCgpID0gZGVmYXVsdDsKKworICAgIC8vIFN0YXRlLgorICAg
IHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnNw
ZWN0b3JUYXJnZXRUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDb25uZWN0aW9uIG1h
bmFnZW1lbnQuCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJikg
PSAwOworCisgICAgLy8gT3B0aW9uYWwgYWN0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
SWZQYXVzZWQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxJbnNwZWN0b3I6Okluc3Bl
Y3RvclRhcmdldFR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUsCisgICAgICAgIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0VHlwZTo6SmF2YVNjcmlwdENvbnRleHQsCisgICAgICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSwKKyAgICAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JU
YXJnZXRUeXBlOjpEZWRpY2F0ZWRXb3JrZXIsCisgICAgICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0VHlwZTo6U2VydmljZVdvcmtlcgorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMjZmMWUzZDA0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAg
LTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
aCIKKworI2luY2x1ZGUgIkluc3BlY3RvclRhcmdldC5oIgorCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKKworSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5k
Um91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRj
aGVyKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQiX3MpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKK3sKK30KKwordm9p
ZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKQoreworICAgIG1faXNDb25uZWN0ZWQgPSB0
cnVlOworCisgICAgY29ubmVjdFRvVGFyZ2V0cygpOworfQorCit2b2lkIEluc3BlY3RvclRhcmdl
dEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQor
eworICAgIGRpc2Nvbm5lY3RGcm9tVGFyZ2V0cygpOworCisgICAgbV9pc0Nvbm5lY3RlZCA9IGZh
bHNlOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpleGlzdHMoRXJyb3JTdHJpbmcm
KQoreworICAgIC8vIEludGVudGlvbmFsbHkgZG8gbm90aGluZyB0byByZXR1cm4gc3VjY2Vzcy4K
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB0aGUgbG9jYWwgaW5zcGVjdG9yIGhhcyBz
d2l0Y2hlZCBvdmVyIHRvIHRoZSBtb2Rlcm4gcGF0aC4KK30KKwordm9pZCBJbnNwZWN0b3JUYXJn
ZXRBZ2VudDo6aW5pdGlhbGl6ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkKQoreworICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRz
LmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVGFyZ2V0IG5vdCBmb3VuZC4iX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0
YXJnZXQtPnJlc3VtZUlmUGF1c2VkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
OnNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgSW5zcGVjdG9yVGFy
Z2V0KiB0YXJnZXQgPSBtX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICBpZiAoIXRhcmdldCkg
eworICAgICAgICBlcnJvclN0cmluZyA9ICJUYXJnZXQgbm90IGZvdW5kLiJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHRhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQo
bWVzc2FnZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRNZXNzYWdlRnJv
bVRhcmdldFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV90YXJnZXRzLmdldCh0YXJnZXRJ
ZCksICJTZW5kaW5nIGEgbWVzc2FnZSBmcm9tIGFuIHVudHJhY2tlZCB0YXJnZXQgdG8gdGhlIGZy
b250ZW5kLiIpOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2FnZUZy
b21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpOworfQorCitzdGF0aWMgUHJvdG9jb2w6OlRhcmdl
dDo6VGFyZ2V0SW5mbzo6VHlwZSB0YXJnZXRUeXBlVG9Qcm90b2NvbFR5cGUoSW5zcGVjdG9yVGFy
Z2V0VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSW5zcGVjdG9y
VGFyZ2V0VHlwZTo6SmF2YVNjcmlwdENvbnRleHQ6CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6
VGFyZ2V0OjpUYXJnZXRJbmZvOjpUeXBlOjpKYXZhU2NyaXB0OworICAgIGNhc2UgSW5zcGVjdG9y
VGFyZ2V0VHlwZTo6UGFnZToKKyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpUYXJnZXQ6OlRhcmdl
dEluZm86OlR5cGU6OlBhZ2U7CisgICAgY2FzZSBJbnNwZWN0b3JUYXJnZXRUeXBlOjpEZWRpY2F0
ZWRXb3JrZXI6CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpU
eXBlOjpXb3JrZXI7CisgICAgY2FzZSBJbnNwZWN0b3JUYXJnZXRUeXBlOjpTZXJ2aWNlV29ya2Vy
OgorICAgICAgICByZXR1cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlwZTo6U2Vy
dmljZVdvcmtlcjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlwZTo6SmF2YVNjcmlwdDsKK30KKwor
c3RhdGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdldEluZm9P
YmplY3QoY29uc3QgSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCit7CisgICAgcmV0dXJuIFByb3Rv
Y29sOjpUYXJnZXQ6OlRhcmdldEluZm86OmNyZWF0ZSgpCisgICAgICAgIC5zZXRUYXJnZXRJZCh0
YXJnZXQuaWRlbnRpZmllcigpKQorICAgICAgICAuc2V0VHlwZSh0YXJnZXRUeXBlVG9Qcm90b2Nv
bFR5cGUodGFyZ2V0LnR5cGUoKSkpCisgICAgICAgIC5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQp
Cit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RhcmdldHMuc2V0KHRhcmdldC5pZGVudGlmaWVy
KCksICZ0YXJnZXQpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CisKKyAgICBpZiAobV9pc0Nvbm5lY3RlZCkKKyAgICAgICAgdGFyZ2V0LmNvbm5l
Y3QoZnJvbnRlbmRDaGFubmVsKCkpOworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdl
dENyZWF0ZWQoYnVpbGRUYXJnZXRJbmZvT2JqZWN0KHRhcmdldCkpOworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldEFnZW50Ojp0YXJnZXRUZXJtaW5hdGVkKEluc3BlY3RvclRhcmdldCYgdGFyZ2V0
KQoreworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXRUZXJtaW5hdGVkKHRhcmdldC5p
ZGVudGlmaWVyKCkpOworCisgICAgbV90YXJnZXRzLnJlbW92ZSh0YXJnZXQuaWRlbnRpZmllcigp
KTsKKworICAgIGlmIChtX2lzQ29ubmVjdGVkKQorICAgICAgICB0YXJnZXQuZGlzY29ubmVjdChm
cm9udGVuZENoYW5uZWwoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5l
Y3RUb1RhcmdldHMoKQoreworICAgIGF1dG8qIGNoYW5uZWwgPSBmcm9udGVuZENoYW5uZWwoKTsK
KworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3RhcmdldHMpIHsKKyAgICAgICAgSW5zcGVjdG9y
VGFyZ2V0KiB0YXJnZXQgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgdGFyZ2V0LT5jb25uZWN0KGNo
YW5uZWwpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWls
ZFRhcmdldEluZm9PYmplY3QoKnRhcmdldCkpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JU
YXJnZXRBZ2VudDo6ZGlzY29ubmVjdEZyb21UYXJnZXRzKCkKK3sKKyAgICBhdXRvKiBjaGFubmVs
ID0gZnJvbnRlbmRDaGFubmVsKCk7CisKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV90YXJnZXRz
KSB7CisgICAgICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0ID0gZW50cnkudmFsdWU7CisgICAg
ICAgIHRhcmdldC0+ZGlzY29ubmVjdChjaGFubmVsKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJmNDdjNDhhYzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEluc3BlY3RvclRhcmdldDsKKwordHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rv
clRhcmdldEFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIFRhcmdldEJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yVGFyZ2V0QWdlbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIEluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiwgQmFja2VuZERpc3BhdGNo
ZXImKTsKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUYXJnZXRBZ2VudCgpID0gZGVmYXVsdDsKKwor
ICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFj
a2VuZERpc3BhdGNoZXIqKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOworCisgICAgdmlydHVhbCBGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpID0gMDsKKworICAgIC8vIFRhcmdldEJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcgorICAgIHZvaWQgZXhpc3RzKEVycm9yU3RyaW5nJikgZmluYWw7CisgICAg
dm9pZCBpbml0aWFsaXplZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpIGZp
bmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CisKKyAgICAvLyBU
YXJnZXQgbGlmZWN5Y2xlLgorICAgIHZvaWQgdGFyZ2V0Q3JlYXRlZChJbnNwZWN0b3JUYXJnZXQm
KTsKKyAgICB2b2lkIHRhcmdldFRlcm1pbmF0ZWQoSW5zcGVjdG9yVGFyZ2V0Jik7CisKKyAgICAv
LyBUYXJnZXQgbWVzc2FnZXMuCisgICAgdm9pZCBzZW5kTWVzc2FnZUZyb21UYXJnZXRUb0Zyb250
ZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK3By
aXZhdGU6CisgICAgdm9pZCBjb25uZWN0VG9UYXJnZXRzKCk7CisgICAgdm9pZCBkaXNjb25uZWN0
RnJvbVRhcmdldHMoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXJnZXRGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZjxUYXJnZXRCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9y
VGFyZ2V0Kj4gbV90YXJnZXRzOworICAgIGJvb2wgbV9pc0Nvbm5lY3RlZCB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4wYzA4MTBiYjg1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KQEAgLTAsMCAr
MSw1NyBAQAoreworICAgICJkb21haW4iOiAiVGFyZ2V0IiwKKyAgICAiYXZhaWxhYmlsaXR5Ijog
WyJ3ZWIiXSwKKyAgICAidHlwZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJU
YXJnZXRJbmZvIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRGVzY3JpcHRpb24gb2YgYSB0YXJnZXQuIiwKKyAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0
YXJnZXQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0
cmluZyIsICJlbnVtIjogWyJqYXZhc2NyaXB0IiwgInBhZ2UiLCAid29ya2VyIiwgInNlcnZpY2V3
b3JrZXIiXSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21tYW5k
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZXhpc3RzIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB0aGUgbG9jYWwgaW5z
cGVjdG9yIGhhcyBzd2l0Y2hlZCBvdmVyIHRvIHRoZSBtb2Rlcm4gcGF0aC4iCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImluaXRpYWxpemVkIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIHNob3VsZCBiZSBzZW50IGV4YWN0bHkgb25jZSBhZnRl
ciB0aGUgZnJvbnRlbmQgaGFzIHNlbnQgYWxsIGluaXRpYWxpemF0aW9uIG1lc3NhZ2VzIGFuZCBj
YW4gcmVzdW1lIHRoaXMgdGFyZ2V0LiBUaGlzIGlzIHVzZWZ1bCB0byBpbml0aWFsaXplIHN0YXRl
IChzdWNoIGFzIGJyZWFrcG9pbnRzKSBpbiB0aGUgdGFyZ2V0IGJlZm9yZSBleGVjdXRpb24uIFRo
aXMgY29tbWFuZCBpcyByZXF1aXJlZCB0byBhbGxvdyBleGVjdXRpb24gaW4gdGhlIFRhcmdldC4i
LAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0YXJnZXRJZCIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJzZW5kTWVzc2FnZVRvVGFyZ2V0IiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZW5kIGFuIEluc3BlY3RvciBQcm90b2NvbCBt
ZXNzYWdlIHRvIGJlIGRpc3BhdGNoZWQgdG8gYSBUYXJnZXQncyBhZ2VudHMuIiwKKyAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQi
LCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZXNzYWdl
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkpTT04gSW5zcGVjdG9yIFByb3Rv
Y29sIG1lc3NhZ2UgKGNvbW1hbmQpIHRvIGJlIGRpc3BhdGNoZWQgb24gdGhlIGJhY2tlbmQuIiB9
CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJldmVudHMiOiBbCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInRhcmdldENyZWF0ZWQiLAorICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJbmZvIiwg
IiRyZWYiOiAiVGFyZ2V0SW5mbyIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJ0YXJnZXRUZXJtaW5hdGVkIiwKKyAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAi
dHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCIsCisgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRhcmdldElk
IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWVzc2Fn
ZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJKU09OIEluc3BlY3RvciBQcm90
b2NvbCBtZXNzYWdlIChyZXNwb25zZSBvciBldmVudCkgdG8gYmUgZGlzcGF0Y2hlZCBvbiB0aGUg
ZnJvbnRlbmQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0b3IucHkKaW5kZXggZGRkYmUyNmEwMjkuLjIyYmRjODFkMGFmIDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdG9yLnB5CkBAIC00Miw3ICs0Miw3IEBAIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCdnbG9iYWwnKQogZGVmIHVjZmlyc3Qoc3RyKToKICAgICByZXR1cm4gc3RyWzoxXS51cHBlcigp
ICsgc3RyWzE6XQogCi1fQUxXQVlTX1NQRUNJQUxDQVNFRF9FTlVNX1ZBTFVFX1NVQlNUUklOR1Mg
PSBzZXQoWycyRCcsICdBUEknLCAnQ1NTJywgJ0RPTScsICdIVE1MJywgJ0pJVCcsICdYSFInLCAn
WE1MJywgJ0lPUycsICdNYWNPUycsICdKYXZhU2NyaXB0J10pCitfQUxXQVlTX1NQRUNJQUxDQVNF
RF9FTlVNX1ZBTFVFX1NVQlNUUklOR1MgPSBzZXQoWycyRCcsICdBUEknLCAnQ1NTJywgJ0RPTScs
ICdIVE1MJywgJ0pJVCcsICdYSFInLCAnWE1MJywgJ0lPUycsICdNYWNPUycsICdKYXZhU2NyaXB0
JywgJ1NlcnZpY2VXb3JrZXInXSkKIF9BTFdBWVNfU1BFQ0lBTENBU0VEX0VOVU1fVkFMVUVfTE9P
S1VQX1RBQkxFID0gZGljdChbKHMudXBwZXIoKSwgcykgZm9yIHMgaW4gX0FMV0FZU19TUEVDSUFM
Q0FTRURfRU5VTV9WQUxVRV9TVUJTVFJJTkdTXSkKIAogX0VOVU1fSURFTlRJRklFUl9SRU5BTUVf
TUFQID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg2ODNlODc4YzcyLi4zODhiMGU0ZDBhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTExLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIgSW5zcGVjdG9y
IHdpbmRvdyBhbGl2ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90ZSBJbnNwZWN0
b3IpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0
OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjphbGxvd1JlbW90ZUluc3Bl
Y3Rpb25Ub1BhZ2VEaXJlY3RseSBjb25zdCk6CisgICAgICAgIFByb3ZpZGUgYSBob29rIHNvIHRo
YXQgYSBjbGllbnQgbWF5IHdpc2ggdG8gYWxsb3cgZGlyZWN0IHJlbW90ZSBpbnNwZWN0aW9uIG9m
IHRoZSBQYWdlLgorICAgICAgICBUaGlzIGlzIHVzZWQgYnkgV2ViS2l0TGVnYWN5IG9ubHkuCisK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoUGFnZTo6UGFnZSk6CisgICAgICAg
IE9ubHkgZW5hYmxlIHRoZSBQYWdlRGVidWdnYWJsZSBpZiB0aGUgY2xpZW50IHdpc2hlcyByZW1v
dGUgaW5zcGVjdGlvbiBvZiB0aGUgUGFnZSBkaXJlY3RseS4KKyAgICAgICAgVGhpcyBpcyB1c2Vk
IGJ5IFdlYktpdExlZ2FjeSBvbmx5LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2FibGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Fi
bGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAg
ICAgV2hlbiBhIGZyb250ZW5kIGNvbm5lY3RzIGp1c3QgYWx3YXlzIGVuYWJsZSB0aGUgZGV2ZWxv
cGVyIGV4dHJhcyBmb3IgdGhlIFBhZ2UuCisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggb25s
eSBmb3IgdGhlIHJlbW90ZSBwYXRoLCB3aGljaCBhbGxvd2VkIGluc3BlY3Rpb24gaWYgZGV2ZWxv
cGVyCisgICAgICAgIGV4dHJhcyB3ZXJlIG5vdCBhbHJlYWR5IGVuYWJsZWQgKGlPUykuIFRoaXMg
c2ltcGxpZmllcyB0aGUgbG9naWMsIGFuZCB0b2dnbGluZworICAgICAgICBkZXZlbG9wZXIgZXh0
cmFzIGFmdGVyIGl0IHdhcyBhbHJlYWR5IGVuYWJsZWQgaXMgbm90IHJlYWxseSBpbXBvcnRhbnQu
CisKIDIwMTgtMTEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIERyYXcgY2FwcyBsb2NrIGluZGljYXRvciBpbiBwYXNzd29yZCBmaWVsZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MzZlZGNhZDEy
OS4uNjA5ZDEyNTJlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmgKQEAgLTYyLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0
U2VhcmNoaW5nRm9yTm9kZShib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudFNlbGVj
dGlvbkNoYW5nZWQoYm9vbCkgeyB9CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dSZW1vdGVJbnNwZWN0aW9uVG9QYWdlRGlyZWN0bHkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3YTEyYTdhYjIxZC4uNzQyOTc5NjFj
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTI1OSw2ICsyNTksOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5l
Y3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaAogICAgIEFT
U0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBmcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVCht
X2luc3BlY3RvckNsaWVudCk7CiAKKyAgICAvLyBJZiBhIGZyb250ZW5kIGhhcyBjb25uZWN0ZWQg
ZW5hYmxlIHRoZSBkZXZlbG9wZXIgZXh0cmFzIGFuZCBrZWVwIHRoZW0gZW5hYmxlZC4KKyAgICBt
X3BhZ2Uuc2V0dGluZ3MoKS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOworCiAgICAg
Y3JlYXRlTGF6eUFnZW50cygpOwogCiAgICAgYm9vbCBjb25uZWN0ZWRGaXJzdEZyb250ZW5kID0g
IW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYjQ1ZDZhMzA1MzcuLjlmZGQzYjcx
NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7
CiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEluZGlj
YXRpbmcoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IGJ1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0ZWROb2RlcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlNDc2ZGQ4Mzk4
OS4uMDk0MGZlMTk2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCkBAIC0yOTQs
NyArMjk1LDggQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0
aW9uKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUtPmluaXQoKTsKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyLT5p
bnNwZWN0b3JDbGllbnQoKSAmJiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RvckNsaWVu
dCgpLT5hbGxvd1JlbW90ZUluc3BlY3Rpb25Ub1BhZ2VEaXJlY3RseSgpKQorICAgICAgICBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCmluZGV4IGIzMTgwYzcwNGJkLi4z
MmU0Y2I3YWE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTcx
LDEyICs3MSw2IEBAIGJvb2wgUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25z
dAogCiB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljQ29ubmVjdGlvbiwgYm9vbCBpbW1lZGlhdGVs
eVBhdXNlKQogewotICAgIGlmICghbV9wYWdlLnNldHRpbmdzKCkuZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKSB7Ci0gICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IHRydWU7
Ci0gICAgICAgIG1fcGFnZS5zZXR0aW5ncygpLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1
ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9
IGZhbHNlOwotCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9
IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlci5j
b25uZWN0RnJvbnRlbmQoY2hhbm5lbCwgaXNBdXRvbWF0aWNDb25uZWN0aW9uLCBpbW1lZGlhdGVs
eVBhdXNlKTsKIH0KQEAgLTg1LDExICs3OSw2IEBAIHZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nv
bm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwpCiB7CiAgICAgSW5zcGVj
dG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hh
bm5lbCk7Ci0KLSAgICBpZiAobV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7Ci0gICAg
ICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICBtX3Bh
Z2Uuc2V0dGluZ3MoKS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKLSAgICB9CiB9
CiAKIHZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVi
dWdnYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDE2
ZmI0Yjg4YjAwLi4xMDA5MjliYTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUu
aApAQCAtNTgsNyArNTgsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsK
ICAgICBTdHJpbmcgbV9uYW1lT3ZlcnJpZGU7Ci0gICAgYm9vbCBtX2ZvcmNlZERldmVsb3BlckV4
dHJhc0VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggZDRiOTM1NDk2YTEuLjc4MzU3YjA5OGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjUgQEAKKzIwMTgtMTEtMDkgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBL
ZWVwIFdlYiBJbnNwZWN0b3Igd2luZG93IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09O
KSAoUmVtb3RlIEluc3BlY3RvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzdGFy
dHMgaW50cm9kdWNpbmcgbXVsdGktdGFyZ2V0IHN1cHBvcnQgaW50byB0aGUgV2ViIEluc3BlY3Rv
ciBmcm9udGVuZC4KKyAgICAgICAgU3BlY2lmaWNhbGx5IGEgYmFja2VuZCBjb25uZWN0aW9uIHRo
YXQgaXMgcGVyc2lzdGVudCwgYnV0IHRoZSBhYmlsaXR5IHRvIGNvbm5lY3QKKyAgICAgICAgdG8g
YW5kIHRyYW5zaXRpb24gYmV0d2VlbiBQYWdlIHRhcmdldHMgcmVjZWl2ZWQgdGhyb3VnaCB0aGF0
IGJhY2tlbmQgY29ubmVjdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhl
IGNvbmNlcHQgb2YgYSAiQmFja2VuZCBUYXJnZXQiIHdoaWNoIGlzIHRoZSBzaW5nbGUKKyAgICAg
ICAgY29ubmVjdGlvbiB0aGF0IHRoZSBmcm9udGVuZCBjb250YWlucyB0byBhIGJhY2tlbmQuIFRo
ZSBvbGQgd2F5IG9mIGNvbm5lY3RpbmcKKyAgICAgICAgZGlyZWN0bHkgdG8gYSB0YXJnZXQgaXMg
c3RpbGwgc3VwcG9ydGVkLiBJbiB0aGF0IGNhc2UgdGhlIGZyb250ZW5kIGNvbnN0cnVjdHMKKyAg
ICAgICAgYSBEaXJlY3RCYWNrZW5kVGFyZ2V0IGZvciB0aGUgZGVidWdnYWJsZSB0eXBlIHRoZSBm
cm9udGVuZCB3YXMgc3Bhd25zIGZvci4KKyAgICAgICAgSG93ZXZlciwgaWYgdGhlIGZyb250ZW5k
IG9wZW5zIGFuZCBoYXMgYSBUYXJnZXRBZ2VudCwgdGhlbiBpdCBpcyBsaWtlbHkKKyAgICAgICAg
Y29ubmVjdGVkIHRvIGEgbXVsdGktdGFyZ2V0IHN1cHBvcnRpbmcgYmFja2VuZCBhbmQgaW5zdGVh
ZCBjb25zdHJ1Y3RzIGEKKyAgICAgICAgTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCwgYW5kIHdp
bGwgcmVjZWl2ZSBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgIHN1Yi10YXJnZXRz
IHRvIGNvbm5lY3QgdG8uIFRoZSBvbmx5IHN1Yi10YXJnZXQgYXQgdGhlIG1vbWVudCBpcyBhIFBh
Z2UKKyAgICAgICAgc3ViLXRhcmdldC4KKworICAgICAgICBBcyBwYXJ0IG9mIGJyaW5naW5nIHVw
IG11bHRpLXRhcmdldCBzdXBwb3J0IHRoaXMgYWRkcyBhIGZldyBtZWFzdXJlcyB0bworICAgICAg
ICBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgZnJvbnRlbmQgaXMgcGxheWluZyBmYXN0IGFu
ZCBsb29zZSB3aXRoIGFnZW50cy4KKyAgICAgICAgV2hlbiB0aGUgZnJvbnRlbmQgZG9lcyBgRm9v
QWdlbnQubWV0aG9kYCBpdCBpbnRlbmRzIHRoYXQgdG8gYmUgcGVyZm9ybWVkCisgICAgICAgIG9u
IHRoZSAibWFpbiIgdGFyZ2V0IGJlaW5nIGRlYnVnZ2VkLiBMaWtld2lzZSB3aGVuIHRoZSBmcm9u
dGVuZCBsb29wcworICAgICAgICBvdmVyIHRhcmdldHMgaXQgZXhwZWN0cyB0aGVtIHRvIGJlIHRo
ZSBkZWJ1Z2dhYmxlIHRhcmdldHMuIFRoaXMgcGF0Y2gKKyAgICAgICAgcHJvZmlsZXMgYSBuZXcg
aW1wbGVtZW50YXRpb24gb2YgYFdJLm1haW5UYXJnZXRgIGFuZCBgV0kudGFyZ2V0c2AgdG8KKyAg
ICAgICAgbWF0Y2ggdGhlIGFzc3VtcHRpb25zIGJlaW5nIG1hZGUgYnkgdGhlIGZyb250ZW5kLgor
CisgICAgICAgICAgLSBJbiBhIGRpcmVjdC10YXJnZXQgd29ybGQsIHRoZXJlIGlzIGEgc2luZ2xl
IHRhcmdldCB3aGljaCBpcworICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgZm9yIGdsb2JhbCBh
Z2VudHMgYW5kIGluIFdJLnRhcmdldHMuCisKKyAgICAgICAgICAtIEluIGEgbXVsdGktdGFyZ2V0
IHdvcmxkLCB0aGUgcGFnZSB0YXJnZXQgaXMgdGhlIG9uZSB0aGF0CisgICAgICAgICAgICBzaG91
bGQgYmUgdXNlZCBmb3IgZ2xvYmFsIGFnZW50cyBhbmQgV0kudGFyZ2V0cyBpcyB0aGUgbGlzdAor
ICAgICAgICAgICAgb2Ygc3ViLXRhcmdldHMgKGV4Y2x1ZGluZyB0aGUgTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldCkuCisKKyAgICAgICAgSW4gdGhlIG11bHRpLXRhcmdldCB3b3JsZCwgdGhlcmUg
YXJlIG5vdyBjb21tb25seSB0d28gVGFyZ2V0cy4gVGhlCisgICAgICAgIE11bHRpcGxleGluZ0Jh
Y2tlbmRUYXJnZXQgYW5kIGEgUGFnZVRhcmdldCBzdWItdGFyZ2V0LiBJbiB0aGUgZnV0dXJlCisg
ICAgICAgIHRoaXMgbWF5IGluY2x1ZGUgbW9yZSB0YXJnZXRzLCBzdWNoIGFzIFNlcnZpY2VXb3Jr
ZXJzLCBEZWRpY2F0ZWRXb3JrZXJzLAorICAgICAgICBhbmQgcGVyaGFwcyBldmVuIGZyYW1lcy4K
KworICAgICAgICBJbiBhIG11bHRpLXRhcmdldCB3b3JsZCwgdGhlIGZyb250ZW5kIGlzIGltbWVk
aWF0ZWx5IHRvbGQgYWJvdXQgdGFyZ2V0cworICAgICAgICBhcyBzb29uIGFzIGl0IG9wZW5zICh2
aWEgdGhlIFRhcmdldC50YXJnZXRDcmVhdGVkKS4gSW4gb3JkZXIgdG8gc3VwcG9ydAorICAgICAg
ICB0aGlzIGZyb250ZW5kIGluaXRpYWxpemF0aW9uIGhhcHBlbnMgd2l0aG91dCBhIG1haW4gdGFy
Z2V0IGJlaW5nIGF2YWlsYWJsZS4KKyAgICAgICAgU28gdGhpcyBtYWtlcyBhIGZldyBzbWFsbCBj
aGFuZ2VzIHRvIGZyb250ZW5kIGluaXRpYWxpemF0aW9uIHRvIHBlcmZvcm0KKyAgICAgICAgYSBi
aXQgb2Ygd29yayBvbmNlIHdlIGtub3cgd2hhdCB0aGUgbWFpbiB0YXJnZXQgaXMuCisKKyAgICAg
ICAgRHVyaW5nIGEgcGFnZSB0cmFuc2l0aW9uIHRoZSBmcm9udGVuZCBpcyB0b2xkIHRvIGRlc3Ry
b3kgZXhpc3RpbmcgdGFyZ2V0cworICAgICAgICBhbmQgaXMgc29vbiBhZnRlciB0b2xkIGFib3V0
IGFueSBuZXcgcGFnZSB0YXJnZXRzICh2aWEgVGFyZ2V0LnRhcmdldFRlcm1pbmF0ZWQKKyAgICAg
ICAgYW5kIFRhcmdldC50YXJnZXRDcmVhdGVkKS4gVGhlIGZyb250ZW5kIHNwZWNpYWwgY2FzZXMg
dGhpcyBwYWdlIHRyYW5zaXRpb24uCisgICAgICAgIEl0IGV4cGVjdHMgb25seSBvbmUgUGFnZSB0
YXJnZXQgdG8gYmUgYWxpdmUgYXQgYW55IHRpbWUsIGFjY2Vzc2libGUgdGhyb3VnaAorICAgICAg
ICBXSS5wYWdlVGFyZ2V0LiBXaGVuIGEgcGFnZVRyYW5pdGlvbiBoYXBwZW5zIHRoZSBXSS5wYWdl
VGFyZ2V0IGNoYW5nZXMsIGFuZCB0aGUKKyAgICAgICAgZnJvbnRlbmQgcGVyZm9ybXMgYSBiaXQg
b2Ygd29yayB0byBwcmVwYXJlIHRoZSBVSSB0byBoYW5kbGUgdGhlIHRyYW5zaXRpb246CisgICAg
ICAgIGA8TWFuYWdlcj4udHJhbnNpdGlvblBhZ2VUYXJnZXRgIC8gV0kuTm90aWZpY2F0aW9uLlRy
YW5zaXRpb25QYWdlVGFyZ2V0LgorICAgICAgICBGb3IgdGhlIG1vc3QgcGFydCB0aGUgVUkgYmVo
YXZlcyBmaW5lIGFzIGxvbmcgb25jZSB0aGVyZSBpcyBhIG1haW4gZnJhbWUKKyAgICAgICAgY2hh
bmdlIGFuZCBtYWluIHJlc291cmNlIGNoYW5nZSBldmVudHMsIGJ1dCB0aG9zZSBvdGhlciBldmVu
dHMgYWxsb3cKKyAgICAgICAgdGhlIGZyb250ZW5kIHRvIHJlc3BvbmQgdG8gdGhlIHNwZWNpZmlj
IHBhZ2UgdHJhbnNpdGlvbiBjYXNlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzOgorICAgICAgICAoV0kubG9hZGVkKToKKyAgICAgICAgKFdJLmluaXRpYWxpemVCYWNr
ZW5kVGFyZ2V0KToKKyAgICAgICAgKFdJLmluaXRpYWxpemVQYWdlVGFyZ2V0KToKKyAgICAgICAg
KFdJLnRyYW5zaXRpb25QYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLnRlcm1pbmF0ZVBhZ2VUYXJn
ZXQpOgorICAgICAgICAoV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
SS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbik6CisgICAgICAgIChXSS5jb250ZW50
TG9hZGVkKToKKyAgICAgICAgTmV3IGdsb2JhbCBmdW5jdGlvbnMgZm9yIHRhcmdldCBpbml0aWFs
aXphdGlvbgorICAgICAgICBhbmQgcGFnZSB0cmFuc2l0aW9uaW5nLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9UZXN0L1Rlc3QuanM6CisgICAgICAgIChXSS5sb2FkZWQpOgorICAgICAgICAo
V0kuaW5pdGlhbGl6ZUJhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuaW5pdGlhbGl6ZVBhZ2VU
YXJnZXQpOgorICAgICAgICAoV0kudHJhbnNpdGlvblBhZ2VUYXJnZXQpOgorICAgICAgICAoV0ku
dGVybWluYXRlUGFnZVRhcmdldCk6CisgICAgICAgIChXSS5yZXNldE1haW5FeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdJLnJlZGlyZWN0R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uKToKKyAg
ICAgICAgTmV3IGdsb2JhbCBmdW5jdGlvbnMgZm9yIHRhcmdldCBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgVGVzdHMgY29udGludWUgdG8gYmUgYSBkaXJlY3QgY29ubmVjdGlvbiB0byB0aGUgUGFn
ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0T2JzZXJ2ZXIuanM6
CisgICAgICAgIChXSS5UYXJnZXRPYnNlcnZlci5wcm90b3R5cGUudGFyZ2V0Q3JlYXRlZCk6Cisg
ICAgICAgIChXSS5UYXJnZXRPYnNlcnZlci5wcm90b3R5cGUudGFyZ2V0VGVybWluYXRlZCk6Cisg
ICAgICAgIChXSS5UYXJnZXRPYnNlcnZlci5wcm90b3R5cGUuZGlzcGF0Y2hNZXNzYWdlRnJvbVRh
cmdldCk6CisgICAgICAgIE5ldyBvYnNlcnZlciBnb2VzIHRvIHRoZSBtYW5hZ2VyLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzOgorICAgICAg
ICAoV0kuVGFyZ2V0TWFuYWdlcik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlw
ZS5nZXQgdGFyZ2V0cyk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5nZXQg
YWxsVGFyZ2V0cyk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS50YXJnZXRG
b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnRhcmdl
dENyZWF0ZWQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0VGVy
bWluYXRlZCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1l
c3NhZ2VGcm9tVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmNy
ZWF0ZU11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
ci5wcm90b3R5cGUuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCk6CisgICAgICAgIChXSS5UYXJn
ZXRNYW5hZ2VyLnByb3RvdHlwZS5fYWRkVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFn
ZXIucHJvdG90eXBlLl9yZW1vdmVUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5w
cm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3Rv
dHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRp
b24pOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuYWRkVGFyZ2V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVRhcmdldCk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXpl
TWFpblRhcmdldCk6IERlbGV0ZWQuCisgICAgICAgIFRhcmdldE1hbmFnZXIgaXMgd2hlcmUgd2Ug
aGFuZGxlIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIHRhcmdldHMKKyAgICAgICAgYW5kIHRoZWly
IGNvbm5lY3Rpb25zLiBJbiBvcmRlciB0byBzaW1wbGlmeSB0aGluZ3MgYSBiaXQgd2UgbWFrZQor
ICAgICAgICBgV0kudGFyZ2V0c2AsIHdoaWNoIGdvZXMgdGhyb3VnaCBgZ2V0IHRhcmdldHMoKWAg
YW4gYXJyYXkgaW5zdGVhZAorICAgICAgICBvZiBhIFNldC4gQW5kIHRoaXMgaW5jbHVkZXMgb25s
eSB0aGUgc3ViLXRhcmdldHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1dvcmtlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5Xb3JrZXJNYW5hZ2VyLnByb3RvdHlwZS53
b3JrZXJDcmVhdGVkKToKKyAgICAgICAgKFdJLldvcmtlck1hbmFnZXIucHJvdG90eXBlLndvcmtl
clRlcm1pbmF0ZWQpOgorICAgICAgICBXb3JrZXJzIGFyZSBzdGlsbCBzcGVjaWFsIHRhcmdldCBs
aWtlIHRoaW5ncyB0aGF0IG11bHRpcGxleCB0aHJvdWdoCisgICAgICAgIFdvcmtlckFnZW50IGlu
c3RlYWQgb2YgVGFyZ2V0QWdlbnQuIFdlJ2QgbGlrZSB0byBwcm9tb3RlIHRoZXNlIHRvCisgICAg
ICAgIGJlIGZ1bGwgdGFyZ2V0cyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9EaXJlY3RCYWNrZW5kVGFyZ2V0LmpzOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcy4KKyAg
ICAgICAgKFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuRGlyZWN0QmFja2Vu
ZFRhcmdldC5jb25uZWN0aW9uSW5mb0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoV0kuRGlyZWN0
QmFja2VuZFRhcmdldC5wcm90b3R5cGUuZ2V0IG1haW5SZXNvdXJjZSk6CisgICAgICAgIChXSS5E
aXJlY3RCYWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5zZXQgbWFpblJlc291cmNlKToKKyAgICAgICAg
VGhpcyBpcyB0aGUgb25seSAiTWFpblRhcmdldCIgY2xhc3MuIEl0IGlzIHRoZSBiYWNrZW5kIHRh
cmdldCBmb3IgYSBkaXJlY3QgY29ubmVjdGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJLk11bHRp
cGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRh
cmdldC5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNr
ZW5kVGFyZ2V0LnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdC
YWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5nZXQgZXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
SS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5nZXQgbWFpblJlc291cmNlKToK
KyAgICAgICAgVGhpcyBpcyB0aGUgbmV3IGJhY2tlbmQgdGFyZ2V0IGZvciBhIG11bHRpLXRhcmdl
dCBjb25uZWN0aW9uLgorICAgICAgICBXZSBkb24ndCBleHBlY3QgaXQgdG8gYmUgdHJlYXRlZCBs
aWtlIG90aGVyIHRhcmdldHMsIHNvIHdlIGRvbid0CisgICAgICAgIGV4cGVjdCBhbnlvbmUgdG8g
YXNrIGl0IGZvciByZXNvdXJjZXMvZXhlY3V0aW9uQ29udGV4dC9uYW1lIGluZm8uCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzOgorICAgICAg
ICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyk6
CisgICAgICAgIFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBieSB3YXRjaCBleHByZXNzaW9ucyBiZWZv
cmUgYW55IHRhcmdldCwgYW5kCisgICAgICAgIHRoZXJlZm9yZSBleGVjdXRpb24gY29udGV4dCBp
cyBhdmFpbGFibGUuIEp1c3QgcmV0dXJuIG51bGwsIHdoZW4KKyAgICAgICAgYW4gZXhlY3V0aW9u
IGNvbnRleHQgaXMgYXZhaWxhYmxlIHRob3NlIGNsaWVudHMgd2lsbCB0cnkgYWdhaW4uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qczoKKyAgICAgICAgUHJvdmlk
ZSBhbiBXSS5pc0VuZ2luZWVyaW5nQnVpbGQgYm9vbGVhbiB0aGF0IGNhbiBiZSB1c2VkIGZvciB2
YXJpb3VzCisgICAgICAgIGRlYnVnZ2luZyBmZWF0dXJlcy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAg
ICAgICBOZXcgcmVzb3VyY2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9J
bnNwZWN0b3JCYWNrZW5kLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3Rv
dHlwZS5kaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBl
LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5B
Z2VudCk6CisgICAgICAgIGBJbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uYCB3YXMgcmVu
YW1lZCBgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbmAuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanM6CisgICAgICAgIChJbnNwZWN0b3JC
YWNrZW5kLkNvbm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9u
LnByb3RvdHlwZS5fZGlzcGF0Y2hSZXNwb25zZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5k
LkNvbm5lY3Rpb24ucHJvdG90eXBlLl9zZW5kQ29tbWFuZFRvQmFja2VuZFdpdGhDYWxsYmFjayk6
CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24ucHJvdG90eXBlLl9zZW5kQ29t
bWFuZFRvQmFja2VuZEV4cGVjdGluZ1Byb21pc2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2Vu
ZC5CYWNrZW5kQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkJhY2tlbmRD
b25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yQmFja2Vu
ZC5UYXJnZXRDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29u
bmVjdGlvbi5zZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIFVzZSBhIGdsb2JhbCBzZXF1
ZW5jZSBpZCB0byBtYWtlIGZpbHRlcmluZyBhIGJpdCBlYXNpZXIgaW4gcHJvdG9jb2wgdHJhY2lu
Zy4KKyAgICAgICAgVGFyZ2V0Q29ubmVjdGlvbiBpcyBpZGVudGljYWwgdG8gV29ya2VyQ29ubmVj
dGlvbiBleGNlcHQgaXQgdXNlcyBUYXJnZXRBZ2VudAorICAgICAgICBpbnN0ZWFkIG9mIFdvcmtl
ckFnZW50IHRvIHBlcmZvcm0gbXVsdGlwbGV4aW5nLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9KYXZhU2NyaXB0Q29udGV4dFRhcmdldC5qczoKKyAgICAgICAgKFdJLkphdmFT
Y3JpcHRDb250ZXh0VGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1Bh
Z2VUYXJnZXQuanM6CisgICAgICAgIChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLlBhZ2VU
YXJnZXQucHJvdG90eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIFNwZWNpYWxpemVkIHRh
cmdldCB0eXBlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRl
YmFyUGFuZWwuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCk6CisgICAgICAg
IChXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3RhcmdldEFkZGVkKToKKyAgICAg
ICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdGFyZ2V0UmVtb3ZlZCk6Cisg
ICAgICAgIChXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUNhbGxTdGFj
a1RyZWVPdXRsaW5lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBl
Ll90YXJnZXRBZGRlZCk6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5
cGUuX3RhcmdldFJlbW92ZWQpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlLl9jYWxsRnJhbWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLnByb3RvdHlwZS5fdXBkYXRlVGhyZWFkSW5kaWNhdG9yV2lkZ2V0KToKKyAgICAgICAg
KFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fcmVpbnNlcnRBbGxUaHJlYWRJbmRp
Y2F0b3JzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoK
KyAgICAgICAgKFdJLlF1aWNrQ29uc29sZS5wcm90b3R5cGUuaW5pdGlhbGl6ZU1haW5FeGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudCk6CisgICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90
eXBlLl90YXJnZXRBZGRlZCk6CisgICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl90
YXJnZXRSZW1vdmVkKToKKyAgICAgICAgV2UgbWFrZSB0YXJnZXQgYWRkZWQgZ2V0IGNhbGxlZCB3
aXRoIGFsbCB0YXJnZXRzLCBpbmNsdWRpbmcgdGhlCisgICAgICAgIE11bHRpcGxleGluZ0JhY2tl
bmRUYXJnZXQgYW5kIFBhZ2VUYXJnZXRzLCBib3RoIG9mIHdoaWNoIHdvdWxkCisgICAgICAgIG5v
dCBoYXZlIGhhcHBlbmVkIGJlZm9yZS4gQmVmb3JlIGl0IHdhcyBvbmx5IFdvcmtlclRhcmdldHMu
IE1ha2UKKyAgICAgICAgdGhlc2Ugc2l0ZXMgYSBsaXR0bGUgbW9yZSByb2J1c3QgZm9yIHRoZSB0
eXBlIG9mIHRhcmdldCB0aGV5IGV4cGVjdAorICAgICAgICB0byBiZSBhYmxlIHRvIGhhbmRsZS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9NTWFu
YWdlcik6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS50cmFuc2l0aW9uUGFnZVRh
cmdldCk6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RG9jdW1lbnQp
OgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX3NldERvY3VtZW50KToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAg
ICAoV0kuTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLnRyYW5zaXRpb25QYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5leGVjdXRpb25Db250ZXh0Q3JlYXRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFu
YWdlci5wcm90b3R5cGUuX3Byb2Nlc3NNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzOgorICAgICAg
ICAoV0kuRGVmYXVsdERhc2hib2FyZCk6CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkLnBy
b3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNo
Ym9hcmQucHJvdG90eXBlLl90cmFuc2l0aW9uUGFnZVRhcmdldCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLk5l
dHdvcmtUYWJsZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLk5ldHdv
cmtUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdHJhbnNpdGlvblBhZ2VUYXJnZXQpOgorICAg
ICAgICBTcGVjaWFsIGNhc2UgaGFuZGxpbmcgd2hlbiBwZXJmb3JtaW5nIGEgcGFnZSB0cmFuc2l0
aW9uLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25S
ZXBvcnRlci5qczoKKyAgICAgICAgRG9jdW1lbnQgcmVsb2FkcyBhcmUgbm90IHN1cHBvcnRlZCBy
aWdodCBub3cuCisKIDIwMTgtMTEtMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbmNsdWRlIHRhcmdldCBpZGVudGlmaWVy
IGluIHByb3RvY29sIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBkNTE5NGU1OTlkMi4uNWJmMmVhNDZhYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAg
LTUxLDYgKzUxLDggQEAgV0kuTGF5b3V0RGlyZWN0aW9uID0gewogV0kubG9hZGVkID0gZnVuY3Rp
b24oKQogewogICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIElu
c3BlY3RvckJhY2tlbmQuCisgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJUYXJnZXRE
aXNwYXRjaGVyKQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyVGFyZ2V0RGlzcGF0
Y2hlcihuZXcgV0kuVGFyZ2V0T2JzZXJ2ZXIpOwogICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVySW5zcGVjdG9yRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3Rlckluc3BlY3RvckRpc3BhdGNoZXIobmV3IFdJLkluc3BlY3Rvck9ic2VydmVyKTsKICAgICBp
ZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclBhZ2VEaXNwYXRjaGVyKQpAQCAtMTQ4LDEzICsx
NTAsOTIgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3dpbmRvd0tleWRvd25M
aXN0ZW5lcnMgPSBbXTsKIAogICAgIC8vIFRhcmdldHMuCi0gICAgV0kubWFpblRhcmdldCA9IG5l
dyBXSS5NYWluVGFyZ2V0OwotICAgIFdJLm1haW5UYXJnZXQuaW5pdGlhbGl6ZSgpOwotICAgIFdJ
LnBhZ2VUYXJnZXQgPSBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2Fi
bGVUeXBlLldlYiA/IFdJLm1haW5UYXJnZXQgOiBudWxsOworICAgIFdJLmJhY2tlbmRUYXJnZXQg
PSBudWxsOworICAgIFdJLnBhZ2VUYXJnZXQgPSBudWxsOwogCi0gICAgLy8gUG9zdC10YXJnZXQg
aW5pdGlhbGl6YXRpb24uCi0gICAgV0kudGFyZ2V0TWFuYWdlci5pbml0aWFsaXplTWFpblRhcmdl
dCgpOwotICAgIFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBXSS5t
YWluVGFyZ2V0LmV4ZWN1dGlvbkNvbnRleHQ7CisgICAgaWYgKCF3aW5kb3cuVGFyZ2V0QWdlbnQp
CisgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCgpOwor
ICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogRWxpbWluYXRlIGBUYXJnZXRBZ2VudC5leGlz
dHNgIG9uY2UgdGhlIGxvY2FsIGluc3BlY3RvcgorICAgICAgICAvLyBpcyBjb25maWd1cmVkIHRv
IHVzZSB0aGUgTXVsdGlwbGV4aW5nIGNvZGUgcGF0aC4KKyAgICAgICAgVGFyZ2V0QWdlbnQuZXhp
c3RzKChlcnJvcikgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAg
IFdJLnRhcmdldE1hbmFnZXIuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCgpOworICAgICAgICB9
KTsKKyAgICB9Cit9OworCitXSS5pbml0aWFsaXplQmFja2VuZFRhcmdldCA9IGZ1bmN0aW9uKHRh
cmdldCkKK3sKKyAgICBjb25zb2xlLmFzc2VydCghV0kubWFpblRhcmdldCk7CisKKyAgICBXSS5i
YWNrZW5kVGFyZ2V0ID0gdGFyZ2V0OworCisgICAgV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4
dCgpOworfTsKKworV0kuaW5pdGlhbGl6ZVBhZ2VUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCit7
CisgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5E
ZWJ1Z2dhYmxlVHlwZS5XZWIpOworICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlID09PSBX
SS5UYXJnZXQuVHlwZS5QYWdlIHx8IHRhcmdldCBpbnN0YW5jZW9mIFdJLkRpcmVjdEJhY2tlbmRU
YXJnZXQpOworCisgICAgV0kucGFnZVRhcmdldCA9IHRhcmdldDsKKworICAgIFdJLnJlZGlyZWN0
R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uKFdJLnBhZ2VUYXJnZXQuY29ubmVjdGlvbik7CisKKyAg
ICBXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0KCk7Cit9OworCitXSS50cmFuc2l0aW9uUGFn
ZVRhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKK3sKKyAgICBjb25zb2xlLmFzc2VydCghV0kucGFn
ZVRhcmdldCk7CisgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBl
ID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpOworICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50
eXBlID09PSBXSS5UYXJnZXQuVHlwZS5QYWdlKTsKKworICAgIFdJLnBhZ2VUYXJnZXQgPSB0YXJn
ZXQ7CisKKyAgICBXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5wYWdlVGFy
Z2V0LmNvbm5lY3Rpb24pOworCisgICAgV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCgpOwor
CisgICAgLy8gQWN0aW9ucyB0byB0cmFuc2l0aW9uIHRoZSBwYWdlIHRhcmdldC4KKyAgICB0aGlz
Lm5vdGlmaWNhdGlvbnMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk5vdGlmaWNhdGlvbi5U
cmFuc2l0aW9uUGFnZVRhcmdldCk7CisgICAgV0kuZG9tTWFuYWdlci50cmFuc2l0aW9uUGFnZVRh
cmdldCgpOworICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnRyYW5zaXRpb25QYWdlVGFyZ2V0KCk7Cit9
OworCitXSS50ZXJtaW5hdGVQYWdlVGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KQoreworICAgIGNv
bnNvbGUuYXNzZXJ0KFdJLnBhZ2VUYXJnZXQpOworICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnBhZ2VU
YXJnZXQgPT09IHRhcmdldCk7CisgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVn
Z2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpOworCisgICAgV0kucGFnZVRhcmdl
dCA9IG51bGw7CisKKyAgICBXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5i
YWNrZW5kQ29ubmVjdGlvbik7Cit9OworCitXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0ID0g
ZnVuY3Rpb24oKQoreworICAgIGlmIChXSS5tYWluVGFyZ2V0IGluc3RhbmNlb2YgV0kuTXVsdGlw
bGV4aW5nQmFja2VuZFRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFdJLm1haW5U
YXJnZXQuZXhlY3V0aW9uQ29udGV4dCkgeworICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5hY3Rp
dmVFeGVjdXRpb25Db250ZXh0ID0gV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0OworICAg
ICAgICBpZiAoV0kucXVpY2tDb25zb2xlKQorICAgICAgICAgICAgV0kucXVpY2tDb25zb2xlLmlu
aXRpYWxpemVNYWluRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoKTsKKyAgICB9Cit9Owor
CitXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKGNvbm5lY3Rp
b24pCit7CisgICAgLy8gVGhpcyBtYWtlcyBnbG9iYWwgd2luZG93LkZvb0FnZW50IGRpc3BhdGNo
IHRvIHRoZSBhY3RpdmUgcGFnZSB0YXJnZXQuCisgICAgZm9yIChsZXQgZG9tYWluIGluIEluc3Bl
Y3RvckJhY2tlbmQuX2FnZW50cykgeworICAgICAgICBpZiAoZG9tYWluICE9PSAiVGFyZ2V0Iikg
eworICAgICAgICAgICAgbGV0IGFnZW50ID0gSW5zcGVjdG9yQmFja2VuZC5fYWdlbnRzW2RvbWFp
bl07CisgICAgICAgICAgICBhZ2VudC5jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAg
fQorICAgIH0KIH07CiAKIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCkBAIC00NzUsOCAr
NTU2LDggQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBTdG9yZSB0aGlz
IG9uIHRoZSB3aW5kb3cgaW4gY2FzZSB0aGUgV2ViSW5zcGVjdG9yIGdsb2JhbCBnZXRzIGNvcnJ1
cHRlZC4KICAgICB3aW5kb3cuX19mcm9udGVuZENvbXBsZXRlZExvYWQgPSB0cnVlOwogCi0gICAg
aWYgKHRoaXMucnVuQm9vdHN0cmFwT3BlcmF0aW9ucykKLSAgICAgICAgdGhpcy5ydW5Cb290c3Ry
YXBPcGVyYXRpb25zKCk7CisgICAgaWYgKFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMpCisgICAg
ICAgIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMoKTsKIH07CiAKIFdJLnBlcmZvcm1PbmVUaW1l
RnJvbnRlbmRJbml0aWFsaXphdGlvbnNVc2luZ1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKQEAg
LTE1MDUsNiArMTU4Niw3IEBAIFdJLl9jb250ZXh0TWVudVJlcXVlc3RlZCA9IGZ1bmN0aW9uKGV2
ZW50KQogICAgICAgICBwcm9wb3NlZENvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRl
RnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgcHJvcG9zZWRDb250ZXh0TWVudS5hcHBlbmRTZXBh
cmF0b3IoKTsKICAgICAgICAgcHJvcG9zZWRDb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLnVubG9j
YWxpemVkU3RyaW5nKCJSZWxvYWQgV2ViIEluc3BlY3RvciIpLCAoKSA9PiB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogUmVsb2FkIFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRp
cGxleGluZ0JhY2tlbmRUYXJnZXQuCiAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2Fk
KCk7CiAgICAgICAgIH0pOwogCkBAIC0yMTczLDYgKzIyNTUsNyBAQCBXSS5zZXRMYXlvdXREaXJl
Y3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkKICAgICBpZiAoV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rp
b24oKSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLkxUUiAmJiB0aGlzLl9kb2NrQ29uZmlndXJhdGlv
biA9PT0gV0kuRG9ja0NvbmZpZ3VyYXRpb24uTGVmdCkKICAgICAgICAgdGhpcy5fZG9ja1JpZ2h0
KCk7CiAKKyAgICAvLyBGSVhNRTogUmVsb2FkIFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qgd29yayB3
aXRoIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuCiAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9h
ZCgpOwogfTsKIApAQCAtMjY3NSw2ICsyNzU4LDE5IEBAIFdJLnJlcG9ydEludGVybmFsRXJyb3Ig
PSBmdW5jdGlvbihlcnJvck9yU3RyaW5nLCBkZXRhaWxzID0ge30pCiAgICAgICAgIGNvbnNvbGUu
ZXJyb3IoZXJyb3IpOwogfTsKIAorLy8gTWFueSBwbGFjZXMgYXNzdW1lIHRoZSAibWFpbiIgdGFy
Z2V0IGhhcyByZXNvdXJjZXMuCisvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgbWFpbiBiYWNrZW5k
IHRhcmdldCBpcyBhIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQKKy8vIHRoYXQgdGFyZ2V0IGhh
cyBlc3NlbnRpYWxseSBub3RoaW5nLiBJbiB0aGF0IGNhc2UgZGVmZXIgdG8gdGhlIHBhZ2UKKy8v
IHRhcmdldCwgc2luY2UgdGhhdCBpcyB0aGUgcmVhbCAibWFpbiIgdGFyZ2V0IHRoZSBmcm9udGVu
ZCBpcyBhc3N1bWluZy4KK09iamVjdC5kZWZpbmVQcm9wZXJ0eShXSSwgIm1haW5UYXJnZXQiLAor
eworICAgIGdldCgpIHsgcmV0dXJuIFdJLnBhZ2VUYXJnZXQgfHwgV0kuYmFja2VuZFRhcmdldDsg
fQorfSk7CisKKy8vIFRoaXMgbGlzdCBvZiB0YXJnZXRzIGFyZSBub24tTXVsdGlwbGV4aW5nIHRh
cmdldHMuCisvLyBTbyBpZiB0aGVyZSBpcyBhIG11bHRpcGxleGluZyB0YXJnZXQsIGFuZCBtdWx0
aXBsZSBzdWItdGFyZ2V0cworLy8gdGhpcyBpcyBqdXN0IHRoZSBsaXN0IG9mIHN1Yi10YXJnZXRz
LiBBbG1vc3Qgbm8gY29kZSBleHBlY3RzCisvLyB0byBhY3R1YWxseSBpbnRlcmFjdCB3aXRoIHRo
ZSBNdWx0aXBsZXhpbmcgdGFyZ2V0LgogT2JqZWN0LmRlZmluZVByb3BlcnR5KFdJLCAidGFyZ2V0
cyIsCiB7CiAgICAgZ2V0KCkgeyByZXR1cm4gV0kudGFyZ2V0TWFuYWdlci50YXJnZXRzOyB9CkBA
IC0yNjg5LDYgKzI3ODUsOCBAQCBXSS5hc3N1bWluZ01haW5UYXJnZXQgPSBmdW5jdGlvbigpCiAg
ICAgcmV0dXJuIFdJLm1haW5UYXJnZXQ7CiB9OwogCitXSS5pc0VuZ2luZWVyaW5nQnVpbGQgPSBm
YWxzZTsKKwogLy8gT3BlblJlc291cmNlRGlhbG9nIGRlbGVnYXRlCiAKIFdJLmRpYWxvZ1dhc0Rp
c21pc3NlZFdpdGhSZXByZXNlbnRlZE9iamVjdCA9IGZ1bmN0aW9uKGRpYWxvZywgcmVwcmVzZW50
ZWRPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL09iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvT2JqZWN0LmpzCmluZGV4IGNlNWMzYzMyOTFhLi5lM2JiNWM3Yzk1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanMKQEAgLTIy
NSw0ICsyMjUsNSBAQCBXSS5Ob3RpZmljYXRpb24gPSB7CiAgICAgRXh0cmFEb21haW5zQWN0aXZh
dGVkOiAiZXh0cmEtZG9tYWlucy1hY3RpdmF0ZWQiLAogICAgIERlYnVnVUlFbmFibGVkRGlkQ2hh
bmdlOiAiZGVidWctdWktZW5hYmxlZC1kaWQtY2hhbmdlIiwKICAgICBWaXNpYmlsaXR5U3RhdGVE
aWRDaGFuZ2U6ICJ2aXNpYmlsaXR5LXN0YXRlLWRpZC1jaGFuZ2UiLAorICAgIFRyYW5zaXRpb25Q
YWdlVGFyZ2V0OiAidHJhbnNpdGlvbi1wYWdlLXRhcmdldCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IGJiYzU3
N2QxNGVlLi4wYzhiZDUyMDQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpAQCAtMTM3LDggKzEzNyw4IEBAIFdJLnNldHRp
bmdzID0gewogICAgIC8vIERlYnVnVUkKICAgICBhdXRvTG9nUHJvdG9jb2xNZXNzYWdlczogbmV3
IFdJLlNldHRpbmcoImF1dG8tY29sbGVjdC1wcm90b2NvbC1tZXNzYWdlcyIsIGZhbHNlKSwKICAg
ICBhdXRvTG9nVGltZVN0YXRzOiBuZXcgV0kuU2V0dGluZygiYXV0by1jb2xsZWN0LXRpbWUtc3Rh
dHMiLCBmYWxzZSksCi0gICAgZW5hYmxlVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlcjogbmV3IFdJ
LlNldHRpbmcoImVuYWJsZS11bmNhdWdodC1leGNlcHRpb24tcmVwb3J0ZXIiLCB0cnVlKSwKICAg
ICBlbmFibGVMYXlvdXRGbGFzaGluZzogbmV3IFdJLlNldHRpbmcoImVuYWJsZS1sYXlvdXQtZmxh
c2hpbmciLCBmYWxzZSksCisgICAgZW5hYmxlVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlcjogbmV3
IFdJLlNldHRpbmcoImVuYWJsZS11bmNhdWdodC1leGNlcHRpb24tcmVwb3J0ZXIiLCB0cnVlKSwK
ICAgICBsYXlvdXREaXJlY3Rpb246IG5ldyBXSS5TZXR0aW5nKCJsYXlvdXQtZGlyZWN0aW9uLW92
ZXJyaWRlIiwgInN5c3RlbSIpLAogICAgIHBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzOiBuZXcgV0ku
U2V0dGluZygicGF1c2UtZm9yLWludGVybmFsLXNjcmlwdHMiLCBmYWxzZSksCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RPTU1hbmFnZXIuanMKaW5kZXggOGVjZGY3NzhlYzIuLjhhMDI0YzlkNWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01N
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RPTU1hbmFnZXIuanMKQEAgLTQ3LDYgKzQ3LDkgQEAgV0kuRE9NTWFuYWdlciA9IGNs
YXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9icmVha3Bv
aW50c0ZvckV2ZW50TGlzdGVuZXJzID0gbmV3IE1hcDsKIAorICAgICAgICB0aGlzLl9oYXNSZXF1
ZXN0ZWREb2N1bWVudCA9IGZhbHNlOworICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1
ZXN0Q2FsbGJhY2tzID0gbnVsbDsKKwogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVy
KFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKQEAgLTY1LDYgKzY4LDExIEBAIFdJLkRPTU1hbmFn
ZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICB0cmFuc2l0aW9uUGFnZVRhcmdldCgpCisgICAgeworICAgICAgICB0aGlzLl9kb2N1
bWVudFVwZGF0ZWQoKTsKKyAgICB9CisKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBldmVudExp
c3RlbmVyQnJlYWtwb2ludHMoKQpAQCAtNzksMjQgKzg3LDMxIEBAIFdJLkRPTU1hbmFnZXIgPSBj
bGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxi
YWNrcykgeworICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNr
cykKICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MucHVz
aChjYWxsYmFjayk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1
bWVudFJlcXVlc3RDYWxsYmFja3MgPSBbY2FsbGJhY2tdOworCisgICAgICAgIGlmICh0aGlzLl9o
YXNSZXF1ZXN0ZWREb2N1bWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
IVdJLnBhZ2VUYXJnZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFXSS5w
YWdlVGFyZ2V0LkRPTUFnZW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcyA9IFtjYWxsYmFja107
CisgICAgICAgIHRoaXMuX2hhc1JlcXVlc3RlZERvY3VtZW50ID0gdHJ1ZTsKIAotICAgICAgICBp
ZiAod2luZG93LkRPTUFnZW50KSB7Ci0gICAgICAgICAgICBET01BZ2VudC5nZXREb2N1bWVudCgo
ZXJyb3IsIHJvb3QpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoIWVycm9yKQotICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zZXREb2N1bWVudChyb290KTsKKyAgICAgICAgV0kucGFnZVRhcmdl
dC5ET01BZ2VudC5nZXREb2N1bWVudCgoZXJyb3IsIHJvb3QpID0+IHsKKyAgICAgICAgICAgIGlm
ICghZXJyb3IpCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RG9jdW1lbnQocm9vdCk7CiAKLSAg
ICAgICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiB0aGlzLl9wZW5kaW5nRG9jdW1lbnRS
ZXF1ZXN0Q2FsbGJhY2tzKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1
bWVudCk7CisgICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiB0aGlzLl9wZW5kaW5nRG9j
dW1lbnRSZXF1ZXN0Q2FsbGJhY2tzKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2Rv
Y3VtZW50KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RD
YWxsYmFja3MgPSBudWxsOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAg
IHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBudWxsOworICAgICAgICB9
KTsKICAgICB9CiAKICAgICBlbnN1cmVEb2N1bWVudCgpCkBAIC0yNzQsNiArMjg5LDEwIEBAIFdJ
LkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBuZXdEb2N1bWVudDsKKwor
ICAgICAgICBpZiAoIXRoaXMuX2RvY3VtZW50KQorICAgICAgICAgICAgdGhpcy5faGFzUmVxdWVz
dGVkRG9jdW1lbnQgPSBmYWxzZTsKKwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwge2RvY3VtZW50OiB0aGlz
Ll9kb2N1bWVudH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpp
bmRleCA5NGQ4OWM3ZjY1MC4uOWU4MTE3Y2RkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtN
YW5hZ2VyLmpzCkBAIC0zOCw2ICszOCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0
d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fd2ViU29ja2V0SWRl
bnRpZmllclRvVVJMID0gbmV3IE1hcDsKIAogICAgICAgICB0aGlzLl93YWl0aW5nRm9yTWFpbkZy
YW1lUmVzb3VyY2VUcmVlUGF5bG9hZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25p
bmdQYWdlVGFyZ2V0ID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fc291cmNlTWFwVVJMTWFwID0g
bmV3IE1hcDsKICAgICAgICAgdGhpcy5fZG93bmxvYWRpbmdTb3VyY2VNYXBzID0gbmV3IFNldDsK
QEAgLTcwLDYgKzcxLDEyIEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRoaXMuYWRvcHRPcnBoYW5lZFJlc291
cmNlc0ZvclRhcmdldCh0YXJnZXQpOwogICAgIH0KIAorICAgIHRyYW5zaXRpb25QYWdlVGFyZ2V0
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQgPSB0
cnVlOworICAgIH0KKwogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG1haW5GcmFtZSgpCkBAIC01
NjIsMTMgKzU2OSwxNCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5SdW50
aW1lT2JzZXJ2ZXIuCiAKLSAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5mcmFtZUZvcklkZW50aWZp
ZXIoY29udGV4dFBheWxvYWQuZnJhbWVJZCk7CisgICAgICAgIGxldCBmcmFtZSA9IHRoaXMuZnJh
bWVGb3JJZGVudGlmaWVyKGNvbnRleHRQYXlsb2FkLmZyYW1lSWQpOwogICAgICAgICBjb25zb2xl
LmFzc2VydChmcmFtZSk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0gY29udGV4dFBheWxvYWQubmFtZSB8fCBmcmFt
ZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWU7Ci0gICAgICAgIHZhciBleGVjdXRpb25Db250ZXh0
ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQoV0kubWFpblRhcmdldCwgY29udGV4dFBheWxvYWQu
aWQsIGRpc3BsYXlOYW1lLCBjb250ZXh0UGF5bG9hZC5pc1BhZ2VDb250ZXh0LCBmcmFtZSk7Cisg
ICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IGNvbnRleHRQYXlsb2FkLm5hbWUgfHwgZnJhbWUubWFp
blJlc291cmNlLmRpc3BsYXlOYW1lOworICAgICAgICBsZXQgdGFyZ2V0ID0gZnJhbWUubWFpblJl
c291cmNlLnRhcmdldDsKKyAgICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhl
Y3V0aW9uQ29udGV4dCh0YXJnZXQsIGNvbnRleHRQYXlsb2FkLmlkLCBkaXNwbGF5TmFtZSwgY29u
dGV4dFBheWxvYWQuaXNQYWdlQ29udGV4dCwgZnJhbWUpOwogICAgICAgICBmcmFtZS5hZGRFeGVj
dXRpb25Db250ZXh0KGV4ZWN1dGlvbkNvbnRleHQpOwogICAgIH0KIApAQCAtNzc5LDYgKzc4Nywx
NCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgaWYgKHRoaXMuX21haW5GcmFtZSAhPT0gb2xkTWFpbkZyYW1lKQog
ICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG9sZE1haW5GcmFtZSk7CisKKyAg
ICAgICAgLy8gRW11bGF0ZSBhIG1haW4gcmVzb3VyY2UgY2hhbmdlIHdpdGhpbiB0aGlzIHBhZ2Ug
ZXZlbiB0aG91Z2ggd2UgYXJlIHN3YXBwaW5nIG91dCBtYWluIGZyYW1lcy4KKyAgICAgICAgLy8g
VGhpcyBpcyBiZWNhdXNlIG1hbnkgbWFuYWdlcnMgbGlzdGVuIG9ubHkgZm9yIG1haW4gcmVzb3Vy
Y2UgY2hhbmdlIGV2ZW50cyB0byBwZXJmb3JtIHdvcmssCisgICAgICAgIC8vIGJ1dCB0aGV5IGRv
bid0IGxpc3RlbiBmb3IgbWFpbiBmcmFtZSBjaGFuZ2VzLgorICAgICAgICBpZiAodGhpcy5fdHJh
bnNpdGlvbmluZ1BhZ2VUYXJnZXQpIHsKKyAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQ
YWdlVGFyZ2V0ID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWUuX2Rpc3BhdGNo
TWFpblJlc291cmNlRGlkQ2hhbmdlRXZlbnQob2xkTWFpbkZyYW1lLm1haW5SZXNvdXJjZSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBfY3JlYXRlRnJhbWUocGF5bG9hZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVN
YW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvUnVudGltZU1hbmFnZXIuanMKaW5kZXggNDdjNjU1OGYyZjMuLjVhMTQ1NDJhZWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9S
dW50aW1lTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcwpAQCAtNjgsNiArNjgsMTEgQEAgV0kuUnVu
dGltZU1hbmFnZXIgPSBjbGFzcyBSdW50aW1lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAg
ICAgZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyhleHByZXNzaW9uLCBvcHRpb25zLCBjYWxsYmFj
aykKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fYWN0aXZlRXhlY3V0aW9uQ29udGV4dCkgewor
ICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKICAgICAgICAgbGV0IHtvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHJldHVybkJ5VmFsdWUs
IGdlbmVyYXRlUHJldmlldywgc2F2ZVJlc3VsdCwgc291cmNlVVJMQXBwZW5kZXJ9ID0gb3B0aW9u
czsKIAogICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEkgPSBpbmNsdWRlQ29tbWFuZExpbmVB
UEkgfHwgZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwppbmRleCBjNzU3Y2I2
NDU2OC4uZTEyOWYwNmY3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwx
NCArMjksMjQgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fdGFy
Z2V0cyA9IG5ldyBTZXQ7CisgICAgICAgIHRoaXMuX3RhcmdldHMgPSBuZXcgTWFwOworICAgICAg
ICB0aGlzLl9jYWNoZWRUYXJnZXRzTGlzdCA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlZW5QYWdl
VGFyZ2V0ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRpZmll
ciA9IHVuZGVmaW5lZDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0YXJnZXRz
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXRzOworICAgICAgICBpZiAoIXRo
aXMuX2NhY2hlZFRhcmdldHNMaXN0KQorICAgICAgICAgICAgdGhpcy5fY2FjaGVkVGFyZ2V0c0xp
c3QgPSBBcnJheS5mcm9tKHRoaXMuX3RhcmdldHMudmFsdWVzKCkpLmZpbHRlcigodGFyZ2V0KSA9
PiAhKHRhcmdldCBpbnN0YW5jZW9mIFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0OworICAgIH0KKworICAgIGdldCBh
bGxUYXJnZXRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Rhcmdl
dHMudmFsdWVzKCkpOwogICAgIH0KIAogICAgIHRhcmdldEZvcklkZW50aWZpZXIodGFyZ2V0SWQp
CkBAIC00NCwxMCArNTQsNyBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIXRhcmdldElkKQogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAKLSAgICAgICAgaWYgKHRhcmdldElkID09PSBXSS5tYWluVGFyZ2V0Lmlk
ZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gV0kubWFpblRhcmdldDsKLQotICAgICAgICBm
b3IgKGxldCB0YXJnZXQgb2YgdGhpcy5fdGFyZ2V0cykgeworICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgdGhpcy5fdGFyZ2V0cy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKHRhcmdldC5p
ZGVudGlmaWVyID09PSB0YXJnZXRJZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0Owog
ICAgICAgICB9CkBAIC01NSwyNCArNjIsMTQwIEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBU
YXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxsOwogICAg
IH0KIAotICAgIGFkZFRhcmdldCh0YXJnZXQpCisgICAgdGFyZ2V0Q3JlYXRlZCh0YXJnZXRJbmZv
KQogICAgIHsKLSAgICAgICAgdGhpcy5fdGFyZ2V0cy5hZGQodGFyZ2V0KTsKKyAgICAgICAgLy8g
Q3JlYXRlIHRoZSBiYWNrZW5kIHRhcmdldCBpZiBpdCBkaWRuJ3QgZXhpc3QgeWV0LgorICAgICAg
ICBpZiAodGhpcy5fdGFyZ2V0cy5zaXplID09PSAwKQorICAgICAgICAgICAgdGhpcy5jcmVhdGVN
dWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KHRhcmdldEluZm8pOworCisgICAgICAgIGxldCBjb25u
ZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbih0YXJnZXRJbmZv
LnRhcmdldElkKTsKKyAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX2NyZWF0ZVRhcmdldCh0YXJn
ZXRJbmZvLCBjb25uZWN0aW9uKTsKKyAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdlVGFy
Z2V0VHJhbnNpdGlvbih0YXJnZXQpOworICAgICAgICB0YXJnZXQuaW5pdGlhbGl6ZSgpOworCisg
ICAgICAgIHRoaXMuX2FkZFRhcmdldCh0YXJnZXQpOworICAgIH0KKworICAgIHRhcmdldFRlcm1p
bmF0ZWQodGFyZ2V0SWQpCisgICAgeworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0
cy5nZXQodGFyZ2V0SWQpOworICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRU
ZXJtaW5hdGlvbih0YXJnZXQpOworICAgICAgICB0aGlzLl9yZW1vdmVUYXJnZXQodGFyZ2V0KTsK
KyAgICB9CisKKyAgICBkaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KHRhcmdldElkLCBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElk
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0KTsKKyAgICAgICAgaWYgKCF0YXJnZXQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0
Y2gobWVzc2FnZSk7CisgICAgfQorCisgICAgY3JlYXRlTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdl
dCh0YXJnZXRJbmZvKQorICAgIHsKKyAgICAgICAgbGV0IHRhcmdldCA9IG5ldyBXSS5NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0OworICAgICAgICB0YXJnZXQuaW5pdGlhbGl6ZSgpOworCisgICAg
ICAgIFdJLmluaXRpYWxpemVCYWNrZW5kVGFyZ2V0KHRhcmdldCk7CisKKyAgICAgICAgdGhpcy5f
YWRkVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAgY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdl
dCgpCisgICAgeworICAgICAgICBsZXQgdGFyZ2V0ID0gbmV3IFdJLkRpcmVjdEJhY2tlbmRUYXJn
ZXQ7CisgICAgICAgIHRhcmdldC5pbml0aWFsaXplKCk7CisKKyAgICAgICAgV0kuaW5pdGlhbGl6
ZUJhY2tlbmRUYXJnZXQodGFyZ2V0KTsKKworICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVn
Z2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpCisgICAgICAgICAgICBXSS5pbml0
aWFsaXplUGFnZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIHRoaXMuX2FkZFRhcmdldCh0YXJn
ZXQpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9hZGRUYXJnZXQodGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0KTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX3RhcmdldHMuaGFzKHRhcmdldC5pZGVudGlmaWVyKSk7CisKKyAgICAgICAg
dGhpcy5fY2FjaGVkVGFyZ2V0c0xpc3QgPSBudWxsOworICAgICAgICB0aGlzLl90YXJnZXRzLnNl
dCh0YXJnZXQuaWRlbnRpZmllciwgdGFyZ2V0KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCB7dGFyZ2V0
fSk7CiAgICAgfQogCi0gICAgcmVtb3ZlVGFyZ2V0KHRhcmdldCkKKyAgICBfcmVtb3ZlVGFyZ2V0
KHRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldHMuZGVsZXRlKHRhcmdldCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRh
cmdldCAhPT0gV0kubWFpblRhcmdldCk7CisKKyAgICAgICAgdGhpcy5fY2FjaGVkVGFyZ2V0c0xp
c3QgPSBudWxsOworICAgICAgICB0aGlzLl90YXJnZXRzLmRlbGV0ZSh0YXJnZXQuaWRlbnRpZmll
cik7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFu
YWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCB7dGFyZ2V0fSk7CiAgICAgfQogCi0gICAgaW5pdGlh
bGl6ZU1haW5UYXJnZXQoKQorICAgIF9jcmVhdGVUYXJnZXQodGFyZ2V0SW5mbywgY29ubmVjdGlv
bikKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLm1haW5UYXJnZXQpOwotICAgICAg
ICB0aGlzLl90YXJnZXRzLmFkZChXSS5tYWluVGFyZ2V0KTsKKyAgICAgICAgbGV0IHt0YXJnZXRJ
ZCwgdHlwZX0gPSB0YXJnZXRJbmZvOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlIFRhcmdldEFnZW50LlRhcmdldEluZm9UeXBlLkphdmFTY3JpcHQ6CisgICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLkphdmFTY3JpcHRDb250ZXh0VGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0
cmluZygiSmF2YVNjcmlwdCBDb250ZXh0IiksIGNvbm5lY3Rpb24pOworICAgICAgICBjYXNlIFRh
cmdldEFnZW50LlRhcmdldEluZm9UeXBlLlBhZ2U6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJ
LlBhZ2VUYXJnZXQodGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24pOwor
ICAgICAgICBjYXNlIFRhcmdldEFnZW50LlRhcmdldEluZm9UeXBlLldvcmtlcjoKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiV29y
a2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICBjYXNlIFRhcmdldEFnZW50LlRhcmdldEluZm9U
eXBlLlNlcnZpY2VXb3JrZXI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdl
dCh0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbik7Cisg
ICAgICAgIH0KKworICAgICAgICB0aHJvdyAiVW5rbm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7
CisgICAgfQorCisgICAgX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24odGFyZ2V0
KQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5QYWdl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEZpcnN0IHBhZ2UgdGFyZ2V0Lgor
ICAgICAgICBpZiAoIVdJLnBhZ2VUYXJnZXQgJiYgIXRoaXMuX3NlZW5QYWdlVGFyZ2V0KSB7Cisg
ICAgICAgICAgICB0aGlzLl9zZWVuUGFnZVRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBXSS5p
bml0aWFsaXplUGFnZVRhcmdldCh0YXJnZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gVHJhbnNpdGlvbmluZyBwYWdlIHRhcmdldC4KKyAgICAgICAgV0ku
dHJhbnNpdGlvblBhZ2VUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAgICBfY2hlY2tBbmRIYW5k
bGVQYWdlVGFyZ2V0VGVybWluYXRpb24odGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdl
dC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5QYWdlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCA9PT0gV0kucGFnZVRhcmdldCk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlZW5QYWdlVGFyZ2V0KTsKKworICAgICAgICAvLyBUZXJt
aW5hdGluZyB0aGUgcGFnZVRhcmdldC4KKyAgICAgICAgV0kudGVybWluYXRlUGFnZVRhcmdldCh0
YXJnZXQpOworCisgICAgICAgIC8vIEVuc3VyZSB3ZSB0cmFuc2l0aW9uIGluIGEgcmVhc29uYWJs
ZSBhbW91bnQgb2YgdGltZSwgb3RoZXJ3aXNlIGNsb3NlLgorICAgICAgICBjb25zdCB0aW1lVG9U
cmFuc2l0aW9uID0gMjAwMDsKKyAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RyYW5zaXRpb25U
aW1lb3V0SWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRp
ZmllciA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRp
bWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOworICAgICAgICAgICAgaWYgKFdJLnBhZ2VUYXJn
ZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKFdJLmlzRW5naW5l
ZXJpbmdCdWlsZCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVycm9yOiBObyBu
ZXcgcGFnZVRhcmdldCBzb21lIHRpbWUgYWZ0ZXIgbGFzdCBwYWdlIHRhcmdldCB3YXMgdGVybWlu
YXRlZC4gRmFpbGVkIHRyYW5zaXRpb24/Iik7CisgICAgICAgICAgICBXSS5jbG9zZSgpOworICAg
ICAgICB9LCB0aW1lVG9UcmFuc2l0aW9uKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29y
a2VyTWFuYWdlci5qcwppbmRleCA1MzczNTRiMmMwMC4uNTAzNjNhYzY4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1h
bmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV29ya2VyTWFuYWdlci5qcwpAQCAtNDgsNyArNDgsNyBAQCBXSS5Xb3JrZXJNYW5hZ2Vy
ID0gY2xhc3MgV29ya2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgd29y
a2VyVGFyZ2V0ID0gbmV3IFdJLldvcmtlclRhcmdldCh3b3JrZXJJZCwgdXJsLCBjb25uZWN0aW9u
KTsKICAgICAgICAgd29ya2VyVGFyZ2V0LmluaXRpYWxpemUoKTsKIAotICAgICAgICBXSS50YXJn
ZXRNYW5hZ2VyLmFkZFRhcmdldCh3b3JrZXJUYXJnZXQpOworICAgICAgICBXSS50YXJnZXRNYW5h
Z2VyLl9hZGRUYXJnZXQod29ya2VyVGFyZ2V0KTsKIAogICAgICAgICB0aGlzLl9jb25uZWN0aW9u
cy5zZXQod29ya2VySWQsIGNvbm5lY3Rpb24pOwogCkBAIC02MCw3ICs2MCw3IEBAIFdJLldvcmtl
ck1hbmFnZXIgPSBjbGFzcyBXb3JrZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewog
ICAgICAgICBsZXQgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb25zLnRha2Uod29ya2VySWQp
OwogCi0gICAgICAgIFdJLnRhcmdldE1hbmFnZXIucmVtb3ZlVGFyZ2V0KGNvbm5lY3Rpb24udGFy
Z2V0KTsKKyAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5fcmVtb3ZlVGFyZ2V0KGNvbm5lY3Rpb24u
dGFyZ2V0KTsKICAgICB9CiAKICAgICBkaXNwYXRjaE1lc3NhZ2VGcm9tV29ya2VyKHdvcmtlcklk
LCBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRGVidWcvQm9vdHN0cmFwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRGVidWcvQm9vdHN0cmFwLmpzCmluZGV4IGE5Y2MxZDFmYTBkLi5hMjMzYzhiMzY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0
cmFwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jv
b3RzdHJhcC5qcwpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKK1dJLmlzRW5naW5lZXJpbmdCdWlsZCA9IHRydWU7CisKIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgaW52b2tlZCBhZnRlciB0aGUgaW5zcGVjdG9yIGhhcyBsb2FkZWQuCiBXSS5y
dW5Cb290c3RyYXBPcGVyYXRpb25zID0gZnVuY3Rpb24oKSB7CiAgICAgV0kuc2hvd0RlYnVnVUlT
ZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoInNob3ctZGVidWctdWkiLCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4
Y2VwdGlvblJlcG9ydGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5qcwppbmRleCA0YzdkYTkyOWUwMy4uN2M2
MTg5NDRiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0RlYnVnL1VuY2F1Z2h0RXhjZXB0aW9uUmVwb3J0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5qcwpA
QCAtMjU3LDYgKzI1Nyw3IEBAIERvY3VtZW50IGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRo
YXQgbWlnaHQgYmUgdXNlZnVsIGluIHJlc29sdmluZyB0aGUgcHJvYmxlCiAgICAgICAgIDxkZD48
YSBjbGFzcz0iYnlwYXNzLWV2ZW50LWJsb2NraW5nIiBpZD0iZGlzbWlzcy1lcnJvci1zaGVldCI+
Q2xpY2sgdG8gY2xvc2UgdGhpcyB2aWV3PC9hPiBhbmQgcmV0dXJuCiAgICAgICAgIHRvIHRoZSBX
ZWIgSW5zcGVjdG9yIHdpdGhvdXQgcmVsb2FkaW5nLiBIb3dldmVyLCBzb21lIHRoaW5ncyBtaWdo
dCBub3Qgd29yayB3aXRob3V0IHJlbG9hZGluZyBpZiB0aGUgZXJyb3IgY29ycnVwdGVkIHRoZSBJ
bnNwZWN0b3IncyBpbnRlcm5hbCBzdGF0ZS48L2RkPmA7CiAKKyAgICAvLyBGSVhNRTogUmVsb2Fk
IFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRpcGxleGluZ0JhY2tlbmRUYXJn
ZXQuCiAgICAgbGV0IHNoZWV0RWxlbWVudCA9IHdpbmRvdy5fX3NoZWV0RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHNoZWV0RWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJzaGVldC1jb250YWluZXIiKTsKICAgICBzaGVldEVsZW1lbnQuaW5uZXJIVE1MID0gYDxkaXYg
Y2xhc3M9InVuY2F1Z2h0LWV4Y2VwdGlvbi1zaGVldCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMDBiNWNmZmU5ZjkuLmNmODU0ZWUzMTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC0yOTcsNyArMjk3LDEwIEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1JlbW90ZU9iamVj
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1RhcmdldC5qcyI+PC9z
Y3JpcHQ+CiAKLSAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTWFpblRhcmdldC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFy
Z2V0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSmF2YVNjcmlwdENv
bnRleHRUYXJnZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9QYWdl
VGFyZ2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvV29ya2VyVGFy
Z2V0LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9BcHBsaWNhdGlv
bkNhY2hlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgpAQCAtMzE2LDYgKzMxOSw3IEBACiAgICAgPHNj
cmlwdCBzcmM9IlByb3RvY29sL1BhZ2VPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlByb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlByb3RvY29sL1NjcmlwdFByb2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UYXJnZXRPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZh
dWx0RGFzaGJvYXJkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKaW5kZXggYjIzYjE0YTdhM2EuLjIxMGUyNmE2MDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVm
YXVsdERhc2hib2FyZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwpAQCAtNDUsNiArNDUsMTMgQEAgV0kuRGVmYXVs
dERhc2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgV0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdl
ci5FdmVudC5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwog
ICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5h
Z2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fY29uc29s
ZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhpcyk7CiAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
d29ya2luZyBhcm91bmQgdGhlIG9yZGVyIG9mIGV2ZW50cy4gTm9ybWFsIHBhZ2UgbmF2aWdhdGlv
bgorICAgICAgICAvLyB0cmlnZ2VycyBhIE1haW5SZXNvdXJjZSBjaGFuZ2UgYW5kIHRoZW4gYSBN
YWluRnJhbWUgY2hhbmdlLiBQYWdlIFRyYW5zaXRpb24KKyAgICAgICAgLy8gdHJpZ2dlcnMgYSBN
YWluRnJhbWUgY2hhbmdlIHRoZW4gYSBNYWluUmVzb3VyY2UgY2hhbmdlLgorICAgICAgICB0aGlz
Ll90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZhbHNlOworCisgICAgICAgIFdJLm5vdGlmaWNh
dGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Ob3RpZmljYXRpb24uVHJhbnNpdGlvblBhZ2VUYXJn
ZXQsIHRoaXMuX3RyYW5zaXRpb25QYWdlVGFyZ2V0LCB0aGlzKTsKKwogICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNDb3VudCA9IDA7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOwogICAg
ICAgICB0aGlzLl90aW1lID0gMDsKQEAgLTEzNSw5ICsxNDIsMTEgQEAgV0kuRGVmYXVsdERhc2hi
b2FyZCA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
aWYgKCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB0aGlzLl90aW1lID0gMDsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAx
OwotICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lLm1haW5SZXNvdXJjZS5zaXplIHx8IDA7CisgICAgICAgIGlmICghdGhpcy5fdHJhbnNpdGlv
bmluZ1BhZ2VUYXJnZXQpIHsKKyAgICAgICAgICAgIHRoaXMuX3RpbWUgPSAwOworICAgICAgICAg
ICAgdGhpcy5fcmVzb3VyY2VzQ291bnQgPSAxOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2Vz
U2l6ZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2Uuc2l6ZSB8fCAw
OworICAgICAgICB9CiAKICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgdHJhY2sgcmVzb3VyY2Ug
c2l6ZXMgb24gZnJlc2ggbG9hZHMuCiAgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yRmlyc3RN
YWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXplKSB7CkBAIC0xNDYsNyArMTU1LDEyIEBAIFdJ
LkRlZmF1bHREYXNoYm9hcmQgPSBjbGFzcyBEZWZhdWx0RGFzaGJvYXJkIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7Ci0gICAgICAg
IHRoaXMuX3N0YXJ0VXBkYXRpbmdUaW1lKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90cmFuc2l0
aW9uaW5nUGFnZVRhcmdldCkKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdUaW1lKCk7
CisKKyAgICAgICAgaWYgKHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KQorICAgICAgICAg
ICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICB9CiAKICAgICBf
Y2FwdHVyaW5nU3RvcHBlZChldmVudCkKQEAgLTI2MSw2ICsyNzUsMTcgQEAgV0kuRGVmYXVsdERh
c2hib2FyZCA9IGNsYXNzIERlZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgdGhpcy5fZXJyb3JzID0gMDsKICAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOwogICAg
IH0KKworICAgIF90cmFuc2l0aW9uUGFnZVRhcmdldCgpCisgICAgeworICAgICAgICB0aGlzLl90
cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fdGltZSA9IDA7
CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMDsKKyAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzU2l6ZSA9IDA7CisKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0KIH07
CiAKIFdJLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwppbmRl
eCA2MzFmYWQ5ZGUxMi4uOTlkOTcwZmY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwpAQCAtMzAs
MTEgKzMwLDEyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK0luc3BlY3RvckJhY2tlbmQuZ2xv
YmFsU2VxdWVuY2VJZCA9IDE7CisKIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNz
IEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsK
LSAgICAgICAgdGhpcy5fbGFzdFNlcXVlbmNlSWQgPSAxOwogICAgICAgICB0aGlzLl9wZW5kaW5n
UmVzcG9uc2VzID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fYWdlbnRzID0ge307CiAgICAgICAg
IHRoaXMuX2RlZmVycmVkU2NyaXB0cyA9IFtdOwpAQCAtMTAwLDcgKzEwMSw3IEBAIEluc3BlY3Rv
ckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAg
ICAgICAgIH0KIAogICAgICAgICBsZXQgc2VxdWVuY2VJZCA9IG1lc3NhZ2VPYmplY3RbImlkIl07
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BlbmRpbmdSZXNwb25zZXMuaGFzKHNlcXVl
bmNlSWQpLCBzZXF1ZW5jZUlkLCB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fcGVuZGluZ1Jlc3BvbnNlcy5oYXMoc2VxdWVuY2VJZCksIHNlcXVl
bmNlSWQsIHRoaXMuX3RhcmdldCA/IHRoaXMuX3RhcmdldC5pZGVudGlmaWVyIDogIih1bmtub3du
KSIsIHRoaXMuX3BlbmRpbmdSZXNwb25zZXMpOwogCiAgICAgICAgIGxldCByZXNwb25zZURhdGEg
PSB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzLnRha2Uoc2VxdWVuY2VJZCkgfHwge307CiAgICAgICAg
IGxldCB7cmVxdWVzdCwgY29tbWFuZCwgY2FsbGJhY2ssIHByb21pc2V9ID0gcmVzcG9uc2VEYXRh
OwpAQCAtMjA3LDcgKzIwOCw3IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNz
IEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAKICAgICBfc2VuZENvbW1hbmRUb0JhY2tlbmRX
aXRoQ2FsbGJhY2soY29tbWFuZCwgcGFyYW1ldGVycywgY2FsbGJhY2spCiAgICAgewotICAgICAg
ICBsZXQgc2VxdWVuY2VJZCA9IHRoaXMuX2xhc3RTZXF1ZW5jZUlkKys7CisgICAgICAgIGxldCBz
ZXF1ZW5jZUlkID0gSW5zcGVjdG9yQmFja2VuZC5nbG9iYWxTZXF1ZW5jZUlkKys7CiAKICAgICAg
ICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB7CiAgICAgICAgICAgICAiaWQiOiBzZXF1ZW5jZUlkLApA
QCAtMjI4LDcgKzIyOSw3IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIElu
c3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAKICAgICBfc2VuZENvbW1hbmRUb0JhY2tlbmRFeHBl
Y3RpbmdQcm9taXNlKGNvbW1hbmQsIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICBsZXQgc2Vx
dWVuY2VJZCA9IHRoaXMuX2xhc3RTZXF1ZW5jZUlkKys7CisgICAgICAgIGxldCBzZXF1ZW5jZUlk
ID0gSW5zcGVjdG9yQmFja2VuZC5nbG9iYWxTZXF1ZW5jZUlkKys7CiAKICAgICAgICAgbGV0IG1l
c3NhZ2VPYmplY3QgPSB7CiAgICAgICAgICAgICAiaWQiOiBzZXF1ZW5jZUlkLApAQCAtMjcyLDcg
KzI3Myw3IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJh
Y2tlbmRDb25uZWN0aW9uCiAgICAgfQogfTsKIAotSW5zcGVjdG9yQmFja2VuZC5NYWluQ29ubmVj
dGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRNYWluQ29ubmVjdGlvbiBleHRlbmRzIEluc3Bl
Y3RvckJhY2tlbmQuQ29ubmVjdGlvbgorSW5zcGVjdG9yQmFja2VuZC5CYWNrZW5kQ29ubmVjdGlv
biA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRCYWNrZW5kQ29ubmVjdGlvbiBleHRlbmRzIEluc3Bl
Y3RvckJhY2tlbmQuQ29ubmVjdGlvbgogewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CkBAIC0y
OTgsNyArMjk5LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uID0gY2xhc3Mg
SW5zcGVjdG9yQmFja2VuZFdvcmtlckNvbm5lY3Rpb24gZXh0ZW4KICAgICAgICAgLy8gQ2xvbmUg
YWdlbnRzIHRoYXQgd2lsbCB1c2UgdGhpcyBjb25uZWN0aW9uLgogICAgICAgICBmb3IgKGxldCBk
b21haW4gaW4gSW5zcGVjdG9yQmFja2VuZC5fYWdlbnRzKSB7CiAgICAgICAgICAgICBsZXQgYWdl
bnQgPSBJbnNwZWN0b3JCYWNrZW5kLl9hZ2VudHNbZG9tYWluXTsKLSAgICAgICAgICAgIGxldCBj
bG9uZSA9IE9iamVjdC5jcmVhdGUoSW5zcGVjdG9yQmFja2VuZC5fYWdlbnRzW2RvbWFpbl0pOwor
ICAgICAgICAgICAgbGV0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShhZ2VudCk7CiAgICAgICAgICAg
ICBjbG9uZS5jb25uZWN0aW9uID0gdGhpczsKICAgICAgICAgICAgIGlmIChhZ2VudC5kaXNwYXRj
aGVyKQogICAgICAgICAgICAgICAgIGNsb25lLmRpc3BhdGNoZXIgPSBuZXcgYWdlbnQuZGlzcGF0
Y2hlci5jb25zdHJ1Y3RvcjsKQEAgLTMxMiw0ICszMTMsMjggQEAgSW5zcGVjdG9yQmFja2VuZC5X
b3JrZXJDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZFdvcmtlckNvbm5lY3Rpb24g
ZXh0ZW4KICAgICB9CiB9OwogCi1JbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uID0gbmV3
IEluc3BlY3RvckJhY2tlbmQuTWFpbkNvbm5lY3Rpb247CitJbnNwZWN0b3JCYWNrZW5kLlRhcmdl
dENvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kVGFyZ2V0Q29ubmVjdGlvbiBleHRl
bmRzIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbgoreworICAgIGNvbnN0cnVjdG9yKHRhcmdl
dElkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl90YXJnZXRJZCA9
IHRhcmdldElkOworCisgICAgICAgIGZvciAobGV0IGRvbWFpbiBpbiBJbnNwZWN0b3JCYWNrZW5k
Ll9hZ2VudHMpIHsKKyAgICAgICAgICAgIGxldCBhZ2VudCA9IEluc3BlY3RvckJhY2tlbmQuX2Fn
ZW50c1tkb21haW5dOworICAgICAgICAgICAgbGV0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShhZ2Vu
dCk7CisgICAgICAgICAgICBjbG9uZS5jb25uZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAgIGlm
IChhZ2VudC5kaXNwYXRjaGVyKQorICAgICAgICAgICAgICAgIGNsb25lLmRpc3BhdGNoZXIgPSBu
ZXcgYWdlbnQuZGlzcGF0Y2hlci5jb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIHRoaXMuX2FnZW50
c1tkb21haW5dID0gY2xvbmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZW5kTWVzc2FnZVRv
QmFja2VuZChtZXNzYWdlKQorICAgIHsKKyAgICAgICAgVGFyZ2V0QWdlbnQuc2VuZE1lc3NhZ2VU
b1RhcmdldCh0aGlzLl90YXJnZXRJZCwgbWVzc2FnZSk7CisgICAgfQorfTsKKworSW5zcGVjdG9y
QmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbiA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLkJhY2tlbmRD
b25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxMzdmNDAzM2Y2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0
QmFja2VuZFRhcmdldC5qcwpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBj
bGFzcyBpcyB1c2VkIHdoZW4gY29ubmVjdGluZyBkaXJlY3RseSB0byBhIHNpbmdsZSB0YXJnZXQu
CisvLyBUaGUgbWFpbiBjb25uZWN0aW9uIGlzIGEgZGlyZWN0IGNvbm5lY3Rpb24gdG8gYSB0YXJn
ZXQuCisKK1dJLkRpcmVjdEJhY2tlbmRUYXJnZXQgPSBjbGFzcyBEaXJlY3RCYWNrZW5kVGFyZ2V0
IGV4dGVuZHMgV0kuVGFyZ2V0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAg
bGV0IHt0eXBlLCBkaXNwbGF5TmFtZX0gPSBEaXJlY3RCYWNrZW5kVGFyZ2V0LmNvbm5lY3Rpb25J
bmZvRm9yRGVidWdnYWJsZSgpOworCisgICAgICAgIHN1cGVyKCJkaXJlY3QiLCBkaXNwbGF5TmFt
ZSwgdHlwZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CisKKyAgICAgICAg
dGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJ
LlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRpc3Bs
YXlOYW1lLCB0cnVlLCBudWxsKTsKKyAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVsbDsK
KyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBjb25uZWN0aW9uSW5mb0ZvckRl
YnVnZ2FibGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChXSS5zaGFyZWRBcHAuZGVidWdnYWJs
ZVR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0OgorICAg
ICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5K
U0NvbnRleHQsCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IFdJLlVJU3RyaW5nKCJKYXZh
U2NyaXB0IENvbnRleHQiKSwKKyAgICAgICAgICAgIH07CisgICAgICAgIGNhc2UgV0kuRGVidWdn
YWJsZVR5cGUuU2VydmljZVdvcmtlcjoKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICAgICAgdHlwZTogV0kuVGFyZ2V0LlR5cGUuU2VydmljZVdvcmtlciwKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwKKyAgICAgICAgICAg
IH07CisgICAgICAgIGNhc2UgV0kuRGVidWdnYWJsZVR5cGUuV2ViOgorICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5QYWdlLAorICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiBXSS5VSVN0cmluZygiUGFnZSIpLAorICAgICAgICAgICAg
fTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0
ZWQgZGVidWdnYWJsZSB0eXBlOiAiLCBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUpOworICAg
ICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5Q
YWdlLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBXSS5VSVN0cmluZygiTWFpbiIpLAor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAoVGFy
Z2V0KQorCisgICAgZ2V0IG1haW5SZXNvdXJjZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
bWFpblJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21haW5SZXNvdXJjZTsKKwor
ICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworICAg
ICAgICByZXR1cm4gbWFpbkZyYW1lID8gbWFpbkZyYW1lLm1haW5SZXNvdXJjZSA6IG51bGw7Cisg
ICAgfQorCisgICAgc2V0IG1haW5SZXNvdXJjZShyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX21haW5SZXNvdXJjZSA9IHJlc291cmNlOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5k
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yQmFja2VuZC5qcwppbmRleCA0OWVjOWI3MTNjMi4uNzZiNjJjZjY0ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJh
Y2tlbmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yQmFja2VuZC5qcwpAQCAtMTU3LDEzICsxNTcsMTMgQEAgSW5zcGVjdG9yQmFj
a2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAKICAgICBkaXNwYXRjaCht
ZXNzYWdlKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5tYWluQ29ubmVjdGlvbi5k
aXNwYXRjaChtZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVj
dGlvbi5kaXNwYXRjaChtZXNzYWdlKTsKICAgICB9CiAKICAgICBydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKHNjcmlwdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyByZXNw
ZWN0IHBlbmRpbmcgZGlzcGF0Y2hlcyBpbiBhbGwgY29ubmVjdGlvbnM/Ci0gICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQubWFpbkNvbm5lY3Rpb24ucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzY3Jp
cHQpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uLnJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXMoc2NyaXB0KTsKICAgICB9CiAKICAgICBhY3RpdmF0ZURvbWFpbihk
b21haW5OYW1lLCBhY3RpdmF0aW9uRGVidWdnYWJsZVR5cGVzKQpAQCAtMjIwLDcgKzIyMCw3IEBA
IEluc3BlY3RvckJhY2tlbmQuQWdlbnQgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQWdlbnQKICAg
ICAgICAgdGhpcy5fZG9tYWluTmFtZSA9IGRvbWFpbk5hbWU7CiAKICAgICAgICAgLy8gRGVmYXVs
dCBjb25uZWN0aW9uIGlzIHRoZSBtYWluIGNvbm5lY3Rpb24uCi0gICAgICAgIHRoaXMuX2Nvbm5l
Y3Rpb24gPSBJbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uOworICAgICAgICB0aGlzLl9j
b25uZWN0aW9uID0gSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbjsKICAgICAgICAg
dGhpcy5fZGlzcGF0Y2hlciA9IG51bGw7CiAKICAgICAgICAgLy8gQWdlbnRzIGFyZSBhbHdheXMg
Y3JlYXRlZCwgYnV0IGFyZSBvbmx5IHVzZWFibGUgYWZ0ZXIgdGhleSBhcmUgYWN0aXZhdGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SmF2YVNjcmlwdENvbnRleHRUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9KYXZhU2NyaXB0Q29udGV4dFRhcmdldC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDhmZGU4MGEzYjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9KYXZhU2NyaXB0
Q29udGV4dFRhcmdldC5qcwpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuSmF2YVNj
cmlwdENvbnRleHRUYXJnZXQgPSBjbGFzcyBKYXZhU2NyaXB0Q29udGV4dFRhcmdldCBleHRlbmRz
IFdJLlRhcmdldAoreworICAgIGNvbnN0cnVjdG9yKHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9u
KQorICAgIHsKKyAgICAgICAgc3VwZXIodGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldC5UeXBlLkpT
Q29udGV4dCwgY29ubmVjdGlvbik7CisKKyAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9
IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVs
Q29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRoaXMuZGlzcGxheU5hbWUsIGZhbHNlLCBudWxs
KTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRmMDg0ZmVkNzg0Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0LmpzCisrKyAvZGV2L251bGwKQEAg
LTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLk1haW5UYXJnZXQgPSBjbGFzcyBNYWluVGFy
Z2V0IGV4dGVuZHMgV0kuVGFyZ2V0Ci17Ci0gICAgY29uc3RydWN0b3IoY29ubmVjdGlvbikKLSAg
ICB7Ci0gICAgICAgIGxldCB7dHlwZSwgZGlzcGxheU5hbWV9ID0gTWFpblRhcmdldC5tYWluQ29u
bmVjdGlvbkluZm8oKTsKLQotICAgICAgICBzdXBlcigibWFpbiIsIGRpc3BsYXlOYW1lLCB0eXBl
LCBJbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uKTsKLQotICAgICAgICB0aGlzLl9leGVj
dXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1h
bmFnZXIuVG9wTGV2ZWxFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHRy
dWUsIG51bGwpOwotICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2UgPSBudWxsOwotICAgIH0KLQot
ICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIG1haW5Db25uZWN0aW9uSW5mbygpCi0gICAgewot
ICAgICAgICBzd2l0Y2ggKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSkgewotICAgICAgICBj
YXNlIFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQ6Ci0gICAgICAgICAgICByZXR1cm4gewot
ICAgICAgICAgICAgICAgIHR5cGU6IFdJLlRhcmdldC5UeXBlLkpTQ29udGV4dCwKLSAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogV0kuVUlTdHJpbmcoIkphdmFTY3JpcHQgQ29udGV4dCIpLAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgY2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5TZXJ2aWNlV29y
a2VyOgotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJn
ZXQuVHlwZS5TZXJ2aWNlV29ya2VyLAotICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBXSS5V
SVN0cmluZygiU2VydmljZVdvcmtlciIpLAotICAgICAgICAgICAgfTsKLSAgICAgICAgY2FzZSBX
SS5EZWJ1Z2dhYmxlVHlwZS5XZWI6Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg
ICAgIHR5cGU6IFdJLlRhcmdldC5UeXBlLlBhZ2UsCi0gICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6IFdJLlVJU3RyaW5nKCJQYWdlIiksCi0gICAgICAgICAgICB9OwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5leHBlY3RlZCBkZWJ1Z2dhYmxlIHR5cGU6
ICIsIFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gewot
ICAgICAgICAgICAgICAgIHR5cGU6IFdJLlRhcmdldC5UeXBlLlBhZ2UsCi0gICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6IFdJLlVJU3RyaW5nKCJNYWluIiksCi0gICAgICAgICAgICB9OwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkIChUYXJnZXQpCi0KLSAgICBnZXQgbWFp
blJlc291cmNlKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tYWluUmVzb3VyY2UpCi0gICAg
ICAgICAgICByZXR1cm4gdGhpcy5fbWFpblJlc291cmNlOwotCi0gICAgICAgIGxldCBtYWluRnJh
bWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7Ci0gICAgICAgIHJldHVybiBtYWluRnJh
bWUgPyBtYWluRnJhbWUubWFpblJlc291cmNlIDogbnVsbDsKLSAgICB9Ci0KLSAgICBzZXQgbWFp
blJlc291cmNlKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0g
cmVzb3VyY2U7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNr
ZW5kVGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNGZh
MTVhNDZjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCB3aGVuIGNvbm5lY3Rpbmcg
dG8gYSB0YXJnZXQgd2hpY2ggbXVsdGlwbGV4ZXMgdG8gb3RoZXIgdGFyZ2V0cy4KKy8vIFRoZSBt
YWluIGNvbm5lY3Rpb24gaXMgdG8gYSB0YXJnZXQgdGhhdCwgY3VycmVudGx5LCBoYXMgb25seSBh
IFRhcmdldCBhZ2VudC4KKy8vIEFsbCBvdGhlciBUYXJnZXRzIHdpbGwgaGF2ZSB0aGVpciBtZXNz
YWdlcyBiZSBtdWx0aXBsZXhlZCB0aHJvdWdoIHRoaXMKKy8vIG1haW4gY29ubmVjdGlvbidzIFRh
cmdldCBhZ2VudC4KKworV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCA9IGNsYXNzIE11bHRp
cGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKK3sKKyAgICBjb25zdHJ1Y3Rv
cigpCisgICAgeworICAgICAgICBjb25zdCB0eXBlID0gV0kuVGFyZ2V0LlR5cGUuUGFnZTsKKyAg
ICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiUGFnZSIpOworCisgICAgICAg
IHN1cGVyKCJtdWx0aSIsIGRpc3BsYXlOYW1lLCB0eXBlLCBJbnNwZWN0b3JCYWNrZW5kLmJhY2tl
bmRDb25uZWN0aW9uKTsKKworICAgICAgICAvLyBSZXN0cmljdCB0byBqdXN0IFRhcmdldEFnZW50
LgorICAgICAgICBjb25zdCBzdXBwb3J0ZWRNdWx0aXBsZXhpbmdEb21haW5zID0gWyJUYXJnZXQi
XTsKKyAgICAgICAgbGV0IGFnZW50cyA9IHRoaXMuX2FnZW50czsKKyAgICAgICAgdGhpcy5fYWdl
bnRzID0ge307CisgICAgICAgIGZvciAobGV0IGRvbWFpbiBvZiBzdXBwb3J0ZWRNdWx0aXBsZXhp
bmdEb21haW5zKQorICAgICAgICAgICAgdGhpcy5fYWdlbnRzW2RvbWFpbl0gPSBhZ2VudHNbZG9t
YWluXTsKKyAgICB9CisKKyAgICAvLyBUYXJnZXQKKworICAgIGluaXRpYWxpemUoKQorICAgIHsK
KyAgICAgICAgLy8gSW50ZW50aW9uYWxseSBkbyBub3RoaW5nLCBpbmNsdWRpbmcgbm90IGNhbGxp
bmcgc3VwZXIuCisgICAgICAgIC8vIE5vIGFnZW50cyBvdGhlciB0aGFuIHRoZSBUYXJnZXRBZ2Vu
dCwgbm90aGluZyB0byBpbml0aWFsaXplLgorICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAoVGFy
Z2V0KQorCisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5lcnJvcigiQ2Fs
bGVkIG5hbWUgb24gYSBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0Iik7CisgICAgICAgIHJldHVy
biBXSS5VSVN0cmluZygiUGFnZSIpOworICAgIH0KKworICAgIGdldCBleGVjdXRpb25Db250ZXh0
KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNhbGxlZCBleGVjdXRpb25Db250ZXh0
IG9uIGEgTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCIpOworICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9CisKKyAgICBnZXQgbWFpblJlc291cmNlKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
ZXJyb3IoIkNhbGxlZCBtYWluUmVzb3VyY2Ugb24gYSBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0
Iik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGFkMzhiNGQwNzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9QYWdlVGFyZ2V0LmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5QYWdlVGFy
Z2V0ID0gY2xhc3MgUGFnZVRhcmdldCBleHRlbmRzIFdJLlRhcmdldAoreworICAgIGNvbnN0cnVj
dG9yKHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgc3VwZXIodGFy
Z2V0SWQsIG5hbWUsIFdJLlRhcmdldC5UeXBlLlBhZ2UsIGNvbm5lY3Rpb24pOworCisgICAgICAg
IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBX
SS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0aGlz
Lm5hbWUsIHRydWUsIG51bGwpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAoVGFyZ2V0KQor
CisgICAgZ2V0IGRpc3BsYXlOYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXSS5kaXNwbGF5
TmFtZUZvclVSTCh0aGlzLl9uYW1lKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0T2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXRPYnNlcnZl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjllNDg2ZWQ0ZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9UYXJnZXRPYnNlcnZlci5qcwpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V0kuVGFyZ2V0T2JzZXJ2ZXIgPSBjbGFzcyBUYXJnZXRPYnNlcnZlcgoreworICAgIC8vIEV2ZW50
cyBkZWZpbmVkIGJ5IHRoZSAiVGFyZ2V0IiBkb21haW4uCisKKyAgICB0YXJnZXRDcmVhdGVkKHRh
cmdldEluZm8pCisgICAgeworICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLnRhcmdldENyZWF0ZWQo
dGFyZ2V0SW5mbyk7CisgICAgfQorCisgICAgdGFyZ2V0VGVybWluYXRlZCh0YXJnZXRJZCkKKyAg
ICB7CisgICAgICAgIFdJLnRhcmdldE1hbmFnZXIudGFyZ2V0VGVybWluYXRlZCh0YXJnZXRJZCk7
CisgICAgfQorCisgICAgZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCh0YXJnZXRJZCwgbWVzc2Fn
ZSkKKyAgICB7CisgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuZGlzcGF0Y2hNZXNzYWdlRnJvbVRh
cmdldCh0YXJnZXRJZCwgbWVzc2FnZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCBiZTYwZGQzMTU1OC4uYTgwZGIzNzdj
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
QEAgLTczLDcgKzczLDggQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTWVzc2FnZURpc3Bh
dGNoZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UYXJnZXQuanMi
Pjwvc2NyaXB0PgogCi0gICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL01haW5UYXJnZXQuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9EaXJlY3RCYWNrZW5kVGFyZ2V0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtlclRh
cmdldC5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9y
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgpAQCAtOTEsNiArOTIsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJQcm90b2NvbC9SZW1vdGVPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQ
cm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQ
cm90b2NvbC9TY3JpcHRQcm9maWxlck9ic2VydmVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvVGFyZ2V0T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvV29ya2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggNWM2Yjlk
YzAwYWIuLmE2MTJiNjI0Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0yNyw2ICsyNyw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKIHsKICAgICAvLyBSZWdpc3RlciBvYnNlcnZlcnMgZm9yIGV2ZW50cyBmcm9tIHRoZSBJ
bnNwZWN0b3JCYWNrZW5kLgogICAgIC8vIFRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBzaG91bGQg
bWF0Y2ggdGhlIHNhbWUgaW4gTWFpbi5qcy4KKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
VGFyZ2V0RGlzcGF0Y2hlcihuZXcgV0kuVGFyZ2V0T2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRjaGVyKG5ldyBXSS5JbnNwZWN0b3JPYnNlcnZl
cik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclBhZ2VEaXNwYXRjaGVyKG5ldyBXSS5Q
YWdlT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb25zb2xlRGlzcGF0
Y2hlcihuZXcgV0kuQ29uc29sZU9ic2VydmVyKTsKQEAgLTcxLDE1ICs3Miw1NyBAQCBXSS5sb2Fk
ZWQgPSBmdW5jdGlvbigpCiAgICAgV0kuc2V0dGluZ3Muc2hvd1NoYWRvd0RPTS52YWx1ZSA9IHRy
dWU7CiAKICAgICAvLyBUYXJnZXRzLgotICAgIFdJLm1haW5UYXJnZXQgPSBuZXcgV0kuTWFpblRh
cmdldDsKLSAgICBXSS5tYWluVGFyZ2V0LmluaXRpYWxpemUoKTsKLSAgICBXSS5wYWdlVGFyZ2V0
ID0gV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIg
PyBXSS5tYWluVGFyZ2V0IDogbnVsbDsKKyAgICBXSS5iYWNrZW5kVGFyZ2V0ID0gbnVsbDsKKyAg
ICBXSS5wYWdlVGFyZ2V0ID0gbnVsbDsKKworICAgIC8vIFRlc3RzIGRpcmVjdGx5IGNvbm5lY3Qg
dG8gYSBwYWdlIHRhcmdldC4KKyAgICBXSS50YXJnZXRNYW5hZ2VyLmNyZWF0ZURpcmVjdEJhY2tl
bmRUYXJnZXQoKTsKK307CisKK1dJLmluaXRpYWxpemVCYWNrZW5kVGFyZ2V0ID0gZnVuY3Rpb24o
dGFyZ2V0KQoreworICAgIFdJLmJhY2tlbmRUYXJnZXQgPSB0YXJnZXQ7CisKKyAgICBXSS5yZXNl
dE1haW5FeGVjdXRpb25Db250ZXh0KCk7Cit9OworCitXSS5pbml0aWFsaXplUGFnZVRhcmdldCA9
IGZ1bmN0aW9uKHRhcmdldCkKK3sKKyAgICBXSS5wYWdlVGFyZ2V0ID0gdGFyZ2V0OworCisgICAg
V0kucmVkaXJlY3RHbG9iYWxBZ2VudHNUb0Nvbm5lY3Rpb24oV0kucGFnZVRhcmdldC5jb25uZWN0
aW9uKTsKKworICAgIFdJLnJlc2V0TWFpbkV4ZWN1dGlvbkNvbnRleHQoKTsKK307CisKK1dJLnRy
YW5zaXRpb25QYWdlVGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KQoreworICAgIGNvbnNvbGUuZXJy
b3IoIldJLnRyYW5zaXRpb25QYWdlVGFyZ2V0IHNob3VsZCBub3QgYmUgcmVhY2hlZCBpbiB0ZXN0
cy4iKTsKK307CisKK1dJLnRlcm1pbmF0ZVBhZ2VUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCit7
CisgICAgY29uc29sZS5lcnJvcigiV0kudGVybWluYXRlUGFnZVRhcmdldCBzaG91bGQgbm90IGJl
IHJlYWNoZWQgaW4gdGVzdHMuIik7Cit9OworCitXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0
ID0gZnVuY3Rpb24oKQoreworICAgIGNvbnNvbGUuYXNzZXJ0KFdJLm1haW5UYXJnZXQuZXhlY3V0
aW9uQ29udGV4dCk7CiAKLSAgICAvLyBQb3N0LXRhcmdldCBpbml0aWFsaXphdGlvbi4KLSAgICBX
SS50YXJnZXRNYW5hZ2VyLmluaXRpYWxpemVNYWluVGFyZ2V0KCk7CiAgICAgV0kucnVudGltZU1h
bmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dCA9IFdJLm1haW5UYXJnZXQuZXhlY3V0aW9uQ29u
dGV4dDsKIH07CiAKK1dJLnJlZGlyZWN0R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uID0gZnVuY3Rp
b24oY29ubmVjdGlvbikKK3sKKyAgICAvLyBUaGlzIG1ha2VzIGdsb2JhbCB3aW5kb3cuRm9vQWdl
bnQgZGlzcGF0Y2ggdG8gdGhlIGFjdGl2ZSBwYWdlIHRhcmdldC4KKyAgICBmb3IgKGxldCBkb21h
aW4gaW4gSW5zcGVjdG9yQmFja2VuZC5fYWdlbnRzKSB7CisgICAgICAgIGlmIChkb21haW4gIT09
ICJUYXJnZXQiKSB7CisgICAgICAgICAgICBsZXQgYWdlbnQgPSBJbnNwZWN0b3JCYWNrZW5kLl9h
Z2VudHNbZG9tYWluXTsKKyAgICAgICAgICAgIGFnZW50LmNvbm5lY3Rpb24gPSBjb25uZWN0aW9u
OworICAgICAgICB9CisgICAgfQorfTsKKwogV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkK
IHsKICAgICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2Vp
dmUgbWVzc2FnZXMuCkBAIC0xMDMsNiArMTQ2LDExIEBAIFdJLnBlcmZvcm1PbmVUaW1lRnJvbnRl
bmRJbml0aWFsaXphdGlvbnNVc2luZ1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKICAgICB9CiB9
OwogCitPYmplY3QuZGVmaW5lUHJvcGVydHkoV0ksICJtYWluVGFyZ2V0IiwKK3sKKyAgICBnZXQo
KSB7IHJldHVybiBXSS5wYWdlVGFyZ2V0IHx8IFdJLmJhY2tlbmRUYXJnZXQ7IH0KK30pOworCiBP
YmplY3QuZGVmaW5lUHJvcGVydHkoV0ksICJ0YXJnZXRzIiwKIHsKICAgICBnZXQoKSB7IHJldHVy
biBXSS50YXJnZXRNYW5hZ2VyLnRhcmdldHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFu
ZWwuanMKaW5kZXggZmRiZThiODczYjMuLmJkNWJhNTdlN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dl
clNpZGViYXJQYW5lbC5qcwpAQCAtMTgzLDE3ICsxODMsMTMgQEAgV0kuRGVidWdnZXJTaWRlYmFy
UGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25T
aWRlYmEKICAgICAgICAgdGhpcy5fY2FsbFN0YWNrVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNv
bnRlbnRUcmVlT3V0bGluZShzdXBwcmVzc0ZpbHRlcmluZyk7CiAgICAgICAgIHRoaXMuX2NhbGxT
dGFja1RyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2Vs
ZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl90cmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKIAot
ICAgICAgICB0aGlzLl9tYWluVGFyZ2V0VHJlZUVsZW1lbnQgPSBuZXcgV0kuVGhyZWFkVHJlZUVs
ZW1lbnQoV0kubWFpblRhcmdldCk7Ci0gICAgICAgIHRoaXMuX2NhbGxTdGFja1RyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKHRoaXMuX21haW5UYXJnZXRUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgdGhp
cy5fdXBkYXRlQ2FsbFN0YWNrVHJlZU91dGxpbmUoKTsKLQogICAgICAgICB0aGlzLl9jYWxsU3Rh
Y2tSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7CiAgICAgICAgIHRoaXMuX2NhbGxTdGFj
a1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NhbGxTdGFja1RyZWVPdXRsaW5lLmVsZW1l
bnQpOwogCiAgICAgICAgIHRoaXMuX2NhbGxTdGFja0dyb3VwID0gbmV3IFdJLkRldGFpbHNTZWN0
aW9uR3JvdXAoW3RoaXMuX2NhbGxTdGFja1Jvd10pOwogICAgICAgICB0aGlzLl9jYWxsU3RhY2tT
ZWN0aW9uID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uKCJjYWxsLXN0YWNrIiwgV0kuVUlTdHJpbmco
IkNhbGwgU3RhY2siKSwgW3RoaXMuX2NhbGxTdGFja0dyb3VwXSk7CiAKKyAgICAgICAgdGhpcy5f
bWFpblRhcmdldFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fYWN0aXZlQ2FsbEZy
YW1lVHJlZUVsZW1lbnQgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91
dGxpbmUgPSBudWxsOwpAQCAtMjE1LDEwICsyMTEsMTQgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFu
ZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRl
YmEKICAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5EZWJ1Z2dlci5zZXRQYXVz
ZU9uQXNzZXJ0aW9ucyAmJiBXSS5zZXR0aW5ncy5zaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50LnZhbHVlKQogICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQo
V0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7CiAKKyAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLl90YXJn
ZXRBZGRlZCh7ZGF0YToge3RhcmdldH19KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQ2FsbFN0YWNr
VHJlZU91dGxpbmUoKTsKKwogICAgICAgICBpZiAoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
KQogICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2VzUmVjdXJzaXZlbHlGb3JGcmFtZShXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOwogCi0gICAgICAgIGZvciAodmFyIHNjcmlwdCBvZiBX
SS5kZWJ1Z2dlck1hbmFnZXIua25vd25Ob25SZXNvdXJjZVNjcmlwdHMpCisgICAgICAgIGZvciAo
bGV0IHNjcmlwdCBvZiBXSS5kZWJ1Z2dlck1hbmFnZXIua25vd25Ob25SZXNvdXJjZVNjcmlwdHMp
CiAgICAgICAgICAgICB0aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsKIAogICAgICAgICBpZiAoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRlZCkgewpAQCAtNzMzLDE1ICs3MzMsMjQgQEAgV0ku
RGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRz
IFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICBfdGFyZ2V0QWRkZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7CisgICAgICAgIGlmICh0YXJnZXQg
aW5zdGFuY2VvZiBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KQorICAgICAgICAgICAgcmV0
dXJuOworCiAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UaHJlYWRUcmVlRWxlbWVu
dCh0YXJnZXQpOwogICAgICAgICB0aGlzLl9jYWxsU3RhY2tUcmVlT3V0bGluZS5hcHBlbmRDaGls
ZCh0cmVlRWxlbWVudCk7CiAKKyAgICAgICAgaWYgKHRhcmdldCA9PT0gV0kubWFpblRhcmdldCkK
KyAgICAgICAgICAgIHRoaXMuX21haW5UYXJnZXRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50Owor
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNhbGxTdGFja1RyZWVPdXRsaW5lKCk7CiAgICAgfQogCiAg
ICAgX3RhcmdldFJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgdGFyZ2V0ID0gZXZl
bnQuZGF0YS50YXJnZXQ7CisgICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBXSS5NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCB0
cmVlRWxlbWVudCA9IHRoaXMuX2ZpbmRUaHJlYWRUcmVlRWxlbWVudEZvclRhcmdldCh0YXJnZXQp
OwogICAgICAgICB0aGlzLl9jYWxsU3RhY2tUcmVlT3V0bGluZS5yZW1vdmVDaGlsZCh0cmVlRWxl
bWVudCk7CiAKQEAgLTc1MCw5ICs3NTksMTAgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBj
bGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAog
ICAgIF91cGRhdGVDYWxsU3RhY2tUcmVlT3V0bGluZSgpCiAgICAgewotICAgICAgICBsZXQgc2lu
Z2xlVGhyZWFkU2hvd2luZyA9IFdJLnRhcmdldHMuc2l6ZSA9PT0gMTsKKyAgICAgICAgbGV0IHNp
bmdsZVRocmVhZFNob3dpbmcgPSBXSS50YXJnZXRzLmxlbmd0aCA8PSAxOwogICAgICAgICB0aGlz
Ll9jYWxsU3RhY2tUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10
aHJlYWQiLCBzaW5nbGVUaHJlYWRTaG93aW5nKTsKLSAgICAgICAgdGhpcy5fbWFpblRhcmdldFRy
ZWVFbGVtZW50LnNlbGVjdGFibGUgPSAhc2luZ2xlVGhyZWFkU2hvd2luZzsKKyAgICAgICAgaWYg
KHRoaXMuX21haW5UYXJnZXRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX21haW5UYXJn
ZXRUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gIXNpbmdsZVRocmVhZFNob3dpbmc7CiAgICAgfQog
CiAgICAgX2hhbmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlKGV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qcwppbmRleCA4ZDlkY2JlNTNh
Zi4uZjhmZjVhZGQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3Lmpz
CkBAIC0xMzgsNiArMTM4LDEzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
TmV0d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIFdJ
LnRpbWVsaW5lTWFuYWdlci5wZXJzaXN0ZW50TmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJl
Y29yZEFkZGVkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSA9
IHRydWU7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIG9y
ZGVyIG9mIGV2ZW50cy4gTm9ybWFsIHBhZ2UgbmF2aWdhdGlvbgorICAgICAgICAvLyB0cmlnZ2Vy
cyBhIE1haW5SZXNvdXJjZSBjaGFuZ2UgYW5kIHRoZW4gYSBNYWluRnJhbWUgY2hhbmdlLiBQYWdl
IFRyYW5zaXRpb24KKyAgICAgICAgLy8gdHJpZ2dlcnMgYSBNYWluRnJhbWUgY2hhbmdlIHRoZW4g
YSBNYWluUmVzb3VyY2UgY2hhbmdlLgorICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRh
cmdldCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgV0kubm90aWZpY2F0aW9ucy5hZGRFdmVu
dExpc3RlbmVyKFdJLk5vdGlmaWNhdGlvbi5UcmFuc2l0aW9uUGFnZVRhcmdldCwgdGhpcy5fdHJh
bnNpdGlvblBhZ2VUYXJnZXQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtMTQw
MSw2ICsxNDA4LDEzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29y
a1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAKICAgICAgICAgdGhpcy5y
ZXNldCgpOwogCisgICAgICAgIGlmICh0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkgewor
ICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHRoaXMuX25lZWRzSW5pdGlhbFBvcHVsYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgIHRo
aXMuX3BvcHVsYXRlV2l0aEluaXRpYWxSZXNvdXJjZXNJZk5lZWRlZCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxv
YWRUYWJsZShmcmFtZS5tYWluUmVzb3VyY2UpOwogICAgIH0KIApAQCAtMTk5NCw0ICsyMDA4LDkg
QEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICB7CiAgICAgICAgIHRoaXMuX3RhYmxlLnJl
bG9hZFZpc2libGVDb2x1bW5DZWxscyh0aGlzLl93YXRlcmZhbGxDb2x1bW4pOwogICAgIH0KKwor
ICAgIF90cmFuc2l0aW9uUGFnZVRhcmdldChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Ry
YW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gdHJ1ZTsKKyAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpz
CmluZGV4IGFmZmVkMzI4MGIyLi4xZDIzYmM0MzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAt
MzIsNyArMzIsOCBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5k
cyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3RvZ2dsZU9yRm9jdXNLZXlib2FyZFNob3J0Y3V0ID0g
bmV3IFdJLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNj
YXBlLCB0aGlzLl90b2dnbGVPckZvY3VzLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl90b2dn
bGVPckZvY3VzS2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFs
c2U7CiAKLSAgICAgICAgdGhpcy5fbWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0g
dGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoV0kubWFpblRhcmdldC5l
eGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgdGhpcy5fbWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRo
Q29tcG9uZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5pbml0aWFsaXplTWFpbkV4ZWN1dGlvbkNv
bnRleHRQYXRoQ29tcG9uZW50KCk7CiAKICAgICAgICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250
ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsKICAgICAgICAgdGhpcy5fZnJhbWVUb1BhdGhDb21wb25l
bnQgPSBuZXcgTWFwOwpAQCAtMTEwLDYgKzExMSwxNCBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFz
cyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHN1cGVyLmNsb3NlZCgpOwog
ICAgIH0KIAorICAgIGluaXRpYWxpemVNYWluRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQo
KQorICAgIHsKKyAgICAgICAgaWYgKCFXSS5tYWluVGFyZ2V0IHx8ICFXSS5tYWluVGFyZ2V0LmV4
ZWN1dGlvbkNvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbWFp
bkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnQoV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0KTsKKyAgICB9
CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGxheW91dCgpCkBAIC0zMDksNiArMzE4LDkgQEAg
V0kuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV0kuVmlldwogICAg
IF90YXJnZXRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5k
YXRhLnRhcmdldDsKKyAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5X
b3JrZXIpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFy
Z2V0LnR5cGUgPT09IFdJLlRhcmdldC5UeXBlLldvcmtlcik7CiAgICAgICAgIGxldCBwcmVmZXJy
ZWROYW1lID0gV0kuVUlTdHJpbmcoIldvcmtlciBcdTIwMTQgJXMiKS5mb3JtYXQodGFyZ2V0LmRp
c3BsYXlOYW1lKTsKICAgICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0g
dGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQodGFyZ2V0LmV4ZWN1dGlv
bkNvbnRleHQsIHByZWZlcnJlZE5hbWUpOwpAQCAtMzIwLDYgKzMzMiw5IEBAIFdJLlF1aWNrQ29u
c29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdJLlZpZXcKICAgICBfdGFyZ2V0UmVt
b3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdl
dDsKKyAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5Xb3JrZXIpCisg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29t
cG9uZW50ID0gdGhpcy5fdGFyZ2V0VG9QYXRoQ29tcG9uZW50LnRha2UodGFyZ2V0KTsKICAgICAg
ICAgdGhpcy5fcmVtb3ZlT3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudChleGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRW
aWV3LmpzCmluZGV4IDI4N2NkNzY1MjgzLi45OTFkZDc2OTUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNTgsNiArMjU4LDcgQEAgV0kuU2V0dGluZ3NUYWJD
b250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJD
b250ZW50VmkKICAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNldHRpbmcoV0ku
VUlTdHJpbmcoIlVzZXIgSW50ZXJmYWNlOiIpLCBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFi
bGVOZXdUYWJCYXIsIFdJLlVJU3RyaW5nKCJFbmFibGUgTmV3IFRhYiBCYXIiKSk7CiAgICAgICAg
IGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRTZXBhcmF0b3IoKTsKIAorICAgICAgICAvLyBG
SVhNRTogUmVsb2FkIFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRpcGxleGlu
Z0JhY2tlbmRUYXJnZXQuCiAgICAgICAgIGxldCByZWxvYWRJbnNwZWN0b3JCdXR0b24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKICAgICAgICAgcmVsb2FkSW5zcGVjdG9yQnV0
dG9uLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIlJlbG9hZCBXZWIgSW5zcGVjdG9yIik7CiAg
ICAgICAgIHJlbG9hZEluc3BlY3RvckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgp
ID0+IHsgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRl
eHRFZGl0b3IuanMKaW5kZXggZjM2ZGQwNjFjZjQuLjc5MWMyZTUyYWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVk
aXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
b3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtNjY3LDI1ICs2NjcsMjggQEAgV0kuU291cmNlQ29k
ZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRF
ZGl0b3IKIAogICAgIF90YXJnZXRBZGRlZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChXSS50
YXJnZXRzLnNpemUgPT09IDIpCisgICAgICAgIGlmIChXSS50YXJnZXRzLmxlbmd0aCA9PT0gMikK
ICAgICAgICAgICAgIHRoaXMuX3JlaW5zZXJ0QWxsVGhyZWFkSW5kaWNhdG9ycygpOwogICAgIH0K
IAogICAgIF90YXJnZXRSZW1vdmVkKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKFdJLnRhcmdl
dHMuc2l6ZSA9PT0gMSkgeworICAgICAgICBpZiAoV0kudGFyZ2V0cy5sZW5ndGggPT09IDEpIHsK
ICAgICAgICAgICAgIC8vIEJhY2sgdG8gb25lIHRocmVhZCwgcmVtb3ZlIHRocmVhZCBpbmRpY2F0
b3JzLgogICAgICAgICAgICAgdGhpcy5fcmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgdGFyZ2V0ID0gZXZl
bnQuZGF0YS50YXJnZXQ7CisgICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBXSS5NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMu
X3JlbW92ZVRocmVhZEluZGljYXRvckZvclRhcmdldCh0YXJnZXQpOwogICAgIH0KIAogICAgIF9j
YWxsRnJhbWVzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKFdJLnRhcmdldHMu
c2l6ZSA9PT0gMSkKKyAgICAgICAgaWYgKFdJLnRhcmdldHMubGVuZ3RoID09PSAxKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsK
QEAgLTc3MSw3ICs3NzQsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJj
ZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICBpZiAoIXdpZGdl
dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBjb25zb2xlLmFzc2VydChXSS50YXJn
ZXRzLnNpemUgPiAxKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoV0kudGFyZ2V0cy5sZW5ndGgg
PiAxKTsKIAogICAgICAgICBsZXQgd2lkZ2V0RWxlbWVudCA9IHdpZGdldC53aWRnZXRFbGVtZW50
OwogICAgICAgICB3aWRnZXRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0xNTY5LDggKzE1
NzIsOSBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRp
dG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICAvLyBDbGVhciBvdGhlciBtYXBzLgog
ICAgICAgICB0aGlzLl90aHJlYWRUYXJnZXRNYXAuY2xlYXIoKTsKIAotICAgICAgICBpZiAoV0ku
dGFyZ2V0cy5zaXplID4gMSkgewotICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpCisgICAgICAgIGxldCBkZWJ1Z2dhYmxlVGFyZ2V0cyA9IFdJLnRhcmdldHM7CisgICAg
ICAgIGlmIChkZWJ1Z2dhYmxlVGFyZ2V0cy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBmb3Ig
KGxldCB0YXJnZXQgb2YgZGVidWdnYWJsZVRhcmdldHMpCiAgICAgICAgICAgICAgICAgdGhpcy5f
YWRkVGhyZWFkSW5kaWNhdG9yRm9yVGFyZ2V0KHRhcmdldCk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDRkODgxN2I0MTYxLi41MzhmZjc1MDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NTIgQEAKKzIwMTgtMTEtMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdlYiBJbnNwZWN0b3Igd2luZG93IGFsaXZl
IGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVtb3RlIEluc3BlY3RvcikKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ5NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVG8gc3VwcG9ydCBwcm9jZXNzIHN3YXBwaW5nIGEgc2xpbSBXZWIg
SW5zcGVjdG9yIGJhY2tlbmQgbGl2ZXMgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgVGhlIFdl
YiBJbnNwZWN0b3IgZnJvbnRlbmQgY29ubmVjdHMgdG8gaXQgYW5kIGlzIHRvbGQgYWJvdXQgc3Vi
LXRhcmdldHMsIG5hbWVseQorICAgICAgICBwYWdlcywgdGhhdCBpdCBjYW4gZnVydGhlciBjb25u
ZWN0IHRvLiBXaGVuIHBlcmZvcm1pbmcgYSBwcm9jZXNzIHN3YXAgdGhlIGJhY2tlbmQKKyAgICAg
ICAgdGVsbHMgdGhlIGZyb250ZW5kIHRvIGRlc3Ryb3kgZXhpc3RpbmcgdGFyZ2V0cyBhbmQgY3Jl
YXRlIG5ldyB0YXJnZXRzLgorCisgICAgICAgIEluIHRoZSBVSVByb2Nlc3MgdGhlIFdlYlBhZ2VQ
cm94eSBoYXMgYSBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlciwgd2l0aCBhIHNpbmdsZQorICAg
ICAgICBUYXJnZXRBZ2VudCBob2xkaW5nIEluc3BlY3RvclRhcmdldFByb3hpZXMgdG8gdGFyZ2V0
cyBpdCBrbm93cyBhYm91dC4gSW5zcGVjdG9yCisgICAgICAgIHByb3RvY29sIG1lc3NhZ2VzIGdv
IHRocm91Z2ggdGhpcyBpbnNwZWN0b3IgY29udHJvbGxlciBhbmQgYXJlIHJvdXRlZCB0byB0aGUK
KyAgICAgICAgV2ViUGFnZSBhbmQgaXRzIFdlYkNvcmU6OlBhZ2UncyBJbnNwZWN0b3JDb250cm9s
bGVyLiBUaGUgV2ViUGFnZVByb3h5IGRlY2lkZXMKKyAgICAgICAgd2hlbiB0byBjbG9zZSBhbmQg
ZXhwb3NlIG5ldyBwYWdlIHRhcmdldHMgZHVyaW5nIHByb2Nlc3Mgc3dhcCwgb3IgYmFzaWNhbGx5
CisgICAgICAgIGFueSB0aW1lIGl0IHJlY29ubmVjdHMgdG8gYSBXZWJQcm9jZXNzLiBTbyB0aGlz
IHBhdGNoIGFsc28gbWFrZXMgV2ViIEluc3BlY3RvcgorICAgICAgICBzdGF5IGFsaXZlIGFuZCBy
ZWNvbm5lY3QgdG8gYSBwYWdlIHdoZW4gdGhlIGluc3BlY3RlZCBwYWdlIGNyYXNoZXMhCisKKyAg
ICAgICAgSW4gdGhlIFdlYkNvbnRlbnRQcm9jZXNzIHRoZSBXZWJQYWdlIGhhcyBhIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQuIEl0IGFsc28KKyAgICAgICAgaGFzIGEgV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIgaW4gYW50aWNpcGF0aW9uIG9mIGZ1cnRoZXIgc3ViLXRhcmdldHMKKyAg
ICAgICAgd2l0aGluIHRoZSBwYWdlICh3b3JrZXJzLCBmcmFtZXMpIGJ1dCBub25lIGV4aXN0IGF0
IHRoZSBtb21lbnQuIFRoZSBXZWJQYWdlCisgICAgICAgIHJlbGllcyBvbiB0aGUgV2ViUGFnZVBy
b3h5IHRvIGtub3cgd2hlbiB0byBleHBvc2UgdGhpcyB0YXJnZXQgYXMgYSBkZWJ1Z2dhYmxlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIE5ldyBmaWxlcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBSZW1vdGUgaW5zcGVjdG9yIHN0YXRlIGNhbiBub3cg
c3RheSBpbiB0aGUgVUlQcm9jZXNzIGFuZCBkb2VzIG5vdCBuZWVkIHRvCisgICAgICAgIGJlIHBh
c3NlZCBkb3duIHRvIHRoZSBXZWJDb250ZW50UHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlRGVidWdnYWJsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZURlYnVnZ2FibGUuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6
V2ViUGFnZURlYnVnZ2FibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6
bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjp1cmwgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dl
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZURlYnVnZ2FibGU6OnNldE5hbWVPdmVycmlkZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VEZWJ1Z2dhYmxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaC4KKyAgICAgICAgUmVtb3RlIGRlYnVnZ2FibGUg
ZW50cnkgcG9pbnQgaW50byB0aGUgVUlQcm9jZXNzIGZvciBhIHBhZ2UuCisgICAgICAgIFRoaXMg
aXMgcHJldHR5IG11Y2ggaWRlbnRpY2FsIHRvIHRoZSBQYWdlRGVidWdnYWJsZSBpbiBXZWJDb3Jl
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9yZXNldFJlY2VudENyYXNoQ291bnRU
aW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluZGljYXRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW90ZUluc3BlY3Rpb25OYW1lT3Zl
cnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFJlbW90ZUlu
c3BlY3Rpb25OYW1lT3ZlcnJpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
bW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3Bl
Y3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
bW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBPd24g
bW9yZSBpbnNwZWN0b3Igc3RhdGUgaW4gdGhlIFVJUHJvY2VzcyBpbmNsdWRpbmcgYSBkZWJ1Z2dh
YmxlIGFuZCBpbnNwZWN0b3IgY29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnBhZ2VDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9u
dGVuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
OjpoYXNSZW1vdGVGcm9udGVuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI6OnNldEluZGljYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2xlYXJUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUluc3BlY3RvclRhcmdldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNlbmRNZXNzYWdl
VG9JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIgd2l0aCBh
IHNpbmdsZSBUYXJnZXRBZ2VudCBpbiB0aGUgVUlQcm9jZXNzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudDo6ZnJvbnRlbmRDaGFubmVs
KToKKyAgICAgICAgVGFyZ2V0IGFnZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVj
dG9yVGFyZ2V0UHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdl
dFByb3h5OjpJbnNwZWN0b3JUYXJnZXRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
clRhcmdldFByb3h5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yVGFyZ2V0
UHJveHk6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94
eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICBVSVByb2Nlc3MgcHJveHkgZm9yIGFuIEluc3Bl
Y3RvclRhcmdldCBpbiB0aGUgV2ViQ29udGVudFByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQXR0YWNoRHJhd2lu
Z0FyZWFPblBhZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29ubmVj
dEluc3BlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc2Nvbm5lY3RJbnNwZWN0
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluZGljYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpkaXNjb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldDo6c2VuZE1lc3NhZ2VUb1Rhcmdl
dEJhY2tlbmQpOgorICAgICAgICBJbnNwZWN0b3JUYXJnZXQgZm9yIHRoaXMgV2ViUGFnZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Q29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6fldlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXI6OmFkZFRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRDb250cm9sbGVyOjpyZW1vdmVUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6Y29ubmVjdEluc3BlY3Rvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyOjpkaXNjb25uZWN0
SW5zcGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OnNlbmRNZXNzYWdlVG9UYXJnZXRGcm9udGVu
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OldlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQp
OgorICAgICAgICBQcmVwYXJhdGlvbiBmb3IgbW9yZSB0YXJnZXQgbWFuYWdtZW50IGluIHRoZSBX
ZWJDb250ZW50UHJvY2Vzcy4KKwogMjAxOC0xMS0wOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJhdyBjYXBzIGxvY2sgaW5kaWNhdG9yIGluIHBh
c3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggNzVkYjFhNmFkNTIuLjFjNTkxMTM3Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTM4OSw2ICszODksNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0
eXBlKToKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPidd
LAogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xl
VHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVUeXBlcy5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJn
ZXRUeXBlJzogWyc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFyZ2V0Lmg+J10sCiAgICAgICAg
ICdNb25vdG9uaWNUaW1lJzogWyc8d3RmL01vbm90b25pY1RpbWUuaD4nXSwKICAgICAgICAgJ1Nl
Y29uZHMnOiBbJzx3dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnV2FsbFRpbWUnOiBbJzx3dGYv
V2FsbFRpbWUuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYTc3NzQzOWY4ZTkuLjQxY2QzNDA2ODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtNzQsMTAgKzc0LDYgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbWltZVR5cGVzV2l0
aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7CiAgICAgZW5jb2RlciA8PCBjb250cm9sbGVkQnlBdXRv
bWF0aW9uOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgZW5jb2RlciA8PCBh
bGxvd3NSZW1vdGVJbnNwZWN0aW9uOwotICAgIGVuY29kZXIgPDwgcmVtb3RlSW5zcGVjdGlvbk5h
bWVPdmVycmlkZTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IGNv
bG9yU3BhY2U7CiAgICAgZW5jb2RlciA8PCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwpAQCAtMjMxLDEz
ICsyMjcsNiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
cmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggMjA1YjE5YWIyNDIuLjdiZjUxNzg0ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMzAsMTEgKzEzMCw2IEBAIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGJvb2wgY29udHJvbGxlZEJ5QXV0
b21hdGlvbjsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGJvb2wgYWxsb3dz
UmVtb3RlSW5zcGVjdGlvbjsKLSAgICBTdHJpbmcgcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlk
ZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9y
U3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZWRi
YjVlMWY2NzkuLmRjNWMxZTE2OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTIyNyw2ICsyMjcsNyBAQCBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5j
cHAKIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAogVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKK1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNw
cAogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAogVUlQcm9jZXNzL1Byb2Nl
c3NBc3NlcnRpb24uY3BwCkBAIC0yNjgsOSArMjY5LDEyIEBAIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVByb2Nl
c3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuY3BwCitVSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2FibGUuY3BwCiBVSVByb2Nl
c3MvV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYlBhZ2VH
cm91cC5jcHAKIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCitVSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvV2ViUGFnZUlu
c3BlY3RvclRhcmdldEFnZW50LmNwcAogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKIFVJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3Bw
CkBAIC01MzEsNiArNTM1LDkgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNw
cAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VHcm91cFByb3h5LmNwcAorV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXQuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENv
bnRyb2xsZXIuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZy
b250ZW5kQ2hhbm5lbC5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5jcHAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5lNTc1OWU4OWRjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRhcmdldFByb3h5LmgiCisKKyNpbmNs
dWRlICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCitSZWY8SW5zcGVjdG9yVGFyZ2V0UHJveHk+IEluc3BlY3RvclRh
cmdldFByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdl
dElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JUYXJnZXRQcm94eShwYWdlLCB0YXJnZXRJZCwgdHlwZSkp
OworfQorCitJbnNwZWN0b3JUYXJnZXRQcm94eTo6SW5zcGVjdG9yVGFyZ2V0UHJveHkoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3Rv
clRhcmdldFR5cGUgdHlwZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9pZGVudGlmaWVy
KHRhcmdldElkKQorICAgICwgbV90eXBlKHR5cGUpCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFy
Z2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKQoreworICAgIGlm
IChtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCopCit7CisgICAgaWYgKG1fcGFnZS5pc1ZhbGlkKCkpCisgICAg
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdElu
c3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5OjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgaWYgKG1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JUYXJnZXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFy
Z2V0UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzEyMDJi
ZWE4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3JUYXJnZXRQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvclRhcmdldC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCisvLyBOT1RFOiBU
aGlzIFVJUHJvY2VzcyBzaWRlIEluc3BlY3RvclRhcmdldCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhl
IGZyb250ZW5kIGNoYW5uZWwsIHNpbmNlCisvLyBhbnkgdGFyZ2V0IC0+IGZyb250ZW5kIG1lc3Nh
Z2VzIHdpbGwgYmUgcm91dGVkIHRvIHRoZSBXZWJQYWdlUHJveHkgd2l0aCBhIHRhcmdldElkLgor
CitjbGFzcyBJbnNwZWN0b3JUYXJnZXRQcm94eSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldCwgcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVGFyZ2V0UHJveHk+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JUYXJnZXRQcm94eSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JU
YXJnZXRQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSk7CisgICAgSW5zcGVjdG9yVGFyZ2V0UHJv
eHkoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRUeXBlKTsKKyAgICB+SW5zcGVjdG9yVGFyZ2V0UHJveHkoKSA9IGRlZmF1bHQ7
CisKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0
cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFN0cmlu
ZyBtX2lkZW50aWZpZXI7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIG1fdHlw
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA2MzlhMTJi
MTRkYy4uN2VkMjY3YjY0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVi
dWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVidWdnYWJsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkyZGZkZTNjOGNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2Fi
bGUuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZURlYnVn
Z2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2Vi
RnJhbWVQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCitXZWJQYWdlRGVidWdnYWJsZTo6V2ViUGFnZURlYnVnZ2Fi
bGUoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmlu
ZyBXZWJQYWdlRGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hbWVPdmVy
cmlkZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fbmFtZU92ZXJyaWRlOworCisgICAgaWYg
KCFtX3BhZ2UubWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJl
dHVybiBtX3BhZ2UubWFpbkZyYW1lKCktPnRpdGxlKCk7Cit9CisKK1N0cmluZyBXZWJQYWdlRGVi
dWdnYWJsZTo6dXJsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZS5tYWluRnJhbWUoKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluRnJh
bWUoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgPyAiYWJvdXQ6
YmxhbmsiX3MgOiB1cmw7Cit9CisKK2Jvb2wgV2ViUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVi
dWdnZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigp
Lmhhc0xvY2FsRnJvbnRlbmQoKTsKK30KKwordm9pZCBXZWJQYWdlRGVidWdnYWJsZTo6Y29ubmVj
dChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0Nv
bm5lY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSkKK3sKKyAgICBXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9s
bGVyKCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQoY2hhbm5lbCwg
aXNBdXRvbWF0aWNDb25uZWN0aW9uLCBpbW1lZGlhdGVseVBhdXNlKTsKK30KKwordm9pZCBXZWJQ
YWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hh
bm5lbCkKK3sKKyAgICBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJv
bGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29udHJv
bGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7Cit9CisKK3ZvaWQgV2ViUGFnZURlYnVn
Z2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZy
b250ZW5kKG1lc3NhZ2UpOworfQorCit2b2lkIFdlYlBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0
aW5nKGJvb2wgaW5kaWNhdGluZykKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluZGljYXRpbmcoaW5kaWNhdGluZyk7Cit9CisKK3ZvaWQgV2ViUGFnZURlYnVnZ2FibGU6
OnNldE5hbWVPdmVycmlkZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbV9uYW1lT3ZlcnJp
ZGUgPSBuYW1lOworICAgIHVwZGF0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2FibGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VEZWJ1Z2dhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmFiMjE0YmQ0NzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZURlYnVnZ2FibGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUlu
c3BlY3Rpb25UYXJnZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViUGFnZURlYnVn
Z2FibGUgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
ZWJQYWdlRGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgV2ViUGFnZURlYnVnZ2FibGUoV2ViUGFn
ZVByb3h5Jik7CisgICAgfldlYlBhZ2VEZWJ1Z2dhYmxlKCkgPSBkZWZhdWx0OworCisgICAgSW5z
cGVjdG9yOjpSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpUeXBlOjpXZWI7
IH0KKworICAgIFN0cmluZyBuYW1lKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHVybCgpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0IGZpbmFsOworCisg
ICAgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9t
YXRpY0Nvbm5lY3Rpb24gPSBmYWxzZSwgYm9vbCBpbW1lZGlhdGVseVBhdXNlID0gZmFsc2UpIGZp
bmFsOworICAgIHZvaWQgZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKSBmaW5hbDsKKworICAg
IGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lT3ZlcnJp
ZGU7IH0KKyAgICB2b2lkIHNldE5hbWVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0
ZToKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBTdHJpbmcgbV9uYW1lT3ZlcnJpZGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
T05UUk9MTEFCTEVfVEFSR0VUKFdlYktpdDo6V2ViUGFnZURlYnVnZ2FibGUsIFdlYik7CisKKyNl
bmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTBhNzgzMGU5MmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVy
OjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCit7CisgICAgYXV0byB0YXJnZXRB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zy
b250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKworICAgIG1f
dGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKKworICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKHRhcmdldEFnZW50KSk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXI6OnBhZ2VDbG9zZWQoKQoreworICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKKworICAg
IG1fYWdlbnRzLmRpc2NhcmRWYWx1ZXMoKTsKK30KKworYm9vbCBXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJvbnRl
bmRSb3V0ZXItPmhhc0xvY2FsRnJvbnRlbmQoKTsKK30KKworYm9vbCBXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Zy
b250ZW5kUm91dGVyLT5oYXNSZW1vdGVGcm9udGVuZCgpOworfQorCit2b2lkIFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCwgYm9vbCkKK3sKKyAgICBBU1NFUlRfQVJHKGZyb250
ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKKworICAgIGJvb2wgY29ubmVjdGVkRmlyc3RG
cm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKworICAgIG1fZnJv
bnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAgaWYg
KGNvbm5lY3RlZEZpcnN0RnJvbnRlbmQpCisgICAgICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOworCisgICAgbV9wYWdlLmRpZENoYW5nZUluc3BlY3RvckZyb250ZW5kQ291bnQo
bV9mcm9udGVuZFJvdXRlci0+ZnJvbnRlbmRDb3VudCgpKTsKKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzUmVtb3RlRnJvbnRlbmQo
KSkKKyAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7
CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQoreworICAgIG1fZnJv
bnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworCisgICAg
Ym9vbCBkaXNjb25uZWN0ZWRMYXN0RnJvbnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJv
bnRlbmRzKCk7CisgICAgaWYgKGRpc2Nvbm5lY3RlZExhc3RGcm9udGVuZCkKKyAgICAgICAgbV9h
Z2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdG9yRGVzdHJveWVkKTsKKworICAgIG1fcGFnZS5kaWRDaGFuZ2VJbnNwZWN0b3JGcm9udGVu
ZENvdW50KG1fZnJvbnRlbmRSb3V0ZXItPmZyb250ZW5kQ291bnQoKSk7CisKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5k
cygpKQorICAgICAgICBtX3BhZ2UucmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2Uo
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25u
ZWN0QWxsRnJvbnRlbmRzKCkKK3sKKyAgICAvLyBGSVhNRTogSGFuZGxlIGEgbG9jYWwgaW5zcGVj
dG9yIGNsaWVudC4KKworICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGlmeSBhZ2VudHMgZmlyc3QsIHNpbmNlIHRo
ZXkgbWF5IG5lZWQgdG8gdXNlIEluc3BlY3RvckNsaWVudC4KKyAgICBtX2FnZW50cy53aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXRE
ZXN0cm95ZWQpOworCisgICAgLy8gRGlzY29ubmVjdCBhbnkgcmVtYWluaW5nIHJlbW90ZSBmcm9u
dGVuZHMuCisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpOwor
CisgICAgbV9wYWdlLmRpZENoYW5nZUluc3BlY3RvckZyb250ZW5kQ291bnQobV9mcm9udGVuZFJv
dXRlci0+ZnJvbnRlbmRDb3VudCgpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7Cit9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluZGljYXRpbmcoYm9vbCBp
bmRpY2F0aW5nKQoreworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIG1fcGFnZS5zZXRJ
bmRpY2F0aW5nKGluZGljYXRpbmcpOworI2Vsc2UKKyAgICBpZiAoaW5kaWNhdGluZykKKyAgICAg
ICAgbV9wYWdlLnNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CisgICAgZWxzZQorICAgICAgICBt
X3BhZ2UuaGlkZUluc3BlY3RvckluZGljYXRpb24oKTsKKyNlbmRpZgorfQorI2VuZGlmCisKK3Zv
aWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyVGFyZ2V0cygpCit7CisgICAgZm9y
IChhdXRvJiB0YXJnZXQgOiBtX3RhcmdldHMpCisgICAgICAgIG1fdGFyZ2V0QWdlbnQtPnRhcmdl
dFRlcm1pbmF0ZWQoKnRhcmdldC5nZXQoKSk7CisKKyAgICBtX3RhcmdldHMuY2xlYXIoKTsKK30K
Kwordm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSB0
eXBlKQoreworICAgIGF1dG8gdGFyZ2V0ID0gSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNyZWF0ZSht
X3BhZ2UsIHRhcmdldElkLCB0eXBlKTsKKyAgICBtX3RhcmdldHMuYXBwZW5kKG1ha2VSZWZQdHIo
dGFyZ2V0LmdldCgpKSk7CisKKyAgICBtX3RhcmdldEFnZW50LT50YXJnZXRDcmVhdGVkKHRhcmdl
dC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRlc3Ryb3lJ
bnNwZWN0b3JUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBhdXRvIHBvc2l0
aW9uID0gbV90YXJnZXRzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgeyByZXR1
cm4gaXRlbS0+aWRlbnRpZmllcigpID09IHRhcmdldElkOyB9KTsKKyAgICBpZiAocG9zaXRpb24g
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHRhcmdldCA9IG1fdGFy
Z2V0c1twb3NpdGlvbl07CisgICAgbV90YXJnZXRBZ2VudC0+dGFyZ2V0VGVybWluYXRlZCgqdGFy
Z2V0LmdldCgpKTsKKworICAgIG1fdGFyZ2V0cy5yZW1vdmUocG9zaXRpb24pOworfQorCit2b2lk
IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAg
IG1fdGFyZ2V0QWdlbnQtPnNlbmRNZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQodGFyZ2V0SWQs
IG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MGE1OTQ2NjQ5YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5zcGVjdG9yVGFyZ2V0UHJveHkuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaD4KKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEJhY2tl
bmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOworCisgICAgdm9pZCBwYWdlQ2xv
c2VkKCk7CisKKyAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKKyAgICBib29sIGhh
c1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFs
c2UsIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgZGlzY29ubmVj
dEFsbEZyb250ZW5kcygpOworCisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKKyNlbmRpZgorCisgICAgdm9pZCBjbGVhclRh
cmdldHMoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUpOworICAgIHZvaWQgZGVzdHJv
eUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwor
ICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOworICAg
IFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAgICBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldEFnZW50KiBtX3RhcmdldEFnZW50OworICAgIFZlY3RvcjxSZWZQdHI8SW5z
cGVjdG9yVGFyZ2V0UHJveHk+PiBtX3RhcmdldHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JU
YXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i
ZTk1M2E5NzZjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFN0dWJGcm9udGVuZENoYW5uZWwgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5l
Y3Rpb25UeXBlOjpSZW1vdGU7IH0KKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmKSBmaW5hbCB7IH0KK307CisKK1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudDo6
V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXImIGZy
b250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0
Y2hlcikKKyAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQoZnJvbnRlbmRSb3V0
ZXIsIGJhY2tlbmREaXNwYXRjaGVyKQoreworfQorCitJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCogV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50Ojpmcm9udGVuZENoYW5uZWwoKQoreworICAg
IGlmICghbV9mcm9udGVuZENoYW5uZWwpCisgICAgICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdHViRnJvbnRlbmRDaGFubmVsPigpOworICAgIHJldHVybiBtX2Zyb250
ZW5kQ2hhbm5lbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZjg2Yzc3M2U0NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclRhcmdldEFnZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRBZ2VudCB7CitwdWJsaWM6CisgICAgV2ViUGFnZUluc3BlY3RvclRhcmdldEFn
ZW50KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXImLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyJik7CisgICAgdmlydHVhbCB+V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50KCkgPSBkZWZh
dWx0OworCitwcml2YXRlOgorICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwoKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbD4gbV9mcm9udGVuZENoYW5uZWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhiNzJiM2Uz
YTJlLi45YmY2YTY4NGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xMDksOCArMTA5LDEwIEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdl
RGVidWdnYWJsZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cERhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKQEAgLTIyMyw2
ICsyMjUsMTAgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoU0VDX0tFWV9Q
Uk9YWSkKICNpbmNsdWRlICJTZWNLZXlQcm94eVN0b3JlLmgiCiAjZW5kaWYKQEAgLTQyNSw2ICs0
MzEsMTAgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICNlbmRpZgogICAgICwgbV9wYWdlTG9h
ZFN0YXRlKCp0aGlzKQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2Nv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykp
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorI2VuZGlmCiAg
ICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewogICAgIG1fd2ViUHJvY2Vz
c0xpZmV0aW1lVHJhY2tlci5hZGRPYnNlcnZlcihtX3Zpc2l0ZWRMaW5rU3RvcmUpOwpAQCAtNDgx
LDYgKzQ5MSwxMyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICAgICB0aGlzLT5kaXNw
YXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVE
ZWJ1Z2dpbmdBbGxvd2VkKHRydWUpOworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5pdCgp
OworI2VuZGlmCisKKyAgICBjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCk7CiB9CiAKIFdlYlBhZ2VQ
cm94eTo6fldlYlBhZ2VQcm94eSgpCkBAIC04MDYsNiArODIzLDEzIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoU2hvdWxkRGVsYXlBdHRhY2hpbmdEcmF3
aW5nQXJlYSBzCiAKICAgICBpbml0aWFsaXplV2ViUGFnZShzaG91bGREZWxheUF0dGFjaGluZ0Ry
YXdpbmdBcmVhKTsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJlbW90ZUlu
c3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKKworICAgIGNsZWFySW5zcGVj
dG9yVGFyZ2V0cygpOworICAgIGNyZWF0ZUluc3BlY3RvclRhcmdldHMoKTsKKwogICAgIHBhZ2VD
bGllbnQoKS5kaWRSZWxhdW5jaFByb2Nlc3MoKTsKICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9y
QmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIH0KQEAgLTkxNiw2ICs5NDAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogI2VuZGlmCiAKICAgICBtX2JhY2tGb3J3YXJkTGlz
dC0+cGFnZUNsb3NlZCgpOworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+cGFnZUNsb3NlZCgp
OwogICAgIHBhZ2VDbGllbnQoKS5wYWdlQ2xvc2VkKCk7CiAKICAgICBtX3Byb2Nlc3MtPmRpc2Nv
bm5lY3RGcmFtZXNGcm9tUGFnZSh0aGlzKTsKQEAgLTEzNjEsMzEgKzEzODYsNjcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQog
ICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
bV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9u
KSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXQoY29uc3Qg
U3RyaW5nJiB0YXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIHR5cGUpCit7
CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQodGFyZ2V0
SWQsIHR5cGUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVzdHJveUluc3BlY3RvclRhcmdl
dChjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+
ZGVzdHJveUluc3BlY3RvclRhcmdldCh0YXJnZXRJZCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2Vu
ZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKHRhcmdldElkLCBtZXNzYWdlKTsKK30KKwogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQordm9pZCBXZWJQYWdlUHJveHk6OnNldEluZGljYXRp
bmcoYm9vbCBpbmRpY2F0aW5nKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRp
bmcoaW5kaWNhdGluZyksIG1fcGFnZUlEKTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OmFsbG93
c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RvckRlYnVn
Z2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYm9vbCBhbGxvdykKIHsKLSAgICBpZiAobV9hbGxv
d3NSZW1vdGVJbnNwZWN0aW9uID09IGFsbG93KQotICAgICAgICByZXR1cm47CisgICAgbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGFsbG93KTsKK30KIAot
ICAgIG1fYWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IGFsbG93OwotCi0gICAgaWYgKGlzVmFsaWQo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uKGFsbG93KSwgbV9wYWdlSUQpOworU3RyaW5nIFdlYlBhZ2VQcm94eTo6
cmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5z
cGVjdG9yRGVidWdnYWJsZS0+bmFtZU92ZXJyaWRlKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSAgICBpZiAobV9yZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlID09IG5hbWUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSA9IG5hbWU7Ci0K
LSAgICBpZiAoaXNWYWxpZCgpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUobV9yZW1vdGVJbnNwZWN0aW9u
TmFtZU92ZXJyaWRlKSwgbV9wYWdlSUQpOworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0
TmFtZU92ZXJyaWRlKG5hbWUpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3RlSW5zcGVj
dG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKQoreworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+
dXBkYXRlKCk7Cit9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9y
VGFyZ2V0cygpCit7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jbGVhclRhcmdldHMoKTsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldHMoKQoreworICAg
IFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIFN0cmluZzo6bnVtYmVy
KG1fcGFnZUlEKSk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JU
YXJnZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2Up
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NC
YWNrZ3JvdW5kKQogewogICAgIGlmIChtX2RyYXdzQmFja2dyb3VuZCA9PSBkcmF3c0JhY2tncm91
bmQpCkBAIC0zNzk5LDYgKzM4NjAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIGludmFsaWRhdGVBbGxBdHRhY2htZW50
cygpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlk
Q2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzk3NSw2ICs0MDQxLDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHRpdGxlCiAgICAgZnJhbWUtPmRpZENoYW5nZVRpdGxlKHRpdGxlKTsKICAgICAK
ICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOworCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZW1v
dGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90LCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCkBAIC02Mzc5LDEwICs2NDUwLDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAgICAgcGFyYW1ldGVycy5i
YWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgPSBtX2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFn
ZTsKICAgICBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUgPSBtX2xheWVySG9zdGluZ01vZGU7
CiAgICAgcGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uID0gbV9jb250cm9sbGVkQnlB
dXRvbWF0aW9uOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHBhcmFtZXRlcnMu
YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IG1fYWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKLSAgICBw
YXJhbWV0ZXJzLnJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUgPSBtX3JlbW90ZUluc3BlY3Rp
b25OYW1lT3ZlcnJpZGU7Ci0jZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVy
cy5jb2xvclNwYWNlID0gcGFnZUNsaWVudCgpLmNvbG9yU3BhY2UoKTsKICAgICBwYXJhbWV0ZXJz
LnVzZVN5c3RlbUFwcGVhcmFuY2UgPSBtX3VzZVN5c3RlbUFwcGVhcmFuY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDYxNWEwOGQ4NWFjLi42ZDE5Mjk3ZWM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI0OCw3ICsyNDgsOSBA
QCBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNs
YXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
OworY2xhc3MgV2ViUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CitjbGFzcyBX
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKQEAg
LTM4OCwxMSArMzkwLDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsgfQogICAgIHZv
aWQgc2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sKTsKIAorICAgIFdlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gKm1faW5zcGVjdG9y
Q29udHJvbGxlcjsgfQorCisgICAgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpOworICAg
IHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24oKTsKKworICAgIHZvaWQgY3JlYXRlSW5zcGVj
dG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFy
Z2V0VHlwZSk7CisgICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYg
dGFyZ2V0SWQpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0
IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICBib29sIGFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FsbG93c1JlbW90ZUluc3BlY3Rpb247IH0KKyAgICB2b2lkIHNldEluZGlj
YXRpbmcoYm9vbCk7CisgICAgYm9vbCBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwotICAgIFN0cmluZyByZW1v
dGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVJbnNwZWN0
aW9uTmFtZU92ZXJyaWRlOyB9CisgICAgU3RyaW5nIHJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJp
ZGUoKSBjb25zdDsKICAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5n
ZSgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0xNzM3LDkgKzE3
NTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd0luc3BlY3RvckhpZ2hsaWdodChjb25zdCBX
ZWJDb3JlOjpIaWdobGlnaHQmKTsKICAgICB2b2lkIGhpZGVJbnNwZWN0b3JIaWdobGlnaHQoKTsK
IAotICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKTsKLSAgICB2b2lkIGhpZGVJbnNw
ZWN0b3JJbmRpY2F0aW9uKCk7Ci0KICAgICB2b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2go
KTsKICAgICB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CiAgICAgdm9pZCBhc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbkNhbGxiYWNrKGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
JiwgQ2FsbGJhY2tJRCk7CkBAIC0xODI3LDYgKzE4MzcsOSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBzdG9wQWxsVVJMU2NoZW1lVGFza3MoKTsKIAorICAgIHZvaWQgY2xlYXJJbnNwZWN0b3JUYXJn
ZXRzKCk7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCk7CisKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
ckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKQEAgLTIxMDIsMTAgKzIxMTUsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbnRyb2xs
ZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgYm9vbCBtX2FsbG93c1JlbW90ZUluc3BlY3Rpb24geyB0cnVlIH07Ci0gICAgU3RyaW5n
IG1fcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZTsKLSNlbmRpZgogICAgIHVuc2lnbmVkIG1f
aW5zcGVjdG9yRnJvbnRlbmRDb3VudCB7IDAgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
MjI1OCw2ICsyMjY3LDExIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlM
aW5rPiBtX2Rpc3BsYXlMaW5rOwogI2VuZGlmCiAKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGFn
ZURlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKKyNlbmRpZgorCiAgICAgc3RkOjpv
cHRpb25hbDxTcGVsbERvY3VtZW50VGFnPiBtX3NwZWxsRG9jdW1lbnRUYWc7CiAKICAgICBzdGQ6
Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG1fcGFnZUxvYWRTdGFydDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1ODI1ZGU4MzRj
Yi4uMzRmZDZmYjUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTQyMSw2ICs0MjEsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKIAogICAgIERpZENoYW5nZUluc3BlY3RvckZyb250ZW5kQ291bnQodWludDY0X3Qg
Y291bnQpCiAKKyAgICBDcmVhdGVJbnNwZWN0b3JUYXJnZXQoU3RyaW5nIHRhcmdldElkLCBlbnVt
OnVpbnQ4X3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIHR5cGUpCisgICAgRGVzdHJv
eUluc3BlY3RvclRhcmdldChTdHJpbmcgdGFyZ2V0SWQpCisgICAgU2VuZE1lc3NhZ2VUb0luc3Bl
Y3RvckZyb250ZW5kKFN0cmluZyB0YXJnZXRJZCwgU3RyaW5nIG1lc3NhZ2UpCisKICAgICAjIFNl
YXJjaCBwb3B1cCBtZW51cwogICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSwgVmVj
dG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRlbXMpCiAgICAgTG9hZFJlY2VudFNl
YXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gcmVz
dWx0KSBMZWdhY3lTeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggZTRhODc3MDQ3NTcuLjliZGY2ZTA3Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMTIxLDExICsyMTIxLDYgQEAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwo
V2ViUGFnZVByb3h5JgogICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CiAgICAgfQogCi0g
ICAgaWYgKHBhZ2UuaW5zcGVjdG9yRnJvbnRlbmRDb3VudCgpID4gMCkgewotICAgICAgICByZWFz
b24gPSAiQSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIGlzIGNvbm5lY3RlZCJfczsKLSAgICAgICAg
cmV0dXJuIHBhZ2UucHJvY2VzcygpOwotICAgIH0KLQogICAgIGlmIChtX2F1dG9tYXRpb25TZXNz
aW9uKSB7CiAgICAgICAgIHJlYXNvbiA9ICJBbiBhdXRvbWF0aW9uIHNlc3Npb24gaXMgYWN0aXZl
Il9zOwogICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MWY2Nzc5ZGM4Yi4uODg4ZmE2
NGIzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTI2OSw4ICsxMjY5LDEzIEBACiAJCUExRUEwMjQwMURBQzMxREIwMDk2MDIxRiAv
KiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjNFMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250
ZXh0TWVudUxpc3RlbmVyUHJveHkuaCAqLzsgfTsKIAkJQTFGQjY4MjQxRjZFNTE4MjAwQzQzRjlG
IC8qIFdLQ3Jhc2hSZXBvcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFGQjY4MjIxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExRkI2
ODI3MUY2RTUxQzEwMEM0M0Y5RiAvKiBDcmFzaFJlcG9ydGVyQ2xpZW50U1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNjgyNjFGNkU1MUMxMDBD
NDNGOUYgLyogQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oICovOyB9OworCQlBNTEzRjU0MDIxNTRB
NUQ3MDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNGNTNFMjE1NEE1Q0MwMDY2Mjg0
MSAvKiBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyB9OwogCQlBNTE4QjVEMjFGRTFE
NTVCMDBGOUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MThCNUQwMUZFMUQ1NUIwMEY5RkEyOCAvKiBX
S0luc3BlY3RvcldLV2ViVmlldy5oICovOyB9OwogCQlBNTQyOTNBNDE5NUE0M0RBMDAyNzgyQzcg
LyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NDI5M0EyMTk1QTQzQzYwMDI3ODJD
NyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oICovOyB9OworCQlB
NTQzRTMwNzIxNUFEMTM3MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU0M0UzMDUyMTVBRDEyRDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVu
ZENoYW5uZWwuaCAqLzsgfTsKKwkJQTU0M0UzMEMyMTVDOEE4RDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NDNFMzA4MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
LmggKi87IH07CisJCUE1NDNFMzBEMjE1QzhBOTAwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU0M0UzMEIyMTVDOEE4NDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyLmggKi87IH07CisJCUE1NDNFMzEwMjE1RDhDRTYwMDI3OUNEOSAvKiBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1NDNFMzBFMjE1RDhDRTIwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0QWdlbnQuaCAqLzsgfTsKIAkJQTU1QkE4MTAxQkExMzE3RTAwN0NEMzNEIC8qIF9X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVCQTgwQzFCQTEyQkUxMDA3Q0QzM0QgLyogX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTVCQTgxNzFCQTIzRTEyMDA3Q0QzM0QgLyog
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1NUJBODEzMUJBMjNFMDUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0
b3JVSS5oICovOyB9OwogCQlBNTVCQTgxRjFCQTI1QjI3MDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1NUJBODE5MUJBMjVCMUUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5o
ICovOyB9OwpAQCAtMTI4MSw2ICsxMjg2LDggQEAKIAkJQTU4QjZGMDgxOEZDQTczMzAwOENCQTUz
IC8qIFdLRmlsZVVwbG9hZFBhbmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNThCNkYwNjE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFu
ZWwuaCAqLzsgfTsKIAkJQTVDMEYwQTcyMDAwNjU0RDAwNTM2NTM2IC8qIF9XS05TV2luZG93RXh0
cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMw
RjBBNjIwMDA2NTQ0MDA1MzY1MzYgLyogX1dLTlNXaW5kb3dFeHRyYXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUMwRjBBQjIwMDA2NTgyMDA1
MzY1MzYgLyogV0tJbnNwZWN0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzBGMEFBMjAwMDY1NkUwMDUzNjUzNiAvKiBXS0luc3BlY3Rv
cldpbmRvdy5oICovOyB9OworCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9y
VGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1RTM5MUZDMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oICov
OyB9OworCQlBNUVDNkFENDIxNTFCRDdCMDA2NzdEMTcgLyogV2ViUGFnZURlYnVnZ2FibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUM2QUQzMjE1
MUJENjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUVGRDM4QzE2
QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVGRDM4QjE2QjBFODhDMDBCMkYwRTgg
LyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc4Q0NERDgxOTNBQzlFMzAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya2luZy5zYiAqLzsgfTsKIAkJQTc4Q0NEREMxOTNBQzlGQjAwNUVDQzI1IC8qIGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4Q0NERDkxOTNBQzlFMzAwNUVDQzI1IC8qIGNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYiAqLzsgfTsKQEAgLTM4MTAsMTAgKzM4MTcsMjAgQEAKIAkJ
QTFGQjY4MjIxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0NyYXNoUmVwb3J0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFG
QjY4MjMxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLQ3Jhc2hSZXBvcnRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFGQjY4MjYxRjZFNTFDMTAwQzQzRjlGIC8qIENyYXNoUmVwb3J0ZXJDbGllbnRTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTEzRjUzRTIxNTRBNUNDMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxM0Y1M0YyMTU0QTVDRDAwNjYyODQx
IC8qIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUxOEI1RDAxRkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLSW5zcGVjdG9yV0tXZWJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1MThCNUQxMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3BlY3RvcldLV2ViVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTQyOTNBMjE5NUE0M0M2MDAyNzgyQzcgLyogV0tJ
bnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJ
bnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS0luc3Bl
Y3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTQyOTNBMzE5NUE0M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNo
R2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0luc3BlY3Rvck5v
ZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU0M0UzMDUyMTVBRDEyRDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVu
ZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5k
Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwNjIxNUFEMTJF
MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0M0UzMDgyMTVDOEE4MzAwMjc5Q0Q5
IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUluc3Bl
Y3RvclRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwOTIxNUM4
QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwQTIxNUM4QTg0MDAyNzlDRDkgLyogV2Vi
UGFnZUluc3BlY3RvclRhcmdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0M0UzMEIyMTVD
OEE4NDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1NDNFMzBFMjE1RDhDRTIwMDI3OUNEOSAvKiBXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvclRhcmdl
dEFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NDNFMzBGMjE1RDhDRTIw
MDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU1QkE4MEMxQkExMkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1NUJBODBEMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTVCQTgxMjFCQTIzRTA1MDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5z
cGVjdG9yVUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
V2ViSW5zcGVjdG9yVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgzNSw2
ICszODUyLDEwIEBACiAJCUE1QzBGMEE5MjAwMDY1NkUwMDUzNjUzNiAvKiBXS0luc3BlY3Rvcldp
bmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVj
dG9yV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUMwRjBBQTIwMDA2
NTZFMDA1MzY1MzYgLyogV0tJbnNwZWN0b3JXaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tJbnNwZWN0b3JXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVEMzUwNEQxRDc4RjBEMjAwNTEyNEE5IC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RTM5
MUZCMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RTM5MUZDMjE4M0MxRTkwMEM4RkIzMSAvKiBJ
bnNwZWN0b3JUYXJnZXRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JUYXJnZXRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVD
NkFEMjIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViUGFnZURlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNUVDNkFEMzIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURlYnVnZ2FibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFnZURlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVFRkQzOEIxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1
IC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc4Q0NERDcxOTNBQzlFMzAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuU3Rv
cmFnZS5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2Uuc2I7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03MTY2LDYgKzcxODcsMTIgQEAKIAkJCQlDMENFNzI1ODEyNDdFNERB
MDBCQzBFQzQgLyogV2ViUGFnZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzdCNjIxNDEyQTQyMTlB
MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuY3BwICovLAogCQkJCUJDN0I2MjEzMTJBNDIx
OUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovLAorCQkJCUE1NDNFMzBBMjE1QzhB
ODQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCAqLywKKwkJCQlBNTQzRTMw
ODIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oICovLAorCQkJCUE1
NDNFMzA5MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
ci5jcHAgKi8sCisJCQkJQTU0M0UzMEIyMTVDOEE4NDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyLmggKi8sCisJCQkJQTU0M0UzMDYyMTVBRDEyRTAwMjc5Q0Q5IC8q
IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuY3BwICovLAorCQkJCUE1NDNF
MzA1MjE1QUQxMkQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFu
bmVsLmggKi8sCiAJCQkJMkQ1QzlEMDMxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5
LmNwcCAqLywKIAkJCQkyRDVDOUQwNDE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXku
aCAqLywKIAkJCQlCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuY3BwICov
LApAQCAtNzIxOSw2ICs3MjQ2LDggQEAKIAkJCQkyREQ1QTcyQTFFQkYwOUE3MDA5QkE1OTcgLyog
SGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oICovLAogCQkJCTgzOUEy
RjJGMUUyMDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
ci5jcHAgKi8sCiAJCQkJODM5QTJGMzAxRTIwNjczOTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmggKi8sCisJCQkJQTVFMzkxRkIyMTgzQzFFOTAwQzhGQjMx
IC8qIEluc3BlY3RvclRhcmdldFByb3h5LmNwcCAqLywKKwkJCQlBNUUzOTFGQzIxODNDMUU5MDBD
OEZCMzEgLyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuaCAqLywKIAkJCQkzMTYwN0YzODE5NjI3MDAy
MDA5Qjg3REEgLyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCiAJCQkJQkM2RURBQTUx
MTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRB
MDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8sCkBAIC03MzIxLDEyICs3MzUwLDE4IEBA
CiAJCQkJN0NDQ0M4RjkxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5oICov
LAogCQkJCUJDMURGRUEzMTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcCAqLywKIAkJCQlCQzFERkVBMjEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oICovLAorCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3
N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCisJCQkJQTVFQzZBRDMyMTUxQkQ2OTAw
Njc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmggKi8sCiAJCQkJODM3MkRCMjYxQTY3NTYyODAw
QzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgKi8sCiAJCQkJODM3
MkRCMjcxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
ICovLAogCQkJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwICov
LAogCQkJCUJDN0I2MjA0MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuaCAqLywKIAkJ
CQkyRDlFQTMxMDFBOTZEOUVCMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
LmNwcCAqLywKIAkJCQkyRDlFQTMwRTFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50LmggKi8sCisJCQkJQTUxM0Y1M0YyMTU0QTVDRDAwNjYyODQxIC8qIFdlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLywKKwkJCQlBNTEzRjUzRTIxNTRBNUNDMDA2NjI4
NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCAqLywKKwkJCQlBNTQzRTMwRjIxNUQ4
Q0UyMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmNwcCAqLywKKwkJCQlB
NTQzRTMwRTIxNUQ4Q0UyMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50Lmgg
Ki8sCiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgKi8s
CiAJCQkJQkMwMzJEQ0IxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBhZ2VQcm94eS5oICovLAogCQkJ
CUJDQkQzOEZBMTI1QkFCOUEwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gKi8s
CkBAIC04OTQ0LDYgKzg5NzksNyBAQAogCQkJCUJDMzNFMEQxMTI0MDhFODYwMDM2MEYzRiAvKiBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE0REY3NzEy
MEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkRENDVBREUxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVy
cmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5z
cGVjdG9yVGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEw
MENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQg
LyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzQzLDExICs5Mzc5LDE3IEBACiAJ
CQkJQkM4NTdGODUxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEOEYx
MEY0MzdBMDAwNThDMTVBIC8qIFdlYlBhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUM2QUQ0
MjE1MUJEN0IwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODM3MkRCMjkxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMDYxMjlBMEE2NzAwRDE3NEE0IC8qIFdl
YlBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyNTIxMkE0M0M5NjAwRDE3NEE0
IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjE1MTJBNDIx
OUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5
RUEzMEYxQTk2Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTUxM0Y1NDAyMTU0QTVENzAwNjYyODQxIC8qIFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQzRTMwQzIxNUM4QThEMDAy
NzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU0
M0UzMTAyMTVEOENFNjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU0M0UzMEQyMTVDOEE5MDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQzRTMwNzIxNUFE
MTM3MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBDRTcyQTExMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDYxOUM4MUQ4RjAwQjNDNUMxIC8qIFdl
YlBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JEMzkxNTEyNUJCMUE4MDBEMkMy
OUYgLyogV2ViUGFnZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MmRiYTNmYjI4Ny4uNTFk
MjQzZjY3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlR3JvdXBQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtMzcx
LDYgKzM3Miw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50
PigpKQogICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlBhZ2VVSUNsaWVudD4oKSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJl
ZjxGaW5kQ29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRo
aXMpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpnZXRPckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKICNp
ZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI+KCp0aGlzKSkKQEAgLTQ5MCwxMSArNDkyLDYgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAg
bV9wYWdlLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5
QXV0b21hdGlvbik7CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX3BhZ2Ut
PnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHBhcmFtZXRlcnMuYWxsb3dzUmVtb3RlSW5zcGVj
dGlvbik7Ci0gICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKHBhcmFt
ZXRlcnMucmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSk7Ci0jZW5kaWYKLQogICAgIG1fcGFn
ZS0+c2V0Q2FuU3RhcnRNZWRpYShmYWxzZSk7CiAgICAgbV9tYXlTdGFydE1lZGlhV2hlbkluV2lu
ZG93ID0gcGFyYW1ldGVycy5tYXlTdGFydE1lZGlhV2hlbkluV2luZG93OwogCkBAIC0yNzY1LDYg
KzI3NjIsMjEgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wg
Y29udHJvbGxlZCkKICAgICBtX3BhZ2UtPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJv
bGxlZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y29ubmVjdEluc3BlY3Rvcihjb25zdCBTdHJpbmcm
IHRhcmdldElkKQoreworICAgIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci0+Y29ubmVjdElu
c3BlY3Rvcih0YXJnZXRJZCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlzY29ubmVjdEluc3BlY3Rv
cihjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJv
bGxlci0+ZGlzY29ubmVjdEluc3BlY3Rvcih0YXJnZXRJZCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci0+c2Vu
ZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpOworfQorCiB2b2lkIFdl
YlBhZ2U6Omluc2VydE5ld2xpbmVJblF1b3RlZENvbnRlbnQoKQogewogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0y
Nzc0LDE0ICsyNzg2LDkgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnROZXdsaW5lSW5RdW90ZWRDb250
ZW50KCkKIH0KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotdm9pZCBXZWJQYWdlOjpz
ZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wgYWxsb3cpCit2b2lkIFdlYlBhZ2U6OnNldElu
ZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQogewotICAgIG1fcGFnZS0+c2V0UmVtb3RlSW5zcGVj
dGlvbkFsbG93ZWQoYWxsb3cpOwotfQotCi12b2lkIFdlYlBhZ2U6OnNldFJlbW90ZUluc3BlY3Rp
b25OYW1lT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1fcGFnZS0+c2V0UmVt
b3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShuYW1lKTsKKyAgICBtX3BhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5OWY0NDI0YjdmOS4u
OTkyNjdiZmU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTIwNSwyNyArMjA1LDI4IEBAIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBj
bGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI7CiBjbGFzcyBXZWJEb2N1bWVudExvYWRl
cjsKIGNsYXNzIFdlYkV2ZW50OworY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKK2NsYXNz
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViSW1hZ2U7CiBj
bGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBXZWJJ
bnNwZWN0b3JVSTsKLWNsYXNzIFdlYkdlc3R1cmVFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZl
bnQ7Ci1jbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk7CiBjbGFzcyBXZWJNb3VzZUV2ZW50
OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXI7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKK2NsYXNzIFdlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyOwogY2xhc3MgV2ViUGFnZU92ZXJsYXk7Ci1jbGFzcyBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOwogY2xhc3MgV2ViUG9wdXBNZW51OworY2xhc3MgV2ViVG91Y2hFdmVu
dDsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTsKIGNsYXNzIFdlYlVuZG9TdGVwOwog
Y2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwotY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7Ci1jbGFzcyBXZWJUb3VjaEV2ZW50OwogY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKIGVudW0gY2xhc3MgRGV2aWNlQWNjZXNzU3Rh
dGUgOiB1aW50OF90OwpAQCAtMTA0MSw2ICsxMDQyLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29udHJvbGxlZEJ5QXV0b21hdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sKTsKIAorICAgIHZvaWQgY29ubmVjdEluc3BlY3Rvcihjb25zdCBTdHJp
bmcmIHRhcmdldElkKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RJbnNwZWN0b3IoY29uc3QgU3RyaW5n
JiB0YXJnZXRJZCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBT
dHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCiAgICAgdm9pZCBpbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KCk7CiAKICNpZiBVU0UoT1NfU1RBVEUpCkBAIC0xMjE4
LDggKzEyMjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydChDYWxsYmFja0lEKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgIHZvaWQgc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbihib29sKTsKLSAgICB2b2lkIHNl
dFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBz
ZXRJbmRpY2F0aW5nKGJvb2wpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldERyYXdzQmFja2dyb3Vu
ZChib29sKTsKQEAgLTE1NTQsNiArMTU1OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYklu
c3BlY3Rvcj4gbV9pbnNwZWN0b3I7CiAgICAgUmVmUHRyPFdlYkluc3BlY3RvclVJPiBtX2luc3Bl
Y3RvclVJOwogICAgIFJlZlB0cjxSZW1vdGVXZWJJbnNwZWN0b3JVST4gbV9yZW1vdGVJbnNwZWN0
b3JVSTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xs
ZXI+IG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjsKIAogI2lmIChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlcj4gbV9w
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzYyNmZiYjI2NTMuLjRlZGNmZWE0
OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTExMSw5ICsxMTEsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29u
dHJvbGxlZCkKIAorICAgIENvbm5lY3RJbnNwZWN0b3IoU3RyaW5nIHRhcmdldElkKQorICAgIERp
c2Nvbm5lY3RJbnNwZWN0b3IoU3RyaW5nIHRhcmdldElkKQorICAgIFNlbmRNZXNzYWdlVG9UYXJn
ZXRCYWNrZW5kKFN0cmluZyB0YXJnZXRJZCwgU3RyaW5nIG1lc3NhZ2UpCisKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICBTZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wgYWxs
b3cpCi0gICAgU2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShTdHJpbmcgbmFtZSkKKyAg
ICBTZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJ
T1NfVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uN2ZhOGI2YTI2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcApA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXQuaCIKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1dlYlBhZ2VJbnNwZWN0b3JU
YXJnZXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFn
ZShwYWdlKQoreworfQorCitTdHJpbmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgU3RyaW5nOjpudW1i
ZXIobV9wYWdlLnBhZ2VJRCgpKSk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6
Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sKKyAgICBpZiAo
bV9wYWdlLmNvcmVQYWdlKCkpCisgICAgICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKGNoYW5uZWwpOworfQorCit2b2lkIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQ6OmRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGNo
YW5uZWwpCit7CisgICAgaWYgKG1fcGFnZS5jb3JlUGFnZSgpKQorICAgICAgICBtX3BhZ2UuY29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChjaGFubmVs
KTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fcGFnZS5jb3JlUGFn
ZSgpKQorICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjZhM2JlODk4NjZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZTsKKworY2xhc3MgV2ViUGFnZUluc3BlY3RvclRhcmdldCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvclRhcmdldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUGFnZUluc3BlY3RvclRhcmdldCk7CitwdWJsaWM6
CisgICAgV2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQYWdlJik7CisgICAgfldlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdl
dFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFy
Z2V0VHlwZTo6UGFnZTsgfQorCisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsK
KworICAgIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopOworICAgIHZv
aWQgZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAg
V2ViUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmJkYTRlN2FkZjg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3Bw
CkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJX
ZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyOjpXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0Q29udHJvbGxlcihXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2Up
CisgICAgLCBtX3BhZ2VUYXJnZXQocGFnZSkKK3sKKyAgICAvLyBEbyBub3Qgc2VuZCB0aGUgcGFn
ZSB0YXJnZXQgdG8gdGhlIFVJUHJvY2VzcywgdGhlIFdlYlBhZ2VQcm94eSB3aWxsIG1hbmFnZXIg
dGhpcyBmb3IgdXMuCisgICAgbV90YXJnZXRzLnNldChtX3BhZ2VUYXJnZXQuaWRlbnRpZmllcigp
LCAmbV9wYWdlVGFyZ2V0KTsKK30KKworV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6
On5XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgV2ViUGFn
ZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OmFkZFRhcmdldChJbnNwZWN0b3I6Okluc3BlY3Rv
clRhcmdldCYgdGFyZ2V0KQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90YXJnZXRzLnNldCh0
YXJnZXQuaWRlbnRpZmllcigpLCAmdGFyZ2V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Q3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHRhcmdldC5pZGVudGlmaWVyKCksIHRh
cmdldC50eXBlKCkpKTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
cjo6cmVtb3ZlVGFyZ2V0KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCit7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh0YXJnZXQuaWRlbnRpZmllcigpICE9IG1fcGFnZVRhcmdl
dC5pZGVudGlmaWVyKCksICJTaG91bGQgbmV2ZXIgcmVtb3ZlIHRoZSBtYWluIHRhcmdldC4iKTsK
KworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlc3Ryb3lJbnNwZWN0
b3JUYXJnZXQodGFyZ2V0LmlkZW50aWZpZXIoKSkpOworCisgICAgbV90YXJnZXRzLnJlbW92ZSh0
YXJnZXQuaWRlbnRpZmllcigpKTsKKyAgICBtX3RhcmdldEZyb250ZW5kQ2hhbm5lbHMucmVtb3Zl
KHRhcmdldC5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyOjpjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7Cisg
ICAgSW5zcGVjdG9yVGFyZ2V0KiB0YXJnZXQgPSBtX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAg
ICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw+IGNoYW5uZWwgPSBtX3RhcmdldEZyb250ZW5kQ2hh
bm5lbHMuZ2V0KHRhcmdldElkKTsKKyAgICBpZiAoIWNoYW5uZWwpIHsKKyAgICAgICAgY2hhbm5l
bCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OmNyZWF0ZSgqdGhpcywg
dGFyZ2V0SWQpOworICAgICAgICBtX3RhcmdldEZyb250ZW5kQ2hhbm5lbHMuc2V0KHRhcmdldC0+
aWRlbnRpZmllcigpLCBjaGFubmVsKTsKKyAgICB9CisKKyAgICB0YXJnZXQtPmNvbm5lY3QoY2hh
bm5lbC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBJbnNw
ZWN0b3JUYXJnZXQqIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAgIGlmICgh
dGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8V2ViUGFnZUluc3BlY3RvclRh
cmdldEZyb250ZW5kQ2hhbm5lbD4gY2hhbm5lbCA9IG1fdGFyZ2V0RnJvbnRlbmRDaGFubmVscy50
YWtlKHRhcmdldElkKTsKKyAgICBpZiAoIWNoYW5uZWwpCisgICAgICAgIHJldHVybjsKKworICAg
IHRhcmdldC0+ZGlzY29ubmVjdChjaGFubmVsLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3Qg
U3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEluc3BlY3Rv
clRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJn
ZXQpCisgICAgICAgIHJldHVybjsKKworICAgIHRhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldEJh
Y2tlbmQobWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xs
ZXI6OnNlbmRNZXNzYWdlVG9UYXJnZXRGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKHRhcmdldElkLCBtZXNzYWdl
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZjY2I2
ZTFkNzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK2NsYXNzIEluc3BlY3RvclRhcmdldDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0Q29udHJvbGxlcihXZWJQYWdlJik7CisgICAgfldlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGFkZFRhcmdldChJbnNwZWN0b3I6Okluc3BlY3Rv
clRhcmdldCYpOworICAgIHZvaWQgcmVtb3ZlVGFyZ2V0KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFy
Z2V0Jik7CisKKyAgICB2b2lkIGNvbm5lY3RJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiB0YXJnZXRJ
ZCk7CisgICAgdm9pZCBkaXNjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQp
OworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJiB0YXJn
ZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJn
ZXRGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworCitwcml2YXRlOgorICAgIFdlYlBhZ2UmIG1fcGFnZTsKKyAgICBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0IG1fcGFnZVRhcmdldDsKKyAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsPj4gbV90YXJnZXRGcm9udGVuZENoYW5u
ZWxzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi4yMWE0YmY2MGU5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwu
Y3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oIgorCisjaW5j
bHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZWY8V2ViUGFnZUluc3BlY3Rv
clRhcmdldEZyb250ZW5kQ2hhbm5lbD4gV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hh
bm5lbDo6Y3JlYXRlKFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyJiB0YXJnZXRDb250
cm9sbGVyLCBjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwodGFyZ2V0Q29udHJvbGxl
ciwgdGFyZ2V0SWQpKTsKK30KKworV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5l
bDo6V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbChXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Q29udHJvbGxlciYgdGFyZ2V0Q29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB0YXJnZXRJ
ZCkKKyAgICA6IG1fdGFyZ2V0Q29udHJvbGxlcih0YXJnZXRDb250cm9sbGVyKQorICAgICwgbV90
YXJnZXRJZCh0YXJnZXRJZCkKK3sKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJv
bnRlbmRDaGFubmVsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQoreworICAgIG1fdGFyZ2V0Q29udHJvbGxlci5zZW5kTWVzc2FnZVRvVGFyZ2V0RnJvbnRlbmQo
bV90YXJnZXRJZCwgbWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRh
cmdldEZyb250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYzlhY2RkMGUwMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9u
dGVuZENoYW5uZWwuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZUluc3BlY3RvclRhcmdl
dENvbnRyb2xsZXI7CisKK2NsYXNzIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5u
ZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRl
bmRDaGFubmVsPiwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw+IGNyZWF0ZShXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Q29udHJvbGxlciYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOworICAgIHZpcnR1YWwgfldlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6
CisgICAgV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbChXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0Q29udHJvbGxlciYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOworCisgICAgQ29u
bmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb25u
ZWN0aW9uVHlwZTo6UmVtb3RlOyB9CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0Q29udHJvbGxlciYgbV90YXJnZXRDb250cm9sbGVyOworICAgIFN0cmluZyBt
X3RhcmdldElkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggMjI1Mzg0M2JiN2EuLjg4MjRiOGY3MzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTEtMDkgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdl
YiBJbnNwZWN0b3Igd2luZG93IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVt
b3RlIEluc3BlY3RvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgV2ViS2l0TGVnYWN5IHdpbGwgc3RpbGwg
aGF2ZSByZW1vdGUgaW5zcGVjdGlvbiBvZiB0aGUgUGFnZSBkaXJlY3RseS4KKwogMjAxOC0xMS0w
OSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJh
dyBjYXBzIGxvY2sgaW5kaWNhdG9yIGluIHBhc3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaAppbmRleCBkODI2MzljOTgxZi4uZTY2MmRiNTNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewor
Y2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7
CiAKQEAgLTYxLDYgKzYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgYm9vbCBhbGxvd1JlbW90ZUluc3BlY3Rpb25Ub1BhZ2VEaXJl
Y3RseSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354608</attachid>
            <date>2018-11-12 16:31:26 -0800</date>
            <delta_ts>2018-11-14 11:02:40 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>v4.patch</filename>
            <type>text/plain</type>
            <size>197654</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ODk5OTgzZWJjMC4uYjE1MWYxODhlMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEtlZXAgV2ViIEluc3BlY3RvciB3aW5kb3cgYWxpdmUgYWNyb3Nz
IHByb2Nlc3Mgc3dhcHMgKFBTT04pIChSZW1vdGUgSW5zcGVjdG9yKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDk0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80NTQ2OTg1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL3RhcmdldC1tYW5hZ2VyLmh0bWw6Cisg
ICAgICAgIFdJLnRhcmdldHMgaGFzIHN3aXRjaGVkIHRvIGJlaW5nIGFuIGFycmF5IGluc3RlYWQg
b2YgYSBzZXQuCisKIDIwMTgtMTEtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGNhbk1ha2VQYXltZW50KCkgc2hvdWxkIG5vdCBj
b25zaWRlciBzZXJpYWxpemVkIHBheW1lbnQgbWV0aG9kIGRhdGEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3RhcmdldC1tYW5hZ2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90YXJnZXQtbWFuYWdlci5odG1sCmluZGV4IDFhNjU3
MjIwMTVhLi43YmM5Y2M1YWNhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvdGFyZ2V0LW1hbmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dW5pdC10ZXN0cy90YXJnZXQtbWFuYWdlci5odG1sCkBAIC0yNyw3ICsyNyw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIldlIHNob3VsZCBhbHdheXMgaGF2ZSB0aGUg
bWFpbiB0YXJnZXQuIiwKICAgICAgICAgYXN5bmMgdGVzdCgpIHsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KFdJLnRhcmdldHMgPT09IFdJLnRhcmdldE1hbmFnZXIudGFyZ2V0cyk7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJLnRhcmdldHMuc2l6ZSwg
MSwgIlRhcmdldHMgbGlzdCBzaG91bGQgYWx3YXlzIHN0YXJ0IG91dCB3aXRoIHRoZSBtYWluIHRh
cmdldC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kudGFyZ2V0
cy5sZW5ndGgsIDEsICJUYXJnZXRzIGxpc3Qgc2hvdWxkIGFsd2F5cyBzdGFydCBvdXQgd2l0aCB0
aGUgbWFpbiB0YXJnZXQuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KFsuLi5XSS50YXJnZXRzXVswXSwgV0kubWFpblRhcmdldCwgIlRhcmdldCBsaXN0IHNob3VsZCBh
bHdheXMgY29udGFpbiB0aGUgbWFpbiB0YXJnZXQuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdE5vdE51bGwoV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0LCAiTWFpbiB0
YXJnZXQgc2hvdWxkIGhhdmUgYW4gRXhlY3V0aW9uQ29udGV4dC4iKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kubWFpblRhcmdldC5SdW50aW1lQWdlbnQsIFJ1bnRp
bWVBZ2VudCwgIk1haW4gdGFyZ2V0IHNob3VsZCBoYXZlIHRoZSBnbG9iYWwgUnVudGltZUFnZW50
LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI2MTcwMDdhZWNjLi5l
MGZlYmZlMzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjI3LDYg
KzYyNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmgKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCiAgICAgaW5zcGVjdG9yL1Bl
ckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50
cy5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaApAQCAtNjQyLDYgKzY0Myw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQuaAorICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaAogCiAgICAgaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudC5oCiAKQEAgLTEwODMsNiArMTA4NSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9JTlNQRUNUT1JfRE9NQUlOUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
cHJvdG9jb2wvUmVjb3JkaW5nLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvcHJvdG9jb2wvU2NyaXB0UHJvZmlsZXIuanNvbgorICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24KICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1dvcmtlci5qc29uCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBmZDAwYWY2NDJjYS4uMDA3YzEyMzM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTExLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIgSW5z
cGVjdG9yIHdpbmRvdyBhbGl2ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90ZSBJ
bnNwZWN0b3IpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE0OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICBOZXcgZG9tYWluIGFuZCByZXNvdXJjZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246IEFkZGVkLgorICAgICAgICBOZXcgcHJvdG9jb2wgZG9tYWluLCBtb2Rl
bGxlZCBhZnRlciBXb3JrZXIuanNvbiwgdG8gYWxsb3cgZm9yCisgICAgICAgIG11bHRpcGxleGlu
ZyBiZXR3ZWVuIGRpZmZlcmVudCB0YXJnZXRzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclRhcmdldC5oOgorICAgICAgICBFYWNoIHRhcmdldCB3aWxsIGluc3RhbnRpYXRlIGFuIElu
c3BlY3RvclRhcmdldCBhbmQgbXVzdAorICAgICAgICBwcm92aWRlIGFuIGlkZW50aWZpZXIsIHR5
cGUsIGFuZCBtZWFucyBvZiBjb25uZWN0aW5nL2Rpc2Nvbm5lY3RpbmcKKyAgICAgICAgYSBmcm9u
dGVuZCBjaGFubmVsLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJn
ZXRBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmV4aXN0cyk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50Ojppbml0aWFsaXplZCk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRv
VGFyZ2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRN
ZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjp0YXJnZXRU
eXBlVG9Qcm90b2NvbFR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9P
YmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0
Q3JlYXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJn
ZXRUZXJtaW5hdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6ZGlzY29ubmVjdEZyb21UYXJnZXRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRhcmdldEFnZW50Lmg6IEFkZGVkLgorICAgICAgICBJbXBsZW1lbnRhdGlvbiBv
ZiBUYXJnZXRBZ2VudCBob2xkcyBhIGxpc3Qgb2YgdGFyZ2V0cywgYW5kCisgICAgICAgIGNvbm5l
Y3RzL2Rpc2Nvbm5lY3RzIHRvIGVhY2ggb2YgdGhlIHRhcmdldHMgd2hlbiBhIGZyb250ZW5kCisg
ICAgICAgIGNvbm5lY3RzL2Rpc2Nvbm5lY3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0b3IucHk6CisgICAgICAgIEJldHRlciBlbnVtIGNhc2luZyBvZiBT
ZXJ2aWNlV29ya2VyLgorCiAyMDE4LTExLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIExMSW50IFZlY3RvclNpemVPZmZzZXQgc2hvdWxkIGJlIGJh
c2VkIG9uIG9mZnNldCBleHRyYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGZjYmY0YjVkN2FiLi5iMDZlMjg3YTYzZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIzOCw2ICsyMzgsNyBAQCBJTlNQRUNU
T1JfRE9NQUlOUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wv
UmVjb3JkaW5nLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9TY3JpcHRQcm9maWxlci5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvVGFyZ2V0Lmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9w
cm90b2NvbC9UaW1lbGluZS5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvV29ya2VyLmpzb24gXAogIwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzNzRhZjllOTc1Zi4uYzAxM2QxNTA1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzQxLDYgKzEzNDEsNyBAQAogCQlBNTEzRTVDNzE4NUY5NDQ2MDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJj
ZS5oICovOyB9OwogCQlBNTEzRTVDQjE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUxNEIyQzMxODVB
Njg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIElu
amVjdGVkU2NyaXB0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNwZWN0b3JUYXJnZXRB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1
NUZGM0QyMTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUzMTFDMzYxQzc3Q0VD
NTAwRTZCMUI2IC8qIEhlYXBTbmFwc2hvdEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzExQzM1MUM3N0NFQUMwMEU2QjFCNiAvKiBIZWFw
U25hcHNob3RCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUzMjQzODIxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
MzI0MzhBMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4NDE4
NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzYwLDYgKzEzNjEs
NyBAQAogCQlBNTUxNjVEMzFCREYwQjlFMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTUx
NjVENTFCREYxMzVBMDAzQjc1QzEgLyogU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTE2NUQ0MUJERjEzNEQwMDNC
NzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oICovOyB9OwogCQlBNTUyQzM4MDFBRERCOEZF
MDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTJDMzdFMUFEREI4RkUwMDEzOTcyNiAvKiBKU1JlbW90
ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE1NTVGRjNCMjE1OUQyRjUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTVGRjM4MjE1OUQy
RDYwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTU3MTRCRTFDRDgwNDlGMDAwNEQyQzYgLyogQ29u
c29sZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU1NzE0QkQxQ0Q4MDQ4RTAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuaCAqLzsgfTsKIAkJ
QTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQTQxODUwMTJBODAw
NDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00MTE4LDYgKzQxMjAsOSBAQAogCQlBNTUxNjVENDFCREYxMzREMDAzQjc1QzEgLyogU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1MkMzN0Qx
QUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVtb3RlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU1MkMzN0UxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5z
cGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlSW5zcGVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTVGRjM4MjE1OUQyRDYwMEZD
RDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTVG
RjNDMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUYXJnZXRBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTU3MTRCQzFDRDgwNDhFMDAwNEQyQzYgLyogQ29uc29sZU9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zb2xlT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1NzE0QkQxQ0Q4MDQ4RTAwMDRE
MkM2IC8qIENvbnNvbGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29uc29sZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVEOTNBMzE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03OTM3LDYgKzc5NDIsOCBAQAogCQkJCUE1MEU0QjVFMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLywKIAkJCQlBNTUxNjVEMDFC
REVGREJEMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgKi8sCiAJ
CQkJQTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuaCAqLywKKwkJCQlBNTU1RkYzQzIxNTlENDFFMDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwICovLAorCQkJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0b3JU
YXJnZXRBZ2VudC5oICovLAogCQkJCUE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovLAogCQkJCUE1N0QyM0U4MTg5MUIwNzcwMDMxQzdG
QSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCAqLywKIAkJCQlBNTBFNEI1RjE4ODA5
REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICovLApAQCAtODAw
Nyw2ICs4MDE0LDcgQEAKIAkJCQk5OUYxQTZGQzFCOEU2RDk0MDA0NjNCMjYgLyogSW5zcGVjdG9y
RnJvbnRlbmRSb3V0ZXIuY3BwICovLAogCQkJCTk5RjFBNzAwMUI5OEZCRUMwMDQ2M0IyNiAvKiBJ
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oICovLAogCQkJCUE1NUQ5M0FCMTg1MTRGNzkwMDQwMERF
RCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCisJCQkJQTU1NUZGMzgyMTU5RDJENjAw
RkNEODI2IC8qIEluc3BlY3RvclRhcmdldC5oICovLAogCQkJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKIAkJCQlBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJCUE1QzNBMUEzMThDMDQ5
MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovLApAQCAtOTA1
OSw2ICs5MDY3LDggQEAKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhB
NDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1MTY1
RDMxQkRGMEI5RTAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1NTVGRjNCMjE1OUQyRjUwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJn
ZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MkM5NUZGMjE1OUQ0MzIwMDdEOEFDMCAvKiBJbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0OUU5QUEyMEFCNEQwMDAw
MUNBMEFBIC8qIEluc3RhbmNlT2ZBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIz
OTlCRjIwQUY2QjNGMDAxN0UyMTMgLyogSW5zdGFuY2VPZlN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCMzk5QzAyMEFGNkI0MzAwMTdFMjEzIC8qIEluc3RhbmNlT2ZWYXJpYW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZmZhMjE3YTVmYS4u
MWFkOTlmMGU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTU4NCw2ICs1ODQs
NyBAQCBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcAogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAoraW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAK
IGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAogaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllZGFhMWY0MjA5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKKy8vIEZJWE1FOiBBZGQgRGVkaWNhdGVkV29ya2VyIEluc3BlY3RvciBUYXJnZXRzCisvLyBG
SVhNRTogQWRkIFNlcnZpY2VXb3JrZXIgSW5zcGVjdG9yIFRhcmdldHMKK2VudW0gY2xhc3MgSW5z
cGVjdG9yVGFyZ2V0VHlwZSA6IHVpbnQ4X3QgeworICAgIEphdmFTY3JpcHRDb250ZXh0LAorICAg
IFBhZ2UsCisgICAgRGVkaWNhdGVkV29ya2VyLAorICAgIFNlcnZpY2VXb3JrZXIsCit9OworCitj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJnZXQgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkluc3BlY3RvclRhcmdldCgpID0gZGVmYXVsdDsKKworICAgIC8vIFN0YXRlLgorICAg
IHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnNw
ZWN0b3JUYXJnZXRUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDb25uZWN0aW9uIG1h
bmFnZW1lbnQuCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJikg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0
VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSwKKyAgICAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJn
ZXRUeXBlOjpKYXZhU2NyaXB0Q29udGV4dCwKKyAgICAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JU
YXJnZXRUeXBlOjpQYWdlLAorICAgICAgICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6
OkRlZGljYXRlZFdvcmtlciwKKyAgICAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBl
OjpTZXJ2aWNlV29ya2VyCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFy
Z2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi4zYWNhNDEwNTEwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMCwwICsxLDE0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIgorCisjaW5j
bHVkZSAiSW5zcGVjdG9yVGFyZ2V0LmgiCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXImIGZy
b250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCisgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJv
dXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQoreworfQorCit2b2lkIEluc3BlY3Rv
clRhcmdldEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIq
LCBCYWNrZW5kRGlzcGF0Y2hlciopCit7CisgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CisKKyAg
ICBjb25uZWN0VG9UYXJnZXRzKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCit7CisgICAgZGlz
Y29ubmVjdEZyb21UYXJnZXRzKCk7CisKKyAgICBtX2lzQ29ubmVjdGVkID0gZmFsc2U7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmV4aXN0cyhFcnJvclN0cmluZyYpCit7CisgICAg
Ly8gSW50ZW50aW9uYWxseSBkbyBub3RoaW5nIHRvIHJldHVybiBzdWNjZXNzLgorICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyB3aGVuIHRoZSBsb2NhbCBpbnNwZWN0b3IgaGFzIHN3aXRjaGVkIG92
ZXIgdG8gdGhlIG1vZGVybiBwYXRoLgorfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojpz
ZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEluc3BlY3RvclRhcmdl
dCogdGFyZ2V0ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpIHsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGFyZ2V0IG5vdCBmb3VuZC4iX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB0YXJnZXQtPnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKG1l
c3NhZ2UpOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZUZyb21U
YXJnZXRUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQp
LCAiU2VuZGluZyBhIG1lc3NhZ2UgZnJvbSBhbiB1bnRyYWNrZWQgdGFyZ2V0IHRvIHRoZSBmcm9u
dGVuZC4iKTsKKworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kaXNwYXRjaE1lc3NhZ2VGcm9t
VGFyZ2V0KHRhcmdldElkLCBtZXNzYWdlKTsKK30KKworc3RhdGljIFByb3RvY29sOjpUYXJnZXQ6
OlRhcmdldEluZm86OlR5cGUgdGFyZ2V0VHlwZVRvUHJvdG9jb2xUeXBlKEluc3BlY3RvclRhcmdl
dFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3RvclRh
cmdldFR5cGU6OkphdmFTY3JpcHRDb250ZXh0OgorICAgICAgICByZXR1cm4gUHJvdG9jb2w6OlRh
cmdldDo6VGFyZ2V0SW5mbzo6VHlwZTo6SmF2YVNjcmlwdDsKKyAgICBjYXNlIEluc3BlY3RvclRh
cmdldFR5cGU6OlBhZ2U6CisgICAgICAgIHJldHVybiBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJ
bmZvOjpUeXBlOjpQYWdlOworICAgIGNhc2UgSW5zcGVjdG9yVGFyZ2V0VHlwZTo6RGVkaWNhdGVk
V29ya2VyOgorICAgICAgICByZXR1cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlw
ZTo6V29ya2VyOworICAgIGNhc2UgSW5zcGVjdG9yVGFyZ2V0VHlwZTo6U2VydmljZVdvcmtlcjoK
KyAgICAgICAgcmV0dXJuIFByb3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm86OlR5cGU6OlNlcnZp
Y2VXb3JrZXI7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFByb3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm86OlR5cGU6OkphdmFTY3JpcHQ7Cit9CisKK3N0
YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2Jq
ZWN0KGNvbnN0IEluc3BlY3RvclRhcmdldCYgdGFyZ2V0KQoreworICAgIHJldHVybiBQcm90b2Nv
bDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpjcmVhdGUoKQorICAgICAgICAuc2V0VGFyZ2V0SWQodGFy
Z2V0LmlkZW50aWZpZXIoKSkKKyAgICAgICAgLnNldFR5cGUodGFyZ2V0VHlwZVRvUHJvdG9jb2xU
eXBlKHRhcmdldC50eXBlKCkpKQorICAgICAgICAucmVsZWFzZSgpOworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldEFnZW50Ojp0YXJnZXRDcmVhdGVkKEluc3BlY3RvclRhcmdldCYgdGFyZ2V0KQor
eworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90YXJnZXRzLnNldCh0YXJnZXQuaWRlbnRpZmllcigp
LCAmdGFyZ2V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworCisgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICB0YXJnZXQuY29ubmVjdChmcm9udGVuZENoYW5uZWwoKSk7CisKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRhcmdldEluZm9PYmplY3QodGFyZ2V0KSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnRhcmdldERlc3Ryb3llZChJbnNwZWN0b3JU
YXJnZXQmIHRhcmdldCkKK3sKKyAgICBtX3RhcmdldHMucmVtb3ZlKHRhcmdldC5pZGVudGlmaWVy
KCkpOworCisgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICB0
YXJnZXQuZGlzY29ubmVjdChmcm9udGVuZENoYW5uZWwoKSk7CisKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+dGFyZ2V0RGVzdHJveWVkKHRhcmdldC5pZGVudGlmaWVyKCkpOworfQorCit2b2lk
IEluc3BlY3RvclRhcmdldEFnZW50Ojpjb25uZWN0VG9UYXJnZXRzKCkKK3sKKyAgICBhdXRvJiBj
aGFubmVsID0gZnJvbnRlbmRDaGFubmVsKCk7CisKKyAgICBmb3IgKEluc3BlY3RvclRhcmdldCog
dGFyZ2V0IDogbV90YXJnZXRzLnZhbHVlcygpKSB7CisgICAgICAgIHRhcmdldC0+Y29ubmVjdChj
aGFubmVsKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdldENyZWF0ZWQoYnVp
bGRUYXJnZXRJbmZvT2JqZWN0KCp0YXJnZXQpKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9y
VGFyZ2V0QWdlbnQ6OmRpc2Nvbm5lY3RGcm9tVGFyZ2V0cygpCit7CisgICAgYXV0byYgY2hhbm5l
bCA9IGZyb250ZW5kQ2hhbm5lbCgpOworCisgICAgZm9yIChJbnNwZWN0b3JUYXJnZXQqIHRhcmdl
dCA6IG1fdGFyZ2V0cy52YWx1ZXMoKSkKKyAgICAgICAgdGFyZ2V0LT5kaXNjb25uZWN0KGNoYW5u
ZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jNzk4ZWVkY2UyZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRhcmdldEFnZW50LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW5zcGVjdG9yQWdlbnRCYXNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNw
ZWN0b3JUYXJnZXQ7CisKK3R5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOworCitjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJnZXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRhcmdldEFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJv
dXRlciYsIEJhY2tlbmREaXNwYXRjaGVyJik7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yVGFyZ2V0
QWdlbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikgZmluYWw7CisgICAgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKKwor
ICAgIHZpcnR1YWwgRnJvbnRlbmRDaGFubmVsJiBmcm9udGVuZENoYW5uZWwoKSA9IDA7CisKKyAg
ICAvLyBUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIGV4aXN0cyhFcnJv
clN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7
CisKKyAgICAvLyBUYXJnZXQgbGlmZWN5Y2xlLgorICAgIHZvaWQgdGFyZ2V0Q3JlYXRlZChJbnNw
ZWN0b3JUYXJnZXQmKTsKKyAgICB2b2lkIHRhcmdldERlc3Ryb3llZChJbnNwZWN0b3JUYXJnZXQm
KTsKKworICAgIC8vIFRhcmdldCBtZXNzYWdlcy4KKyAgICB2b2lkIHNlbmRNZXNzYWdlRnJvbVRh
cmdldFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbm5lY3RUb1RhcmdldHMoKTsKKyAgICB2b2lk
IGRpc2Nvbm5lY3RGcm9tVGFyZ2V0cygpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFRhcmdldEZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmPFRhcmdldEJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIEhhc2hNYXA8U3RyaW5n
LCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CisgICAgYm9vbCBtX2lzQ29ubmVjdGVkIHsg
ZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxYWQyNjlkOTVlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNv
bgpAQCAtMCwwICsxLDUwIEBACit7CisgICAgImRvbWFpbiI6ICJUYXJnZXQiLAorICAgICJhdmFp
bGFiaWxpdHkiOiBbIndlYiJdLAorICAgICJ0eXBlcyI6IFsKKyAgICAgICAgeworICAgICAgICAg
ICAgImlkIjogIlRhcmdldEluZm8iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXNjcmlwdGlvbiBvZiBhIHRhcmdldC4iLAorICAg
ICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJn
ZXRJZCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmll
ciBmb3IgdGhlIHRhcmdldC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwg
InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImphdmFzY3JpcHQiLCAicGFnZSIsICJ3b3JrZXIi
LCAic2VydmljZXdvcmtlciJdIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisg
ICAgImNvbW1hbmRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJleGlzdHMi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHRo
ZSBsb2NhbCBpbnNwZWN0b3IgaGFzIHN3aXRjaGVkIG92ZXIgdG8gdGhlIG1vZGVybiBwYXRoLiIK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2VuZE1lc3NhZ2VU
b1RhcmdldCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VuZCBhbiBJbnNwZWN0b3Ig
UHJvdG9jb2wgbWVzc2FnZSB0byBiZSBkaXNwYXRjaGVkIHRvIGEgVGFyZ2V0J3MgYWdlbnRzLiIs
CisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibWVzc2FnZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJKU09OIEluc3Bl
Y3RvciBQcm90b2NvbCBtZXNzYWdlIChjb21tYW5kKSB0byBiZSBkaXNwYXRjaGVkIG9uIHRoZSBi
YWNrZW5kLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiZXZlbnRz
IjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJ0YXJnZXRDcmVhdGVkIiwKKyAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFy
Z2V0SW5mbyIsICIkcmVmIjogIlRhcmdldEluZm8iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAidGFyZ2V0RGVzdHJveWVkIiwKKyAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFy
Z2V0SWQiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCIs
CisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibWVzc2FnZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJKU09OIEluc3Bl
Y3RvciBQcm90b2NvbCBtZXNzYWdlIChyZXNwb25zZSBvciBldmVudCkgdG8gYmUgZGlzcGF0Y2hl
ZCBvbiB0aGUgZnJvbnRlbmQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0b3IucHkKaW5kZXggZGRkYmUyNmEwMjkuLjIyYmRjODFkMGFmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CkBAIC00Miw3ICs0Miw3IEBAIGxvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKCdnbG9iYWwnKQogZGVmIHVjZmlyc3Qoc3RyKToKICAgICByZXR1cm4gc3RyWzox
XS51cHBlcigpICsgc3RyWzE6XQogCi1fQUxXQVlTX1NQRUNJQUxDQVNFRF9FTlVNX1ZBTFVFX1NV
QlNUUklOR1MgPSBzZXQoWycyRCcsICdBUEknLCAnQ1NTJywgJ0RPTScsICdIVE1MJywgJ0pJVCcs
ICdYSFInLCAnWE1MJywgJ0lPUycsICdNYWNPUycsICdKYXZhU2NyaXB0J10pCitfQUxXQVlTX1NQ
RUNJQUxDQVNFRF9FTlVNX1ZBTFVFX1NVQlNUUklOR1MgPSBzZXQoWycyRCcsICdBUEknLCAnQ1NT
JywgJ0RPTScsICdIVE1MJywgJ0pJVCcsICdYSFInLCAnWE1MJywgJ0lPUycsICdNYWNPUycsICdK
YXZhU2NyaXB0JywgJ1NlcnZpY2VXb3JrZXInXSkKIF9BTFdBWVNfU1BFQ0lBTENBU0VEX0VOVU1f
VkFMVUVfTE9PS1VQX1RBQkxFID0gZGljdChbKHMudXBwZXIoKSwgcykgZm9yIHMgaW4gX0FMV0FZ
U19TUEVDSUFMQ0FTRURfRU5VTV9WQUxVRV9TVUJTVFJJTkdTXSkKIAogX0VOVU1fSURFTlRJRklF
Ul9SRU5BTUVfTUFQID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg2ODNlODc4YzcyLi44NmY4ZmI2MTUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTExLTEyICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIg
SW5zcGVjdG9yIHdpbmRvdyBhbGl2ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90
ZSBJbnNwZWN0b3IpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTE0OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjphbGxvd1Jl
bW90ZUluc3BlY3Rpb25Ub1BhZ2VEaXJlY3RseSBjb25zdCk6CisgICAgICAgIFByb3ZpZGUgYSBo
b29rIHNvIHRoYXQgYSBjbGllbnQgbWF5IHdpc2ggdG8gYWxsb3cgZGlyZWN0IHJlbW90ZSBpbnNw
ZWN0aW9uIG9mIHRoZSBQYWdlLgorICAgICAgICBUaGlzIGlzIHVzZWQgYnkgV2ViS2l0TGVnYWN5
IG9ubHkuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoUGFnZTo6UGFnZSk6
CisgICAgICAgIE9ubHkgZW5hYmxlIHRoZSBQYWdlRGVidWdnYWJsZSBpZiB0aGUgY2xpZW50IHdp
c2hlcyByZW1vdGUgaW5zcGVjdGlvbiBvZiB0aGUgUGFnZSBkaXJlY3RseS4KKyAgICAgICAgVGhp
cyBpcyB1c2VkIGJ5IFdlYktpdExlZ2FjeSBvbmx5LgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUu
aDoKKyAgICAgICAgV2hlbiBhIGZyb250ZW5kIGNvbm5lY3RzLCBhbHdheXMgZW5hYmxlIHRoZSBk
ZXZlbG9wZXIgZXh0cmFzIGZvciB0aGUgUGFnZS4KKyAgICAgICAgVGhpcyBpcyBwcmV0dHkgbXVj
aCBvbmx5IGZvciB0aGUgcmVtb3RlIHBhdGgsIHdoaWNoIGFsbG93cyBpbnNwZWN0aW9uIGlmIGRl
dmVsb3BlcgorICAgICAgICBleHRyYXMgd2VyZSBub3QgYWxyZWFkeSBlbmFibGVkIChpT1MpLiBU
aGlzIHNpbXBsaWZpZXMgdGhlIGxvZ2ljLCBhbmQgdG9nZ2xpbmcKKyAgICAgICAgZGV2ZWxvcGVy
IGV4dHJhcyBhZnRlciBpdCB3YXMgYWxyZWFkeSBlbmFibGVkIGlzIG5vdCByZWFsbHkgaW1wb3J0
YW50LgorCiAyMDE4LTExLTA5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBEcmF3IGNhcHMgbG9jayBpbmRpY2F0b3IgaW4gcGFzc3dvcmQgZmllbGRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzM2ZWRj
YWQxMjkuLjYwOWQxMjUyZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRT
ZWxlY3Rpb25DaGFuZ2VkKGJvb2wpIHsgfQogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgdmlydHVhbCBib29sIGFsbG93UmVtb3RlSW5zcGVjdGlvblRvUGFnZURpcmVjdGx5KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShQYWdlKiBmcm9udGVuZFBh
Z2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggN2ExMmE3YWIyMWQuLmU2ZDRi
MDIzNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2gKICAg
ICBBU1NFUlRfQVJHKGZyb250ZW5kQ2hhbm5lbCwgZnJvbnRlbmRDaGFubmVsKTsKICAgICBBU1NF
UlQobV9pbnNwZWN0b3JDbGllbnQpOwogCisgICAgLy8gSWYgYSBmcm9udGVuZCBoYXMgY29ubmVj
dGVkIGVuYWJsZSB0aGUgZGV2ZWxvcGVyIGV4dHJhcyBhbmQga2VlcCB0aGVtIGVuYWJsZWQuCisg
ICAgbV9wYWdlLnNldHRpbmdzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKKwog
ICAgIGNyZWF0ZUxhenlBZ2VudHMoKTsKIAogICAgIGJvb2wgY29ubmVjdGVkRmlyc3RGcm9udGVu
ZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKQEAgLTI3Nyw3ICsyODAsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaAogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5mcm9udGVu
ZENvdW50Q2hhbmdlZChtX2Zyb250ZW5kUm91dGVyLT5mcm9udGVuZENvdW50KCkpOwogCiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNS
ZW1vdGVGcm9udGVuZCgpKQorICAgIGlmIChoYXNMb2NhbEZyb250ZW5kKCkpCiAgICAgICAgIG1f
cGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiB9CkBA
IC0zMDcsNyArMzEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCiAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmZyb250ZW5kQ291bnRDaGFuZ2VkKG1fZnJvbnRlbmRSb3V0ZXItPmZyb250ZW5kQ291
bnQoKSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBpZiAoIW1fZnJvbnRl
bmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpKQorICAgIGlmIChkaXNjb25uZWN0ZWRMYXN0RnJvbnRl
bmQpCiAgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgp
OwogI2VuZGlmCiB9CkBAIC0zNTEsNyArMzU0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0QWxsRnJvbnRlbmRzKCkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
aG93KCkKIHsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc1JlbW90ZUZyb250ZW5k
KCkpOworICAgIEFTU0VSVCghaGFzUmVtb3RlRnJvbnRlbmQoKSk7CiAKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYjQ1ZDZhMzA1MzcuLjlmZGQzYjcxNzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEwMSw3
ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgTm9kZSog
aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2Rl
cygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlNDc2ZGQ4Mzk4OS4uMDk0MGZlMTk2
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ikhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCkBAIC0yOTQsNyArMjk1LDggQEAg
UGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUtPmluaXQoKTsKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0b3JDbGll
bnQoKSAmJiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RvckNsaWVudCgpLT5hbGxvd1Jl
bW90ZUluc3BlY3Rpb25Ub1BhZ2VEaXJlY3RseSgpKQorICAgICAgICBtX2luc3BlY3RvckRlYnVn
Z2FibGUtPmluaXQoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCmluZGV4IGIzMTgwYzcwNGJkLi4zMmU0Y2I3YWE1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTcxLDEyICs3MSw2IEBA
IGJvb2wgUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAogCiB2b2lkIFBh
Z2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVs
LCBib29sIGlzQXV0b21hdGljQ29ubmVjdGlvbiwgYm9vbCBpbW1lZGlhdGVseVBhdXNlKQogewot
ICAgIGlmICghbV9wYWdlLnNldHRpbmdzKCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIG1f
cGFnZS5zZXR0aW5ncygpLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IGZhbHNlOwotCiAg
ICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNw
ZWN0b3JDb250cm9sbGVyKCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRl
bmQoY2hhbm5lbCwgaXNBdXRvbWF0aWNDb25uZWN0aW9uLCBpbW1lZGlhdGVseVBhdXNlKTsKIH0K
QEAgLTg1LDExICs3OSw2IEBAIHZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwpCiB7CiAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAg
ICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoY2hhbm5lbCk7Ci0KLSAg
ICBpZiAobV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7Ci0gICAgICAgIG1fZm9yY2Vk
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICBtX3BhZ2Uuc2V0dGluZ3Mo
KS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGZhbHNlKTsKLSAgICB9CiB9CiAKIHZvaWQgUGFn
ZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDE2ZmI0Yjg4YjAwLi4x
MDA5MjliYTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtNTgsNyAr
NTgsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBTdHJpbmcg
bV9uYW1lT3ZlcnJpZGU7Ci0gICAgYm9vbCBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKaW5kZXggZDRiOTM1NDk2YTEuLmFiYTE0MDRlMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMjYgQEAKKzIwMTgtMTEtMTIgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdlYiBJbnNw
ZWN0b3Igd2luZG93IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVtb3RlIElu
c3BlY3RvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MTQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzdGFydHMgaW50cm9kdWNp
bmcgbXVsdGktdGFyZ2V0IHN1cHBvcnQgaW50byB0aGUgV2ViIEluc3BlY3RvciBmcm9udGVuZC4K
KyAgICAgICAgU3BlY2lmaWNhbGx5IGEgYmFja2VuZCBjb25uZWN0aW9uIHRoYXQgaXMgcGVyc2lz
dGVudCwgYnV0IGhhcyB0aGUgYWJpbGl0eSB0bworICAgICAgICBjb25uZWN0IHRvIGFuZCB0cmFu
c2l0aW9uIGJldHdlZW4gUGFnZSB0YXJnZXRzIHJlY2VpdmVkIHRocm91Z2ggdGhhdCBiYWNrZW5k
CisgICAgICAgIGNvbm5lY3Rpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRo
ZSBjb25jZXB0IG9mIGEgIkJhY2tlbmQgVGFyZ2V0IiB3aGljaCBpcyB0aGUgc2luZ2xlCisgICAg
ICAgIGNvbm5lY3Rpb24gdGhhdCB0aGUgZnJvbnRlbmQgY29udGFpbnMgdG8gYSBiYWNrZW5kLiBU
aGUgb2xkIHdheSBvZiBjb25uZWN0aW5nCisgICAgICAgIGRpcmVjdGx5IHRvIGEgdGFyZ2V0IGlz
IHN0aWxsIHN1cHBvcnRlZC4gSW4gdGhhdCBjYXNlIHRoZSBmcm9udGVuZCBjb25zdHJ1Y3RzCisg
ICAgICAgIGEgRGlyZWN0QmFja2VuZFRhcmdldCBmb3IgdGhlIGRlYnVnZ2FibGUgdHlwZSB0aGUg
ZnJvbnRlbmQgd2FzIHNwYXducyBmb3IuCisgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSBmcm9udGVu
ZCBvcGVucyBhbmQgaGFzIGEgVGFyZ2V0QWdlbnQsIHRoZW4gaXQgaXMgbGlrZWx5CisgICAgICAg
IGNvbm5lY3RlZCB0byBhIG11bHRpLXRhcmdldCBzdXBwb3J0aW5nIGJhY2tlbmQgYW5kIGluc3Rl
YWQgY29uc3RydWN0cyBhCisgICAgICAgIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQsIGFuZCB3
aWxsIHJlY2VpdmUgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICBzdWItdGFyZ2V0
cyB0byBjb25uZWN0IHRvLiBUaGUgb25seSBzdWItdGFyZ2V0IGF0IHRoZSBtb21lbnQgaXMgYSBQ
YWdlCisgICAgICAgIHN1Yi10YXJnZXQuCisKKyAgICAgICAgQXMgcGFydCBvZiBicmluZ2luZyB1
cCBtdWx0aS10YXJnZXQgc3VwcG9ydCB0aGlzIGFkZHMgYSBmZXcgbWVhc3VyZXMgdG8KKyAgICAg
ICAgaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGZyb250ZW5kIGlzIHBsYXlpbmcgZmFzdCBh
bmQgbG9vc2Ugd2l0aCBhZ2VudHMuCisgICAgICAgIFdoZW4gdGhlIGZyb250ZW5kIGRvZXMgYEZv
b0FnZW50Lm1ldGhvZGAgaXQgaW50ZW5kcyB0aGF0IHRvIGJlIHBlcmZvcm1lZAorICAgICAgICBv
biB0aGUgIm1haW4iIHRhcmdldCBiZWluZyBkZWJ1Z2dlZC4gTGlrZXdpc2Ugd2hlbiB0aGUgZnJv
bnRlbmQgbG9vcHMKKyAgICAgICAgb3ZlciB0YXJnZXRzIGl0IGV4cGVjdHMgdGhlbSB0byBiZSB0
aGUgZGVidWdnYWJsZSB0YXJnZXRzLiBUaGlzIHBhdGNoCisgICAgICAgIHByb2ZpbGVzIGEgbmV3
IGltcGxlbWVudGF0aW9uIG9mIGBXSS5tYWluVGFyZ2V0YCBhbmQgYFdJLnRhcmdldHNgIHRvCisg
ICAgICAgIG1hdGNoIHRoZSBhc3N1bXB0aW9ucyBiZWluZyBtYWRlIGJ5IHRoZSBmcm9udGVuZC4K
KworICAgICAgICAgIC0gSW4gYSBkaXJlY3QtdGFyZ2V0IHdvcmxkLCB0aGVyZSBpcyBhIHNpbmds
ZSB0YXJnZXQgd2hpY2gKKyAgICAgICAgICAgIHNob3VsZCBiZSB1c2VkIGZvciBnbG9iYWwgYWdl
bnRzIGFuZCBpbiBXSS50YXJnZXRzLgorCisgICAgICAgICAgLSBJbiBhIG11bHRpLXRhcmdldCB3
b3JsZCwgdGhlIHBhZ2UgdGFyZ2V0IGlzIHRoZSBvbmUgdGhhdAorICAgICAgICAgICAgc2hvdWxk
IGJlIHVzZWQgZm9yIGdsb2JhbCBhZ2VudHMgYW5kIFdJLnRhcmdldHMgaXMgdGhlIGxpc3QKKyAg
ICAgICAgICAgIG9mIHN1Yi10YXJnZXRzIChleGNsdWRpbmcgdGhlIE11bHRpcGxleGluZ0JhY2tl
bmRUYXJnZXQpLgorCisgICAgICAgIEluIGEgbXVsdGktdGFyZ2V0IHdvcmxkLCB0aGVyZSBhcmUg
bm93IGNvbW1vbmx5IHR3byBUYXJnZXRzLiBUaGUKKyAgICAgICAgTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldCBhbmQgYSBQYWdlVGFyZ2V0IHN1Yi10YXJnZXQuIEluIHRoZSBmdXR1cmUKKyAgICAg
ICAgdGhpcyBtYXkgaW5jbHVkZSBtb3JlIHRhcmdldHMsIHN1Y2ggYXMgU2VydmljZVdvcmtlcnMs
IERlZGljYXRlZFdvcmtlcnMsCisgICAgICAgIGFuZCBwZXJoYXBzIGV2ZW4gZnJhbWVzLgorCisg
ICAgICAgIEluIGEgbXVsdGktdGFyZ2V0IHdvcmxkLCB0aGUgZnJvbnRlbmQgaXMgaW1tZWRpYXRl
bHkgdG9sZCBhYm91dCB0YXJnZXRzCisgICAgICAgIGFzIHNvb24gYXMgaXQgb3BlbnMgKHZpYSBU
YXJnZXQudGFyZ2V0Q3JlYXRlZCkuIEluIG9yZGVyIHRvIHN1cHBvcnQKKyAgICAgICAgdGhpcywg
ZnJvbnRlbmQgaW5pdGlhbGl6YXRpb24gaGFwcGVucyB3aXRob3V0IGEgbWFpbiB0YXJnZXQgYmVp
bmcgYXZhaWxhYmxlLgorICAgICAgICBTbyB0aGlzIG1ha2VzIGEgZmV3IHNtYWxsIGNoYW5nZXMg
dG8gZnJvbnRlbmQgaW5pdGlhbGl6YXRpb24gdG8gcGVyZm9ybQorICAgICAgICBhIGJpdCBvZiB3
b3JrIG9uY2Ugd2Uga25vdyB3aGF0IHRoZSBtYWluIHRhcmdldCBpcy4KKworICAgICAgICBEdXJp
bmcgYSBwYWdlIHRyYW5zaXRpb24gdGhlIGZyb250ZW5kIGlzIHRvbGQgdG8gZGVzdHJveSBleGlz
dGluZyB0YXJnZXRzCisgICAgICAgIGFuZCBpcyBzb29uIGFmdGVyIHRvbGQgYWJvdXQgYW55IG5l
dyBwYWdlIHRhcmdldHMgKHZpYSBUYXJnZXQudGFyZ2V0RGVzdHJveWVkCisgICAgICAgIGFuZCBU
YXJnZXQudGFyZ2V0Q3JlYXRlZCkuIFRoZSBmcm9udGVuZCBzcGVjaWFsIGNhc2VzIHRoaXMgcGFn
ZSB0cmFuc2l0aW9uLgorICAgICAgICBJdCBleHBlY3RzIG9ubHkgb25lIFBhZ2UgdGFyZ2V0IHRv
IGJlIGFsaXZlIGF0IGFueSB0aW1lLCBhY2Nlc3NpYmxlIHRocm91Z2gKKyAgICAgICAgV0kucGFn
ZVRhcmdldC4gV2hlbiBhIHBhZ2UgdHJhbnNpdGlvbiBoYXBwZW5zIHRoZSBXSS5wYWdlVGFyZ2V0
IGNoYW5nZXMsIGFuZAorICAgICAgICB0aGUgZnJvbnRlbmQgcGVyZm9ybXMgYSBiaXQgb2Ygd29y
ayB0byBwcmVwYXJlIHRoZSBVSSB0byBoYW5kbGUgdGhlIHRyYW5zaXRpb246CisgICAgICAgIGA8
TWFuYWdlcj4udHJhbnNpdGlvblBhZ2VUYXJnZXRgIC8gV0kuTm90aWZpY2F0aW9uLlRyYW5zaXRp
b25QYWdlVGFyZ2V0LgorICAgICAgICBGb3IgdGhlIG1vc3QgcGFydCB0aGUgVUkgYmVoYXZlcyBm
aW5lIGFzIGxvbmcgb25jZSB0aGVyZSBhcmUgbWFpbiBmcmFtZQorICAgICAgICBjaGFuZ2UgYW5k
IG1haW4gcmVzb3VyY2UgY2hhbmdlIGV2ZW50cywgYnV0IHRob3NlIG90aGVyIGV2ZW50cyBhbGxv
dworICAgICAgICB0aGUgZnJvbnRlbmQgdG8gcmVzcG9uZCB0byB0aGUgc3BlY2lmaWMgcGFnZSB0
cmFuc2l0aW9uIGNhc2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6
CisgICAgICAgIChXSS5sb2FkZWQpOgorICAgICAgICAoV0kuaW5pdGlhbGl6ZUJhY2tlbmRUYXJn
ZXQpOgorICAgICAgICAoV0kuaW5pdGlhbGl6ZVBhZ2VUYXJnZXQpOgorICAgICAgICAoV0kudHJh
bnNpdGlvblBhZ2VUYXJnZXQpOgorICAgICAgICAoV0kudGVybWluYXRlUGFnZVRhcmdldCk6Cisg
ICAgICAgIChXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdJLnJlZGly
ZWN0R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uKToKKyAgICAgICAgKFdJLmNvbnRlbnRMb2FkZWQp
OgorICAgICAgICBOZXcgZ2xvYmFsIGZ1bmN0aW9ucyBmb3IgdGFyZ2V0IGluaXRpYWxpemF0aW9u
CisgICAgICAgIGFuZCBwYWdlIHRyYW5zaXRpb25pbmcuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Rlc3QvVGVzdC5qczoKKyAgICAgICAgKFdJLmxvYWRlZCk6CisgICAgICAgIChXSS5pbml0
aWFsaXplQmFja2VuZFRhcmdldCk6CisgICAgICAgIChXSS5pbml0aWFsaXplUGFnZVRhcmdldCk6
CisgICAgICAgIChXSS50cmFuc2l0aW9uUGFnZVRhcmdldCk6CisgICAgICAgIChXSS50ZXJtaW5h
dGVQYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLnJlc2V0TWFpbkV4ZWN1dGlvbkNvbnRleHQpOgor
ICAgICAgICAoV0kucmVkaXJlY3RHbG9iYWxBZ2VudHNUb0Nvbm5lY3Rpb24pOgorICAgICAgICBO
ZXcgZ2xvYmFsIGZ1bmN0aW9ucyBmb3IgdGFyZ2V0IGluaXRpYWxpemF0aW9uLgorICAgICAgICBU
ZXN0cyBjb250aW51ZSB0byBiZSBhIGRpcmVjdCBjb25uZWN0aW9uIHRvIHRoZSBQYWdlLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXRPYnNlcnZlci5qczoKKyAgICAg
ICAgKFdJLlRhcmdldE9ic2VydmVyLnByb3RvdHlwZS50YXJnZXRDcmVhdGVkKToKKyAgICAgICAg
KFdJLlRhcmdldE9ic2VydmVyLnByb3RvdHlwZS50YXJnZXREZXN0cm95ZWQpOgorICAgICAgICAo
V0kuVGFyZ2V0T2JzZXJ2ZXIucHJvdG90eXBlLmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQpOgor
ICAgICAgICBOZXcgb2JzZXJ2ZXIgZ29lcyB0byB0aGUgbWFuYWdlci4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRh
cmdldE1hbmFnZXIpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZ2V0IHRh
cmdldHMpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZ2V0IGFsbFRhcmdl
dHMpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0Rm9ySWRlbnRp
Zmllcik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS50YXJnZXRDcmVhdGVk
KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnRhcmdldERlc3Ryb3llZCk6
CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9t
VGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZU11bHRp
cGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5
cGUuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2Vy
LnByb3RvdHlwZS5fYWRkVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90
eXBlLl9yZW1vdmVUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUu
X2NyZWF0ZVRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hl
Y2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5UYXJnZXRNYW5h
Z2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRpb24pOgorICAg
ICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuYWRkVGFyZ2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVRhcmdldCk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplTWFpblRhcmdl
dCk6IERlbGV0ZWQuCisgICAgICAgIFRhcmdldE1hbmFnZXIgaXMgd2hlcmUgd2UgaGFuZGxlIGNy
ZWF0aW5nIGFuZCBkZXN0cm95aW5nIHRhcmdldHMKKyAgICAgICAgYW5kIHRoZWlyIGNvbm5lY3Rp
b25zLiBJbiBvcmRlciB0byBzaW1wbGlmeSB0aGluZ3MgYSBiaXQgd2UgbWFrZQorICAgICAgICBg
V0kudGFyZ2V0c2AsIHdoaWNoIGdvZXMgdGhyb3VnaCBgZ2V0IHRhcmdldHMoKWAgYW4gYXJyYXkg
aW5zdGVhZAorICAgICAgICBvZiBhIFNldC4gQW5kIHRoaXMgaW5jbHVkZXMgb25seSB0aGUgc3Vi
LXRhcmdldHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1h
bmFnZXIuanM6CisgICAgICAgIChXSS5Xb3JrZXJNYW5hZ2VyLnByb3RvdHlwZS53b3JrZXJDcmVh
dGVkKToKKyAgICAgICAgKFdJLldvcmtlck1hbmFnZXIucHJvdG90eXBlLndvcmtlclRlcm1pbmF0
ZWQpOgorICAgICAgICBXb3JrZXJzIGFyZSBzdGlsbCBzcGVjaWFsIHRhcmdldCBsaWtlIHRoaW5n
cyB0aGF0IG11bHRpcGxleCB0aHJvdWdoCisgICAgICAgIFdvcmtlckFnZW50IGluc3RlYWQgb2Yg
VGFyZ2V0QWdlbnQuIFdlJ2QgbGlrZSB0byBwcm9tb3RlIHRoZXNlIHRvCisgICAgICAgIGJlIGZ1
bGwgdGFyZ2V0cyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9EaXJlY3RCYWNrZW5kVGFyZ2V0LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcy4KKyAgICAgICAgKFdJ
LkRpcmVjdEJhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuRGlyZWN0QmFja2VuZFRhcmdldC5j
b25uZWN0aW9uSW5mb0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoV0kuRGlyZWN0QmFja2VuZFRh
cmdldC5wcm90b3R5cGUuZ2V0IG1haW5SZXNvdXJjZSk6CisgICAgICAgIChXSS5EaXJlY3RCYWNr
ZW5kVGFyZ2V0LnByb3RvdHlwZS5zZXQgbWFpblJlc291cmNlKToKKyAgICAgICAgVGhpcyBpcyB0
aGUgb25seSAiTWFpblRhcmdldCIgY2xhc3MuIEl0IGlzIHRoZSBiYWNrZW5kIHRhcmdldCBmb3Ig
YSBkaXJlY3QgY29ubmVjdGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJLk11bHRpcGxleGluZ0Jh
Y2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5wcm90
b3R5cGUuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0
LnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFy
Z2V0LnByb3RvdHlwZS5nZXQgZXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXSS5NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5nZXQgbWFpblJlc291cmNlKToKKyAgICAgICAg
VGhpcyBpcyB0aGUgbmV3IGJhY2tlbmQgdGFyZ2V0IGZvciBhIG11bHRpLXRhcmdldCBjb25uZWN0
aW9uLgorICAgICAgICBXZSBkb24ndCBleHBlY3QgaXQgdG8gYmUgdHJlYXRlZCBsaWtlIG90aGVy
IHRhcmdldHMsIHNvIHdlIGRvbid0CisgICAgICAgIGV4cGVjdCBhbnlvbmUgdG8gYXNrIGl0IGZv
ciByZXNvdXJjZXMvZXhlY3V0aW9uQ29udGV4dC9uYW1lIGluZm8uCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGFy
Z2V0TWFuYWdlci5wcm90b3R5cGUuZXZhbHVhdGVJbkluc3BlY3RlZFdpbmRvdyk6CisgICAgICAg
IFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBieSB3YXRjaCBleHByZXNzaW9ucyBiZWZvcmUgYW55IHRh
cmdldCwgYW5kCisgICAgICAgIHRoZXJlZm9yZSBleGVjdXRpb24gY29udGV4dCBpcyBhdmFpbGFi
bGUuIEp1c3QgcmV0dXJuIG51bGwsIHdoZW4KKyAgICAgICAgYW4gZXhlY3V0aW9uIGNvbnRleHQg
aXMgYXZhaWxhYmxlIHRob3NlIGNsaWVudHMgd2lsbCB0cnkgYWdhaW4uCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qczoKKyAgICAgICAgUHJvdmlkZSBhbiBXSS5p
c0VuZ2luZWVyaW5nQnVpbGQgYm9vbGVhbiB0aGF0IGNhbiBiZSB1c2VkIGZvciB2YXJpb3VzCisg
ICAgICAgIGRlYnVnZ2luZyBmZWF0dXJlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFp
bi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICBOZXcg
cmVzb3VyY2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JC
YWNrZW5kLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5kaXNw
YXRjaCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXMpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5BZ2VudCk6Cisg
ICAgICAgIGBJbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uYCB3YXMgcmVuYW1lZCBgSW5z
cGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbmAuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanM6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNv
bm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uLnByb3RvdHlw
ZS5fZGlzcGF0Y2hSZXNwb25zZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rp
b24ucHJvdG90eXBlLl9zZW5kQ29tbWFuZFRvQmFja2VuZFdpdGhDYWxsYmFjayk6CisgICAgICAg
IChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24ucHJvdG90eXBlLl9zZW5kQ29tbWFuZFRvQmFj
a2VuZEV4cGVjdGluZ1Byb21pc2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5CYWNrZW5k
Q29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkJhY2tlbmRDb25uZWN0aW9u
LnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kLldvcmtlckNvbm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRD
b25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbi5z
ZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIFVzZSBhIGdsb2JhbCBzZXF1ZW5jZSBpZCB0
byBtYWtlIGZpbHRlcmluZyBhIGJpdCBlYXNpZXIgaW4gcHJvdG9jb2wgdHJhY2luZy4KKyAgICAg
ICAgVGFyZ2V0Q29ubmVjdGlvbiBpcyBpZGVudGljYWwgdG8gV29ya2VyQ29ubmVjdGlvbiBleGNl
cHQgaXQgdXNlcyBUYXJnZXRBZ2VudAorICAgICAgICBpbnN0ZWFkIG9mIFdvcmtlckFnZW50IHRv
IHBlcmZvcm0gbXVsdGlwbGV4aW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9KYXZhU2NyaXB0Q29udGV4dFRhcmdldC5qczoKKyAgICAgICAgKFdJLkphdmFTY3JpcHRDb250
ZXh0VGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQu
anM6CisgICAgICAgIChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLlBhZ2VUYXJnZXQucHJv
dG90eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIFNwZWNpYWxpemVkIHRhcmdldCB0eXBl
cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwu
anM6CisgICAgICAgIChXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCk6CisgICAgICAgIChXSS5EZWJ1
Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3RhcmdldEFkZGVkKToKKyAgICAgICAgKFdJLkRl
YnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdGFyZ2V0UmVtb3ZlZCk6CisgICAgICAgIChX
SS5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUNhbGxTdGFja1RyZWVPdXRs
aW5lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9y
LmpzOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl90YXJnZXRB
ZGRlZCk6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Rhcmdl
dFJlbW92ZWQpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLl9j
YWxsRnJhbWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5fdXBkYXRlVGhyZWFkSW5kaWNhdG9yV2lkZ2V0KToKKyAgICAgICAgKFdJLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fcmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoKKyAgICAgICAg
KFdJLlF1aWNrQ29uc29sZS5wcm90b3R5cGUuaW5pdGlhbGl6ZU1haW5FeGVjdXRpb25Db250ZXh0
UGF0aENvbXBvbmVudCk6CisgICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl90YXJn
ZXRBZGRlZCk6CisgICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl90YXJnZXRSZW1v
dmVkKToKKyAgICAgICAgV2UgbWFrZSB0YXJnZXQgYWRkZWQgZ2V0IGNhbGxlZCB3aXRoIGFsbCB0
YXJnZXRzLCBpbmNsdWRpbmcgdGhlCisgICAgICAgIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQg
YW5kIFBhZ2VUYXJnZXRzLCBib3RoIG9mIHdoaWNoIHdvdWxkCisgICAgICAgIG5vdCBoYXZlIGhh
cHBlbmVkIGJlZm9yZS4gQmVmb3JlIGl0IHdhcyBvbmx5IFdvcmtlclRhcmdldHMuIE1ha2UKKyAg
ICAgICAgdGhlc2Ugc2l0ZXMgYSBsaXR0bGUgbW9yZSByb2J1c3QgZm9yIHRoZSB0eXBlIG9mIHRh
cmdldCB0aGV5IGV4cGVjdAorICAgICAgICB0byBiZSBhYmxlIHRvIGhhbmRsZS4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9NTWFuYWdlcik6Cisg
ICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS50cmFuc2l0aW9uUGFnZVRhcmdldCk6Cisg
ICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RG9jdW1lbnQpOgorICAgICAg
ICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX3NldERvY3VtZW50KToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuTmV0
d29ya01hbmFnZXIpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnRyYW5z
aXRpb25QYWdlVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5l
eGVjdXRpb25Db250ZXh0Q3JlYXRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90
b3R5cGUuX3Byb2Nlc3NNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzOgorICAgICAgICAoV0kuRGVm
YXVsdERhc2hib2FyZCk6CisgICAgICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5f
bWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRlZmF1bHREYXNoYm9hcmQucHJv
dG90eXBlLl90cmFuc2l0aW9uUGFnZVRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJs
ZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5fdHJhbnNpdGlvblBhZ2VUYXJnZXQpOgorICAgICAgICBTcGVj
aWFsIGNhc2UgaGFuZGxpbmcgd2hlbiBwZXJmb3JtaW5nIGEgcGFnZSB0cmFuc2l0aW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBvcnRlci5q
czoKKyAgICAgICAgRG9jdW1lbnQgcmVsb2FkcyBhcmUgbm90IHN1cHBvcnRlZCByaWdodCBub3cu
CisKIDIwMTgtMTEtMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbmNsdWRlIHRhcmdldCBpZGVudGlmaWVyIGluIHByb3Rv
Y29sIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvTWFpbi5qcwppbmRleCBkNTE5NGU1OTlkMi4uYzI2YjZmYWY1MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTUxLDYgKzUx
LDggQEAgV0kuTGF5b3V0RGlyZWN0aW9uID0gewogV0kubG9hZGVkID0gZnVuY3Rpb24oKQogewog
ICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJh
Y2tlbmQuCisgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJUYXJnZXREaXNwYXRjaGVy
KQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyVGFyZ2V0RGlzcGF0Y2hlcihuZXcg
V0kuVGFyZ2V0T2JzZXJ2ZXIpOwogICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySW5z
cGVjdG9yRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlckluc3Bl
Y3RvckRpc3BhdGNoZXIobmV3IFdJLkluc3BlY3Rvck9ic2VydmVyKTsKICAgICBpZiAoSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlclBhZ2VEaXNwYXRjaGVyKQpAQCAtMTQ4LDEzICsxNTAsOTAgQEAg
V0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3dpbmRvd0tleWRvd25MaXN0ZW5lcnMg
PSBbXTsKIAogICAgIC8vIFRhcmdldHMuCi0gICAgV0kubWFpblRhcmdldCA9IG5ldyBXSS5NYWlu
VGFyZ2V0OwotICAgIFdJLm1haW5UYXJnZXQuaW5pdGlhbGl6ZSgpOwotICAgIFdJLnBhZ2VUYXJn
ZXQgPSBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLldl
YiA/IFdJLm1haW5UYXJnZXQgOiBudWxsOworICAgIFdJLmJhY2tlbmRUYXJnZXQgPSBudWxsOwor
ICAgIFdJLnBhZ2VUYXJnZXQgPSBudWxsOwogCi0gICAgLy8gUG9zdC10YXJnZXQgaW5pdGlhbGl6
YXRpb24uCi0gICAgV0kudGFyZ2V0TWFuYWdlci5pbml0aWFsaXplTWFpblRhcmdldCgpOwotICAg
IFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQgPSBXSS5tYWluVGFyZ2V0
LmV4ZWN1dGlvbkNvbnRleHQ7CisgICAgaWYgKCF3aW5kb3cuVGFyZ2V0QWdlbnQpCisgICAgICAg
IFdJLnRhcmdldE1hbmFnZXIuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCgpOworICAgIGVsc2Ug
eworICAgICAgICAvLyBGSVhNRTogRWxpbWluYXRlIGBUYXJnZXRBZ2VudC5leGlzdHNgIG9uY2Ug
dGhlIGxvY2FsIGluc3BlY3RvcgorICAgICAgICAvLyBpcyBjb25maWd1cmVkIHRvIHVzZSB0aGUg
TXVsdGlwbGV4aW5nIGNvZGUgcGF0aC4KKyAgICAgICAgVGFyZ2V0QWdlbnQuZXhpc3RzKChlcnJv
cikgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIFdJLnRhcmdl
dE1hbmFnZXIuY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdldCgpOworICAgICAgICB9KTsKKyAgICB9
Cit9OworCitXSS5pbml0aWFsaXplQmFja2VuZFRhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKK3sK
KyAgICBjb25zb2xlLmFzc2VydCghV0kubWFpblRhcmdldCk7CisKKyAgICBXSS5iYWNrZW5kVGFy
Z2V0ID0gdGFyZ2V0OworCisgICAgV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCgpOworfTsK
KworV0kuaW5pdGlhbGl6ZVBhZ2VUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCit7CisgICAgY29u
c29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxl
VHlwZS5XZWIpOworICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlID09PSBXSS5UYXJnZXQu
VHlwZS5QYWdlIHx8IHRhcmdldCBpbnN0YW5jZW9mIFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQpOwor
CisgICAgV0kucGFnZVRhcmdldCA9IHRhcmdldDsKKworICAgIFdJLnJlZGlyZWN0R2xvYmFsQWdl
bnRzVG9Db25uZWN0aW9uKFdJLnBhZ2VUYXJnZXQuY29ubmVjdGlvbik7CisKKyAgICBXSS5yZXNl
dE1haW5FeGVjdXRpb25Db250ZXh0KCk7Cit9OworCitXSS50cmFuc2l0aW9uUGFnZVRhcmdldCA9
IGZ1bmN0aW9uKHRhcmdldCkKK3sKKyAgICBjb25zb2xlLmFzc2VydCghV0kucGFnZVRhcmdldCk7
CisgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5E
ZWJ1Z2dhYmxlVHlwZS5XZWIpOworICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlID09PSBX
SS5UYXJnZXQuVHlwZS5QYWdlKTsKKworICAgIFdJLnBhZ2VUYXJnZXQgPSB0YXJnZXQ7CisKKyAg
ICBXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5wYWdlVGFyZ2V0LmNvbm5l
Y3Rpb24pOworCisgICAgV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCgpOworCisgICAgLy8g
QWN0aW9ucyB0byB0cmFuc2l0aW9uIHRoZSBwYWdlIHRhcmdldC4KKyAgICB0aGlzLm5vdGlmaWNh
dGlvbnMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk5vdGlmaWNhdGlvbi5UcmFuc2l0aW9u
UGFnZVRhcmdldCk7CisgICAgV0kuZG9tTWFuYWdlci50cmFuc2l0aW9uUGFnZVRhcmdldCgpOwor
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnRyYW5zaXRpb25QYWdlVGFyZ2V0KCk7Cit9OworCitXSS50
ZXJtaW5hdGVQYWdlVGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KQoreworICAgIGNvbnNvbGUuYXNz
ZXJ0KFdJLnBhZ2VUYXJnZXQpOworICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnBhZ2VUYXJnZXQgPT09
IHRhcmdldCk7CisgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBl
ID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpOworCisgICAgV0kucGFnZVRhcmdldCA9IG51bGw7
CisKKyAgICBXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5iYWNrZW5kQ29u
bmVjdGlvbik7Cit9OworCitXSS5yZXNldE1haW5FeGVjdXRpb25Db250ZXh0ID0gZnVuY3Rpb24o
KQoreworICAgIGlmIChXSS5tYWluVGFyZ2V0IGluc3RhbmNlb2YgV0kuTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFdJLm1haW5UYXJnZXQuZXhl
Y3V0aW9uQ29udGV4dCkgeworICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5hY3RpdmVFeGVjdXRp
b25Db250ZXh0ID0gV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0OworICAgICAgICBpZiAo
V0kucXVpY2tDb25zb2xlKQorICAgICAgICAgICAgV0kucXVpY2tDb25zb2xlLmluaXRpYWxpemVN
YWluRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoKTsKKyAgICB9Cit9OworCitXSS5yZWRp
cmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKGNvbm5lY3Rpb24pCit7Cisg
ICAgLy8gVGhpcyBtYWtlcyBnbG9iYWwgd2luZG93LkZvb0FnZW50IGRpc3BhdGNoIHRvIHRoZSBh
Y3RpdmUgcGFnZSB0YXJnZXQuCisgICAgZm9yIChsZXQgW2RvbWFpbiwgYWdlbnRdIG9mIE9iamVj
dC5lbnRyaWVzKEluc3BlY3RvckJhY2tlbmQuX2FnZW50cykpIHsKKyAgICAgICAgaWYgKGRvbWFp
biAhPT0gIlRhcmdldCIpCisgICAgICAgICAgICBhZ2VudC5jb25uZWN0aW9uID0gY29ubmVjdGlv
bjsKKyAgICB9CiB9OwogCiBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQpAQCAtNDc1LDgg
KzU1NCw4IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgLy8gU3RvcmUgdGhp
cyBvbiB0aGUgd2luZG93IGluIGNhc2UgdGhlIFdlYkluc3BlY3RvciBnbG9iYWwgZ2V0cyBjb3Jy
dXB0ZWQuCiAgICAgd2luZG93Ll9fZnJvbnRlbmRDb21wbGV0ZWRMb2FkID0gdHJ1ZTsKIAotICAg
IGlmICh0aGlzLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMpCi0gICAgICAgIHRoaXMucnVuQm9vdHN0
cmFwT3BlcmF0aW9ucygpOworICAgIGlmIChXSS5ydW5Cb290c3RyYXBPcGVyYXRpb25zKQorICAg
ICAgICBXSS5ydW5Cb290c3RyYXBPcGVyYXRpb25zKCk7CiB9OwogCiBXSS5wZXJmb3JtT25lVGlt
ZUZyb250ZW5kSW5pdGlhbGl6YXRpb25zVXNpbmdUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCkBA
IC0xNTA1LDYgKzE1ODQsNyBAQCBXSS5fY29udGV4dE1lbnVSZXF1ZXN0ZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICAgICAgcHJvcG9zZWRDb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0
ZUZyb21FdmVudChldmVudCk7CiAgICAgICAgIHByb3Bvc2VkQ29udGV4dE1lbnUuYXBwZW5kU2Vw
YXJhdG9yKCk7CiAgICAgICAgIHByb3Bvc2VkQ29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS51bmxv
Y2FsaXplZFN0cmluZygiUmVsb2FkIFdlYiBJbnNwZWN0b3IiKSwgKCkgPT4geworICAgICAgICAg
ICAgLy8gRklYTUU6IFJlbG9hZCBXZWIgSW5zcGVjdG9yIGRvZXMgbm90IHdvcmsgd2l0aCBNdWx0
aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LgogICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9h
ZCgpOwogICAgICAgICB9KTsKIApAQCAtMjE3Myw2ICsyMjUzLDcgQEAgV0kuc2V0TGF5b3V0RGly
ZWN0aW9uID0gZnVuY3Rpb24odmFsdWUpCiAgICAgaWYgKFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0
aW9uKCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5MVFIgJiYgdGhpcy5fZG9ja0NvbmZpZ3VyYXRp
b24gPT09IFdJLkRvY2tDb25maWd1cmF0aW9uLkxlZnQpCiAgICAgICAgIHRoaXMuX2RvY2tSaWdo
dCgpOwogCisgICAgLy8gRklYTUU6IFJlbG9hZCBXZWIgSW5zcGVjdG9yIGRvZXMgbm90IHdvcmsg
d2l0aCBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LgogICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxv
YWQoKTsKIH07CiAKQEAgLTI2NzUsNiArMjc1NiwxOSBAQCBXSS5yZXBvcnRJbnRlcm5hbEVycm9y
ID0gZnVuY3Rpb24oZXJyb3JPclN0cmluZywgZGV0YWlscyA9IHt9KQogICAgICAgICBjb25zb2xl
LmVycm9yKGVycm9yKTsKIH07CiAKKy8vIE1hbnkgcGxhY2VzIGFzc3VtZSB0aGUgIm1haW4iIHRh
cmdldCBoYXMgcmVzb3VyY2VzLgorLy8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIG1haW4gYmFja2Vu
ZCB0YXJnZXQgaXMgYSBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0CisvLyB0aGF0IHRhcmdldCBo
YXMgZXNzZW50aWFsbHkgbm90aGluZy4gSW4gdGhhdCBjYXNlIGRlZmVyIHRvIHRoZSBwYWdlCisv
LyB0YXJnZXQsIHNpbmNlIHRoYXQgaXMgdGhlIHJlYWwgIm1haW4iIHRhcmdldCB0aGUgZnJvbnRl
bmQgaXMgYXNzdW1pbmcuCitPYmplY3QuZGVmaW5lUHJvcGVydHkoV0ksICJtYWluVGFyZ2V0IiwK
K3sKKyAgICBnZXQoKSB7IHJldHVybiBXSS5wYWdlVGFyZ2V0IHx8IFdJLmJhY2tlbmRUYXJnZXQ7
IH0KK30pOworCisvLyBUaGlzIGxpc3Qgb2YgdGFyZ2V0cyBhcmUgbm9uLU11bHRpcGxleGluZyB0
YXJnZXRzLgorLy8gU28gaWYgdGhlcmUgaXMgYSBtdWx0aXBsZXhpbmcgdGFyZ2V0LCBhbmQgbXVs
dGlwbGUgc3ViLXRhcmdldHMKKy8vIHRoaXMgaXMganVzdCB0aGUgbGlzdCBvZiBzdWItdGFyZ2V0
cy4gQWxtb3N0IG5vIGNvZGUgZXhwZWN0cworLy8gdG8gYWN0dWFsbHkgaW50ZXJhY3Qgd2l0aCB0
aGUgTXVsdGlwbGV4aW5nIHRhcmdldC4KIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXSSwgInRhcmdl
dHMiLAogewogICAgIGdldCgpIHsgcmV0dXJuIFdJLnRhcmdldE1hbmFnZXIudGFyZ2V0czsgfQpA
QCAtMjY4OSw2ICsyNzgzLDggQEAgV0kuYXNzdW1pbmdNYWluVGFyZ2V0ID0gZnVuY3Rpb24oKQog
ICAgIHJldHVybiBXSS5tYWluVGFyZ2V0OwogfTsKIAorV0kuaXNFbmdpbmVlcmluZ0J1aWxkID0g
ZmFsc2U7CisKIC8vIE9wZW5SZXNvdXJjZURpYWxvZyBkZWxlZ2F0ZQogCiBXSS5kaWFsb2dXYXNE
aXNtaXNzZWRXaXRoUmVwcmVzZW50ZWRPYmplY3QgPSBmdW5jdGlvbihkaWFsb2csIHJlcHJlc2Vu
dGVkT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9PYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL09iamVjdC5qcwppbmRleCBjZTVjM2MzMjkxYS4uZTNiYjVjN2M5NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzCkBAIC0y
MjUsNCArMjI1LDUgQEAgV0kuTm90aWZpY2F0aW9uID0gewogICAgIEV4dHJhRG9tYWluc0FjdGl2
YXRlZDogImV4dHJhLWRvbWFpbnMtYWN0aXZhdGVkIiwKICAgICBEZWJ1Z1VJRW5hYmxlZERpZENo
YW5nZTogImRlYnVnLXVpLWVuYWJsZWQtZGlkLWNoYW5nZSIsCiAgICAgVmlzaWJpbGl0eVN0YXRl
RGlkQ2hhbmdlOiAidmlzaWJpbGl0eS1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBUcmFuc2l0aW9u
UGFnZVRhcmdldDogInRyYW5zaXRpb24tcGFnZS10YXJnZXQiLAogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCBiYmM1
NzdkMTRlZS4uYjVkOTY0ZDE0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTEzNyw4ICsxMzcsOSBAQCBXSS5zZXR0
aW5ncyA9IHsKICAgICAvLyBEZWJ1Z1VJCiAgICAgYXV0b0xvZ1Byb3RvY29sTWVzc2FnZXM6IG5l
dyBXSS5TZXR0aW5nKCJhdXRvLWNvbGxlY3QtcHJvdG9jb2wtbWVzc2FnZXMiLCBmYWxzZSksCiAg
ICAgYXV0b0xvZ1RpbWVTdGF0czogbmV3IFdJLlNldHRpbmcoImF1dG8tY29sbGVjdC10aW1lLXN0
YXRzIiwgZmFsc2UpLAotICAgIGVuYWJsZVVuY2F1Z2h0RXhjZXB0aW9uUmVwb3J0ZXI6IG5ldyBX
SS5TZXR0aW5nKCJlbmFibGUtdW5jYXVnaHQtZXhjZXB0aW9uLXJlcG9ydGVyIiwgdHJ1ZSksCiAg
ICAgZW5hYmxlTGF5b3V0Rmxhc2hpbmc6IG5ldyBXSS5TZXR0aW5nKCJlbmFibGUtbGF5b3V0LWZs
YXNoaW5nIiwgZmFsc2UpLAorICAgIGVuYWJsZVVuY2F1Z2h0RXhjZXB0aW9uUmVwb3J0ZXI6IG5l
dyBXSS5TZXR0aW5nKCJlbmFibGUtdW5jYXVnaHQtZXhjZXB0aW9uLXJlcG9ydGVyIiwgdHJ1ZSks
CisgICAgZmlsdGVyTXVsdGlwbGV4aW5nQmFja2VuZEluc3BlY3RvclByb3RvY29sTWVzc2FnZXM6
IG5ldyBXSS5TZXR0aW5nKCJmaWx0ZXItbXVsdGlwbGV4aW5nLWJhY2tlbmQtaW5zcGVjdG9yLXBy
b3RvY29sLW1lc3NhZ2VzIiwgdHJ1ZSksCiAgICAgbGF5b3V0RGlyZWN0aW9uOiBuZXcgV0kuU2V0
dGluZygibGF5b3V0LWRpcmVjdGlvbi1vdmVycmlkZSIsICJzeXN0ZW0iKSwKICAgICBwYXVzZUZv
ckludGVybmFsU2NyaXB0czogbmV3IFdJLlNldHRpbmcoInBhdXNlLWZvci1pbnRlcm5hbC1zY3Jp
cHRzIiwgZmFsc2UpLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCmluZGV4IDhlY2RmNzc4
ZWMyLi44YTAyNGM5ZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCkBAIC00Nyw2ICs0
Nyw5IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNGb3JFdmVudExpc3RlbmVycyA9IG5ldyBNYXA7
CiAKKyAgICAgICAgdGhpcy5faGFzUmVxdWVzdGVkRG9jdW1lbnQgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcyA9IG51bGw7CisKICAgICAgICAg
V0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRD
aGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCkBAIC02
NSw2ICs2OCwxMSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICB9CiAgICAgfQogCisgICAgdHJhbnNpdGlvblBhZ2VUYXJnZXQoKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fZG9jdW1lbnRVcGRhdGVkKCk7CisgICAgfQorCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKCkKQEAgLTc5LDI0ICs4
NywzMSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuX3Bl
bmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MpIHsKKyAgICAgICAgaWYgKHRoaXMuX3BlbmRp
bmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MpCiAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRG9j
dW1lbnRSZXF1ZXN0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gW2NhbGxiYWNr
XTsKKworICAgICAgICBpZiAodGhpcy5faGFzUmVxdWVzdGVkRG9jdW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFXSS5wYWdlVGFyZ2V0KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICghV0kucGFnZVRhcmdldC5ET01BZ2VudCkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3BlbmRpbmdEb2N1bWVudFJlcXVl
c3RDYWxsYmFja3MgPSBbY2FsbGJhY2tdOworICAgICAgICB0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1
bWVudCA9IHRydWU7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5ET01BZ2VudCkgewotICAgICAgICAg
ICAgRE9NQWdlbnQuZ2V0RG9jdW1lbnQoKGVycm9yLCByb290KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0RG9jdW1lbnQocm9v
dCk7CisgICAgICAgIFdJLnBhZ2VUYXJnZXQuRE9NQWdlbnQuZ2V0RG9jdW1lbnQoKGVycm9yLCBy
b290KSA9PiB7CisgICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgICAgIHRoaXMu
X3NldERvY3VtZW50KHJvb3QpOwogCi0gICAgICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sg
b2YgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcykKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2sodGhpcy5fZG9jdW1lbnQpOworICAgICAgICAgICAgZm9yIChsZXQgY2Fs
bGJhY2sgb2YgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcykKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1bWVudCk7CiAKLSAgICAgICAgICAgICAgICB0aGlz
Ll9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gbnVsbDsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2Fs
bGJhY2tzID0gbnVsbDsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZW5zdXJlRG9jdW1lbnQo
KQpAQCAtMjc0LDYgKzI4OSwxMCBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2Rv
Y3VtZW50ID0gbmV3RG9jdW1lbnQ7CisKKyAgICAgICAgaWYgKCF0aGlzLl9kb2N1bWVudCkKKyAg
ICAgICAgICAgIHRoaXMuX2hhc1JlcXVlc3RlZERvY3VtZW50ID0gZmFsc2U7CisKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5Eb2N1bWVu
dFVwZGF0ZWQsIHtkb2N1bWVudDogdGhpcy5fZG9jdW1lbnR9KTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdv
cmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvTmV0d29ya01hbmFnZXIuanMKaW5kZXggOTRkODljN2Y2NTAuLjllODExN2NkZDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMzgsNiArMzgsNyBAQCBXSS5O
ZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHRoaXMuX3dlYlNvY2tldElkZW50aWZpZXJUb1VSTCA9IG5ldyBNYXA7CiAKICAgICAg
ICAgdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQgPSB0cnVlOwor
ICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZhbHNlOwogCiAgICAgICAg
IHRoaXMuX3NvdXJjZU1hcFVSTE1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2Rvd25sb2Fk
aW5nU291cmNlTWFwcyA9IG5ldyBTZXQ7CkBAIC03MCw2ICs3MSwxMiBAQCBXSS5OZXR3b3JrTWFu
YWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICB0aGlzLmFkb3B0T3JwaGFuZWRSZXNvdXJjZXNGb3JUYXJnZXQodGFyZ2V0KTsKICAgICB9CiAK
KyAgICB0cmFuc2l0aW9uUGFnZVRhcmdldCgpCisgICAgeworICAgICAgICB0aGlzLl90cmFuc2l0
aW9uaW5nUGFnZVRhcmdldCA9IHRydWU7CisgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JNYWluRnJh
bWVSZXNvdXJjZVRyZWVQYXlsb2FkID0gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBtYWluRnJhbWUoKQpAQCAtNTYyLDEzICs1NjksMTQgQEAgV0kuTmV0d29ya01hbmFn
ZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAg
ICAgLy8gQ2FsbGVkIGZyb20gV0kuUnVudGltZU9ic2VydmVyLgogCi0gICAgICAgIHZhciBmcmFt
ZSA9IHRoaXMuZnJhbWVGb3JJZGVudGlmaWVyKGNvbnRleHRQYXlsb2FkLmZyYW1lSWQpOworICAg
ICAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lRm9ySWRlbnRpZmllcihjb250ZXh0UGF5bG9hZC5m
cmFtZUlkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWUpOwogICAgICAgICBpZiAoIWZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IGNv
bnRleHRQYXlsb2FkLm5hbWUgfHwgZnJhbWUubWFpblJlc291cmNlLmRpc3BsYXlOYW1lOwotICAg
ICAgICB2YXIgZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KFdJLm1h
aW5UYXJnZXQsIGNvbnRleHRQYXlsb2FkLmlkLCBkaXNwbGF5TmFtZSwgY29udGV4dFBheWxvYWQu
aXNQYWdlQ29udGV4dCwgZnJhbWUpOworICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSBjb250ZXh0
UGF5bG9hZC5uYW1lIHx8IGZyYW1lLm1haW5SZXNvdXJjZS5kaXNwbGF5TmFtZTsKKyAgICAgICAg
bGV0IHRhcmdldCA9IGZyYW1lLm1haW5SZXNvdXJjZS50YXJnZXQ7CisgICAgICAgIGxldCBleGVj
dXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGFyZ2V0LCBjb250ZXh0UGF5
bG9hZC5pZCwgZGlzcGxheU5hbWUsIGNvbnRleHRQYXlsb2FkLmlzUGFnZUNvbnRleHQsIGZyYW1l
KTsKICAgICAgICAgZnJhbWUuYWRkRXhlY3V0aW9uQ29udGV4dChleGVjdXRpb25Db250ZXh0KTsK
ICAgICB9CiAKQEAgLTc3OSw2ICs3ODcsMTQgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBO
ZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIGlmICh0aGlzLl9tYWlu
RnJhbWUgIT09IG9sZE1haW5GcmFtZSkKICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENo
YW5nZShvbGRNYWluRnJhbWUpOworCisgICAgICAgIC8vIEVtdWxhdGUgYSBtYWluIHJlc291cmNl
IGNoYW5nZSB3aXRoaW4gdGhpcyBwYWdlIGV2ZW4gdGhvdWdoIHdlIGFyZSBzd2FwcGluZyBvdXQg
bWFpbiBmcmFtZXMuCisgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBtYW55IG1hbmFnZXJzIGxp
c3RlbiBvbmx5IGZvciBtYWluIHJlc291cmNlIGNoYW5nZSBldmVudHMgdG8gcGVyZm9ybSB3b3Jr
LAorICAgICAgICAvLyBidXQgdGhleSBkb24ndCBsaXN0ZW4gZm9yIG1haW4gZnJhbWUgY2hhbmdl
cy4KKyAgICAgICAgaWYgKHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KSB7CisgICAgICAg
ICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZhbHNlOworICAgICAgICAgICAg
dGhpcy5fbWFpbkZyYW1lLl9kaXNwYXRjaE1haW5SZXNvdXJjZURpZENoYW5nZUV2ZW50KG9sZE1h
aW5GcmFtZS5tYWluUmVzb3VyY2UpOworICAgICAgICB9CiAgICAgfQogCiAgICAgX2NyZWF0ZUZy
YW1lKHBheWxvYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCmluZGV4IDQ3YzY1
NThmMmYzLi41YTE0NTQyYWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMK
QEAgLTY4LDYgKzY4LDExIEBAIFdJLlJ1bnRpbWVNYW5hZ2VyID0gY2xhc3MgUnVudGltZU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGV2YWx1YXRlSW5JbnNwZWN0ZWRXaW5kb3coZXhw
cmVzc2lvbiwgb3B0aW9ucywgY2FsbGJhY2spCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Fj
dGl2ZUV4ZWN1dGlvbkNvbnRleHQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGxldCB7b2JqZWN0
R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCByZXR1cm5CeVZhbHVlLCBnZW5lcmF0ZVByZXZpZXcsIHNhdmVSZXN1bHQsIHNv
dXJjZVVSTEFwcGVuZGVyfSA9IG9wdGlvbnM7CiAKICAgICAgICAgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJID0gaW5jbHVkZUNvbW1hbmRMaW5lQVBJIHx8IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rhcmdl
dE1hbmFnZXIuanMKaW5kZXggYzc1N2NiNjQ1NjguLjU5MWQ3NGRiMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RhcmdldE1hbmFnZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTQgKzI5LDI0IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBj
bGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBl
cigpOwogCi0gICAgICAgIHRoaXMuX3RhcmdldHMgPSBuZXcgU2V0OworICAgICAgICB0aGlzLl90
YXJnZXRzID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fY2FjaGVkVGFyZ2V0c0xpc3QgPSBudWxs
OworICAgICAgICB0aGlzLl9zZWVuUGFnZVRhcmdldCA9IGZhbHNlOworICAgICAgICB0aGlzLl90
cmFuc2l0aW9uVGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgdGFyZ2V0cygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
dGFyZ2V0czsKKyAgICAgICAgaWYgKCF0aGlzLl9jYWNoZWRUYXJnZXRzTGlzdCkKKyAgICAgICAg
ICAgIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0ID0gQXJyYXkuZnJvbSh0aGlzLl90YXJnZXRzLnZh
bHVlcygpKS5maWx0ZXIoKHRhcmdldCkgPT4gISh0YXJnZXQgaW5zdGFuY2VvZiBXSS5NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0KSk7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRUYXJnZXRz
TGlzdDsKKyAgICB9CisKKyAgICBnZXQgYWxsVGFyZ2V0cygpCisgICAgeworICAgICAgICByZXR1
cm4gQXJyYXkuZnJvbSh0aGlzLl90YXJnZXRzLnZhbHVlcygpKTsKICAgICB9CiAKICAgICB0YXJn
ZXRGb3JJZGVudGlmaWVyKHRhcmdldElkKQpAQCAtNDQsMTAgKzU0LDcgQEAgV0kuVGFyZ2V0TWFu
YWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYg
KCF0YXJnZXRJZCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIGlmICh0YXJn
ZXRJZCA9PT0gV0kubWFpblRhcmdldC5pZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdJ
Lm1haW5UYXJnZXQ7Ci0KLSAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRoaXMuX3RhcmdldHMp
IHsKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRoaXMuX3RhcmdldHMudmFsdWVzKCkpIHsK
ICAgICAgICAgICAgIGlmICh0YXJnZXQuaWRlbnRpZmllciA9PT0gdGFyZ2V0SWQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgICAgICAgfQpAQCAtNTUsMjQgKzYyLDE0OSBAQCBX
SS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKKyAgICB0YXJnZXRDcmVhdGVkKHRhcmdldElu
Zm8pCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5UYXJnZXRPYnNlcnZlci4KKwor
ICAgICAgICAvLyBGSVhNRTogRWxpbWluYXRlIHRoaXMgb25jZSB0aGUgbG9jYWwgaW5zcGVjdG9y
IGlzIGNvbmZpZ3VyZWQgdG8gdXNlCisgICAgICAgIC8vIHRoZSBNdWx0aXBsZXhpbmcgY29kZSBw
YXRoLiBUaGVuIHdlIGNhbiBwZXJmb3JtIHRoaXMgaW1tZWRpYXRlbHkKKyAgICAgICAgLy8gaW4g
YFdJLmxvYWRlZGAgaWYgYSBUYXJnZXRBZ2VudCBleGlzdHMuCisgICAgICAgIGlmICh0aGlzLl90
YXJnZXRzLnNpemUgPT09IDApCisgICAgICAgICAgICB0aGlzLmNyZWF0ZU11bHRpcGxleGluZ0Jh
Y2tlbmRUYXJnZXQodGFyZ2V0SW5mbyk7CisKKyAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcg
SW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHRhcmdldEluZm8udGFyZ2V0SWQpOwor
ICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fY3JlYXRlVGFyZ2V0KHRhcmdldEluZm8sIGNvbm5l
Y3Rpb24pOworICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUcmFuc2l0aW9u
KHRhcmdldCk7CisgICAgICAgIHRhcmdldC5pbml0aWFsaXplKCk7CisKKyAgICAgICAgdGhpcy5h
ZGRUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAgICB0YXJnZXREZXN0cm95ZWQodGFyZ2V0SWQp
CisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5UYXJnZXRPYnNlcnZlci4KKworICAg
ICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAgICAgICB0
aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUZXJtaW5hdGlvbih0YXJnZXQpOworICAgICAg
ICB0aGlzLnJlbW92ZVRhcmdldCh0YXJnZXQpOworICAgIH0KKworICAgIGRpc3BhdGNoTWVzc2Fn
ZUZyb21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCisgICAgeworICAgICAgICAvLyBDYWxsZWQg
ZnJvbSBXSS5UYXJnZXRPYnNlcnZlci4KKworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFy
Z2V0cy5nZXQodGFyZ2V0SWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQpOworICAg
ICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0YXJnZXQu
Y29ubmVjdGlvbi5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICB9CisKICAgICBhZGRUYXJnZXQodGFy
Z2V0KQogICAgIHsKLSAgICAgICAgdGhpcy5fdGFyZ2V0cy5hZGQodGFyZ2V0KTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQodGFyZ2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rh
cmdldHMuaGFzKHRhcmdldC5pZGVudGlmaWVyKSk7CisKKyAgICAgICAgdGhpcy5fY2FjaGVkVGFy
Z2V0c0xpc3QgPSBudWxsOworICAgICAgICB0aGlzLl90YXJnZXRzLnNldCh0YXJnZXQuaWRlbnRp
ZmllciwgdGFyZ2V0KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCB7dGFyZ2V0fSk7CiAgICAgfQogCiAg
ICAgcmVtb3ZlVGFyZ2V0KHRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldHMuZGVs
ZXRlKHRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhcmdldCAhPT0gV0kubWFpblRhcmdldCk7CisKKyAgICAgICAgdGhpcy5f
Y2FjaGVkVGFyZ2V0c0xpc3QgPSBudWxsOworICAgICAgICB0aGlzLl90YXJnZXRzLmRlbGV0ZSh0
YXJnZXQuaWRlbnRpZmllcik7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCB7dGFyZ2V0fSk7CiAgICAg
fQogCi0gICAgaW5pdGlhbGl6ZU1haW5UYXJnZXQoKQorICAgIGNyZWF0ZU11bHRpcGxleGluZ0Jh
Y2tlbmRUYXJnZXQodGFyZ2V0SW5mbykKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJ
Lm1haW5UYXJnZXQpOwotICAgICAgICB0aGlzLl90YXJnZXRzLmFkZChXSS5tYWluVGFyZ2V0KTsK
KyAgICAgICAgbGV0IHRhcmdldCA9IG5ldyBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0Owor
ICAgICAgICB0YXJnZXQuaW5pdGlhbGl6ZSgpOworCisgICAgICAgIFdJLmluaXRpYWxpemVCYWNr
ZW5kVGFyZ2V0KHRhcmdldCk7CisKKyAgICAgICAgLy8gQWRkIHRoZSB0YXJnZXQgd2l0aG91dCBk
aXNwYXRjaGluZyBhbiBldmVudC4KKyAgICAgICAgdGhpcy5fdGFyZ2V0cy5zZXQodGFyZ2V0Lmlk
ZW50aWZpZXIsIHRhcmdldCk7CisgICAgfQorCisgICAgY3JlYXRlRGlyZWN0QmFja2VuZFRhcmdl
dCgpCisgICAgeworICAgICAgICBsZXQgdGFyZ2V0ID0gbmV3IFdJLkRpcmVjdEJhY2tlbmRUYXJn
ZXQ7CisgICAgICAgIHRhcmdldC5pbml0aWFsaXplKCk7CisKKyAgICAgICAgV0kuaW5pdGlhbGl6
ZUJhY2tlbmRUYXJnZXQodGFyZ2V0KTsKKworICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVn
Z2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpCisgICAgICAgICAgICBXSS5pbml0
aWFsaXplUGFnZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIHRoaXMuYWRkVGFyZ2V0KHRhcmdl
dCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2NyZWF0ZVRhcmdldCh0YXJnZXRJ
bmZvLCBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgbGV0IHt0YXJnZXRJZCwgdHlwZX0gPSB0
YXJnZXRJbmZvOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFRhcmdl
dEFnZW50LlRhcmdldEluZm9UeXBlLkphdmFTY3JpcHQ6CisgICAgICAgICAgICByZXR1cm4gbmV3
IFdJLkphdmFTY3JpcHRDb250ZXh0VGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiSmF2YVNj
cmlwdCBDb250ZXh0IiksIGNvbm5lY3Rpb24pOworICAgICAgICBjYXNlIFRhcmdldEFnZW50LlRh
cmdldEluZm9UeXBlLlBhZ2U6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlBhZ2VUYXJnZXQo
dGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24pOworICAgICAgICBjYXNl
IFRhcmdldEFnZW50LlRhcmdldEluZm9UeXBlLldvcmtlcjoKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgV0kuV29ya2VyVGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5l
Y3Rpb24pOworICAgICAgICBjYXNlIFRhcmdldEFnZW50LlRhcmdldEluZm9UeXBlLlNlcnZpY2VX
b3JrZXI6CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldCh0YXJnZXRJZCwg
V0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgIH0KKwor
ICAgICAgICB0aHJvdyAiVW5rbm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7CisgICAgfQorCisg
ICAgX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24odGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5QYWdlKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIEZpcnN0IHBhZ2UgdGFyZ2V0LgorICAgICAgICBpZiAo
IVdJLnBhZ2VUYXJnZXQgJiYgIXRoaXMuX3NlZW5QYWdlVGFyZ2V0KSB7CisgICAgICAgICAgICB0
aGlzLl9zZWVuUGFnZVRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBXSS5pbml0aWFsaXplUGFn
ZVRhcmdldCh0YXJnZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gVHJhbnNpdGlvbmluZyBwYWdlIHRhcmdldC4KKyAgICAgICAgV0kudHJhbnNpdGlvblBh
Z2VUYXJnZXQodGFyZ2V0KTsKKyAgICB9CisKKyAgICBfY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0
VGVybWluYXRpb24odGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBX
SS5UYXJnZXQuVHlwZS5QYWdlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRhcmdldCA9PT0gV0kucGFnZVRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3NlZW5QYWdlVGFyZ2V0KTsKKworICAgICAgICAvLyBUZXJtaW5hdGluZyB0aGUg
cGFnZSB0YXJnZXQuCisgICAgICAgIFdJLnRlcm1pbmF0ZVBhZ2VUYXJnZXQodGFyZ2V0KTsKKwor
ICAgICAgICAvLyBFbnN1cmUgd2UgdHJhbnNpdGlvbiBpbiBhIHJlYXNvbmFibGUgYW1vdW50IG9m
IHRpbWUsIG90aGVyd2lzZSBjbG9zZS4KKyAgICAgICAgY29uc3QgdGltZVRvVHJhbnNpdGlvbiA9
IDIwMDA7CisgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90cmFuc2l0aW9uVGltZW91dElkZW50
aWZpZXIpOworICAgICAgICB0aGlzLl90cmFuc2l0aW9uVGltZW91dElkZW50aWZpZXIgPSBzZXRU
aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRp
ZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGlmIChXSS5wYWdlVGFyZ2V0KQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChXSS5pc0VuZ2luZWVyaW5nQnVpbGQp
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFcnJvcjogTm8gbmV3IHBhZ2VUYXJn
ZXQgc29tZSB0aW1lIGFmdGVyIGxhc3QgcGFnZSB0YXJnZXQgd2FzIHRlcm1pbmF0ZWQuIEZhaWxl
ZCB0cmFuc2l0aW9uPyIpOworICAgICAgICAgICAgV0kuY2xvc2UoKTsKKyAgICAgICAgfSwgdGlt
ZVRvVHJhbnNpdGlvbik7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIu
anMKaW5kZXggNTM3MzU0YjJjMDAuLjM3MTNhNzk0N2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtl
ck1hbmFnZXIuanMKQEAgLTQ0LDYgKzQ0LDggQEAgV0kuV29ya2VyTWFuYWdlciA9IGNsYXNzIFdv
cmtlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHdvcmtlckNyZWF0ZWQod29ya2Vy
SWQsIHVybCkKICAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLldvcmtlck9ic2VydmVy
LgorCiAgICAgICAgIGxldCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuV29ya2Vy
Q29ubmVjdGlvbih3b3JrZXJJZCk7CiAgICAgICAgIGxldCB3b3JrZXJUYXJnZXQgPSBuZXcgV0ku
V29ya2VyVGFyZ2V0KHdvcmtlcklkLCB1cmwsIGNvbm5lY3Rpb24pOwogICAgICAgICB3b3JrZXJU
YXJnZXQuaW5pdGlhbGl6ZSgpOwpAQCAtNTgsNiArNjAsOCBAQCBXSS5Xb3JrZXJNYW5hZ2VyID0g
Y2xhc3MgV29ya2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgd29ya2VyVGVybWlu
YXRlZCh3b3JrZXJJZCkKICAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLldvcmtlck9i
c2VydmVyLgorCiAgICAgICAgIGxldCBjb25uZWN0aW9uID0gdGhpcy5fY29ubmVjdGlvbnMudGFr
ZSh3b3JrZXJJZCk7CiAKICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5yZW1vdmVUYXJnZXQoY29u
bmVjdGlvbi50YXJnZXQpOwpAQCAtNjUsNiArNjksOCBAQCBXSS5Xb3JrZXJNYW5hZ2VyID0gY2xh
c3MgV29ya2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZGlzcGF0Y2hNZXNzYWdl
RnJvbVdvcmtlcih3b3JrZXJJZCwgbWVzc2FnZSkKICAgICB7CisgICAgICAgIC8vIENhbGxlZCBm
cm9tIFdJLldvcmtlck9ic2VydmVyLgorCiAgICAgICAgIGxldCBjb25uZWN0aW9uID0gdGhpcy5f
Y29ubmVjdGlvbnMuZ2V0KHdvcmtlcklkKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChjb25u
ZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0RlYnVnL0Jvb3RzdHJhcC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0RlYnVnL0Jvb3RzdHJhcC5qcwppbmRleCBhOWNjMWQxZmEwZC4uNTYzNmM1MzYxNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJh
cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9Cb290
c3RyYXAuanMKQEAgLTIzLDcgKzIzLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYWZ0ZXIgdGhlIGluc3Bl
Y3RvciBoYXMgbG9hZGVkLgorV0kuaXNFbmdpbmVlcmluZ0J1aWxkID0gdHJ1ZTsKKworLy8gVGhp
cyBmdW5jdGlvbiBpcyBpbnZva2VkIGFmdGVyIHRoZSBpbnNwZWN0b3IgaGFzIGxvYWRlZCBhbmQg
aGFzIGEgYmFja2VuZCB0YXJnZXQuCiBXSS5ydW5Cb290c3RyYXBPcGVyYXRpb25zID0gZnVuY3Rp
b24oKSB7CiAgICAgV0kuc2hvd0RlYnVnVUlTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoInNob3ct
ZGVidWctdWkiLCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0RlYnVnL1VuY2F1Z2h0RXhjZXB0aW9uUmVwb3J0ZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9VbmNhdWdodEV4Y2VwdGlvblJlcG9y
dGVyLmpzCmluZGV4IDRjN2RhOTI5ZTAzLi43YzYxODk0NGIwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvVW5jYXVnaHRFeGNlcHRpb25SZXBv
cnRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Zy9V
bmNhdWdodEV4Y2VwdGlvblJlcG9ydGVyLmpzCkBAIC0yNTcsNiArMjU3LDcgQEAgRG9jdW1lbnQg
YW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCBtaWdodCBiZSB1c2VmdWwgaW4gcmVzb2x2
aW5nIHRoZSBwcm9ibGUKICAgICAgICAgPGRkPjxhIGNsYXNzPSJieXBhc3MtZXZlbnQtYmxvY2tp
bmciIGlkPSJkaXNtaXNzLWVycm9yLXNoZWV0Ij5DbGljayB0byBjbG9zZSB0aGlzIHZpZXc8L2E+
IGFuZCByZXR1cm4KICAgICAgICAgdG8gdGhlIFdlYiBJbnNwZWN0b3Igd2l0aG91dCByZWxvYWRp
bmcuIEhvd2V2ZXIsIHNvbWUgdGhpbmdzIG1pZ2h0IG5vdCB3b3JrIHdpdGhvdXQgcmVsb2FkaW5n
IGlmIHRoZSBlcnJvciBjb3JydXB0ZWQgdGhlIEluc3BlY3RvcidzIGludGVybmFsIHN0YXRlLjwv
ZGQ+YDsKIAorICAgIC8vIEZJWE1FOiBSZWxvYWQgV2ViIEluc3BlY3RvciBkb2VzIG5vdCB3b3Jr
IHdpdGggTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC4KICAgICBsZXQgc2hlZXRFbGVtZW50ID0g
d2luZG93Ll9fc2hlZXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgc2hlZXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoInNoZWV0LWNvbnRhaW5lciIpOwogICAgIHNo
ZWV0RWxlbWVudC5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0idW5jYXVnaHQtZXhjZXB0aW9uLXNo
ZWV0Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApp
bmRleCAwMGI1Y2ZmZTlmOS4uY2Y4NTRlZTMxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTI5Nyw3ICsyOTcsMTAgQEAKICAgICA8c2Ny
aXB0IHNyYz0iUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvVGFyZ2V0LmpzIj48L3NjcmlwdD4KIAotICAgIDxzY3JpcHQgc3JjPSJQ
cm90b2NvbC9NYWluVGFyZ2V0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9j
b2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlBy
b3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJQcm90b2NvbC9KYXZhU2NyaXB0Q29udGV4dFRhcmdldC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1BhZ2VUYXJnZXQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMiPjwvc2NyaXB0PgogCiAgICAgPHNj
cmlwdCBzcmM9IlByb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+
CkBAIC0zMTYsNiArMzE5LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvUGFnZU9ic2Vy
dmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvUnVudGltZU9ic2Vy
dmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvU2NyaXB0UHJvZmls
ZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1Rhcmdl
dE9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvVGltZWxp
bmVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtl
ck9ic2VydmVyLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwppbmRl
eCBiMjNiMTRhN2EzYS4uMjEwZTI2YTYwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpz
CkBAIC00NSw2ICs0NSwxMyBAQCBXSS5EZWZhdWx0RGFzaGJvYXJkID0gY2xhc3MgRGVmYXVsdERh
c2hib2FyZCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5f
Y29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuUHJldmlvdXNNZXNzYWdlUmVw
ZWF0Q291bnRVcGRhdGVkLCB0aGlzLl9jb25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkLCB0aGlzKTsK
IAorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3b3JraW5nIGFyb3VuZCB0aGUgb3JkZXIgb2Yg
ZXZlbnRzLiBOb3JtYWwgcGFnZSBuYXZpZ2F0aW9uCisgICAgICAgIC8vIHRyaWdnZXJzIGEgTWFp
blJlc291cmNlIGNoYW5nZSBhbmQgdGhlbiBhIE1haW5GcmFtZSBjaGFuZ2UuIFBhZ2UgVHJhbnNp
dGlvbgorICAgICAgICAvLyB0cmlnZ2VycyBhIE1haW5GcmFtZSBjaGFuZ2UgdGhlbiBhIE1haW5S
ZXNvdXJjZSBjaGFuZ2UuCisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0g
ZmFsc2U7CisKKyAgICAgICAgV0kubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdJLk5v
dGlmaWNhdGlvbi5UcmFuc2l0aW9uUGFnZVRhcmdldCwgdGhpcy5fdHJhbnNpdGlvblBhZ2VUYXJn
ZXQsIHRoaXMpOworCiAgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMDsKICAgICAgICAg
dGhpcy5fcmVzb3VyY2VzU2l6ZSA9IDA7CiAgICAgICAgIHRoaXMuX3RpbWUgPSAwOwpAQCAtMTM1
LDkgKzE0MiwxMSBAQCBXSS5EZWZhdWx0RGFzaGJvYXJkID0gY2xhc3MgRGVmYXVsdERhc2hib2Fy
ZCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFt
ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3RpbWUgPSAwOwotICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDE7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlc1Np
emUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNpemUgfHwgMDsK
KyAgICAgICAgaWYgKCF0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkgeworICAgICAgICAg
ICAgdGhpcy5fdGltZSA9IDA7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDE7
CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gV0kubmV0d29ya01hbmFnZXIubWFp
bkZyYW1lLm1haW5SZXNvdXJjZS5zaXplIHx8IDA7CisgICAgICAgIH0KIAogICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSB0cmFjayByZXNvdXJjZSBzaXplcyBvbiBmcmVzaCBsb2Fkcy4KICAgICAg
ICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1Np
emUpIHsKQEAgLTE0Niw3ICsxNTUsMTIgQEAgV0kuRGVmYXVsdERhc2hib2FyZCA9IGNsYXNzIERl
ZmF1bHREYXNoYm9hcmQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRo
aXMuX2RhdGFEaWRDaGFuZ2UoKTsKLSAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ1RpbWUoKTsK
KworICAgICAgICBpZiAoIXRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0KQorICAgICAgICAg
ICAgdGhpcy5fc3RhcnRVcGRhdGluZ1RpbWUoKTsKKworICAgICAgICBpZiAodGhpcy5fdHJhbnNp
dGlvbmluZ1BhZ2VUYXJnZXQpCisgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRh
cmdldCA9IGZhbHNlOwogICAgIH0KIAogICAgIF9jYXB0dXJpbmdTdG9wcGVkKGV2ZW50KQpAQCAt
MjYxLDYgKzI3NSwxNyBAQCBXSS5EZWZhdWx0RGFzaGJvYXJkID0gY2xhc3MgRGVmYXVsdERhc2hi
b2FyZCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9lcnJvcnMgPSAwOwogICAgICAg
ICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CiAgICAgfQorCisgICAgX3RyYW5zaXRpb25QYWdlVGFy
Z2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25pbmdQYWdlVGFyZ2V0ID0gdHJ1
ZTsKKworICAgICAgICB0aGlzLl90aW1lID0gMDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ291
bnQgPSAwOworICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gMDsKKworICAgICAgICB0aGlz
Ll9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfQogfTsKIAogV0kuRGVmYXVsdERhc2hib2FyZC5FdmVu
dCA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0Nvbm5lY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCmluZGV4IDYzMWZhZDlkZTEyLi5kNWY2MDdjY2E1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
Q29ubmVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9Db25uZWN0aW9uLmpzCkBAIC0zMCwxMSArMzAsMTIgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAorSW5zcGVjdG9yQmFja2VuZC5nbG9iYWxTZXF1ZW5jZUlkID0gMTsKKwogSW5zcGVj
dG9yQmFja2VuZC5Db25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24K
IHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICB0aGlzLl9sYXN0U2VxdWVuY2VJ
ZCA9IDE7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXMgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9hZ2VudHMgPSB7fTsKICAgICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107
CkBAIC0xMDAsNyArMTAxLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uID0gY2xhc3Mg
SW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICAgICAgfQogCiAgICAgICAgIGxldCBzZXF1
ZW5jZUlkID0gbWVzc2FnZU9iamVjdFsiaWQiXTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fcGVuZGluZ1Jlc3BvbnNlcy5oYXMoc2VxdWVuY2VJZCksIHNlcXVlbmNlSWQsIHRoaXMuX3Bl
bmRpbmdSZXNwb25zZXMpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wZW5kaW5nUmVz
cG9uc2VzLmhhcyhzZXF1ZW5jZUlkKSwgc2VxdWVuY2VJZCwgdGhpcy5fdGFyZ2V0ID8gdGhpcy5f
dGFyZ2V0LmlkZW50aWZpZXIgOiAiKHVua25vd24pIiwgdGhpcy5fcGVuZGluZ1Jlc3BvbnNlcyk7
CiAKICAgICAgICAgbGV0IHJlc3BvbnNlRGF0YSA9IHRoaXMuX3BlbmRpbmdSZXNwb25zZXMudGFr
ZShzZXF1ZW5jZUlkKSB8fCB7fTsKICAgICAgICAgbGV0IHtyZXF1ZXN0LCBjb21tYW5kLCBjYWxs
YmFjaywgcHJvbWlzZX0gPSByZXNwb25zZURhdGE7CkBAIC0yMDcsNyArMjA4LDcgQEAgSW5zcGVj
dG9yQmFja2VuZC5Db25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24K
IAogICAgIF9zZW5kQ29tbWFuZFRvQmFja2VuZFdpdGhDYWxsYmFjayhjb21tYW5kLCBwYXJhbWV0
ZXJzLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGxldCBzZXF1ZW5jZUlkID0gdGhpcy5fbGFz
dFNlcXVlbmNlSWQrKzsKKyAgICAgICAgbGV0IHNlcXVlbmNlSWQgPSBJbnNwZWN0b3JCYWNrZW5k
Lmdsb2JhbFNlcXVlbmNlSWQrKzsKIAogICAgICAgICBsZXQgbWVzc2FnZU9iamVjdCA9IHsKICAg
ICAgICAgICAgICJpZCI6IHNlcXVlbmNlSWQsCkBAIC0yMjgsNyArMjI5LDcgQEAgSW5zcGVjdG9y
QmFja2VuZC5Db25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KIAog
ICAgIF9zZW5kQ29tbWFuZFRvQmFja2VuZEV4cGVjdGluZ1Byb21pc2UoY29tbWFuZCwgcGFyYW1l
dGVycykKICAgICB7Ci0gICAgICAgIGxldCBzZXF1ZW5jZUlkID0gdGhpcy5fbGFzdFNlcXVlbmNl
SWQrKzsKKyAgICAgICAgbGV0IHNlcXVlbmNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kLmdsb2JhbFNl
cXVlbmNlSWQrKzsKIAogICAgICAgICBsZXQgbWVzc2FnZU9iamVjdCA9IHsKICAgICAgICAgICAg
ICJpZCI6IHNlcXVlbmNlSWQsCkBAIC0yNzIsNyArMjczLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5D
b25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICB9CiB9Owog
Ci1JbnNwZWN0b3JCYWNrZW5kLk1haW5Db25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZE1haW5Db25uZWN0aW9uIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uCitJbnNw
ZWN0b3JCYWNrZW5kLkJhY2tlbmRDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZEJh
Y2tlbmRDb25uZWN0aW9uIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uCiB7CiAg
ICAgY29uc3RydWN0b3IoKQogICAgIHsKQEAgLTI5NSwxMCArMjk2LDggQEAgSW5zcGVjdG9yQmFj
a2VuZC5Xb3JrZXJDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZFdvcmtlckNvbm5l
Y3Rpb24gZXh0ZW4KIAogICAgICAgICB0aGlzLl93b3JrZXJJZCA9IHdvcmtlcklkOwogCi0gICAg
ICAgIC8vIENsb25lIGFnZW50cyB0aGF0IHdpbGwgdXNlIHRoaXMgY29ubmVjdGlvbi4KLSAgICAg
ICAgZm9yIChsZXQgZG9tYWluIGluIEluc3BlY3RvckJhY2tlbmQuX2FnZW50cykgewotICAgICAg
ICAgICAgbGV0IGFnZW50ID0gSW5zcGVjdG9yQmFja2VuZC5fYWdlbnRzW2RvbWFpbl07Ci0gICAg
ICAgICAgICBsZXQgY2xvbmUgPSBPYmplY3QuY3JlYXRlKEluc3BlY3RvckJhY2tlbmQuX2FnZW50
c1tkb21haW5dKTsKKyAgICAgICAgZm9yIChsZXQgW2RvbWFpbiwgYWdlbnRdIG9mIE9iamVjdC5l
bnRyaWVzKEluc3BlY3RvckJhY2tlbmQuX2FnZW50cykpIHsKKyAgICAgICAgICAgIGxldCBjbG9u
ZSA9IE9iamVjdC5jcmVhdGUoYWdlbnQpOwogICAgICAgICAgICAgY2xvbmUuY29ubmVjdGlvbiA9
IHRoaXM7CiAgICAgICAgICAgICBpZiAoYWdlbnQuZGlzcGF0Y2hlcikKICAgICAgICAgICAgICAg
ICBjbG9uZS5kaXNwYXRjaGVyID0gbmV3IGFnZW50LmRpc3BhdGNoZXIuY29uc3RydWN0b3I7CkBA
IC0zMTIsNCArMzExLDI3IEBAIEluc3BlY3RvckJhY2tlbmQuV29ya2VyQ29ubmVjdGlvbiA9IGNs
YXNzIEluc3BlY3RvckJhY2tlbmRXb3JrZXJDb25uZWN0aW9uIGV4dGVuCiAgICAgfQogfTsKIAot
SW5zcGVjdG9yQmFja2VuZC5tYWluQ29ubmVjdGlvbiA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLk1h
aW5Db25uZWN0aW9uOworSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uID0gY2xhc3Mg
SW5zcGVjdG9yQmFja2VuZFRhcmdldENvbm5lY3Rpb24gZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5k
LkNvbm5lY3Rpb24KK3sKKyAgICBjb25zdHJ1Y3Rvcih0YXJnZXRJZCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdGFyZ2V0SWQgPSB0YXJnZXRJZDsKKworICAgICAg
ICBmb3IgKGxldCBbZG9tYWluLCBhZ2VudF0gb2YgT2JqZWN0LmVudHJpZXMoSW5zcGVjdG9yQmFj
a2VuZC5fYWdlbnRzKSkgeworICAgICAgICAgICAgbGV0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShh
Z2VudCk7CisgICAgICAgICAgICBjbG9uZS5jb25uZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAg
IGlmIChhZ2VudC5kaXNwYXRjaGVyKQorICAgICAgICAgICAgICAgIGNsb25lLmRpc3BhdGNoZXIg
PSBuZXcgYWdlbnQuZGlzcGF0Y2hlci5jb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIHRoaXMuX2Fn
ZW50c1tkb21haW5dID0gY2xvbmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZW5kTWVzc2Fn
ZVRvQmFja2VuZChtZXNzYWdlKQorICAgIHsKKyAgICAgICAgVGFyZ2V0QWdlbnQuc2VuZE1lc3Nh
Z2VUb1RhcmdldCh0aGlzLl90YXJnZXRJZCwgbWVzc2FnZSk7CisgICAgfQorfTsKKworSW5zcGVj
dG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbiA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLkJhY2tl
bmRDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxMzdmNDAzM2Y2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGly
ZWN0QmFja2VuZFRhcmdldC5qcwpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhp
cyBjbGFzcyBpcyB1c2VkIHdoZW4gY29ubmVjdGluZyBkaXJlY3RseSB0byBhIHNpbmdsZSB0YXJn
ZXQuCisvLyBUaGUgbWFpbiBjb25uZWN0aW9uIGlzIGEgZGlyZWN0IGNvbm5lY3Rpb24gdG8gYSB0
YXJnZXQuCisKK1dJLkRpcmVjdEJhY2tlbmRUYXJnZXQgPSBjbGFzcyBEaXJlY3RCYWNrZW5kVGFy
Z2V0IGV4dGVuZHMgV0kuVGFyZ2V0Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAg
ICAgbGV0IHt0eXBlLCBkaXNwbGF5TmFtZX0gPSBEaXJlY3RCYWNrZW5kVGFyZ2V0LmNvbm5lY3Rp
b25JbmZvRm9yRGVidWdnYWJsZSgpOworCisgICAgICAgIHN1cGVyKCJkaXJlY3QiLCBkaXNwbGF5
TmFtZSwgdHlwZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CisKKyAgICAg
ICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMs
IFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRp
c3BsYXlOYW1lLCB0cnVlLCBudWxsKTsKKyAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVs
bDsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBjb25uZWN0aW9uSW5mb0Zv
ckRlYnVnZ2FibGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChXSS5zaGFyZWRBcHAuZGVidWdn
YWJsZVR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0Ogor
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlw
ZS5KU0NvbnRleHQsCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IFdJLlVJU3RyaW5nKCJK
YXZhU2NyaXB0IENvbnRleHQiKSwKKyAgICAgICAgICAgIH07CisgICAgICAgIGNhc2UgV0kuRGVi
dWdnYWJsZVR5cGUuU2VydmljZVdvcmtlcjoKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAgICAgdHlwZTogV0kuVGFyZ2V0LlR5cGUuU2VydmljZVdvcmtlciwKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwKKyAgICAgICAg
ICAgIH07CisgICAgICAgIGNhc2UgV0kuRGVidWdnYWJsZVR5cGUuV2ViOgorICAgICAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlwZS5QYWdlLAorICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBXSS5VSVN0cmluZygiUGFnZSIpLAorICAgICAgICAg
ICAgfTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuZXhw
ZWN0ZWQgZGVidWdnYWJsZSB0eXBlOiAiLCBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXSS5UYXJnZXQuVHlw
ZS5QYWdlLAorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBXSS5VSVN0cmluZygiTWFpbiIp
LAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFByb3RlY3RlZCAo
VGFyZ2V0KQorCisgICAgZ2V0IG1haW5SZXNvdXJjZSgpCisgICAgeworICAgICAgICBpZiAodGhp
cy5fbWFpblJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21haW5SZXNvdXJjZTsK
KworICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwor
ICAgICAgICByZXR1cm4gbWFpbkZyYW1lID8gbWFpbkZyYW1lLm1haW5SZXNvdXJjZSA6IG51bGw7
CisgICAgfQorCisgICAgc2V0IG1haW5SZXNvdXJjZShyZXNvdXJjZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX21haW5SZXNvdXJjZSA9IHJlc291cmNlOworICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNr
ZW5kLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yQmFja2VuZC5qcwppbmRleCA0OWVjOWI3MTNjMi4uNzZiNjJjZjY0ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckJhY2tlbmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwpAQCAtMTU3LDEzICsxNTcsMTMgQEAgSW5zcGVjdG9y
QmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAKICAgICBkaXNwYXRj
aChtZXNzYWdlKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5tYWluQ29ubmVjdGlv
bi5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29u
bmVjdGlvbi5kaXNwYXRjaChtZXNzYWdlKTsKICAgICB9CiAKICAgICBydW5BZnRlclBlbmRpbmdE
aXNwYXRjaGVzKHNjcmlwdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBy
ZXNwZWN0IHBlbmRpbmcgZGlzcGF0Y2hlcyBpbiBhbGwgY29ubmVjdGlvbnM/Ci0gICAgICAgIElu
c3BlY3RvckJhY2tlbmQubWFpbkNvbm5lY3Rpb24ucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhz
Y3JpcHQpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uLnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoc2NyaXB0KTsKICAgICB9CiAKICAgICBhY3RpdmF0ZURvbWFp
bihkb21haW5OYW1lLCBhY3RpdmF0aW9uRGVidWdnYWJsZVR5cGVzKQpAQCAtMjIwLDcgKzIyMCw3
IEBAIEluc3BlY3RvckJhY2tlbmQuQWdlbnQgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQWdlbnQK
ICAgICAgICAgdGhpcy5fZG9tYWluTmFtZSA9IGRvbWFpbk5hbWU7CiAKICAgICAgICAgLy8gRGVm
YXVsdCBjb25uZWN0aW9uIGlzIHRoZSBtYWluIGNvbm5lY3Rpb24uCi0gICAgICAgIHRoaXMuX2Nv
bm5lY3Rpb24gPSBJbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uOworICAgICAgICB0aGlz
Ll9jb25uZWN0aW9uID0gSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbjsKICAgICAg
ICAgdGhpcy5fZGlzcGF0Y2hlciA9IG51bGw7CiAKICAgICAgICAgLy8gQWdlbnRzIGFyZSBhbHdh
eXMgY3JlYXRlZCwgYnV0IGFyZSBvbmx5IHVzZWFibGUgYWZ0ZXIgdGhleSBhcmUgYWN0aXZhdGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSmF2YVNjcmlwdENvbnRleHRUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9KYXZhU2NyaXB0Q29udGV4dFRhcmdldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDhmZGU4MGEzYjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9KYXZhU2Ny
aXB0Q29udGV4dFRhcmdldC5qcwpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuSmF2
YVNjcmlwdENvbnRleHRUYXJnZXQgPSBjbGFzcyBKYXZhU2NyaXB0Q29udGV4dFRhcmdldCBleHRl
bmRzIFdJLlRhcmdldAoreworICAgIGNvbnN0cnVjdG9yKHRhcmdldElkLCBuYW1lLCBjb25uZWN0
aW9uKQorICAgIHsKKyAgICAgICAgc3VwZXIodGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldC5UeXBl
LkpTQ29udGV4dCwgY29ubmVjdGlvbik7CisKKyAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4
dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExl
dmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRoaXMuZGlzcGxheU5hbWUsIGZhbHNlLCBu
dWxsKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRmMDg0ZmVkNzg0Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0LmpzCisrKyAvZGV2L251bGwK
QEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLk1haW5UYXJnZXQgPSBjbGFzcyBNYWlu
VGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0Ci17Ci0gICAgY29uc3RydWN0b3IoY29ubmVjdGlvbikK
LSAgICB7Ci0gICAgICAgIGxldCB7dHlwZSwgZGlzcGxheU5hbWV9ID0gTWFpblRhcmdldC5tYWlu
Q29ubmVjdGlvbkluZm8oKTsKLQotICAgICAgICBzdXBlcigibWFpbiIsIGRpc3BsYXlOYW1lLCB0
eXBlLCBJbnNwZWN0b3JCYWNrZW5kLm1haW5Db25uZWN0aW9uKTsKLQotICAgICAgICB0aGlzLl9l
eGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGlt
ZU1hbmFnZXIuVG9wTGV2ZWxFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgZGlzcGxheU5hbWUs
IHRydWUsIG51bGwpOwotICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2UgPSBudWxsOwotICAgIH0K
LQotICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIG1haW5Db25uZWN0aW9uSW5mbygpCi0gICAg
ewotICAgICAgICBzd2l0Y2ggKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSkgewotICAgICAg
ICBjYXNlIFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQ6Ci0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIHR5cGU6IFdJLlRhcmdldC5UeXBlLkpTQ29udGV4dCwKLSAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogV0kuVUlTdHJpbmcoIkphdmFTY3JpcHQgQ29udGV4dCIp
LAotICAgICAgICAgICAgfTsKLSAgICAgICAgY2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5TZXJ2aWNl
V29ya2VyOgotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBXSS5U
YXJnZXQuVHlwZS5TZXJ2aWNlV29ya2VyLAotICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBX
SS5VSVN0cmluZygiU2VydmljZVdvcmtlciIpLAotICAgICAgICAgICAgfTsKLSAgICAgICAgY2Fz
ZSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWI6Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAg
ICAgICAgIHR5cGU6IFdJLlRhcmdldC5UeXBlLlBhZ2UsCi0gICAgICAgICAgICAgICAgZGlzcGxh
eU5hbWU6IFdJLlVJU3RyaW5nKCJQYWdlIiksCi0gICAgICAgICAgICB9OwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5leHBlY3RlZCBkZWJ1Z2dhYmxlIHR5
cGU6ICIsIFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIHR5cGU6IFdJLlRhcmdldC5UeXBlLlBhZ2UsCi0gICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6IFdJLlVJU3RyaW5nKCJNYWluIiksCi0gICAgICAgICAgICB9Owot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkIChUYXJnZXQpCi0KLSAgICBnZXQg
bWFpblJlc291cmNlKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tYWluUmVzb3VyY2UpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFpblJlc291cmNlOwotCi0gICAgICAgIGxldCBtYWlu
RnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7Ci0gICAgICAgIHJldHVybiBtYWlu
RnJhbWUgPyBtYWluRnJhbWUubWFpblJlc291cmNlIDogbnVsbDsKLSAgICB9Ci0KLSAgICBzZXQg
bWFpblJlc291cmNlKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdGhpcy5fbWFpblJlc291cmNl
ID0gcmVzb3VyY2U7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdC
YWNrZW5kVGFyZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w
NWQ1OWIxY2Q5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCB3aGVuIGNvbm5lY3Rp
bmcgdG8gYSB0YXJnZXQgd2hpY2ggbXVsdGlwbGV4ZXMgdG8gb3RoZXIgdGFyZ2V0cy4KKy8vIFRo
ZSBtYWluIGNvbm5lY3Rpb24gaXMgdG8gYSB0YXJnZXQgdGhhdCwgY3VycmVudGx5LCBoYXMgb25s
eSBhIFRhcmdldCBhZ2VudC4KKy8vIEFsbCBvdGhlciBUYXJnZXRzIHdpbGwgaGF2ZSB0aGVpciBt
ZXNzYWdlcyBiZSBtdWx0aXBsZXhlZCB0aHJvdWdoIHRoaXMKKy8vIG1haW4gY29ubmVjdGlvbidz
IFRhcmdldCBhZ2VudC4KKworV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCA9IGNsYXNzIE11
bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKK3sKKyAgICBjb25zdHJ1
Y3RvcigpCisgICAgeworICAgICAgICBjb25zdCB0eXBlID0gV0kuVGFyZ2V0LlR5cGUuUGFnZTsK
KyAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiUGFnZSIpOworCisgICAg
ICAgIHN1cGVyKCJtdWx0aSIsIGRpc3BsYXlOYW1lLCB0eXBlLCBJbnNwZWN0b3JCYWNrZW5kLmJh
Y2tlbmRDb25uZWN0aW9uKTsKKworICAgICAgICBsZXQgYWdlbnRzID0gdGhpcy5fYWdlbnRzOwor
ICAgICAgICB0aGlzLl9hZ2VudHMgPSB7CisgICAgICAgICAgICBUYXJnZXQ6IGFnZW50cy5UYXJn
ZXQsCisgICAgICAgIH07CisgICAgfQorCisgICAgLy8gVGFyZ2V0CisKKyAgICBpbml0aWFsaXpl
KCkKKyAgICB7CisgICAgICAgIC8vIEludGVudGlvbmFsbHkgZG8gbm90aGluZywgaW5jbHVkaW5n
IG5vdCBjYWxsaW5nIHN1cGVyLgorICAgICAgICAvLyBObyBhZ2VudHMgb3RoZXIgdGhhbiB0aGUg
VGFyZ2V0QWdlbnQsIG5vdGhpbmcgdG8gaW5pdGlhbGl6ZS4KKyAgICB9CisKKyAgICAvLyBQcm90
ZWN0ZWQgKFRhcmdldCkKKworICAgIGdldCBuYW1lKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
ZXJyb3IoIkNhbGxlZCBuYW1lIG9uIGEgTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCIpOworICAg
ICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlBhZ2UiKTsKKyAgICB9CisKKyAgICBnZXQgZXhlY3V0
aW9uQ29udGV4dCgpCisgICAgeworICAgICAgICBjb25zb2xlLmVycm9yKCJDYWxsZWQgZXhlY3V0
aW9uQ29udGV4dCBvbiBhIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQiKTsKKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgfQorCisgICAgZ2V0IG1haW5SZXNvdXJjZSgpCisgICAgeworICAgICAg
ICBjb25zb2xlLmVycm9yKCJDYWxsZWQgbWFpblJlc291cmNlIG9uIGEgTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldCIpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdl
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VU
YXJnZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlMmYwYzJj
YThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V0kuUGFnZVRhcmdldCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKK3sKKyAg
ICBjb25zdHJ1Y3Rvcih0YXJnZXRJZCwgbmFtZSwgY29ubmVjdGlvbikKKyAgICB7CisgICAgICAg
IHN1cGVyKHRhcmdldElkLCBuYW1lLCBXSS5UYXJnZXQuVHlwZS5QYWdlLCBjb25uZWN0aW9uKTsK
KworICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRl
eHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRp
ZmllciwgdGhpcy5kaXNwbGF5TmFtZSwgdHJ1ZSwgbnVsbCk7CisgICAgfQorfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldE9i
c2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
VGFyZ2V0T2JzZXJ2ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjMxYjZmY2ZjMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0T2JzZXJ2ZXIuanMKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dJLlRhcmdldE9ic2VydmVyID0gY2xhc3MgVGFyZ2V0T2JzZXJ2ZXIKK3sK
KyAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIlRhcmdldCIgZG9tYWluLgorCisgICAgdGFy
Z2V0Q3JlYXRlZCh0YXJnZXRJbmZvKQorICAgIHsKKyAgICAgICAgV0kudGFyZ2V0TWFuYWdlci50
YXJnZXRDcmVhdGVkKHRhcmdldEluZm8pOworICAgIH0KKworICAgIHRhcmdldERlc3Ryb3llZCh0
YXJnZXRJZCkKKyAgICB7CisgICAgICAgIFdJLnRhcmdldE1hbmFnZXIudGFyZ2V0RGVzdHJveWVk
KHRhcmdldElkKTsKKyAgICB9CisKKyAgICBkaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KHRhcmdl
dElkLCBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5kaXNwYXRjaE1l
c3NhZ2VGcm9tVGFyZ2V0KHRhcmdldElkLCBtZXNzYWdlKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IGJlNjBkZDMxNTU4
Li5hODBkYjM3N2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QuaHRtbApAQCAtNzMsNyArNzMsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9N
ZXNzYWdlRGlzcGF0Y2hlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29s
L1RhcmdldC5qcyI+PC9zY3JpcHQ+CiAKLSAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTWFpblRh
cmdldC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RpcmVjdEJhY2tl
bmRUYXJnZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9j
b2wvV29ya2VyVGFyZ2V0LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9JbnNwZWN0b3JPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CkBAIC05MSw2ICs5Miw3IEBACiAgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL1JlbW90ZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlByb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlByb3RvY29sL1NjcmlwdFByb2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UYXJnZXRPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVz
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwpp
bmRleCA1YzZiOWRjMDBhYi4uYWQxYzU0MmE5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAgLTI3LDYgKzI3LDcgQEAgV0kubG9h
ZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRz
IGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCiAgICAgLy8gVGhlIGluaXRpYWxpemF0aW9uIG9y
ZGVyIHNob3VsZCBtYXRjaCB0aGUgc2FtZSBpbiBNYWluLmpzLgorICAgIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJUYXJnZXREaXNwYXRjaGVyKG5ldyBXSS5UYXJnZXRPYnNlcnZlcik7CiAgICAg
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlckluc3BlY3RvckRpc3BhdGNoZXIobmV3IFdJLkluc3Bl
Y3Rvck9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUGFnZURpc3BhdGNo
ZXIobmV3IFdJLlBhZ2VPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNv
bnNvbGVEaXNwYXRjaGVyKG5ldyBXSS5Db25zb2xlT2JzZXJ2ZXIpOwpAQCAtNzEsMTUgKzcyLDU1
IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBXSS5zZXR0aW5ncy5zaG93U2hhZG93RE9N
LnZhbHVlID0gdHJ1ZTsKIAogICAgIC8vIFRhcmdldHMuCi0gICAgV0kubWFpblRhcmdldCA9IG5l
dyBXSS5NYWluVGFyZ2V0OwotICAgIFdJLm1haW5UYXJnZXQuaW5pdGlhbGl6ZSgpOwotICAgIFdJ
LnBhZ2VUYXJnZXQgPSBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2Fi
bGVUeXBlLldlYiA/IFdJLm1haW5UYXJnZXQgOiBudWxsOworICAgIFdJLmJhY2tlbmRUYXJnZXQg
PSBudWxsOworICAgIFdJLnBhZ2VUYXJnZXQgPSBudWxsOworCisgICAgLy8gVGVzdHMgZGlyZWN0
bHkgY29ubmVjdCB0byBhIHBhZ2UgdGFyZ2V0LgorICAgIFdJLnRhcmdldE1hbmFnZXIuY3JlYXRl
RGlyZWN0QmFja2VuZFRhcmdldCgpOworfTsKKworV0kuaW5pdGlhbGl6ZUJhY2tlbmRUYXJnZXQg
PSBmdW5jdGlvbih0YXJnZXQpCit7CisgICAgV0kuYmFja2VuZFRhcmdldCA9IHRhcmdldDsKKwor
ICAgIFdJLnJlc2V0TWFpbkV4ZWN1dGlvbkNvbnRleHQoKTsKK307CisKK1dJLmluaXRpYWxpemVQ
YWdlVGFyZ2V0ID0gZnVuY3Rpb24odGFyZ2V0KQoreworICAgIFdJLnBhZ2VUYXJnZXQgPSB0YXJn
ZXQ7CisKKyAgICBXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbihXSS5wYWdlVGFy
Z2V0LmNvbm5lY3Rpb24pOworCisgICAgV0kucmVzZXRNYWluRXhlY3V0aW9uQ29udGV4dCgpOwor
fTsKKworV0kudHJhbnNpdGlvblBhZ2VUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCit7CisgICAg
Y29uc29sZS5lcnJvcigiV0kudHJhbnNpdGlvblBhZ2VUYXJnZXQgc2hvdWxkIG5vdCBiZSByZWFj
aGVkIGluIHRlc3RzLiIpOworfTsKKworV0kudGVybWluYXRlUGFnZVRhcmdldCA9IGZ1bmN0aW9u
KHRhcmdldCkKK3sKKyAgICBjb25zb2xlLmVycm9yKCJXSS50ZXJtaW5hdGVQYWdlVGFyZ2V0IHNo
b3VsZCBub3QgYmUgcmVhY2hlZCBpbiB0ZXN0cy4iKTsKK307CisKK1dJLnJlc2V0TWFpbkV4ZWN1
dGlvbkNvbnRleHQgPSBmdW5jdGlvbigpCit7CisgICAgY29uc29sZS5hc3NlcnQoV0kubWFpblRh
cmdldC5leGVjdXRpb25Db250ZXh0KTsKIAotICAgIC8vIFBvc3QtdGFyZ2V0IGluaXRpYWxpemF0
aW9uLgotICAgIFdJLnRhcmdldE1hbmFnZXIuaW5pdGlhbGl6ZU1haW5UYXJnZXQoKTsKICAgICBX
SS5ydW50aW1lTWFuYWdlci5hY3RpdmVFeGVjdXRpb25Db250ZXh0ID0gV0kubWFpblRhcmdldC5l
eGVjdXRpb25Db250ZXh0OwogfTsKIAorV0kucmVkaXJlY3RHbG9iYWxBZ2VudHNUb0Nvbm5lY3Rp
b24gPSBmdW5jdGlvbihjb25uZWN0aW9uKQoreworICAgIC8vIFRoaXMgbWFrZXMgZ2xvYmFsIHdp
bmRvdy5Gb29BZ2VudCBkaXNwYXRjaCB0byB0aGUgYWN0aXZlIHBhZ2UgdGFyZ2V0LgorICAgIGZv
ciAobGV0IFtkb21haW4sIGFnZW50XSBvZiBPYmplY3QuZW50cmllcyhJbnNwZWN0b3JCYWNrZW5k
Ll9hZ2VudHMpKSB7CisgICAgICAgIGlmIChkb21haW4gIT09ICJUYXJnZXQiKQorICAgICAgICAg
ICAgYWdlbnQuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgfQorfTsKKwogV0kuY29udGVu
dExvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQg
aXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCkBAIC0xMDMsNiArMTQ0LDExIEBAIFdJ
LnBlcmZvcm1PbmVUaW1lRnJvbnRlbmRJbml0aWFsaXphdGlvbnNVc2luZ1RhcmdldCA9IGZ1bmN0
aW9uKHRhcmdldCkKICAgICB9CiB9OwogCitPYmplY3QuZGVmaW5lUHJvcGVydHkoV0ksICJtYWlu
VGFyZ2V0IiwKK3sKKyAgICBnZXQoKSB7IHJldHVybiBXSS5wYWdlVGFyZ2V0IHx8IFdJLmJhY2tl
bmRUYXJnZXQ7IH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoV0ksICJ0YXJnZXRzIiwK
IHsKICAgICBnZXQoKSB7IHJldHVybiBXSS50YXJnZXRNYW5hZ2VyLnRhcmdldHM7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2Vy
U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggZmRiZThiODczYjMuLjM1OTExYWI2N2Ji
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpAQCAtMTgzLDE3ICsxODMsMTMg
QEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBl
eHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgdGhpcy5fY2FsbFN0YWNrVHJlZU91
dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZShzdXBwcmVzc0ZpbHRlcmluZyk7
CiAgICAgICAgIHRoaXMuX2NhbGxTdGFja1RyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0ku
VHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl90cmVlU2VsZWN0aW9u
RGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgICAgICB0aGlzLl9tYWluVGFyZ2V0VHJlZUVsZW1lbnQg
PSBuZXcgV0kuVGhyZWFkVHJlZUVsZW1lbnQoV0kubWFpblRhcmdldCk7Ci0gICAgICAgIHRoaXMu
X2NhbGxTdGFja1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRoaXMuX21haW5UYXJnZXRUcmVlRWxl
bWVudCk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlQ2FsbFN0YWNrVHJlZU91dGxpbmUoKTsKLQog
ICAgICAgICB0aGlzLl9jYWxsU3RhY2tSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7CiAg
ICAgICAgIHRoaXMuX2NhbGxTdGFja1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NhbGxT
dGFja1RyZWVPdXRsaW5lLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2NhbGxTdGFja0dyb3Vw
ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX2NhbGxTdGFja1Jvd10pOwogICAg
ICAgICB0aGlzLl9jYWxsU3RhY2tTZWN0aW9uID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uKCJjYWxs
LXN0YWNrIiwgV0kuVUlTdHJpbmcoIkNhbGwgU3RhY2siKSwgW3RoaXMuX2NhbGxTdGFja0dyb3Vw
XSk7CiAKKyAgICAgICAgdGhpcy5fbWFpblRhcmdldFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAg
ICAgdGhpcy5fYWN0aXZlQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBudWxsOwogCiAgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSBudWxsOwpAQCAtMjE1LDEwICsyMTEsMTQgQEAg
V0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRl
bmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuZG9t
YWlucy5EZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucyAmJiBXSS5zZXR0aW5ncy5zaG93QXNz
ZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LnZhbHVlKQogICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludCk7CiAKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisg
ICAgICAgICAgICB0aGlzLl9hZGRUYXJnZXQodGFyZ2V0KTsKKyAgICAgICAgdGhpcy5fdXBkYXRl
Q2FsbFN0YWNrVHJlZU91dGxpbmUoKTsKKwogICAgICAgICBpZiAoV0kubmV0d29ya01hbmFnZXIu
bWFpbkZyYW1lKQogICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2VzUmVjdXJzaXZlbHlGb3JG
cmFtZShXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUpOwogCi0gICAgICAgIGZvciAodmFyIHNj
cmlwdCBvZiBXSS5kZWJ1Z2dlck1hbmFnZXIua25vd25Ob25SZXNvdXJjZVNjcmlwdHMpCisgICAg
ICAgIGZvciAobGV0IHNjcmlwdCBvZiBXSS5kZWJ1Z2dlck1hbmFnZXIua25vd25Ob25SZXNvdXJj
ZVNjcmlwdHMpCiAgICAgICAgICAgICB0aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsKIAogICAgICAg
ICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRlZCkgewpAQCAtNzMyLDEwICs3MzIs
MTggQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5l
bCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgIF90YXJnZXRBZGRlZChldmVudCkK
ICAgICB7Ci0gICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAgICAg
dGhpcy5fYWRkVGFyZ2V0KGV2ZW50LmRhdGEudGFyZ2V0KTsKKyAgICB9CisKKyAgICBfYWRkVGFy
Z2V0KHRhcmdldCkKKyAgICB7CiAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IG5ldyBXSS5UaHJl
YWRUcmVlRWxlbWVudCh0YXJnZXQpOwogICAgICAgICB0aGlzLl9jYWxsU3RhY2tUcmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CiAKKyAgICAgICAgLy8gRklYTUU6IFdoZW4gV0ku
bWFpblRhcmdldCBjaGFuZ2VzPworICAgICAgICBpZiAodGFyZ2V0ID09PSBXSS5tYWluVGFyZ2V0
KQorICAgICAgICAgICAgdGhpcy5fbWFpblRhcmdldFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7
CisKICAgICAgICAgdGhpcy5fdXBkYXRlQ2FsbFN0YWNrVHJlZU91dGxpbmUoKTsKICAgICB9CiAK
QEAgLTc1MCw5ICs3NTgsMTAgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1
Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgIF91cGRh
dGVDYWxsU3RhY2tUcmVlT3V0bGluZSgpCiAgICAgewotICAgICAgICBsZXQgc2luZ2xlVGhyZWFk
U2hvd2luZyA9IFdJLnRhcmdldHMuc2l6ZSA9PT0gMTsKKyAgICAgICAgbGV0IHNpbmdsZVRocmVh
ZFNob3dpbmcgPSBXSS50YXJnZXRzLmxlbmd0aCA8PSAxOwogICAgICAgICB0aGlzLl9jYWxsU3Rh
Y2tUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10aHJlYWQiLCBz
aW5nbGVUaHJlYWRTaG93aW5nKTsKLSAgICAgICAgdGhpcy5fbWFpblRhcmdldFRyZWVFbGVtZW50
LnNlbGVjdGFibGUgPSAhc2luZ2xlVGhyZWFkU2hvd2luZzsKKyAgICAgICAgaWYgKHRoaXMuX21h
aW5UYXJnZXRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMuX21haW5UYXJnZXRUcmVlRWxl
bWVudC5zZWxlY3RhYmxlID0gIXNpbmdsZVRocmVhZFNob3dpbmc7CiAgICAgfQogCiAgICAgX2hh
bmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlKGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OZXR3b3JrVGFibGVDb250ZW50Vmlldy5qcwppbmRleCA4ZDlkY2JlNTNhZi4uZjhmZjVh
ZGQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCkBAIC0xMzgs
NiArMTM4LDEzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIFdJLnRpbWVsaW5l
TWFuYWdlci5wZXJzaXN0ZW50TmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGlt
ZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVk
LCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9uZWVkc0luaXRpYWxQb3B1bGF0ZSA9IHRydWU7CisK
KyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIG9yZGVyIG9mIGV2
ZW50cy4gTm9ybWFsIHBhZ2UgbmF2aWdhdGlvbgorICAgICAgICAvLyB0cmlnZ2VycyBhIE1haW5S
ZXNvdXJjZSBjaGFuZ2UgYW5kIHRoZW4gYSBNYWluRnJhbWUgY2hhbmdlLiBQYWdlIFRyYW5zaXRp
b24KKyAgICAgICAgLy8gdHJpZ2dlcnMgYSBNYWluRnJhbWUgY2hhbmdlIHRoZW4gYSBNYWluUmVz
b3VyY2UgY2hhbmdlLgorICAgICAgICB0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCA9IGZh
bHNlOworICAgICAgICAKKyAgICAgICAgV0kubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVy
KFdJLk5vdGlmaWNhdGlvbi5UcmFuc2l0aW9uUGFnZVRhcmdldCwgdGhpcy5fdHJhbnNpdGlvblBh
Z2VUYXJnZXQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtMTQwMSw2ICsxNDA4
LDEzIEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAKICAgICAgICAgdGhpcy5yZXNldCgpOwog
CisgICAgICAgIGlmICh0aGlzLl90cmFuc2l0aW9uaW5nUGFnZVRhcmdldCkgeworICAgICAgICAg
ICAgdGhpcy5fdHJhbnNpdGlvbmluZ1BhZ2VUYXJnZXQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRo
aXMuX25lZWRzSW5pdGlhbFBvcHVsYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVs
YXRlV2l0aEluaXRpYWxSZXNvdXJjZXNJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKICAgICAgICAgdGhpcy5faW5zZXJ0UmVzb3VyY2VBbmRSZWxvYWRUYWJsZShm
cmFtZS5tYWluUmVzb3VyY2UpOwogICAgIH0KIApAQCAtMTk5NCw0ICsyMDA4LDkgQEAgV0kuTmV0
d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWUKICAgICB7CiAgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZFZpc2li
bGVDb2x1bW5DZWxscyh0aGlzLl93YXRlcmZhbGxDb2x1bW4pOwogICAgIH0KKworICAgIF90cmFu
c2l0aW9uUGFnZVRhcmdldChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RyYW5zaXRpb25p
bmdQYWdlVGFyZ2V0ID0gdHJ1ZTsKKyAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCmluZGV4IGFm
ZmVkMzI4MGIyLi4xZDIzYmM0MzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAtMzIsNyArMzIs
OCBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIHRoaXMuX3RvZ2dsZU9yRm9jdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdJLktl
eWJvYXJkU2hvcnRjdXQobnVsbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlz
Ll90b2dnbGVPckZvY3VzLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl90b2dnbGVPckZvY3Vz
S2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7CiAKLSAg
ICAgICAgdGhpcy5fbWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fY3Jl
YXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoV0kubWFpblRhcmdldC5leGVjdXRpb25D
b250ZXh0KTsKKyAgICAgICAgdGhpcy5fbWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5pbml0aWFsaXplTWFpbkV4ZWN1dGlvbkNvbnRleHRQYXRo
Q29tcG9uZW50KCk7CiAKICAgICAgICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENv
bXBvbmVudHMgPSBbXTsKICAgICAgICAgdGhpcy5fZnJhbWVUb1BhdGhDb21wb25lbnQgPSBuZXcg
TWFwOwpAQCAtMTEwLDYgKzExMSwxNCBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0Nv
bnNvbGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogICAgIH0KIAor
ICAgIGluaXRpYWxpemVNYWluRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQoKQorICAgIHsK
KyAgICAgICAgaWYgKCFXSS5tYWluVGFyZ2V0IHx8ICFXSS5tYWluVGFyZ2V0LmV4ZWN1dGlvbkNv
bnRleHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbWFpbkV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fY3JlYXRlRXhlY3V0aW9uQ29udGV4dFBhdGhD
b21wb25lbnQoV0kubWFpblRhcmdldC5leGVjdXRpb25Db250ZXh0KTsKKyAgICB9CisKICAgICAv
LyBQcm90ZWN0ZWQKIAogICAgIGxheW91dCgpCkBAIC0zMDksNiArMzE4LDkgQEAgV0kuUXVpY2tD
b25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV0kuVmlldwogICAgIF90YXJnZXRB
ZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdl
dDsKKyAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5Xb3JrZXIpCisg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0LnR5cGUg
PT09IFdJLlRhcmdldC5UeXBlLldvcmtlcik7CiAgICAgICAgIGxldCBwcmVmZXJyZWROYW1lID0g
V0kuVUlTdHJpbmcoIldvcmtlciBcdTIwMTQgJXMiKS5mb3JtYXQodGFyZ2V0LmRpc3BsYXlOYW1l
KTsKICAgICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0gdGhpcy5fY3Jl
YXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQodGFyZ2V0LmV4ZWN1dGlvbkNvbnRleHQs
IHByZWZlcnJlZE5hbWUpOwpAQCAtMzIwLDYgKzMzMiw5IEBAIFdJLlF1aWNrQ29uc29sZSA9IGNs
YXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdJLlZpZXcKICAgICBfdGFyZ2V0UmVtb3ZlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAg
ICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXQuVHlwZS5Xb3JrZXIpCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50ID0g
dGhpcy5fdGFyZ2V0VG9QYXRoQ29tcG9uZW50LnRha2UodGFyZ2V0KTsKICAgICAgICAgdGhpcy5f
cmVtb3ZlT3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudChleGVjdXRpb25Db250ZXh0
UGF0aENvbXBvbmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDI4N2NkNzY1MjgzLi45OTFkZDc2OTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LmpzCkBAIC0yNTgsNiArMjU4LDcgQEAgV0kuU2V0dGluZ3NUYWJDb250ZW50Vmll
dyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmkK
ICAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNldHRpbmcoV0kuVUlTdHJpbmco
IlVzZXIgSW50ZXJmYWNlOiIpLCBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVOZXdUYWJC
YXIsIFdJLlVJU3RyaW5nKCJFbmFibGUgTmV3IFRhYiBCYXIiKSk7CiAgICAgICAgIGV4cGVyaW1l
bnRhbFNldHRpbmdzVmlldy5hZGRTZXBhcmF0b3IoKTsKIAorICAgICAgICAvLyBGSVhNRTogUmVs
b2FkIFdlYiBJbnNwZWN0b3IgZG9lcyBub3Qgd29yayB3aXRoIE11bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQuCiAgICAgICAgIGxldCByZWxvYWRJbnNwZWN0b3JCdXR0b24gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJidXR0b24iKTsKICAgICAgICAgcmVsb2FkSW5zcGVjdG9yQnV0dG9uLnRleHRD
b250ZW50ID0gV0kuVUlTdHJpbmcoIlJlbG9hZCBXZWIgSW5zcGVjdG9yIik7CiAgICAgICAgIHJl
bG9hZEluc3BlY3RvckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsgd2lu
ZG93LmxvY2F0aW9uLnJlbG9hZCgpOyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3Iu
anMKaW5kZXggZjM2ZGQwNjFjZjQuLjdmMjg2YWUzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5qcwpAQCAtNjY3LDEzICs2NjcsMTMgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0
b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKIAog
ICAgIF90YXJnZXRBZGRlZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChXSS50YXJnZXRzLnNp
emUgPT09IDIpCisgICAgICAgIGlmIChXSS50YXJnZXRzLmxlbmd0aCA9PT0gMikKICAgICAgICAg
ICAgIHRoaXMuX3JlaW5zZXJ0QWxsVGhyZWFkSW5kaWNhdG9ycygpOwogICAgIH0KIAogICAgIF90
YXJnZXRSZW1vdmVkKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKFdJLnRhcmdldHMuc2l6ZSA9
PT0gMSkgeworICAgICAgICBpZiAoV0kudGFyZ2V0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAg
ICAgIC8vIEJhY2sgdG8gb25lIHRocmVhZCwgcmVtb3ZlIHRocmVhZCBpbmRpY2F0b3JzLgogICAg
ICAgICAgICAgdGhpcy5fcmVpbnNlcnRBbGxUaHJlYWRJbmRpY2F0b3JzKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC02ODUsNyArNjg1LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBj
bGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKIAogICAgIF9j
YWxsRnJhbWVzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKFdJLnRhcmdldHMu
c2l6ZSA9PT0gMSkKKyAgICAgICAgaWYgKFdJLnRhcmdldHMubGVuZ3RoID09PSAxKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsK
QEAgLTc3MSw3ICs3NzEsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJj
ZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICBpZiAoIXdpZGdl
dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBjb25zb2xlLmFzc2VydChXSS50YXJn
ZXRzLnNpemUgPiAxKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoV0kudGFyZ2V0cy5sZW5ndGgg
PiAxKTsKIAogICAgICAgICBsZXQgd2lkZ2V0RWxlbWVudCA9IHdpZGdldC53aWRnZXRFbGVtZW50
OwogICAgICAgICB3aWRnZXRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0xNTY5LDggKzE1
NjksOSBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRp
dG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICAvLyBDbGVhciBvdGhlciBtYXBzLgog
ICAgICAgICB0aGlzLl90aHJlYWRUYXJnZXRNYXAuY2xlYXIoKTsKIAotICAgICAgICBpZiAoV0ku
dGFyZ2V0cy5zaXplID4gMSkgewotICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpCisgICAgICAgIGxldCBkZWJ1Z2dhYmxlVGFyZ2V0cyA9IFdJLnRhcmdldHM7CisgICAg
ICAgIGlmIChkZWJ1Z2dhYmxlVGFyZ2V0cy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBmb3Ig
KGxldCB0YXJnZXQgb2YgZGVidWdnYWJsZVRhcmdldHMpCiAgICAgICAgICAgICAgICAgdGhpcy5f
YWRkVGhyZWFkSW5kaWNhdG9yRm9yVGFyZ2V0KHRhcmdldCk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDRkODgxN2I0MTYxLi40ZWNkOTQ2ZWJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NTIgQEAKKzIwMTgtMTEtMTIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdlYiBJbnNwZWN0b3Igd2luZG93IGFsaXZl
IGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVtb3RlIEluc3BlY3RvcikKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ5NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVG8gc3VwcG9ydCBwcm9jZXNzIHN3YXBwaW5nIGEgc2xpbSBXZWIg
SW5zcGVjdG9yIGJhY2tlbmQgbGl2ZXMgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgVGhlIFdl
YiBJbnNwZWN0b3IgZnJvbnRlbmQgY29ubmVjdHMgdG8gaXQgYW5kIGlzIHRvbGQgYWJvdXQgc3Vi
LXRhcmdldHMsIG5hbWVseQorICAgICAgICBwYWdlcywgdGhhdCBpdCBjYW4gZnVydGhlciBjb25u
ZWN0IHRvLiBXaGVuIHBlcmZvcm1pbmcgYSBwcm9jZXNzIHN3YXAgdGhlIGJhY2tlbmQKKyAgICAg
ICAgdGVsbHMgdGhlIGZyb250ZW5kIHRvIGRlc3Ryb3kgZXhpc3RpbmcgdGFyZ2V0cyBhbmQgY3Jl
YXRlIG5ldyB0YXJnZXRzLgorCisgICAgICAgIEluIHRoZSBVSVByb2Nlc3MgdGhlIFdlYlBhZ2VQ
cm94eSBoYXMgYSBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlciwgd2l0aCBhIHNpbmdsZQorICAg
ICAgICBUYXJnZXRBZ2VudCBob2xkaW5nIEluc3BlY3RvclRhcmdldFByb3hpZXMgdG8gdGFyZ2V0
cyBpdCBrbm93cyBhYm91dC4gSW5zcGVjdG9yCisgICAgICAgIHByb3RvY29sIG1lc3NhZ2VzIGdv
IHRocm91Z2ggdGhpcyBpbnNwZWN0b3IgY29udHJvbGxlciBhbmQgYXJlIHJvdXRlZCB0byB0aGUK
KyAgICAgICAgV2ViUGFnZSBhbmQgaXRzIFdlYkNvcmU6OlBhZ2UncyBJbnNwZWN0b3JDb250cm9s
bGVyLiBUaGUgV2ViUGFnZVByb3h5IGRlY2lkZXMKKyAgICAgICAgd2hlbiB0byBjbG9zZSBhbmQg
ZXhwb3NlIG5ldyBwYWdlIHRhcmdldHMgZHVyaW5nIHByb2Nlc3Mgc3dhcCwgb3IgYmFzaWNhbGx5
CisgICAgICAgIGFueSB0aW1lIGl0IHJlY29ubmVjdHMgdG8gYSBXZWJQcm9jZXNzLiBTbyB0aGlz
IHBhdGNoIGFsc28gbWFrZXMgV2ViIEluc3BlY3RvcgorICAgICAgICBzdGF5IGFsaXZlIGFuZCBy
ZWNvbm5lY3QgdG8gYSBwYWdlIHdoZW4gdGhlIGluc3BlY3RlZCBwYWdlIGNyYXNoZXMhCisKKyAg
ICAgICAgSW4gdGhlIFdlYkNvbnRlbnRQcm9jZXNzIHRoZSBXZWJQYWdlIGhhcyBhIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQuIEl0IGFsc28KKyAgICAgICAgaGFzIGEgV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIgaW4gYW50aWNpcGF0aW9uIG9mIGZ1cnRoZXIgc3ViLXRhcmdldHMKKyAg
ICAgICAgd2l0aGluIHRoZSBwYWdlICh3b3JrZXJzLCBmcmFtZXMpIGJ1dCBub25lIGV4aXN0IGF0
IHRoZSBtb21lbnQuIFRoZSBXZWJQYWdlCisgICAgICAgIHJlbGllcyBvbiB0aGUgV2ViUGFnZVBy
b3h5IHRvIGtub3cgd2hlbiB0byBleHBvc2UgdGhpcyB0YXJnZXQgYXMgYSBkZWJ1Z2dhYmxlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIE5ldyBmaWxlcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBSZW1vdGUgaW5zcGVjdG9yIHN0YXRlIGNhbiBub3cg
c3RheSBpbiB0aGUgVUlQcm9jZXNzIGFuZCBkb2VzIG5vdCBuZWVkIHRvCisgICAgICAgIGJlIHBh
c3NlZCBkb3duIHRvIHRoZSBXZWJDb250ZW50UHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlRGVidWdnYWJsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZURlYnVnZ2FibGUuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6
V2ViUGFnZURlYnVnZ2FibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6
bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjp1cmwgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dl
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZURlYnVnZ2FibGU6OnNldE5hbWVPdmVycmlkZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VEZWJ1Z2dhYmxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaC4KKyAgICAgICAgUmVtb3RlIGRlYnVnZ2FibGUg
ZW50cnkgcG9pbnQgaW50byB0aGUgVUlQcm9jZXNzIGZvciBhIHBhZ2UuCisgICAgICAgIFRoaXMg
aXMgcHJldHR5IG11Y2ggaWRlbnRpY2FsIHRvIHRoZSBQYWdlRGVidWdnYWJsZSBpbiBXZWJDb3Jl
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9yZXNldFJlY2VudENyYXNoQ291bnRU
aW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluZGljYXRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW90ZUluc3BlY3Rpb25OYW1lT3Zl
cnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFJlbW90ZUlu
c3BlY3Rpb25OYW1lT3ZlcnJpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
bW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3Bl
Y3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
bW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBPd24g
bW9yZSBpbnNwZWN0b3Igc3RhdGUgaW4gdGhlIFVJUHJvY2VzcyBpbmNsdWRpbmcgYSBkZWJ1Z2dh
YmxlIGFuZCBpbnNwZWN0b3IgY29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnBhZ2VDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9u
dGVuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
OjpoYXNSZW1vdGVGcm9udGVuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI6OnNldEluZGljYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2xlYXJUYXJnZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUluc3BlY3RvclRhcmdldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNlbmRNZXNzYWdl
VG9JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIgd2l0aCBh
IHNpbmdsZSBUYXJnZXRBZ2VudCBpbiB0aGUgVUlQcm9jZXNzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudDo6ZnJvbnRlbmRDaGFubmVs
KToKKyAgICAgICAgVGFyZ2V0IGFnZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVj
dG9yVGFyZ2V0UHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdl
dFByb3h5OjpJbnNwZWN0b3JUYXJnZXRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
clRhcmdldFByb3h5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yVGFyZ2V0
UHJveHk6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94
eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICBVSVByb2Nlc3MgcHJveHkgZm9yIGFuIEluc3Bl
Y3RvclRhcmdldCBpbiB0aGUgV2ViQ29udGVudFByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQXR0YWNoRHJhd2lu
Z0FyZWFPblBhZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29ubmVj
dEluc3BlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc2Nvbm5lY3RJbnNwZWN0
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluZGljYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpkaXNjb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldDo6c2VuZE1lc3NhZ2VUb1Rhcmdl
dEJhY2tlbmQpOgorICAgICAgICBJbnNwZWN0b3JUYXJnZXQgZm9yIHRoaXMgV2ViUGFnZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJv
bGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Q29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6fldlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXI6OmFkZFRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRDb250cm9sbGVyOjpyZW1vdmVUYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6Y29ubmVjdEluc3BlY3Rvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyOjpkaXNjb25uZWN0
SW5zcGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OnNlbmRNZXNzYWdlVG9UYXJnZXRGcm9udGVu
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWw6OldlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQp
OgorICAgICAgICBQcmVwYXJhdGlvbiBmb3IgbW9yZSB0YXJnZXQgbWFuYWdtZW50IGluIHRoZSBX
ZWJDb250ZW50UHJvY2Vzcy4KKwogMjAxOC0xMS0wOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJhdyBjYXBzIGxvY2sgaW5kaWNhdG9yIGluIHBh
c3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggNzVkYjFhNmFkNTIuLjFjNTkxMTM3Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTM4OSw2ICszODksNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0
eXBlKToKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPidd
LAogICAgICAgICAnSlNDOjpNZXNzYWdlTGV2ZWwnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xl
VHlwZXMuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZVNvdXJjZSc6IFsnPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVUeXBlcy5oPiddLAorICAgICAgICAnSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJn
ZXRUeXBlJzogWyc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFyZ2V0Lmg+J10sCiAgICAgICAg
ICdNb25vdG9uaWNUaW1lJzogWyc8d3RmL01vbm90b25pY1RpbWUuaD4nXSwKICAgICAgICAgJ1Nl
Y29uZHMnOiBbJzx3dGYvU2Vjb25kcy5oPiddLAogICAgICAgICAnV2FsbFRpbWUnOiBbJzx3dGYv
V2FsbFRpbWUuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYTc3NzQzOWY4ZTkuLjQxY2QzNDA2ODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtNzQsMTAgKzc0LDYgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbWltZVR5cGVzV2l0
aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7CiAgICAgZW5jb2RlciA8PCBjb250cm9sbGVkQnlBdXRv
bWF0aW9uOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgZW5jb2RlciA8PCBh
bGxvd3NSZW1vdGVJbnNwZWN0aW9uOwotICAgIGVuY29kZXIgPDwgcmVtb3RlSW5zcGVjdGlvbk5h
bWVPdmVycmlkZTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IGNv
bG9yU3BhY2U7CiAgICAgZW5jb2RlciA8PCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwpAQCAtMjMxLDEz
ICsyMjcsNiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
cmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggMjA1YjE5YWIyNDIuLjdiZjUxNzg0ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMzAsMTEgKzEzMCw2IEBAIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGJvb2wgY29udHJvbGxlZEJ5QXV0
b21hdGlvbjsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGJvb2wgYWxsb3dz
UmVtb3RlSW5zcGVjdGlvbjsKLSAgICBTdHJpbmcgcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlk
ZTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9y
U3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZWRi
YjVlMWY2NzkuLmRjNWMxZTE2OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTIyNyw2ICsyMjcsNyBAQCBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5j
cHAKIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAogVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKK1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNw
cAogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAogVUlQcm9jZXNzL1Byb2Nl
c3NBc3NlcnRpb24uY3BwCkBAIC0yNjgsOSArMjY5LDEyIEBAIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVByb2Nl
c3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuY3BwCitVSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2FibGUuY3BwCiBVSVByb2Nl
c3MvV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYlBhZ2VH
cm91cC5jcHAKIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCitVSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvV2ViUGFnZUlu
c3BlY3RvclRhcmdldEFnZW50LmNwcAogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKIFVJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3Bw
CkBAIC01MzEsNiArNTM1LDkgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNw
cAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VHcm91cFByb3h5LmNwcAorV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXQuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENv
bnRyb2xsZXIuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZy
b250ZW5kQ2hhbm5lbC5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5jcHAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi41NDg3MGM4YjI5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRhcmdldFByb3h5LmgiCisKKyNpbmNs
dWRlICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCitSZWY8SW5zcGVjdG9yVGFyZ2V0UHJveHk+IEluc3BlY3RvclRh
cmdldFByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdl
dElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JUYXJnZXRQcm94eShwYWdlLCB0YXJnZXRJZCwgdHlwZSkp
OworfQorCitJbnNwZWN0b3JUYXJnZXRQcm94eTo6SW5zcGVjdG9yVGFyZ2V0UHJveHkoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3Rv
clRhcmdldFR5cGUgdHlwZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9pZGVudGlmaWVy
KHRhcmdldElkKQorICAgICwgbV90eXBlKHR5cGUpCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFy
Z2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmKQoreworICAgIGlm
IChtX3BhZ2UuaXNWYWxpZCgpKQorICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCYpCit7CisgICAgaWYgKG1fcGFnZS5pc1ZhbGlkKCkpCisgICAg
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdElu
c3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2UucGFnZUlEKCkpOworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5OjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgaWYgKG1fcGFnZS5pc1ZhbGlkKCkpCisgICAgICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JUYXJnZXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFy
Z2V0UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDM4MmIw
MjY1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3JUYXJnZXRQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvclRhcmdldC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCisvLyBOT1RFOiBU
aGlzIFVJUHJvY2VzcyBzaWRlIEluc3BlY3RvclRhcmdldCBkb2Vzbid0IGNhcmUgYWJvdXQgdGhl
IGZyb250ZW5kIGNoYW5uZWwsIHNpbmNlCisvLyBhbnkgdGFyZ2V0IC0+IGZyb250ZW5kIG1lc3Nh
Z2VzIHdpbGwgYmUgcm91dGVkIHRvIHRoZSBXZWJQYWdlUHJveHkgd2l0aCBhIHRhcmdldElkLgor
CitjbGFzcyBJbnNwZWN0b3JUYXJnZXRQcm94eSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldCwgcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yVGFyZ2V0UHJveHk+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JUYXJnZXRQcm94eSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JU
YXJnZXRQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSk7CisgICAgSW5zcGVjdG9yVGFyZ2V0UHJv
eHkoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRUeXBlKTsKKyAgICB+SW5zcGVjdG9yVGFyZ2V0UHJveHkoKSA9IGRlZmF1bHQ7
CisKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0
cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFN0cmlu
ZyBtX2lkZW50aWZpZXI7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIG1fdHlw
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA2MzlhMTJi
MTRkYy4uN2VkMjY3YjY0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVi
dWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVidWdnYWJsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYzMmM4ZGFjNjQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZURlYnVnZ2Fi
bGUuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZURlYnVn
Z2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2Vi
RnJhbWVQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOworCitXZWJQYWdlRGVidWdnYWJsZTo6V2ViUGFnZURlYnVnZ2Fi
bGUoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmlu
ZyBXZWJQYWdlRGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hbWVPdmVy
cmlkZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fbmFtZU92ZXJyaWRlOworCisgICAgaWYg
KCFtX3BhZ2UubWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJl
dHVybiBtX3BhZ2UubWFpbkZyYW1lKCktPnRpdGxlKCk7Cit9CisKK1N0cmluZyBXZWJQYWdlRGVi
dWdnYWJsZTo6dXJsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZS5tYWluRnJhbWUoKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluRnJh
bWUoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgPyAiYWJvdXQ6
YmxhbmsiX3MgOiB1cmw7Cit9CisKK2Jvb2wgV2ViUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVi
dWdnZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigp
Lmhhc0xvY2FsRnJvbnRlbmQoKTsKK30KKwordm9pZCBXZWJQYWdlRGVidWdnYWJsZTo6Y29ubmVj
dChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0Nv
bm5lY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSkKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChjaGFubmVsLCBpc0F1dG9tYXRpY0Nvbm5lY3Rp
b24sIGltbWVkaWF0ZWx5UGF1c2UpOworfQorCit2b2lkIFdlYlBhZ2VEZWJ1Z2dhYmxlOjpkaXNj
b25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQoreworICAgIG1fcGFn
ZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKGNoYW5uZWwpOworfQor
Cit2b2lkIFdlYlBhZ2VEZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKK30KKwordm9pZCBXZWJQYWdlRGVi
dWdnYWJsZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCit7CisgICAgbV9wYWdlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOworfQorCit2b2lk
IFdlYlBhZ2VEZWJ1Z2dhYmxlOjpzZXROYW1lT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIG1fbmFtZU92ZXJyaWRlID0gbmFtZTsKKyAgICB1cGRhdGUoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VEZWJ1Z2dhYmxlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlRGVidWdnYWJsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYjIxNGJkNDc1NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VEZWJ1Z2dhYmxlLmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisK
K2NsYXNzIFdlYlBhZ2VEZWJ1Z2dhYmxlIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdGlvblRhcmdldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2ViUGFnZURlYnVnZ2FibGUpOworcHVibGljOgorICAgIFdlYlBh
Z2VEZWJ1Z2dhYmxlKFdlYlBhZ2VQcm94eSYpOworICAgIH5XZWJQYWdlRGVidWdnYWJsZSgpID0g
ZGVmYXVsdDsKKworICAgIEluc3BlY3Rvcjo6UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpUeXBl
IHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldDo6VHlwZTo6V2ViOyB9CisKKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IGZpbmFsOwor
ICAgIFN0cmluZyB1cmwoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhhc0xvY2FsRGVidWdnZXIo
KSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIGJvb2wgaXNBdXRvbWF0aWNDb25uZWN0aW9uID0gZmFsc2UsIGJvb2wgaW1tZWRpYXRl
bHlQYXVzZSA9IGZhbHNlKSBmaW5hbDsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1v
dGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNldEluZGljYXRpbmco
Ym9vbCkgZmluYWw7CisKKyAgICBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZU92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXROYW1lT3ZlcnJpZGUoY29uc3Qg
U3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CisgICAgU3Ry
aW5nIG1fbmFtZU92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ09OVFJPTExBQkxFX1RBUkdFVChXZWJLaXQ6OldlYlBhZ2VEZWJ1
Z2dhYmxlLCBXZWIpOworCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc5NzQyMGMxZTky
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJXZWJGcmFtZVByb3h5
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRC
YXNlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwor
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdl
YlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9mcm9udGVuZFJv
dXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQor
eworICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKSk7CisKKyAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CisKKyAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZSh0YXJnZXRBZ2VudCkpOworfQorCit2b2lkIFdlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyOjpwYWdlQ2xvc2VkKCkKK3sKKyAgICBkaXNjb25uZWN0QWxs
RnJvbnRlbmRzKCk7CisKKyAgICBtX2FnZW50cy5kaXNjYXJkVmFsdWVzKCk7Cit9CisKK2Jvb2wg
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2Zyb250ZW5kUm91dGVyLT5oYXNMb2NhbEZyb250ZW5kKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sLCBib29sKQoreworICAgIEFT
U0VSVF9BUkcoZnJvbnRlbmRDaGFubmVsLCBmcm9udGVuZENoYW5uZWwpOworCisgICAgYm9vbCBj
b25uZWN0aW5nRmlyc3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMo
KTsKKworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5u
ZWwpOworCisgICAgaWYgKGNvbm5lY3RpbmdGaXJzdEZyb250ZW5kKQorICAgICAgICBtX2FnZW50
cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKworICAgIG1fcGFnZS5kaWRDaGFuZ2VJbnNwZWN0
b3JGcm9udGVuZENvdW50KG1fZnJvbnRlbmRSb3V0ZXItPmZyb250ZW5kQ291bnQoKSk7CisKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoaGFzTG9jYWxGcm9udGVuZCgpKQor
ICAgICAgICBtX3BhZ2UucmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCit7CisgICAgbV9mcm9udGVu
ZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CisKKyAgICBib29s
IGRpc2Nvbm5lY3RpbmdMYXN0RnJvbnRlbmQgPSAhbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRl
bmRzKCk7CisgICAgaWYgKGRpc2Nvbm5lY3RpbmdMYXN0RnJvbnRlbmQpCisgICAgICAgIG1fYWdl
bnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RvckRlc3Ryb3llZCk7CisKKyAgICBtX3BhZ2UuZGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRD
b3VudChtX2Zyb250ZW5kUm91dGVyLT5mcm9udGVuZENvdW50KCkpOworCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgaWYgKGRpc2Nvbm5lY3RpbmdMYXN0RnJvbnRlbmQpCisgICAg
ICAgIG1fcGFnZS5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RBbGxGcm9u
dGVuZHMoKQoreworICAgIC8vIEZJWE1FOiBIYW5kbGUgYSBsb2NhbCBpbnNwZWN0b3IgY2xpZW50
LgorCisgICAgaWYgKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gTm90aWZ5IGFnZW50cyBmaXJzdCwgc2luY2UgdGhleSBtYXkgbmVl
ZCB0byB1c2UgSW5zcGVjdG9yQ2xpZW50LgorICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7
CisKKyAgICAvLyBEaXNjb25uZWN0IGFueSByZW1haW5pbmcgcmVtb3RlIGZyb250ZW5kcy4KKyAg
ICBtX2Zyb250ZW5kUm91dGVyLT5kaXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CisKKyAgICBtX3Bh
Z2UuZGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudChtX2Zyb250ZW5kUm91dGVyLT5mcm9u
dGVuZENvdW50KCkpOworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9wYWdl
LnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNw
YXRjaChtZXNzYWdlKTsKK30KKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQordm9pZCBX
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
Cit7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgbV9wYWdlLnNldEluZGljYXRpbmco
aW5kaWNhdGluZyk7CisjZWxzZQorICAgIGlmIChpbmRpY2F0aW5nKQorICAgICAgICBtX3BhZ2Uu
c2hvd0luc3BlY3RvckluZGljYXRpb24oKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS5oaWRl
SW5zcGVjdG9ySW5kaWNhdGlvbigpOworI2VuZGlmCit9CisjZW5kaWYKKwordm9pZCBXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJUYXJnZXRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHRh
cmdldCA6IG1fdGFyZ2V0cykKKyAgICAgICAgbV90YXJnZXRBZ2VudC0+dGFyZ2V0RGVzdHJveWVk
KCp0YXJnZXQuZ2V0KCkpOworCisgICAgbV90YXJnZXRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUluc3BlY3RvclRhcmdldChjb25zdCBTdHJp
bmcmIHRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKK3sKKyAg
ICBhdXRvIHRhcmdldCA9IEluc3BlY3RvclRhcmdldFByb3h5OjpjcmVhdGUobV9wYWdlLCB0YXJn
ZXRJZCwgdHlwZSk7CisgICAgbV90YXJnZXRzLmFwcGVuZCh0YXJnZXQuY29weVJlZigpKTsKKwor
ICAgIG1fdGFyZ2V0QWdlbnQtPnRhcmdldENyZWF0ZWQodGFyZ2V0LmdldCgpKTsKK30KKwordm9p
ZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVzdHJveUluc3BlY3RvclRhcmdldChjb25z
dCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIGF1dG8gcG9zaXRpb24gPSBtX3RhcmdldHMuZmlu
ZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5pZGVudGlmaWVy
KCkgPT0gdGFyZ2V0SWQ7IH0pOworICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgdGFyZ2V0ID0gbV90YXJnZXRzW3Bvc2l0aW9uXTsKKyAg
ICBtX3RhcmdldEFnZW50LT50YXJnZXREZXN0cm95ZWQoKnRhcmdldC5nZXQoKSk7CisKKyAgICBt
X3RhcmdldHMucmVtb3ZlKHBvc2l0aW9uKTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdGFy
Z2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3RhcmdldEFnZW50LT5zZW5k
TWVzc2FnZUZyb21UYXJnZXRUb0Zyb250ZW5kKHRhcmdldElkLCBtZXNzYWdlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMmM5MWUwMjZlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkluc3BlY3RvclRhcmdldFByb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclRhcmdldEFnZW50Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNz
IEZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cihXZWJQYWdlUHJveHkmKTsKKworICAgIHZvaWQgcGFnZUNsb3NlZCgpOworCisgICAgYm9vbCBo
YXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CisKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFs
c2UsIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgZGlzY29ubmVj
dEFsbEZyb250ZW5kcygpOworCisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKKyNlbmRpZgorCisgICAgdm9pZCBjbGVhclRh
cmdldHMoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUpOworICAgIHZvaWQgZGVzdHJv
eUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwor
ICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOworICAg
IFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAgICBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldEFnZW50KiBtX3RhcmdldEFnZW50OworICAgIFZlY3RvcjxSZWZQdHI8SW5z
cGVjdG9yVGFyZ2V0UHJveHk+PiBtX3RhcmdldHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JU
YXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41
ZmU5OWM1N2FhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFN0dWJGcm9udGVuZENoYW5uZWwgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5l
Y3Rpb25UeXBlOjpSZW1vdGU7IH0KKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmKSBmaW5hbCB7IH0KK307CisKK1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudDo6
V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50KEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXImIGZy
b250ZW5kUm91dGVyLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0
Y2hlcikKKyAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQoZnJvbnRlbmRSb3V0
ZXIsIGJhY2tlbmREaXNwYXRjaGVyKQoreworfQorCitJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCYgV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50Ojpmcm9udGVuZENoYW5uZWwoKQoreworICAg
IGlmICghbV9mcm9udGVuZENoYW5uZWwpCisgICAgICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdHViRnJvbnRlbmRDaGFubmVsPigpOworICAgIHJldHVybiAqbV9mcm9u
dGVuZENoYW5uZWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzhkZTkyODExOWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0QWdlbnQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQgeworcHVibGljOgorICAgIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRB
Z2VudChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyJiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciYpOworICAgIHZpcnR1YWwgfldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudCgpID0gZGVm
YXVsdDsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYgZnJvbnRl
bmRDaGFubmVsKCkgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFubmVsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4YjcyYjNl
M2EyZS4uOWJmNmE2ODRjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTA5LDggKzEwOSwxMCBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQ
YWdlR3JvdXBEYXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCkBAIC0yMjMs
NiArMjI1LDEwIEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgorI2VuZGlmCisKICNpZiBIQVZFKFNFQ19LRVlf
UFJPWFkpCiAjaW5jbHVkZSAiU2VjS2V5UHJveHlTdG9yZS5oIgogI2VuZGlmCkBAIC00MjUsNiAr
NDMxLDEwIEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYKICAgICAsIG1fcGFnZUxv
YWRTdGF0ZSgqdGhpcykKICAgICAsIG1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMobV9j
b25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkpCisgICAgLCBtX2luc3BlY3RvckNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMp
KQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyNlbmRpZgog
ICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKICAgICBtX3dlYlByb2Nl
c3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKQEAgLTQ4
MSw2ICs0OTEsMTMgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAgICAgdGhpcy0+ZGlz
cGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKKworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3Rl
RGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQo
KTsKKyNlbmRpZgorCisgICAgY3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpOwogfQogCiBXZWJQYWdl
UHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtODA2LDYgKzgyMywxMyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKFNob3VsZERlbGF5QXR0YWNoaW5nRHJh
d2luZ0FyZWEgcwogCiAgICAgaW5pdGlhbGl6ZVdlYlBhZ2Uoc2hvdWxkRGVsYXlBdHRhY2hpbmdE
cmF3aW5nQXJlYSk7CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICByZW1vdGVJ
bnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCisKKyAgICBjbGVhckluc3Bl
Y3RvclRhcmdldHMoKTsKKyAgICBjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCk7CisKICAgICBwYWdl
Q2xpZW50KCkuZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZv
ckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiB9CkBAIC05MTYsNiArOTQwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICNlbmRpZgogCiAgICAgbV9iYWNrRm9yd2FyZExp
c3QtPnBhZ2VDbG9zZWQoKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnBhZ2VDbG9zZWQo
KTsKICAgICBwYWdlQ2xpZW50KCkucGFnZUNsb3NlZCgpOwogCiAgICAgbV9wcm9jZXNzLT5kaXNj
b25uZWN0RnJhbWVzRnJvbVBhZ2UodGhpcyk7CkBAIC0xMzYxLDMxICsxMzg2LDY3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkK
ICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlv
bikpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KGNvbnN0
IFN0cmluZyYgdGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSB0eXBlKQor
eworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHRhcmdl
dElkLCB0eXBlKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRlc3Ryb3lJbnNwZWN0b3JUYXJn
ZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQodGFyZ2V0SWQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNl
bmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZCh0YXJnZXRJZCwgbWVzc2FnZSk7Cit9CisKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbmRpY2F0
aW5nKGJvb2wgaW5kaWNhdGluZykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbmRpY2F0
aW5nKGluZGljYXRpbmcpLCBtX3BhZ2VJRCk7Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5OjphbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JEZWJ1
Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wgYWxsb3cpCiB7Ci0gICAgaWYgKG1fYWxs
b3dzUmVtb3RlSW5zcGVjdGlvbiA9PSBhbGxvdykKLSAgICAgICAgcmV0dXJuOworICAgIG1faW5z
cGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChhbGxvdyk7Cit9CiAK
LSAgICBtX2FsbG93c1JlbW90ZUluc3BlY3Rpb24gPSBhbGxvdzsKLQotICAgIGlmIChpc1ZhbGlk
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWxsb3dz
UmVtb3RlSW5zcGVjdGlvbihhbGxvdyksIG1fcGFnZUlEKTsKK1N0cmluZyBXZWJQYWdlUHJveHk6
OnJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPm5hbWVPdmVycmlkZSgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgaWYgKG1fcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSA9PSBuYW1lKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3JlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUgPSBuYW1lOwot
Ci0gICAgaWYgKGlzVmFsaWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKG1fcmVtb3RlSW5zcGVjdGlv
bk5hbWVPdmVycmlkZSksIG1fcGFnZUlEKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNl
dE5hbWVPdmVycmlkZShuYW1lKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlbW90ZUluc3Bl
Y3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCkKK3sKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUt
PnVwZGF0ZSgpOworfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3Rv
clRhcmdldHMoKQoreworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y2xlYXJUYXJnZXRzKCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKK3sKKyAg
ICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBTdHJpbmc6Om51bWJl
cihtX3BhZ2VJRCkpOworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9y
VGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdl
KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdz
QmFja2dyb3VuZCkKIHsKICAgICBpZiAobV9kcmF3c0JhY2tncm91bmQgPT0gZHJhd3NCYWNrZ3Jv
dW5kKQpAQCAtMzc5OSw2ICszODYwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAgICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICBpbnZhbGlkYXRlQWxsQXR0YWNobWVu
dHMoKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRp
ZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTM5NzUsNiArNDA0MSwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiB0aXRsZQogICAgIGZyYW1lLT5kaWRDaGFuZ2VUaXRsZSh0aXRsZSk7CiAgICAg
CiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmVt
b3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtNjM3OSwxMCArNjQ1MCw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMu
YmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlID0gbV9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBh
Z2U7CiAgICAgcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlID0gbV9sYXllckhvc3RpbmdNb2Rl
OwogICAgIHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbiA9IG1fY29udHJvbGxlZEJ5
QXV0b21hdGlvbjsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBwYXJhbWV0ZXJz
LmFsbG93c1JlbW90ZUluc3BlY3Rpb24gPSBtX2FsbG93c1JlbW90ZUluc3BlY3Rpb247Ci0gICAg
cGFyYW1ldGVycy5yZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlID0gbV9yZW1vdGVJbnNwZWN0
aW9uTmFtZU92ZXJyaWRlOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHBhcmFtZXRl
cnMuY29sb3JTcGFjZSA9IHBhZ2VDbGllbnQoKS5jb2xvclNwYWNlKCk7CiAgICAgcGFyYW1ldGVy
cy51c2VTeXN0ZW1BcHBlYXJhbmNlID0gbV91c2VTeXN0ZW1BcHBlYXJhbmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2MTVhMDhkODVhYy4uOWEyYTgzYmVlNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNDgsNyArMjQ4LDkg
QEAgY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBj
bGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eTsKK2NsYXNzIFdlYlBhZ2VEZWJ1Z2dhYmxlOwogY2xhc3MgV2ViUGFnZUdyb3VwOworY2xhc3Mg
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CkBA
IC0zODgsMTEgKzM5MCwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb247IH0KICAgICB2
b2lkIHNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCk7CiAKKyAgICBXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIHsgcmV0dXJuICptX2luc3BlY3Rv
ckNvbnRyb2xsZXI7IH0KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBzaG93
SW5zcGVjdG9ySW5kaWNhdGlvbigpOworICAgIHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24o
KTsKKyNlbmRpZgorCisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JUYXJnZXQoY29uc3QgU3RyaW5n
JiB0YXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlKTsKKyAgICB2b2lkIGRl
c3Ryb3lJbnNwZWN0b3JUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CisgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IGJvb2wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzUmVt
b3RlSW5zcGVjdGlvbjsgfQorICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKKyAgICBib29s
IGFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdDsKICAgICB2b2lkIHNldEFsbG93c1JlbW90
ZUluc3BlY3Rpb24oYm9vbCk7Ci0gICAgU3RyaW5nIHJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJp
ZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU7IH0KKyAg
ICBTdHJpbmcgcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTE3MzcsOSArMTc1Miw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzaG93SW5zcGVjdG9ySGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkhpZ2hsaWdodCYpOwog
ICAgIHZvaWQgaGlkZUluc3BlY3RvckhpZ2hsaWdodCgpOwogCi0gICAgdm9pZCBzaG93SW5zcGVj
dG9ySW5kaWNhdGlvbigpOwotICAgIHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24oKTsKLQog
ICAgIHZvaWQgZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpOwogICAgIHZvaWQgZGlzYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2goKTsKICAgICB2b2lkIGFzc2lzdGVkTm9kZUluZm9ybWF0aW9uQ2Fs
bGJhY2soY29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mLCBDYWxsYmFja0lEKTsKQEAgLTE4
MjcsNiArMTgzOSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNr
cygpOwogCisgICAgdm9pZCBjbGVhckluc3BlY3RvclRhcmdldHMoKTsKKyAgICB2b2lkIGNyZWF0
ZUluc3BlY3RvclRhcmdldHMoKTsKKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtMjEwMiwxMCArMjExNyw2
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNl
IH07CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBib29sIG1fYWxsb3dzUmVt
b3RlSW5zcGVjdGlvbiB7IHRydWUgfTsKLSAgICBTdHJpbmcgbV9yZW1vdGVJbnNwZWN0aW9uTmFt
ZU92ZXJyaWRlOwotI2VuZGlmCiAgICAgdW5zaWduZWQgbV9pbnNwZWN0b3JGcm9udGVuZENvdW50
IHsgMCB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMjU4LDYgKzIyNjksMTEgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpbms+IG1fZGlzcGxheUxpbms7CiAj
ZW5kaWYKIAorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxXZWJQYWdlRGVidWdnYWJsZT4gbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBzdGQ6Om9wdGlvbmFsPFNwZWxsRG9jdW1lbnRU
YWc+IG1fc3BlbGxEb2N1bWVudFRhZzsKIAogICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGlt
ZT4gbV9wYWdlTG9hZFN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDU4MjVkZTgzNGNiLi4zNGZkNmZiNTIzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAt
NDIxLDYgKzQyMSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRGlkQ2hh
bmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1aW50NjRfdCBjb3VudCkKIAorICAgIENyZWF0ZUlu
c3BlY3RvclRhcmdldChTdHJpbmcgdGFyZ2V0SWQsIGVudW06dWludDhfdCBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldFR5cGUgdHlwZSkKKyAgICBEZXN0cm95SW5zcGVjdG9yVGFyZ2V0KFN0cmlu
ZyB0YXJnZXRJZCkKKyAgICBTZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoU3RyaW5nIHRh
cmdldElkLCBTdHJpbmcgbWVzc2FnZSkKKwogICAgICMgU2VhcmNoIHBvcHVwIG1lbnVzCiAgICAg
U2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2Vh
cmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+
IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpIExlZ2FjeVN5bmMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlNGE4NzcwNDc1Ny4u
OWJkZjZlMDdjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTIxMjEsMTEgKzIxMjEsNiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmCiAgICAgICAg
IHJldHVybiBwYWdlLnByb2Nlc3MoKTsKICAgICB9CiAKLSAgICBpZiAocGFnZS5pbnNwZWN0b3JG
cm9udGVuZENvdW50KCkgPiAwKSB7Ci0gICAgICAgIHJlYXNvbiA9ICJBIFdlYiBJbnNwZWN0b3Ig
ZnJvbnRlbmQgaXMgY29ubmVjdGVkIl9zOwotICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7
Ci0gICAgfQotCiAgICAgaWYgKG1fYXV0b21hdGlvblNlc3Npb24pIHsKICAgICAgICAgcmVhc29u
ID0gIkFuIGF1dG9tYXRpb24gc2Vzc2lvbiBpcyBhY3RpdmUiX3M7CiAgICAgICAgIHJldHVybiBw
YWdlLnByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDgxZjY3NzlkYzhiLi44ODhmYTY0YjM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjY5LDggKzEyNjks
MTMgQEAKIAkJQTFFQTAyNDAxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlzdGVu
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFFQTAyM0UxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5o
ICovOyB9OwogCQlBMUZCNjgyNDFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNjgyMjFG
NkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFGQjY4MjcxRjZFNTFDMTAwQzQzRjlGIC8q
IENyYXNoUmVwb3J0ZXJDbGllbnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExRkI2ODI2MUY2RTUxQzEwMEM0M0Y5RiAvKiBDcmFzaFJlcG9ydGVy
Q2xpZW50U1BJLmggKi87IH07CisJCUE1MTNGNTQwMjE1NEE1RDcwMDY2Mjg0MSAvKiBXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUxM0Y1M0UyMTU0QTVDQzAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyLmggKi87IH07CiAJCUE1MThCNUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3Bl
Y3RvcldLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUxOEI1RDAxRkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lmgg
Ki87IH07CiAJCUE1NDI5M0E0MTk1QTQzREEwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFy
Y2hHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU0MjkzQTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNl
YXJjaEdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CisJCUE1NDNFMzA3MjE1QUQxMzcwMDI3OUNE
OSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQzRTMwNTIxNUFEMTJEMDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oICovOyB9OworCQlB
NTQzRTMwQzIxNUM4QThEMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0M0UzMDgyMTVDOEE4
MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCAqLzsgfTsKKwkJQTU0M0UzMEQy
MTVDOEE5MDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQzRTMwQjIxNUM4
QTg0MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCAqLzsgfTsK
KwkJQTU0M0UzMTAyMTVEOENFNjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0M0Uz
MEUyMTVEOENFMjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICovOyB9
OwogCQlBNTVCQTgxMDFCQTEzMTdFMDA3Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1NUJBODBDMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1NUJBODE3MUJBMjNFMTIwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1QkE4MTMx
QkEyM0UwNTAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJLmggKi87IH07CiAJCUE1NUJB
ODFGMUJBMjVCMjcwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1QkE4MTkxQkEyNUIxRTAw
N0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5LmggKi87IH07CkBAIC0xMjgxLDYgKzEy
ODYsOCBAQAogCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEI2RjA2
MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovOyB9OwogCQlBNUMwRjBB
NzIwMDA2NTREMDA1MzY1MzYgLyogX1dLTlNXaW5kb3dFeHRyYXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzBGMEE2MjAwMDY1NDQwMDUzNjUzNiAv
KiBfV0tOU1dpbmRvd0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1QzBGMEFCMjAwMDY1ODIwMDUzNjUzNiAvKiBXS0luc3BlY3Rvcldp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVD
MEYwQUEyMDAwNjU2RTAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93LmggKi87IH07CisJCUE1
RTM5MUZEMjE4M0MxRjgwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFMzkxRkMyMTgzQzFFOTAw
QzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggKi87IH07CisJCUE1RUM2QUQ0MjE1MUJE
N0IwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQzZBRDMyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBh
Z2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1Bh
Z2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1RUZEMzhCMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzhDQ0REQjE5M0FDOUY4MDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNi
IGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhDQ0RE
ODE5M0FDOUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiICovOyB9
OwogCQlBNzhDQ0REQzE5M0FDOUZCMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzhDQ0REOTE5M0FDOUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
ICovOyB9OwpAQCAtMzgxMCwxMCArMzgxNywyMCBAQAogCQlBMUZCNjgyMjFGNkU1MTgyMDBDNDNG
OUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3Jhc2hSZXBvcnRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZCNjgyMzFGNkU1MTgyMDBDNDNGOUYg
LyogV0tDcmFzaFJlcG9ydGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tDcmFzaFJlcG9y
dGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZCNjgyNjFGNkU1MUMxMDBD
NDNGOUYgLyogQ3Jhc2hSZXBvcnRlckNsaWVudFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmFzaFJl
cG9ydGVyQ2xpZW50U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTNGNTNF
MjE1NEE1Q0MwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTEzRjUzRjIxNTRBNUNEMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE4QjVEMDFGRTFENTVCMDBG
OUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJbnNwZWN0
b3JXS1dlYlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUxOEI1RDExRkUx
RDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tJbnNwZWN0b3JXS1dlYlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1NDI5M0EyMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0
dXJlUmVjb2duaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0
dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NDI5M0EzMTk1QTQz
QzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyLm1tOyBwYXRoID0gaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwNTIxNUFEMTJEMDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1NDNFMzA2MjE1QUQxMkUwMDI3OUNEOSAvKiBXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTQzRTMwODIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRh
cmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NDNFMzA5MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1NDNFMzBBMjE1QzhBODQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTQzRTMwQjIxNUM4QTg0MDAyNzlDRDkgLyogV2ViUGFn
ZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUluc3Bl
Y3RvclRhcmdldENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0
M0UzMEUyMTVEOENFMjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTU0M0UzMEYyMTVEOENFMjAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVCQTgwQzFC
QTEyQkUxMDA3Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1QkE4MEQxQkEx
MkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NUJB
ODEyMUJBMjNFMDUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODM1LDYgKzM4NTIsMTAgQEAKIAkJQTVDMEYw
QTkyMDAwNjU2RTAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JXaW5kb3cubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzBGMEFBMjAwMDY1NkUwMDUzNjUzNiAvKiBXS0luc3Bl
Y3RvcldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3Rv
cldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUQzNTA0RDFENzhGMEQy
MDA1MTI0QTkgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFMzkxRkIyMTgzQzFFOTAwQzhGQjMxIC8q
IEluc3BlY3RvclRhcmdldFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvclRhcmdldFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTVFMzkxRkMyMTgzQzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclRhcmdldFByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAv
KiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlRGVidWdn
YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUM2QUQzMjE1MUJENjkw
MDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlRGVi
dWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUVGRDM4QjE2QjBFODhD
MDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogQVBJU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhDQ0RENzE5M0FD
OUUzMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5TdG9yYWdlLnNiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBs
ZS5XZWJLaXQuU3RvcmFnZS5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNjYs
NiArNzE4NywxMiBAQAogCQkJCUMwQ0U3MjU4MTI0N0U0REEwMEJDMEVDNCAvKiBXZWJQYWdlLm1l
c3NhZ2VzLmluICovLAogCQkJCUJDN0I2MjE0MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3Jv
dXBQcm94eS5jcHAgKi8sCiAJCQkJQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VH
cm91cFByb3h5LmggKi8sCisJCQkJQTU0M0UzMEEyMTVDOEE4NDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQuY3BwICovLAorCQkJCUE1NDNFMzA4MjE1QzhBODMwMDI3OUNEOSAvKiBX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmggKi8sCisJCQkJQTU0M0UzMDkyMTVDOEE4MzAwMjc5Q0Q5
IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcCAqLywKKwkJCQlBNTQzRTMw
QjIxNUM4QTg0MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCAq
LywKKwkJCQlBNTQzRTMwNjIxNUFEMTJFMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdl
dEZyb250ZW5kQ2hhbm5lbC5jcHAgKi8sCisJCQkJQTU0M0UzMDUyMTVBRDEyRDAwMjc5Q0Q5IC8q
IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuaCAqLywKIAkJCQkyRDVDOUQw
MzE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5RDA0
MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oICovLAogCQkJCUJDQTBFRjdFMTIz
MzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5jcHAgKi8sCkBAIC03MjE5LDYgKzcyNDYsOCBA
QAogCQkJCTJERDVBNzJBMUVCRjA5QTcwMDlCQTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1
dG9JbmNyZWFzZXNDb3VudGVyLmggKi8sCiAJCQkJODM5QTJGMkYxRTIwNjczOTAwMzkwNTdFIC8q
IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCAqLywKIAkJCQk4MzlBMkYz
MDFFMjA2NzM5MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIu
aCAqLywKKwkJCQlBNUUzOTFGQjIxODNDMUU5MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuY3BwICovLAorCQkJCUE1RTM5MUZDMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJn
ZXRQcm94eS5oICovLAogCQkJCTMxNjA3RjM4MTk2MjcwMDIwMDlCODdEQSAvKiBMZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFn
ZUNsaWVudC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmNwcCAqLywKQEAgLTczMjEsMTIgKzczNTAsMTggQEAKIAkJCQk3Q0NDQzhGOTFBNUY1MEZE
MDA4RkIwREEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJQkMxREZFQTMxMkIzMUY4
NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLAogCQkJ
CUJDMURGRUEyMTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmggKi8sCisJCQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dh
YmxlLmNwcCAqLywKKwkJCQlBNUVDNkFEMzIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURlYnVn
Z2FibGUuaCAqLywKIAkJCQk4MzcyREIyNjFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50LmNwcCAqLywKIAkJCQk4MzcyREIyNzFBNjc1NjI4MDBDNjk3QzUg
LyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJQkM3QjYyMDUxMjlB
MEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJQkM3QjYyMDQxMjlBMEE2
NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oICovLAogCQkJCTJEOUVBMzEwMUE5NkQ5RUIwMDJE
MjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwICovLAogCQkJCTJEOUVBMzBF
MUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKKwkJ
CQlBNTEzRjUzRjIxNTRBNUNEMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwICovLAorCQkJCUE1MTNGNTNFMjE1NEE1Q0MwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5oICovLAorCQkJCUE1NDNFMzBGMjE1RDhDRTIwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwICovLAorCQkJCUE1NDNFMzBFMjE1RDhDRTIwMDI3OUNE
OSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLywKIAkJCQlCQzExMUIwQjExMkY1
RTRGMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCAqLywKIAkJCQlCQzAzMkRDQjEwRjQzODlG
MDA1OEMxNUEgLyogV2ViUGFnZVByb3h5LmggKi8sCiAJCQkJQkNCRDM4RkExMjVCQUI5QTAwRDJD
MjlGIC8qIFdlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTg5NDQsNiArODk3OSw3IEBA
CiAJCQkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTRERjc3MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ0NUFERTFFNUY4
OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1RTM5MUZEMjE4M0MxRjgwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzVCQ0U1REYxQzUwNzY2QTAwQ0RFM0ZBIC8qIEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDREMkM4MTFERjYw
QkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRTQ5QTQ5MTFGRkE4Q0UwMDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkzNDMsMTEgKzkzNzksMTcgQEAKIAkJCQlCQzg1N0Y4NTEyQjgyRDBCMDBF
REVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMURGRUE0MTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4RjEwRjQzN0EwMDA1OEMxNUEgLyogV2Vi
UGFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQzZBRDQyMTUxQkQ3QjAwNjc3RDE3IC8qIFdl
YlBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyREIyOTFBNjc1NjI4MDBD
Njk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VH
cm91cFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcg
LyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTEz
RjU0MDIxNTRBNUQ3MDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1NDNFMzBDMjE1QzhBOEQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQzRTMxMDIxNUQ4Q0U2MDAyNzlDRDkg
LyogV2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQz
RTMwRDIxNUM4QTkwMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1NDNFMzA3MjE1QUQxMzcwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMENF
NzJBMTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDVDOUQwNjE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQkQzOTE1MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDYyZGJhM2ZiMjg3Li41MWQyNDNmNjcxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEwNCw2ICsxMDQsNyBA
QAogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlT3ZlcmxheS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC0zNzEsNiArMzcyLDcgQEAgV2ViUGFnZTo6
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCiAgICAgLCBtX3VpQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpKQog
ICAgICwgbV9maW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0aGlz
KSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3VzZXJDb250
ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFt
ZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
ICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1ZVJl
ZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDkwLDEx
ICs0OTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBtX3BhZ2UtPnNldENvbnRyb2xsZWRC
eUF1dG9tYXRpb24ocGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uKTsKIAotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1fcGFnZS0+c2V0UmVtb3RlSW5zcGVjdGlvbkFs
bG93ZWQocGFyYW1ldGVycy5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKTsKLSAgICBtX3BhZ2UtPnNl
dFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUocGFyYW1ldGVycy5yZW1vdGVJbnNwZWN0aW9u
TmFtZU92ZXJyaWRlKTsKLSNlbmRpZgotCiAgICAgbV9wYWdlLT5zZXRDYW5TdGFydE1lZGlhKGZh
bHNlKTsKICAgICBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBwYXJhbWV0ZXJzLm1heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CiAKQEAgLTI3NjUsNiArMjc2MiwyMSBAQCB2b2lkIFdlYlBh
Z2U6OnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQogICAgIG1fcGFn
ZS0+c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKTsKIH0KIAordm9pZCBXZWJQ
YWdlOjpjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgbV9p
bnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLT5jb25uZWN0SW5zcGVjdG9yKHRhcmdldElkKTsKK30K
Kwordm9pZCBXZWJQYWdlOjpkaXNjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0
SWQpCit7CisgICAgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLT5kaXNjb25uZWN0SW5zcGVj
dG9yKHRhcmdldElkKTsKK30KKwordm9pZCBXZWJQYWdlOjpzZW5kTWVzc2FnZVRvVGFyZ2V0QmFj
a2VuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLT5zZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2Vu
ZCh0YXJnZXRJZCwgbWVzc2FnZSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6aW5zZXJ0TmV3bGluZUlu
UXVvdGVkQ29udGVudCgpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTI3NzQsMTQgKzI3ODYsOSBAQCB2b2lk
IFdlYlBhZ2U6Omluc2VydE5ld2xpbmVJblF1b3RlZENvbnRlbnQoKQogfQogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCi12b2lkIFdlYlBhZ2U6OnNldEFsbG93c1JlbW90ZUluc3BlY3Rp
b24oYm9vbCBhbGxvdykKK3ZvaWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRp
bmcpCiB7Ci0gICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZChhbGxvdyk7Ci19
Ci0KLXZvaWQgV2ViUGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShjb25zdCBT
dHJpbmcmIG5hbWUpCi17Ci0gICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJy
aWRlKG5hbWUpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluZGljYXRp
bmcoaW5kaWNhdGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk5ZjQ0MjRiN2Y5Li45OTI2N2JmZTU5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjA1LDI3ICsyMDUsMjgg
QEAgY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcjsKIGNsYXNzIFdlYkRvY3VtZW50TG9hZGVyOwogY2xhc3MgV2ViRXZlbnQ7Citj
bGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOworY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CitjbGFzcyBX
ZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNs
YXNzIFdlYkluc3BlY3RvckNsaWVudDsKIGNsYXNzIFdlYkluc3BlY3RvclVJOwotY2xhc3MgV2Vi
R2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFdlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eTsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJOb3RpZmljYXRp
b25DbGllbnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIGNsYXNzIFdlYlBh
Z2VHcm91cFByb3h5OworY2xhc3MgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI7CiBj
bGFzcyBXZWJQYWdlT3ZlcmxheTsKLWNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiBjbGFz
cyBXZWJQb3B1cE1lbnU7CitjbGFzcyBXZWJUb3VjaEV2ZW50OworY2xhc3MgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5OwogY2xhc3MgV2ViVW5kb1N0ZXA7CiBjbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI7Ci1jbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViV2hlZWxF
dmVudDsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjsKIAogZW51bSBjbGFzcyBEZXZpY2VBY2Nlc3NTdGF0ZSA6IHVpbnQ4X3Q7CkBAIC0xMDQx
LDYgKzEwNDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wpOwogCisg
ICAgdm9pZCBjb25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOworICAgIHZv
aWQgZGlzY29ubmVjdEluc3BlY3Rvcihjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisKICAgICB2b2lkIGluc2VydE5ld2xpbmVJblF1b3RlZENvbnRl
bnQoKTsKIAogI2lmIFVTRShPU19TVEFURSkKQEAgLTEyMTgsOCArMTIyMyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KENhbGxiYWNr
SUQpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgdm9pZCBzZXRBbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwotICAgIHZvaWQgc2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVP
dmVycmlkZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CiAj
ZW5kaWYKIAogICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOwpAQCAtMTU1NCw2ICsx
NTU4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBtX2luc3BlY3RvcjsK
ICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAgICAgUmVmUHRyPFJl
bW90ZVdlYkluc3BlY3RvclVJPiBtX3JlbW90ZUluc3BlY3RvclVJOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4gbV9pbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyOwogCiAjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAg
IFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCA3NjI2ZmJiMjY1My4uNGVkY2ZlYTQ5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTEx
LDkgKzExMSwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAg
IFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQogCisgICAgQ29ubmVj
dEluc3BlY3RvcihTdHJpbmcgdGFyZ2V0SWQpCisgICAgRGlzY29ubmVjdEluc3BlY3RvcihTdHJp
bmcgdGFyZ2V0SWQpCisgICAgU2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoU3RyaW5nIHRhcmdl
dElkLCBTdHJpbmcgbWVzc2FnZSkKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IFNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYm9vbCBhbGxvdykKLSAgICBTZXRSZW1vdGVJbnNw
ZWN0aW9uTmFtZU92ZXJyaWRlKFN0cmluZyBuYW1lKQorICAgIFNldEluZGljYXRpbmcoYm9vbCBp
bmRpY2F0aW5nKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5h
NzYzNDg0ZjczZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIgorCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKKworV2ViUGFnZUluc3BlY3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3Rv
clRhcmdldChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmlu
ZyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbWFrZVN0cmluZygicGFnZS0iLCBTdHJpbmc6Om51bWJlcihtX3BhZ2UucGFnZUlEKCkpKTsK
K30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsJiBjaGFubmVsKQoreworICAgIGlmIChtX3BhZ2UuY29yZVBhZ2UoKSkKKyAg
ICAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJv
bnRlbmQoJmNoYW5uZWwpOworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmRpc2Nv
bm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmIGNoYW5uZWwpCit7CisgICAgaWYgKG1f
cGFnZS5jb3JlUGFnZSgpKQorICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgmY2hhbm5lbCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZUluc3BlY3RvclRhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIGlmIChtX3BhZ2UuY29yZVBhZ2UoKSkKKyAgICAgICAgbV9wYWdl
LmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQobWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdl
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNzBlMzFjOGI4Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJn
ZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQpOworcHVibGljOgorICAgIFdlYlBhZ2VJbnNwZWN0
b3JUYXJnZXQoV2ViUGFnZSYpOworICAgIH5XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KCkgPSBkZWZh
dWx0OworCisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2U7IH0KKwor
ICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIGNvbm5lY3Qo
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNr
ZW5kKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iOTdiNzdm
YmE1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEwNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xs
ZXIoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9wYWdlVGFyZ2V0
KHBhZ2UpCit7CisgICAgLy8gRG8gbm90IHNlbmQgdGhlIHBhZ2UgdGFyZ2V0IHRvIHRoZSBVSVBy
b2Nlc3MsIHRoZSBXZWJQYWdlUHJveHkgd2lsbCBtYW5hZ2VyIHRoaXMgZm9yIHVzLgorICAgIG1f
dGFyZ2V0cy5zZXQobV9wYWdlVGFyZ2V0LmlkZW50aWZpZXIoKSwgJm1fcGFnZVRhcmdldCk7Cit9
CisKK1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyOjp+V2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIoKQoreworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250
cm9sbGVyOjphZGRUYXJnZXQoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKK3sK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdGFyZ2V0cy5zZXQodGFyZ2V0LmlkZW50aWZpZXIoKSwg
JnRhcmdldCk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZUlu
c3BlY3RvclRhcmdldCh0YXJnZXQuaWRlbnRpZmllcigpLCB0YXJnZXQudHlwZSgpKSk7Cit9CisK
K3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OnJlbW92ZVRhcmdldChJbnNw
ZWN0b3I6Okluc3BlY3RvclRhcmdldCYgdGFyZ2V0KQoreworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UodGFyZ2V0LmlkZW50aWZpZXIoKSAhPSBtX3BhZ2VUYXJnZXQuaWRlbnRpZmllcigpLCAiU2hv
dWxkIG5ldmVyIHJlbW92ZSB0aGUgbWFpbiB0YXJnZXQuIik7CisKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZXN0cm95SW5zcGVjdG9yVGFyZ2V0KHRhcmdldC5pZGVu
dGlmaWVyKCkpKTsKKworICAgIG1fdGFyZ2V0cy5yZW1vdmUodGFyZ2V0LmlkZW50aWZpZXIoKSk7
CisgICAgbV90YXJnZXRGcm9udGVuZENoYW5uZWxzLnJlbW92ZSh0YXJnZXQuaWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6Y29ubmVjdElu
c3BlY3Rvcihjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIEluc3BlY3RvclRhcmdldCog
dGFyZ2V0ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRD
aGFubmVsPiBjaGFubmVsID0gbV90YXJnZXRGcm9udGVuZENoYW5uZWxzLmdldCh0YXJnZXRJZCk7
CisgICAgaWYgKCFjaGFubmVsKSB7CisgICAgICAgIGNoYW5uZWwgPSBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0RnJvbnRlbmRDaGFubmVsOjpjcmVhdGUoKnRoaXMsIHRhcmdldElkKTsKKyAgICAgICAg
bV90YXJnZXRGcm9udGVuZENoYW5uZWxzLnNldCh0YXJnZXQtPmlkZW50aWZpZXIoKSwgY2hhbm5l
bCk7CisgICAgfQorCisgICAgdGFyZ2V0LT5jb25uZWN0KCpjaGFubmVsLmdldCgpKTsKK30KKwor
dm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcjo6ZGlzY29ubmVjdEluc3BlY3Rv
cihjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0
ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJlZlB0cjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVs
PiBjaGFubmVsID0gbV90YXJnZXRGcm9udGVuZENoYW5uZWxzLnRha2UodGFyZ2V0SWQpOworICAg
IGlmICghY2hhbm5lbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGFyZ2V0LT5kaXNjb25uZWN0
KCpjaGFubmVsLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJv
bGxlcjo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEluc3BlY3RvclRhcmdldCogdGFyZ2V0ID0g
bV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVy
bjsKKworICAgIHRhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQobWVzc2FnZSk7Cit9
CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI6OnNlbmRNZXNzYWdlVG9U
YXJnZXRGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VuZE1lc3Nh
Z2VUb0luc3BlY3RvckZyb250ZW5kKHRhcmdldElkLCBtZXNzYWdlKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZjY2I2ZTFkNzgxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3Rv
clRhcmdldENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgiCisjaW5jbHVkZSAi
V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEluc3BlY3Rv
clRhcmdldDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2Ns
YXNzIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
cihXZWJQYWdlJik7CisgICAgfldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKCk7CisK
KyAgICB2b2lkIGFkZFRhcmdldChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldCYpOworICAgIHZv
aWQgcmVtb3ZlVGFyZ2V0KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0Jik7CisKKyAgICB2b2lk
IGNvbm5lY3RJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CisgICAgdm9pZCBkaXNj
b25uZWN0SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOworICAgIHZvaWQgc2VuZE1l
c3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRGcm9udGVuZChjb25zdCBT
dHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCitwcml2YXRlOgorICAg
IFdlYlBhZ2UmIG1fcGFnZTsKKyAgICBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0IG1fcGFnZVRhcmdl
dDsKKyAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQqPiBtX3Rh
cmdldHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
RnJvbnRlbmRDaGFubmVsPj4gbV90YXJnZXRGcm9udGVuZENoYW5uZWxzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENo
YW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMWE0YmY2
MGU5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFnZUlu
c3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5oIgorCisjaW5jbHVkZSAiV2ViUGFnZUluc3Bl
Y3RvclRhcmdldENvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitSZWY8V2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hh
bm5lbD4gV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbDo6Y3JlYXRlKFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyJiB0YXJnZXRDb250cm9sbGVyLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRGcm9udGVuZENoYW5uZWwodGFyZ2V0Q29udHJvbGxlciwgdGFyZ2V0SWQpKTsKK30K
KworV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbDo6V2ViUGFnZUluc3BlY3Rv
clRhcmdldEZyb250ZW5kQ2hhbm5lbChXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlciYg
dGFyZ2V0Q29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKKyAgICA6IG1fdGFyZ2V0
Q29udHJvbGxlcih0YXJnZXRDb250cm9sbGVyKQorICAgICwgbV90YXJnZXRJZCh0YXJnZXRJZCkK
K3sKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsOjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fdGFyZ2V0
Q29udHJvbGxlci5zZW5kTWVzc2FnZVRvVGFyZ2V0RnJvbnRlbmQobV90YXJnZXRJZCwgbWVzc2Fn
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5l
bC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRh
cmdldEZyb250ZW5kQ2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5mYzlhY2RkMGUwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI7CisKK2Ns
YXNzIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVuZENoYW5uZWwgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsPiwgcHVibGlj
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVu
ZENoYW5uZWw+IGNyZWF0ZShXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlciYsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0SWQpOworICAgIHZpcnR1YWwgfldlYlBhZ2VJbnNwZWN0b3JUYXJnZXRG
cm9udGVuZENoYW5uZWwoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZUluc3Bl
Y3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbChXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
ciYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOworCisgICAgQ29ubmVjdGlvblR5cGUgY29ubmVj
dGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb25uZWN0aW9uVHlwZTo6UmVtb3Rl
OyB9CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJv
bGxlciYgbV90YXJnZXRDb250cm9sbGVyOworICAgIFN0cmluZyBtX3RhcmdldElkOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMjI1
Mzg0M2JiN2EuLjVhMGYyMGIzNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTgtMTEtMTIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdlYiBJbnNwZWN0b3Igd2luZG93
IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVtb3RlIEluc3BlY3RvcikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDU0Njk4NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaDoKKyAgICAgICAgV2ViS2l0TGVnYWN5IHdpbGwgc3RpbGwgaGF2ZSByZW1vdGUgaW5zcGVj
dGlvbiBvZiB0aGUgUGFnZSBkaXJlY3RseS4KKwogMjAxOC0xMS0wOSAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJhdyBjYXBzIGxvY2sgaW5kaWNh
dG9yIGluIHBhc3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBkODI2Mzlj
OTgxZi4uZTY2MmRiNTNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00OCw3ICs0OCw3
IEBAIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCi1j
bGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworY2xhc3MgV2ViSW5zcGVjdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNw
ZWN0b3JDbGllbnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAKQEAgLTYxLDYgKzYxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOwogICAgIHZvaWQgaGlk
ZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgYm9vbCBhbGxvd1JlbW90ZUluc3BlY3Rpb25Ub1BhZ2VEaXJlY3RseSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBo
aWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwo=
</data>
<flag name="review"
          id="371783"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354690</attachid>
            <date>2018-11-13 12:52:34 -0800</date>
            <delta_ts>2018-11-14 11:21:25 -0800</delta_ts>
            <desc>[PATCH] Follow-up for Local Inspector</desc>
            <filename>follow-up-1.patch</filename>
            <type>text/plain</type>
            <size>6315</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNGVjZDk0NmViYTIuLjY0YzNjNDVjY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDE4LTExLTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogS2VlcCBXZWIgSW5zcGVjdG9yIHdpbmRvdyBhbGl2
ZSBhY3Jvc3MgcHJvY2VzcyBzd2FwcyAoUFNPTikgKFJlbW90ZSBJbnNwZWN0b3IpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0OTQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ1NDY5ODU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnRpbnVlIHRvIGhhdmUgdGhlIExvY2FsIEluc3BlY3RvciBk
aXNhYmxlIFBTT04gd2hpbGUgb3BlbgorICAgICAgICB1bnRpbCBzdXBwb3J0IGlzIGFkZGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc0xvY2FsSW5zcGVjdG9y
RnJvbnRlbmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEhhc0xv
Y2FsSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJu
YWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldEhhc0xvY2FsSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTgtMTEtMTIgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBLZWVwIFdlYiBJ
bnNwZWN0b3Igd2luZG93IGFsaXZlIGFjcm9zcyBwcm9jZXNzIHN3YXBzIChQU09OKSAoUmVtb3Rl
IEluc3BlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDliZjZhNjg0YzVmLi5mZGY1YjNkZDczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC02MjYzLDYgKzYyNjMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
ZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAKICAgICBtX3Rvb2xU
aXAgPSBTdHJpbmcoKTsKIAorICAgIG1faW5zcGVjdG9ySGFzTG9jYWxGcm9udGVuZCA9IGZhbHNl
OworCiAgICAgbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZmFsc2U7CiAgICAg
bV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlhMmE4M2JlZTcxLi42M2ZlMDUxZDgxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM4NCw2ICszODQsOSBAQCBw
dWJsaWM6CiAKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKCkgY29uc3Q7CiAKKyAg
ICBib29sIGhhc0xvY2FsSW5zcGVjdG9yRnJvbnRlbmQoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3Rvckhhc0xvY2FsRnJvbnRlbmQ7IH0KKyAgICB2b2lkIHNldEhhc0xvY2FsSW5zcGVjdG9yRnJv
bnRlbmQoYm9vbCBoYXNMb2NhbEZyb250ZW5kKSB7IG1faW5zcGVjdG9ySGFzTG9jYWxGcm9udGVu
ZCA9IGhhc0xvY2FsRnJvbnRlbmQ7IH0KKwogICAgIHZvaWQgZGlkQ2hhbmdlSW5zcGVjdG9yRnJv
bnRlbmRDb3VudCh1bnNpZ25lZCBjb3VudCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ291bnQgPSBj
b3VudDsgfQogICAgIHVuc2lnbmVkIGluc3BlY3RvckZyb250ZW5kQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2luc3BlY3RvckZyb250ZW5kQ291bnQ7IH0KIApAQCAtMjExOCw2ICsyMTIxLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNlIH07CiAK
ICAgICB1bnNpZ25lZCBtX2luc3BlY3RvckZyb250ZW5kQ291bnQgeyAwIH07CisgICAgYm9vbCBt
X2luc3BlY3Rvckhhc0xvY2FsRnJvbnRlbmQgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYm9vbCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCAzNGZkNmZiNTIzMi4uMzIwNjZiZDc3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQxOSw2ICs0MTksNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKICNl
bmRpZgogCisgICAgU2V0SGFzTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGhhc0xvY2FsRnJv
bnRlbmQpCiAgICAgRGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1aW50NjRfdCBjb3Vu
dCkKIAogICAgIENyZWF0ZUluc3BlY3RvclRhcmdldChTdHJpbmcgdGFyZ2V0SWQsIGVudW06dWlu
dDhfdCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5YmRmNmUwN2NjOS4uYTk3N2UxMjA0
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIx
MjEsNiArMjEyMSwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJv
Y2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmCiAgICAgICAgIHJldHVybiBw
YWdlLnByb2Nlc3MoKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQg
cHJvY2VzcyBzd2FwIHdpdGggYSBsb2NhbCB3ZWIgaW5zcGVjdG9yLgorICAgIGlmIChwYWdlLmhh
c0xvY2FsSW5zcGVjdG9yRnJvbnRlbmQoKSkgeworICAgICAgICByZWFzb24gPSAiQSBMb2NhbCBX
ZWIgSW5zcGVjdG9yIGZyb250ZW5kIGlzIGNvbm5lY3RlZCJfczsKKyAgICAgICAgcmV0dXJuIHBh
Z2UucHJvY2VzcygpOworICAgIH0KKwogICAgIGlmIChtX2F1dG9tYXRpb25TZXNzaW9uKSB7CiAg
ICAgICAgIHJlYXNvbiA9ICJBbiBhdXRvbWF0aW9uIHNlc3Npb24gaXMgYWN0aXZlIl9zOwogICAg
ICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBiMjcyMWE1N2E0NC4uZTk1YzAwN2Qy
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcApAQCAtMTAxLDExICsxMDEsMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Gcm9u
dGVuZENvbm5lY3Rpb24oYm9vbCB1bmRlclRlc3QpCiAgICAgbV9mcm9udGVuZENvbm5lY3Rpb24t
Pm9wZW4oKTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0
b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0LCBjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICBtX3BhZ2UtPnNldEhhc0xvY2FsSW5zcGVjdG9y
RnJvbnRlbmQodHJ1ZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJv
bnRlbmRDb25uZWN0aW9uKCkKIHsKKyAgICBtX3BhZ2UtPnNldEhhc0xvY2FsSW5zcGVjdG9yRnJv
bnRlbmQoZmFsc2UpOworCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3Nl
KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCiAgICAgLy8gSWYgd2UgdHJpZWQgdG8gY2xvc2UgdGhl
IGZyb250ZW5kIGJlZm9yZSBpdCB3YXMgY3JlYXRlZCwgdGhlbiBubyBjb25uZWN0aW9uIGV4aXN0
cyB5ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDUxZDI0M2Y2NzFiLi5lZmIzNjA3MWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM0NzIsNiArMzQ3MiwxMSBAQCBSZW1vdGVXZWJJ
bnNwZWN0b3JVSSogV2ViUGFnZTo6cmVtb3RlSW5zcGVjdG9yVUkoKQogICAgIHJldHVybiBtX3Jl
bW90ZUluc3BlY3RvclVJLmdldCgpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldEhhc0xvY2FsSW5z
cGVjdG9yRnJvbnRlbmQoYm9vbCBoYXNMb2NhbEZyb250ZW5kKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2V0SGFzTG9jYWxJbnNwZWN0b3JGcm9udGVuZChoYXNMb2NhbEZy
b250ZW5kKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6aW5zcGVjdG9yRnJvbnRlbmRDb3VudENoYW5n
ZWQodW5zaWduZWQgY291bnQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDaGFuZ2VJbnNwZWN0b3JGcm9udGVuZENvdW50KGNvdW50KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOTkyNjdiZmU1OTAuLmVjNjE2NmZiNWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yOTks
NiArMjk5LDcgQEAgcHVibGljOgogICAgIFJlbW90ZVdlYkluc3BlY3RvclVJKiByZW1vdGVJbnNw
ZWN0b3JVSSgpOwogICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4gISFtX2luc3Bl
Y3RvclVJIHx8ICEhbV9yZW1vdGVJbnNwZWN0b3JVSTsgfQogCisgICAgdm9pZCBzZXRIYXNMb2Nh
bEluc3BlY3RvckZyb250ZW5kKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRDb3Vu
dENoYW5nZWQodW5zaWduZWQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
</data>
<flag name="review"
          id="372003"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>