<?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>110407</bug_id>
          
          <creation_ts>2013-02-20 16:48:26 -0800</creation_ts>
          <short_desc>Web Inspector: enhance the LayerTreeAgent protocol to report smarter information</short_desc>
          <delta_ts>2013-03-08 00:45:29 -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 (Deprecated)</component>
          <version>528+ (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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>apavlov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>837931</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-02-20 16:48:26 -0800</bug_when>
    <thetext>In practice, we&apos;re only interested in showing layers displayed for nodes in a particular subtree. However, the LayerTreeAgent exposes a single method to get layers through .getLayerTree() which returns the entire document&apos;s layer tree. This can be a lot of data depending on the complexity of the document, and a lot of this data may turn out to be completely useless to the front-end. This bug covers replacing the .getLayerTree() method with a new .layersForNode() method which operates only on the scope of a particular Element. The functionality of .getLayerTree() should still be available by calling .layersForNode() with the root element or Document node as parameter.

Additionally, we should also make the change such that we expose the node id of the layer&apos;s associated node, even when that node hasn&apos;t been pushed to the front-end yet. This will allow to capture the cases where layers are trashed and recreated for the same node, allowing the front-end not to mark these changes as an update rather than a completely new layer, since the relevant object is the node rather than the layer.

Finally, it may not be necessary to return a tree structure but rather just a flat list of layers should suffice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837932</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-02-20 16:48:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/13259186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841460</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-02-25 17:50:23 -0800</bug_when>
    <thetext>Retitling bug to take into account further changes to accommodate other requirements from the UI.

First, we should expose a way to narrow down the type of RenderLayers we&apos;re interested in. Making the backend return all RenderLayers, including those aren&apos;t composited, will return a very large amount of data. The UI should be able to instruct the backend that we&apos;re only interested in composited layers, which will be more rare and a lot more interesting to inspect for authors.

Second, we should provide more information about layers that aren&apos;t directly associated to an element in the DOM but may be generated via CSS (::before and ::after) or due to the presentation of a reflection.

Finally, since we&apos;ve exposed it via https://bugs.webkit.org/show_bug.cgi?id=110505, we should also return the list of reasons why a RenderLayer was composited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841618</commentid>
    <comment_count>3</comment_count>
      <attachid>190202</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-02-25 21:55:41 -0800</bug_when>
    <thetext>Created attachment 190202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841688</commentid>
    <comment_count>4</comment_count>
      <attachid>190202</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-02-25 23:50:52 -0800</bug_when>
    <thetext>Comment on attachment 190202
Patch

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

I know others will want to take a look at this (those that looked at the first layer patches). I&apos;m sure this needs a test for &quot;reasons&quot;.

&gt; Source/WebCore/ChangeLog:29
&gt; +        push a node by its id when the front-end needs to gether information about a

Typo: &quot;gather&quot; =&gt; &quot;gather&quot;

&gt; Source/WebCore/inspector/Inspector.json:1715
&gt; +                &quot;description&quot;: &quot;Unique DOM node identifier used to reference a node that has not yet been pushed to the front-end.&quot;

This isn&apos;t a guarantee that the node has not been pushed, it is just n indication to the front-end that it may not have been pushed and may need to be requested. It may already have been pushed.

&gt; Source/WebCore/inspector/Inspector.json:3691
&gt; +                    { &quot;name&quot;: &quot;isReflection&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Indicates whether this layer was used to provide a reflection for the element.&quot; },

This value, more so then the others, feels very implementation specific. Is it likely the case that reflections will always be treated as special? Once this is in the protocol, it will be hard to remove it.

Maybe this parameters can move to a set of more abstract values. For instance a &quot;specialization&quot; enum that could be &quot;reflection&quot; or &quot;new-reason&quot;. With an &quot;additionalInfo&quot; object property containing extra information about the reflection / new-reason. Similar to &quot;TimelineEvent&quot; which has a type and an opaque &quot;data&quot; object that has different properties depending on the type. Each time a new timeline event is added the protocol does not need to change to support it.

&gt; Source/WebCore/inspector/Inspector.json:3721
&gt; +                    { &quot;name&quot;: &quot;layerId&quot;, &quot;$ref&quot;: &quot;LayerId&quot;, &quot;description&quot;: &quot;The id of the layer for which we want to get the reason it was composited.&quot; }

Nit: In the descriptions you say &quot;reason&quot; but everywhere else you say &quot;reasons&quot;. I&apos;d stick with reasons everywhere.

&gt; Source/WebCore/inspector/Inspector.json:3725
&gt; +                    { &quot;name&quot;: &quot;reasons&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;The reason why the layer was composited.&quot; }

I think &quot;reasonsMask&quot; might be clearer that this is a bit mask. Just having name:&quot;reasons&quot; and type:&quot;integer&quot; sounds like this is the # of reasons, not a mask of a different unique reasons.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:168
&gt; +    if (isGenerated)
&gt; +        node = renderer-&gt;generatingNode();
&gt; +    else if (renderLayer-&gt;isReflection())
&gt; +        node = renderer-&gt;parent()-&gt;node();

Can there be a reflection for generated content? In that case, I assume these both match.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:212
&gt; +void InspectorLayerTreeAgent::reasonsForCompositingLayer(ErrorString* errorString, const String&amp; layerId, int* reasons)

The compositing reasons part of this patch could have been a separate patch. As it is, I don&apos;t see any tests for reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841707</commentid>
    <comment_count>5</comment_count>
      <attachid>190202</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-26 00:34:05 -0800</bug_when>
    <thetext>Comment on attachment 190202
Patch

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

Please split this change into DOMAgent refactoring and a Layer agent changes.

&gt;&gt; Source/WebCore/inspector/Inspector.json:1715
&gt;&gt; +                &quot;description&quot;: &quot;Unique DOM node identifier used to reference a node that has not yet been pushed to the front-end.&quot;
&gt; 
&gt; This isn&apos;t a guarantee that the node has not been pushed, it is just n indication to the front-end that it may not have been pushed and may need to be requested. It may already have been pushed.

This should be landed separately.

&gt; Source/WebCore/inspector/Inspector.json:1992
&gt; +                &quot;name&quot;: &quot;pushNodeByIdToFrontend&quot;,

ByBackendIdToFrontend

&gt; Source/WebCore/inspector/Inspector.json:3684
&gt; +                    { &quot;name&quot;: &quot;nodeId&quot;, &quot;$ref&quot;: &quot;DOM.BackendNodeId&quot;, &quot;description&quot;: &quot;The id for the node associated with this layer. Note that this node id may not have been pushed yet.&quot; },

backendNodeId

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:315
&gt; +    id = m_nodeToBackendIdMap.get(node);

We don&apos;t want backend ids for all nodes.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:320
&gt; +        m_idToNode.set(id, node);

You are risk of holding a pointer to the freed element which should never happen.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:600
&gt; +    int id = m_documentNodeToIdMap.get(node);

Please use typedef for BackendNodeId and never use the same value for node id and backend id. I&apos;d even keep backend node ids negative so that they were never misused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841996</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-02-26 07:56:08 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 190202 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190202&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3691
&gt; &gt; +                    { &quot;name&quot;: &quot;isReflection&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Indicates whether this layer was used to provide a reflection for the element.&quot; },
&gt; 
&gt; This value, more so then the others, feels very implementation specific. Is it likely the case that reflections will always be treated as special? Once this is in the protocol, it will be hard to remove it.
&gt; 
&gt; Maybe this parameters can move to a set of more abstract values. For instance a &quot;specialization&quot; enum that could be &quot;reflection&quot; or &quot;new-reason&quot;. With an &quot;additionalInfo&quot; object property containing extra information about the reflection / new-reason. Similar to &quot;TimelineEvent&quot; which has a type and an opaque &quot;data&quot; object that has different properties depending on the type. Each time a new timeline event is added the protocol does not need to change to support it.

This is a good idea.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:168
&gt; &gt; +    if (isGenerated)
&gt; &gt; +        node = renderer-&gt;generatingNode();
&gt; &gt; +    else if (renderLayer-&gt;isReflection())
&gt; &gt; +        node = renderer-&gt;parent()-&gt;node();
&gt; 
&gt; Can there be a reflection for generated content? In that case, I assume these both match.

As I understand it, a renderer&apos;s generatingNode can only be an element for which a ::before or ::after pseudo-class has been applied, or at the very least, a real Node object. However, when a RenderLayer is a reflection, it&apos;s not associated with a Node directly, it only lives in the RenderLayer hierarchy to provide a reflection. So I don&apos;t believe these two cases can be true.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:212
&gt; &gt; +void InspectorLayerTreeAgent::reasonsForCompositingLayer(ErrorString* errorString, const String&amp; layerId, int* reasons)
&gt; 
&gt; The compositing reasons part of this patch could have been a separate patch. As it is, I don&apos;t see any tests for reasons.

You&apos;re right, I will split it off and provide additional testing coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842015</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-02-26 08:10:37 -0800</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt;&gt; Source/WebCore/inspector/Inspector.json:1715
&gt; &gt;&gt; +                &quot;description&quot;: &quot;Unique DOM node identifier used to reference a node that has not yet been pushed to the front-end.&quot;
&gt; &gt; 
&gt; &gt; This isn&apos;t a guarantee that the node has not been pushed, it is just n indication to the front-end that it may not have been pushed and may need to be requested. It may already have been pushed.
&gt; 
&gt; This should be landed separately.

OK. I originally didn&apos;t want to do that since there were API changes in that file that require changes to the LayerTreeAgent, but I will make a patch that just introduces pushNodeByBackendIdToFrontend and the new BackendId type without further changes.

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:315
&gt; &gt; +    id = m_nodeToBackendIdMap.get(node);
&gt; 
&gt; We don&apos;t want backend ids for all nodes.

Any node could have had a backendId generated for it through the LayerTreeAgent at one point or another.

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:600
&gt; &gt; +    int id = m_documentNodeToIdMap.get(node);
&gt; 
&gt; Please use typedef for BackendNodeId and never use the same value for node id and backend id. I&apos;d even keep backend node ids negative so that they were never misused.

The reason I want to reuse the same IDs was for the front-end to be able to reference to nodes via a backendNodeId or a nodeId transparently. The layer tree front-end needs to be able to tell a layer is associated with a given node whether it&apos;s been pushed or not. So either the backendNodeId needs to be preserved as the nodeId upon pushing the node, or we&apos;ll need to have both backendNodeId and nodeId listed on the node when it&apos;s pushed so that the front-end can establish that a node that was previously unpushed and referred to with some backendNodeId is the same as the one that was pushed with a nodeId.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842491</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-02-26 16:24:22 -0800</bug_when>
    <thetext>I have split the supporting InspectorDOMAgent changes off into a different bug: https://bugs.webkit.org/show_bug.cgi?id=110921.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845801</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-02 07:42:17 -0800</bug_when>
    <thetext>Will send patches to get to the functionality discussed in this bug in 5 steps. The first step is to provide a clean slate to build a new set of APIs: https://bugs.webkit.org/show_bug.cgi?id=111251.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846420</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-04 06:35:13 -0800</bug_when>
    <thetext>Second step is https://bugs.webkit.org/show_bug.cgi?id=111312.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847534</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-05 03:56:45 -0800</bug_when>
    <thetext>Third step is https://bugs.webkit.org/show_bug.cgi?id=111419.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848672</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-06 02:55:12 -0800</bug_when>
    <thetext>Fourth step is https://bugs.webkit.org/show_bug.cgi?id=111551.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849924</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-07 02:56:09 -0800</bug_when>
    <thetext>Fifth and final step is https://bugs.webkit.org/show_bug.cgi?id=111703.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850963</commentid>
    <comment_count>14</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-03-08 00:45:29 -0800</bug_when>
    <thetext>All subtasks are complete, closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190202</attachid>
            <date>2013-02-25 21:55:41 -0800</date>
            <delta_ts>2013-02-26 00:34:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110407-20130225215202.patch</filename>
            <type>text/plain</type>
            <size>97036</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMzMGQ0MTU5M2M1NTAw
ODhmMTYwNDYyYzVjYmViYjc3ZTVjOWQwNS4uOTk5ZjMzYzBhOGRhMmM5NzRkZmNjNTAzNjRmZjQy
Y2E3Mjc3Y2ZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMy0wMi0yNSAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGVuaGFuY2UgdGhlIExheWVyVHJlZUFnZW50IHByb3RvY29sIHRvIHJlcG9ydCBzbWFydGVyIGlu
Zm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTA0MDcKKworICAgICAgICBUaGlzIGlzIHRydWx5IGEgc2Vjb25kIHBhc3Mgb24gdGhlIExh
eWVyVHJlZUFnZW50IHRha2luZyBpbnRvIGFjY291bnQgaXNzdWVzCisgICAgICAgIGRpc2NvdmVy
ZWQgZHVyaW5nIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgdGhlIGxheWVyIHRyZWUgc2lkZWJhciBw
YW5lbCBpbiB0aGUKKyAgICAgICAgU2FmYXJpIFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgQSBj
b3JlIGlzc3VlIHdhcyB0aGUgbG9vc2UgcmVsYXRpb25zaGlwIGJldHdlZW4gbGF5ZXJzIGFuZCBu
b2RlcyAoaW4gdGhlIERPTQorICAgICAgICBvciBmb3IgZ2VuZXJhdGVkIGNvbnRlbnQpLiBJdCBp
cyBuZWNlc3NhcnkgdG8gYmUgYWJsZSB0byBwcm92aWRlIGEgbm9kZSBpZCBmb3IKKyAgICAgICAg
YSBsYXllciBzbyB0aGF0IHRoZSBmcm9udC1lbmQgY2FuIGNoZWNrIGZvciBtdXRhdGlvbnMgb2Yg
dGhlIGxheWVyIHRyZWUgdGFraW5nCisgICAgICAgIGludG8gYWNjb3VudCBub2RlIGlkcyBhcyB3
ZWxsIGFzIGxheWVyIGlkcyBhcyBsYXllcnMgY2FuIGJlIGVhc2lseSB0cmFzaGVkIGFuZAorICAg
ICAgICByZWNyZWF0ZWQgZHVyaW5nIGFuaW1hdGlvbnMgKGFuZCBvdGhlciBvcGVyYXRpb25zKSBh
bmQgdGhlIG9ubHkgY29uc3RhbnQgdG8KKyAgICAgICAgaWRlbnRpZnkgdGhlbSBpbiB0aGF0IGNh
c2Ugd291bGQgYmUgdGhlIGFzc29jaWF0ZSBub2RlJ3MgaWQuCisKKyAgICAgICAgQXMgd2UgZG9u
J3Qgd2FudCB0byBwdXNoIG5vZGUgaWRzIGRpcmVjdGx5IGFzIHdlIHNlbmQgbGF5ZXIgaW5mb3Jt
YXRpb24gdG8gdGhlCisgICAgICAgIGZyb250LWVuZCwgd2UgaW50cm9kdWNlIGEgbmV3IGZhY2ls
aXR5IGluIHRoZSBJbnNwZWN0b3JET01BZ2VudCBhbGxvd2luZyB1cyB0bworICAgICAgICBvYnRh
aW4gYW4gaWQgZm9yIGEgbm9kZSB3aXRob3V0IHB1c2hpbmcgaXQgdG8gdGhlIGZyb250LWVuZCBk
aXJlY3RseS4gVGhlIG5ldworICAgICAgICBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUlkRm9yTm9k
ZSgpIG1ldGhvZCBkb2VzIGp1c3QgdGhhdCBhbmQgdGhlIHZhbHVlIHJldHVybmVkCisgICAgICAg
IGlzIGV4cG9zZWQgaW4gdGhlIHByb3RvY29sIGFzIGEgQmFja2VuZE5vZGVJZCwgYWxsb3dpbmcg
dG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorICAgICAgICB0aGUgZXhpc3RpbmcgTm9kZUlkIHdoaWNo
IGltcGxpZXMgdGhlIG5vZGUgaGFzIGJlZW4gcHVzaGVkLgorCisgICAgICAgIFRoZSBpZHMgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgbmV3IG1ldGhvZCBhcmUgcmV1c2VkIHdoZW4gdGhlIG5vZGUgaXMgaW5k
ZWVkIHB1c2hlZAorICAgICAgICB0byB0aGUgZnJvbnQtZW5kLiBJdCBpcyBjcml0aWNhbCB0byBr
ZWVwIHRoZSBpZCBiZXR3ZWVuIG5vbi1wdXNoZWQgYW5kIHB1c2hlZAorICAgICAgICBzdGF0ZXMg
c28gdGhhdCB0aGUgaWRzIHJlcG9ydGVkIGluIHRoZSBsYXllciBvYmplY3RzIGFyZSBjb25zaXN0
ZW50LgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgd2UgYWRkIGEgbmV3IHByb3RvY29sIG1ldGhv
ZCB0byB0aGUgSW5zcGVjdG9yRE9NQWdlbnQgYWxsb3dpbmcgdG8KKyAgICAgICAgcHVzaCBhIG5v
ZGUgYnkgaXRzIGlkIHdoZW4gdGhlIGZyb250LWVuZCBuZWVkcyB0byBnZXRoZXIgaW5mb3JtYXRp
b24gYWJvdXQgYQorICAgICAgICBub2RlIGFzc29jaWF0ZWQgd2l0aCBhIGxheWVyIHRoYXQgbWF5
IG5vdCBoYXZlIGJlZW4gcHVzaGVkIHlldCB3aXRoIHRoZSBuZXcKKyAgICAgICAgcHVzaE5vZGVC
eUlkVG9Gcm9udGVuZCgpIG1ldGhvZC4KKworICAgICAgICBBcyBmb3IgdGhlIExheWVyVHJlZUFn
ZW50IGl0c2VsZiwgdGhlIGdldExheWVyVHJlZSgpIHByb3RvY29sIG1ldGhvZCBpcyByZXBsYWNl
ZAorICAgICAgICBieSB0aGUgbmV3IGxheWVyc0Zvck5vZGUoKSBtZXRob2QgYWxsb3dpbmcgdG8g
c2NvcGUgdGhlIHJlcXVlc3RzIHRvIGEgc3BlY2lmaWMKKyAgICAgICAgRE9NIHN1YnRyZWUgYXMg
d2VsbCBhcyBzcGVjaWZ5aW5nIGlmIG9ubHkgY29tcG9zaXRlZCBsYXllcnMgYXJlIG5lZWRlZC4g
VGhlc2UgdHdvCisgICAgICAgIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIG1pbmltaXplIHRoZSBh
bW91bnQgb2YgZGF0YSBzZW50IHRvIHRoZSBmcm9udC1lbmQgYXMKKyAgICAgICAgbGF5ZXIgdHJl
ZXMgY2FuIGJlIGp1c3QgYXMgZXh0ZW5zaXZlIGFzIERPTSB0cmVlcywgaWYgbm90IGxhcmdlciwg
YW5kIGl0IG1heSBtYWtlCisgICAgICAgIGxpdHRsZSBzZW5zZSB0byBzZW5kIGFsbCB0aGlzIGRh
dGEgYWNyb3NzIHdpdGhvdXQgdGhlIHBvc3NpYmlsaXR5IHRvIGJldHRlciB0YXJnZXQKKyAgICAg
ICAgd2hhdCBpbmZvcm1hdGlvbiBpcyByZXF1aXJlZC4KKworICAgICAgICBXZSBhbHNvIGFkZCBu
ZXcgY2F0ZWdvcmllcyBvZiBpbmZvcm1hdGlvbiB0byB0aGUgbGF5ZXIgb2JqZWN0cyBzZW50IHRv
IHRoZSBmcm9udC1lbmQKKyAgICAgICAgc3VjaCB0aGF0IHdlIGNhbiBpZGVudGlmeSBsYXllcnMg
dGhhdCBhcmUgdGllZCB0byBDU1MgZ2VuZXJhdGVkIGNvbnRlbnQgb3IgbmVjZXNzYXJ5CisgICAg
ICAgIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWZsZWN0aW9uLiBUaGVzZSBsYXllcnMgbWF5IG5v
dCBiZSBhc3NvY2lhdGVkIHdpdGggZWxlbWVudHMKKyAgICAgICAgaW4gdGhlIERPTSB0cmVlLCBv
ciBldmVuIHdpdGggZWxlbWVudHMgYXQgYWxsLCBhbmQgdGhlIG5ldyBwcm9wZXJ0aWVzIGFsbG93
IHRvIGV4cHJlc3MKKyAgICAgICAgdGhlc2UgcmVsYXRpb25zaGlwcyBpbiBhIHdheSB0aGF0IGEg
ZnJvbnQtZW5kIGNvdWxkIHByZXNlbnQgdXNlZnVsbHkuCisgICAgICAgIAorICAgICAgICBGaW5h
bGx5LCB3ZSBleHBvc2UgdGhlIHJlYXNvbnMgd2h5IGEgbGF5ZXIgbWF5IGhhdmUgYmVlbiBjb21w
b3NpdGVkLCBhcyBtYWRlIGF2YWlsYWJsZQorICAgICAgICBieSB0aGUgY29tbWl0IGZvciBodHRw
czovL3dlYmtpdC5vcmcvYi8xMTA1MDUuCisgICAgICAgIAorICAgICAgICBUZXN0IGNvdmVyYWdl
IGhhcyBiZWVuIHVwZGF0ZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIG5ldyBmZWF0dXJlcy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czog
aW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtY29tcG9zaXRlZC1vbmx5Lmh0bWwKKyAg
ICAgICAgICAgICAgIGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLWdlbmVyYXRlZC1j
b250ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5
ZXJzLXB1c2gtbm9kZS1ieS1pZC10by1mcm9udGVuZC5odG1sCisgICAgICAgICAgICAgICBpbnNw
ZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1yZWZsZWN0ZWQtY29udGVudC5odG1sCisgICAg
ICAgICAgICAgICBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEFkZGluZyB0aGUgbmV3IEJhY2tlbmROb2Rl
SWQgdHlwZSBhbmQgcHVzaE5vZGVCeUlkVG9Gcm9udGVuZAorICAgICAgICBtZXRob2QgdG8gdGhl
IERPTSBwcm90b2NvbC4gUmVtb3ZpbmcgdGhlIGdldExheWVyVHJlZSBhbmQgbm9kZUlkRm9yTGF5
ZXJJZCBtZXRob2RzIGZyb20KKyAgICAgICAgdGhlIExheWVyVHJlZSBwcm90b2NvbCBhbmQgYWRk
aW5nIHRoZSBsYXllcnNGb3JOb2RlIGFuZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllciBtZXRo
b2RzLAorICAgICAgICBhcyB3ZWxsIGFzIGEgc2VyaWVzIG9mIG5ldyBwcm9wZXJ0aWVzIG9uIHRo
ZSBsYXllciBvYmplY3RzIHJldHVybmVkIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpiaW5kKTogVXNlIHRoZSBiYWNrZW5kIG5vZGUgaWQgdGhhdCBtYXkgaGF2ZSBi
ZWVuIGNyZWF0ZWQgYXMKKyAgICAgICAgYSByZXN1bHQgb2YgY2FsbGluZyBub2RlSWRGb3JOb2Rl
KCkgYW5kIG9ubHkgZ2VuZXJhdGUgYSBuZXcgb25lIGlmIHVuYXZhaWxhYmxlLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6IFJlc2V0IHRoZSBt
X25vZGVUb0JhY2tlbmRJZE1hcC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
Ojpub2RlSWRGb3JOb2RlKTogUmV0dXJuIGEgYmFja2VuZCBub2RlIGlkIGluIGNhc2UgdGhlIG5v
ZGUKKyAgICAgICAgaGFkbid0IGFscmVhZHkgYmVlbiBwdXNoZWQgdG8gdGhlIGZyb250LWVuZCB3
aXRoIGFuIGV4aXN0aW5nIGlkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnB1c2hOb2RlQnlJZFRvRnJvbnRlbmQpOiBDYWxsIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKSB3
aXRoCisgICAgICAgIHRoZSBiYWNrZW5kIG5vZGUgaWQgaWYgdGhlIGlkIHByb3ZpZGVkIHdhcyBm
b3VuZCBpbiB0aGUgbV9ub2RlVG9CYWNrZW5kSWRNYXAuIE90aGVyd2lzZSwKKyAgICAgICAgcmVw
b3J0IGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAg
ICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmxheWVyc0Zvck5vZGUpOiBOZXcgcHJvdG9jb2wgbWV0aG9kIHRvIGdhdGhlciBsYXll
cnMKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBub2RlIG9yIG9uZSBvZiBp
dHMgZGVzY2VuZGFudHMuIEFuIG9wdGlvbiBpcyBwcm92aWRlZCB0bworICAgICAgICBmaWx0ZXIg
dGhlc2UgbGF5ZXJzIHRvIG9ubHkgaW5jbHVkZSB0aG9zZSB0aGF0IGFyZSBjb21wb3NpdGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1Vz
aW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KToKKyAgICAgICAgV2FsayB0aGUgUmVuZGVyT2JqZWN0
IGhpZXJhcmNoeSB1bnRpbCB3ZSBmaW5kIGEgcmVuZGVyZXIgdGhhdCBoYXMgYSBsYXllciBhc3Nv
Y2lhdGVkLAorICAgICAgICBpbiB3aGljaCBjYXNlIHdlJ2xsIGdhdGhlciBmdXJ0aGVyIGxheWVy
cyB1c2luZyB0aGUgUmVuZGVyTGF5ZXIgaGllcmFyY2h5IHNpbmNlIGl0IHdpbGwKKyAgICAgICAg
cHJvdmlkZSBhIGZhc3RlciBwYXRjaCB0aHJvdWdoIHRoZSBsYXllciBoaWVyYXJjaHkuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KTogV2FsayB0aGUKKyAgICAg
ICAgUmVuZGVyTGF5ZXIgaGllcmFyY2h5IHRvIGdhdGhlciBhbGwgbGF5ZXJzIGluIHRoZSB0cmVl
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTGF5ZXIpOiBTZXQgbmV3IHByb3BlcnRpZXMgb24gdGhlIGxheWVyCisgICAgICAgIG9iamVj
dCByZXR1cm5lZCB0byB0aGUgZnJvbnQtZW5kLCBpbmNsdWRpbmcgdGhlIGFzc29jaWF0ZWQgbm9k
ZSBpZCwgdGhlIG5vZGUgaWQgb2YgYW55CisgICAgICAgIGdlbmVyYXRlZCBlbGVtZW50LCB3aGF0
IGtpbmQgb2YgQ1NTIHNlbGVjdG9yIHByb21wdGVkIHRoZSBjb250ZW50IGdlbmVyYXRpb24sIHRo
ZSBib3VuZHMKKyAgICAgICAgb2YgdGhlIGxheWVyIGluIGFic29sdXRlIGNvb3JkaW5hdGVzLCB3
aGV0aGVyIHRoZSBsYXllciB3YXMgY3JlYXRlZCB0byBkcmF3IGEgcmVmbGVjdGlvbiwKKyAgICAg
ICAgZXRjLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNv
bnNGb3JDb21wb3NpdGluZ0xheWVyKTogTmV3IHByb3RvY29sIG1ldGhvZCB0bworICAgICAgICBw
cm92aWRlIHRoZSBiaXRtYXNrIGV4cG9zZWQgdmlhIHRoZSBSZW5kZXJMYXllckNvbXBvc2l0b3Ig
cmVwcmVzZW50aW5nIHRoZSB2YXJpb3VzIHJlYXNvbnMKKyAgICAgICAgYSBsYXllciBtYXkgaGF2
ZSBiZWVuIGNvbXBvc2l0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisKIDIwMTMtMDIt
MjUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZWQgRGF0
YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoKSB0byByZXR1cm4gdGhlIHByZXZp
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24g
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZjI3ZjU0YzAz
ZDQ5NzA1ODM0Mjk4YWViY2MzNjgxMWU1M2FhNzc0Zi4uYjY1ODBmZGNiNTA0ZjUwNTI1M2JmZTk4
ZDAyYmRjOWY3M2QzNmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgpAQCAtMTcxMCw2ICsxNzEwLDExIEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlVuaXF1ZSBET00gbm9kZSBpZGVudGlmaWVyLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgImlkIjogIkJhY2tlbmROb2RlSWQiLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogImludGVnZXIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJV
bmlxdWUgRE9NIG5vZGUgaWRlbnRpZmllciB1c2VkIHRvIHJlZmVyZW5jZSBhIG5vZGUgdGhhdCBo
YXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgZnJvbnQtZW5kLiIKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgImlkIjogIk5vZGUiLAogICAgICAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBb
CkBAIC0xOTg0LDYgKzE5ODksMTQgQEAKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJw
dXNoTm9kZUJ5SWRUb0Zyb250ZW5kIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYWNrZW5kTm9kZUlkIiwgIiRyZWYiOiAi
QmFja2VuZE5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaWQgb2YgdGhlIG5vZGUuIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVz
dHMgdGhhdCB0aGUgbm9kZSBpcyBzZW50IHRvIHRoZSBjYWxsZXIgZ2l2ZW4gaXRzIGlkLiIsCisg
ICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kIiwK
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwYXRoIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlBhdGggdG8g
bm9kZSBpbiB0aGUgcHJvcHJpZXRhcnkgZm9ybWF0LiIgfQpAQCAtMzY2OCwxMiArMzY4MSwxNyBA
QAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCBhIGNv
bXBvc2l0aW5nIGxheWVyLiIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibGF5ZXJJZCIsICIkcmVmIjogIkxheWVySWQiLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIHVuaXF1ZSBpZCBmb3IgdGhpcyBsYXllci4iIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm91bmRzIiwgIiRyZWYiOiAiSW50UmVjdCIsICJkZXNj
cmlwdGlvbiI6ICJCb3VuZHMgb2YgdGhlIGxheWVyLiIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc0NvbXBvc2l0ZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIkluZGljYXRlcyB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgY29tcG9zaXRlZC4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLkJhY2tlbmRO
b2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGlkIGZvciB0aGUgbm9kZSBhc3NvY2lhdGVkIHdp
dGggdGhpcyBsYXllci4gTm90ZSB0aGF0IHRoaXMgbm9kZSBpZCBtYXkgbm90IGhhdmUgYmVlbiBw
dXNoZWQgeWV0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3VuZHMiLCAi
JHJlZiI6ICJJbnRSZWN0IiwgImRlc2NyaXB0aW9uIjogIkJvdW5kcyBvZiB0aGUgbGF5ZXIgaW4g
YWJzb2x1dGUgcGFnZSBjb29yZGluYXRlcy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaXNJblNoYWRvd1RyZWUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgYXNzb2Np
YXRlZCB3aXRoIGFuIGVsZW1lbnQgaG9zdGVkIGluIGEgc2hhZG93IHRyZWUuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImlzQ29tcG9zaXRlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhp
cyBsYXllciBpcyBjb21wb3NpdGVkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwYWludENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJJbmRpY2F0ZXMgaG93IG1hbnkgdGltZSB0aGlzIGxheWVyIGhhcyBwYWludGVk
LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZW1vcnkiLCAidHlwZSI6ICJp
bnRlZ2VyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkVzdGltYXRlZCBtZW1v
cnkgdXNlZCBieSB0aGlzIGxheWVyLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb21wb3NpdGVkQm91bmRzIiwgIiRyZWYiOiAiSW50UmVjdCIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJUaGUgYm91bmRzIG9mIHRoZSBjb21wb3NpdGVkIGxheWVyLiIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjaGlsZExheWVycyIsICJ0eXBlIjogImFy
cmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJMYXllciIgfSwgImRl
c2NyaXB0aW9uIjogIkNoaWxkIGxheWVycy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJpc1JlZmxlY3Rpb24iLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoaXMgbGF5ZXIgd2FzIHVzZWQgdG8g
cHJvdmlkZSBhIHJlZmxlY3Rpb24gZm9yIHRoZSBlbGVtZW50LiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJpc0dlbmVyYXRlZENvbnRlbnQiLCAidHlwZSI6ICJib29sZWFuIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoZSBs
YXllciBpcyBhdHRhY2hlZCB0byBhIHBzZXVkbyBlbGVtZW50IHRoYXQgaXMgQ1NTIGdlbmVyYXRl
ZCBjb250ZW50LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwc2V1ZG9FbGVt
ZW50SWQiLCAiJHJlZiI6ICJET00uQmFja2VuZE5vZGVJZCIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgaWQgZm9yIHRoZSBwc2V1ZG8gZWxlbWVudCBhc3NvY2lhdGVkIHdp
dGggdGhpcyBsYXllci4gTm90ZSB0aGF0IHRoaXMgbm9kZSBpZCBtYXkgbm90IGhhdmUgYmVlbiBw
dXNoZWQgeWV0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwc2V1ZG9DbGFz
cyIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJU
aGUgbmFtZSBvZiB0aGUgQ1NTIHBzZXVkby1jbGFzcyB0aGF0IHByb21wdGVkIHRoZSBsYXllcidz
IGNvbnRlbnQgdG8gYmUgZ2VuZXJhdGVkLiIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0KICAgICAgICAgXSwKQEAgLTM2ODcsMjAgKzM3MDUsMjQgQEAKICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIK
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAi
Z2V0TGF5ZXJUcmVlIiwKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJsYXllcnNGb3JOb2RlIiwK
KyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlJv
b3Qgb2YgdGhlIHN1YnRyZWUgaW4gd2hpY2ggd2Ugd2FudCB0byBnYXRoZXIgbGF5ZXJzLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvbmx5Q29tcG9zaXRlZExheWVycyIsICJ0
eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgd2Ugd2Fu
dCB0byBnYXRoZXIgb25seSBjb21wb3NpdGVkIGxheWVycy4iIH0KKyAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsYXllciB0cmVl
IHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIsCiAgICAgICAgICAgICAgICAgInJldHVy
bnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibGF5ZXJUcmVlIiwgIiRyZWYi
OiAiTGF5ZXIiLCAiZGVzY3JpcHRpb24iOiAiTGF5ZXIgdHJlZSBzdHJ1Y3R1cmUgb2YgdGhlIGN1
cnJlbnQgcGFnZS4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcnMiLCAi
dHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiTGF5ZXIiIH0sICJkZXNjcmlwdGlv
biI6ICJDaGlsZCBsYXllcnMuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJub2RlSWRGb3JMYXllcklk
IiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbm9kZSBpZCBm
b3IgYSBnaXZlbiBsYXllciBpZC4iLAorICAgICAgICAgICAgICAgICJuYW1lIjogInJlYXNvbnNG
b3JDb21wb3NpdGluZ0xheWVyIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIg
fQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVySWQiLCAiJHJlZiI6ICJMYXll
cklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBpZCBvZiB0aGUgbGF5ZXIgZm9yIHdoaWNoIHdlIHdh
bnQgdG8gZ2V0IHRoZSByZWFzb24gaXQgd2FzIGNvbXBvc2l0ZWQuIiB9CiAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgcmVhc29u
IHdoeSB0aGUgZ2l2ZW4gbGF5ZXIgd2FzIGNvbXBvc2l0ZWQuIiwKICAgICAgICAgICAgICAgICAi
cmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJl
ZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBub2RlIGlkIGZvciB0aGUgZ2l2
ZW4gbGF5ZXIgaWQuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVhc29ucyIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHJlYXNvbiB3aHkgdGhlIGxh
eWVyIHdhcyBjb21wb3NpdGVkLiIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0K
ICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IGRmYTcwY2E4OWVkNDJjNzk2ZDI4MmRmM2JmNmJjNDEzNzJkOTc3ZjUuLjVm
Y2RhZjk5MzllZjYyYWEwYmNkZTk4MjMwZDI0NTM3MzQ2YzFlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMzExLDkgKzMxMSwxNSBA
QCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5v
ZGVzTWFwKQogICAgIGludCBpZCA9IG5vZGVzTWFwLT5nZXQobm9kZSk7CiAgICAgaWYgKGlkKQog
ICAgICAgICByZXR1cm4gaWQ7Ci0gICAgaWQgPSBtX2xhc3ROb2RlSWQrKzsKKworICAgIGlkID0g
bV9ub2RlVG9CYWNrZW5kSWRNYXAuZ2V0KG5vZGUpOworICAgIGlmIChpZCkKKyAgICAgICAgbV9u
b2RlVG9CYWNrZW5kSWRNYXAucmVtb3ZlKG5vZGUpOworICAgIGVsc2UgeworICAgICAgICBpZCA9
IG1fbGFzdE5vZGVJZCsrOworICAgICAgICBtX2lkVG9Ob2RlLnNldChpZCwgbm9kZSk7CisgICAg
fQogICAgIG5vZGVzTWFwLT5zZXQobm9kZSwgaWQpOwotICAgIG1faWRUb05vZGUuc2V0KGlkLCBu
b2RlKTsKICAgICBtX2lkVG9Ob2Rlc01hcC5zZXQoaWQsIG5vZGVzTWFwKTsKICAgICByZXR1cm4g
aWQ7CiB9CkBAIC00NTcsNiArNDYzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2Fy
ZEJpbmRpbmdzKCkKICAgICBtX2lkVG9Ob2RlLmNsZWFyKCk7CiAgICAgcmVsZWFzZURhbmdsaW5n
Tm9kZXMoKTsKICAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmNsZWFyKCk7CisgICAgbV9ub2RlVG9C
YWNrZW5kSWRNYXAuY2xlYXIoKTsKIH0KIAogaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9k
ZVRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQs
IE5vZGUqIG5vZGVUb1B1c2gpCkBAIC01ODUsMTYgKzU5MiwyMSBAQCBpbnQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICByZXR1
cm4gbWFwLT5nZXQobm9kZVRvUHVzaCk7CiB9CiAKLWludCBJbnNwZWN0b3JET01BZ2VudDo6cHVz
aE5vZGVQYXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKGNvbnN0IFJlbmRlckxheWVyKiByZW5k
ZXJMYXllcikKK2ludCBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUlkRm9yTm9kZShOb2RlKiBub2Rl
KQogewotICAgIE5vZGUqIG5vZGUgPSByZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+bm9kZSgpOwot
Ci0gICAgLy8gUmVuZGVyTGF5ZXJzIG1heSBub3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgTm9kZSwg
Zm9yIGluc3RhbmNlCi0gICAgLy8gaW4gdGhlIGNhc2Ugb2YgQ1NTIGdlbmVyYXRlZCBjb250ZW50
LgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gcHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChub2RlKTsKKyAgICBpbnQgaWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRN
YXAuZ2V0KG5vZGUpOworICAgIGlmICghaWQpCisgICAgICAgIGlkID0gbV9ub2RlVG9CYWNrZW5k
SWRNYXAuZ2V0KG5vZGUpOworICAgIGlmICghaWQpIHsKKyAgICAgICAgaWQgPSBtX2xhc3ROb2Rl
SWQrKzsKKyAgICAgICAgbV9ub2RlVG9CYWNrZW5kSWRNYXAuc2V0KG5vZGUsIGlkKTsKKyAgICAg
ICAgbV9pZFRvTm9kZS5zZXQoaWQsIG5vZGUpOworICAgIH0KKworICAgIHJldHVybiBpZDsKIH0K
IAogaW50IEluc3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZChOb2RlKiBub2RlKQpAQCAtMTcw
MSw2ICsxNzEzLDE3IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hOb2RlQnlJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkKQoreworICAgIGlmIChOb2RlKiBub2RlID0gbV9pZFRvTm9kZS5nZXQobm9kZUlk
KSkgeworICAgICAgICBpZiAobm9kZUlkID09IG1fbm9kZVRvQmFja2VuZElkTWFwLmdldChub2Rl
KSkKKyAgICAgICAgICAgIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSk7ICAKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgd2l0aCBnaXZlbiBpZCB3YXMg
YWxyZWFkeSBwdXNoZWQiOworICAgIH0gZWxzZQorICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8g
bm9kZSB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCkKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVG
b3JQYXRoKHBhdGgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaAppbmRleCAwZjk4ZmFiNmNjMDIxMjUxMjU3MGJiNjU3ODUwYWJmZjhmZDY5ODE3Li44MGEw
M2IxZjI5YjJjOTQzY2Q1MzMyYjE4ZDZlODFiMmNjODZlNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTQwLDYgKzE0MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiByZXN1bHQpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJs
ZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGludCogbm9kZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUlkVG9Gcm9u
dGVuZChFcnJvclN0cmluZyosIGludCBub2RlSWQpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9k
ZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCog
bm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwog
ICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CkBAIC0y
MDMsNyArMjA0LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhl
ciBhZ2VudHMuCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBt
X3BhZ2VBZ2VudDsgfQotICAgIGludCBwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRl
bmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKKyAgICBpbnQgbm9kZUlkRm9yTm9kZShOb2RlKik7CiAK
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSosIEluc3BlY3RvckNsaWVudCopOwpAQCAtMjQy
LDYgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTSogbV9mcm9u
dGVuZDsKICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKICAgICBOb2RlVG9JZE1hcCBt
X2RvY3VtZW50Tm9kZVRvSWRNYXA7CisgICAgTm9kZVRvSWRNYXAgbV9ub2RlVG9CYWNrZW5kSWRN
YXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5nbGluZyBub2Rlcy4KICAgICBW
ZWN0b3I8T3duUHRyPE5vZGVUb0lkTWFwPiA+IG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHM7CiAgICAg
SGFzaE1hcDxpbnQsIE5vZGUqPiBtX2lkVG9Ob2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggYzc3ZDExOGRlNmUw
MjhjMzZiMWM0MGVkYjhhNTgwNmQwMWVhOWJiMS4uOTAzNTA5YWE5MTZlZDllOTRhZjk1ZjEyNzJk
ZDA4ZDA2YjMwYTQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00MSwxMCArNDEsMTIgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTEyLDY3ICsxMTQsODkgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVuZGVyTGF5
ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWUKICAgICB1bmJpbmQocmVu
ZGVyTGF5ZXIpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRy
ZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+JiBv
YmplY3QpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgYm9vbCBvbmx5Q29tcG9zaXRlZExheWVycywgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gPiYgbGF5ZXJz
KQogewotICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKCk7CisgICAgbGF5ZXJz
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPjo6Y3Jl
YXRlKCk7CisKKyAgICBOb2RlKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JET01BZ2VudCgpLT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGdhdGhlckxheWVy
c1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KHJlbmRlcmVyLCBvbmx5Q29tcG9zaXRlZExheWVy
cywgbGF5ZXJzKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKCkKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0
SGllcmFyY2h5KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgb25seUNvbXBvc2l0ZWRMYXll
cnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5
ZXI+ID4mIGxheWVycykKIHsKLSAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JMYXllcihtX2luc3Bl
Y3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5y
b290UmVuZGVyTGF5ZXIoKSk7CisgICAgaWYgKHJlbmRlcmVyLT5oYXNMYXllcigpKSB7CisgICAg
ICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkocmVuZGVyZXItPmVuY2xv
c2luZ0xheWVyKCksIG9ubHlDb21wb3NpdGVkTGF5ZXJzLCBsYXllcnMpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOworICAg
IHdoaWxlIChyZW5kZXJlcikgeworICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVj
dEhpZXJhcmNoeShyZW5kZXJlciwgb25seUNvbXBvc2l0ZWRMYXllcnMsIGxheWVycyk7CisgICAg
ICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRTaWJsaW5nKCk7CisgICAgfQorfQorCit2b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGll
cmFyY2h5KFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgYm9vbCBvbmx5Q29tcG9zaXRlZExheWVy
cywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cj4gPiYgbGF5ZXJzKQoreworICAgIGlmICghb25seUNvbXBvc2l0ZWRMYXllcnMgfHwgcmVuZGVy
TGF5ZXItPmlzQ29tcG9zaXRlZCgpKQorICAgICAgICBsYXllcnMtPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JMYXllcihyZW5kZXJMYXllcikpOworCisgICAgcmVuZGVyTGF5ZXIgPSByZW5kZXJMYXll
ci0+Zmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChyZW5kZXJMYXllcikgeworICAgICAgICBnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KHJlbmRlckxheWVyLCBvbmx5Q29tcG9z
aXRlZExheWVycywgbGF5ZXJzKTsKKyAgICAgICAgcmVuZGVyTGF5ZXIgPSByZW5kZXJMYXllci0+
bmV4dFNpYmxpbmcoKTsKKyAgICB9CiB9CiAKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVy
KFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKIHsKLSAgICBib29sIGlzQ29tcG9zaXRlZCA9IHJl
bmRlckxheWVyLT5pc0NvbXBvc2l0ZWQoKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHJlbmRlckxheWVyLT5yZW5kZXJlcigpOworICAgIE5vZGUq
IG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgIGJvb2wgaXNHZW5lcmF0ZWQgPSByZW5kZXJl
ci0+aXNCZWZvcmVPckFmdGVyQ29udGVudCgpOworCisgICAgaWYgKGlzR2VuZXJhdGVkKQorICAg
ICAgICBub2RlID0gcmVuZGVyZXItPmdlbmVyYXRpbmdOb2RlKCk7CisgICAgZWxzZSBpZiAocmVu
ZGVyTGF5ZXItPmlzUmVmbGVjdGlvbigpKQorICAgICAgICBub2RlID0gcmVuZGVyZXItPnBhcmVu
dCgpLT5ub2RlKCk7CiAKICAgICAvLyBCYXNpYyBzZXQgb2YgcHJvcGVydGllcy4KICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGxheWVyT2JqZWN0ID0gVHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRMYXllcklkKGJpbmQo
cmVuZGVyTGF5ZXIpKQotICAgICAgICAuc2V0Qm91bmRzKGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChl
bmNsb3NpbmdJbnRSZWN0KHJlbmRlckxheWVyLT5sb2NhbEJvdW5kaW5nQm94KCkpKSkKLSAgICAg
ICAgLnNldElzQ29tcG9zaXRlZChpc0NvbXBvc2l0ZWQpOworICAgICAgICAuc2V0Tm9kZUlkKGRv
bUFnZW50LT5ub2RlSWRGb3JOb2RlKG5vZGUpKQorICAgICAgICAuc2V0Qm91bmRzKGJ1aWxkT2Jq
ZWN0Rm9ySW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpKSkpOworCisgICAgaWYgKG5vZGUgJiYgbm9kZS0+c2hhZG93SG9zdCgpKQorICAg
ICAgICBsYXllck9iamVjdC0+c2V0SXNJblNoYWRvd1RyZWUodHJ1ZSk7CiAKICAgICAvLyBPcHRp
b25hbCBwcm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5LgotICAgIGlmIChpc0Nv
bXBvc2l0ZWQpIHsKKyAgICBpZiAocmVuZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKSB7CiAgICAg
ICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHJlbmRlckxheWVyLT5iYWNraW5nKCk7
CisgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJc0NvbXBvc2l0ZWQodHJ1ZSk7CiAgICAgICAgIGxh
eWVyT2JqZWN0LT5zZXRNZW1vcnkoYmFja2luZy0+YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUo
KSk7CiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRDb21wb3NpdGVkQm91bmRzKGJ1aWxkT2JqZWN0
Rm9ySW50UmVjdChiYWNraW5nLT5jb21wb3NpdGVkQm91bmRzKCkpKTsKICAgICAgICAgbGF5ZXJP
YmplY3QtPnNldFBhaW50Q291bnQoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5yZXBhaW50Q291
bnQoKSk7CiAgICAgfQogCi0gICAgLy8gUHJvY2VzcyBjaGlsZHJlbiBsYXllcnMuCi0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gPiBj
aGlsZHJlbkFycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkxheWVyPjo6Y3JlYXRlKCk7Ci0KLSAgICByZW5kZXJMYXllci0+dXBkYXRlTGF5ZXJMaXN0c0lm
TmVlZGVkKCk7Ci0KLSAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgcmVmbGVjdGlvbiBsYXllci4K
LSAgICBpZiAocmVuZGVyTGF5ZXItPnJlZmxlY3Rpb25MYXllcigpKQotICAgICAgICBjaGlsZHJl
bkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIocmVuZGVyTGF5ZXItPnJlZmxlY3Rp
b25MYXllcigpKSk7Ci0KLSAgICBpZiAocmVuZGVyTGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIo
KSkgewotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBy
ZW5kZXJMYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgbGlzdFNp
emUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxpc3RTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRk
SXRlbShidWlsZE9iamVjdEZvckxheWVyKG5lZ1pPcmRlckxpc3QtPmF0KGkpKSk7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgaWYgKHJlbmRlckxheWVyLT5pc1JlZmxlY3Rpb24oKSkKKyAgICAgICAg
bGF5ZXJPYmplY3QtPnNldElzUmVmbGVjdGlvbih0cnVlKTsKIAotICAgIGlmIChWZWN0b3I8UmVu
ZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3Qo
KSkgewotICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCi0gICAgICAgICAg
ICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xp
c3QtPmF0KGkpKSk7CisgICAgaWYgKGlzR2VuZXJhdGVkKSB7CisgICAgICAgIGxheWVyT2JqZWN0
LT5zZXRJc0dlbmVyYXRlZENvbnRlbnQodHJ1ZSk7CisgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQ
c2V1ZG9FbGVtZW50SWQoZG9tQWdlbnQtPm5vZGVJZEZvck5vZGUocmVuZGVyZXItPm5vZGUoKSkp
OworICAgICAgICBpZiAocmVuZGVyZXItPmlzQmVmb3JlQ29udGVudCgpKQorICAgICAgICAgICAg
bGF5ZXJPYmplY3QtPnNldFBzZXVkb0NsYXNzKCJiZWZvcmUiKTsKKyAgICAgICAgZWxzZSBpZiAo
cmVuZGVyZXItPmlzQWZ0ZXJDb250ZW50KCkpCisgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0
UHNldWRvQ2xhc3MoImFmdGVyIik7CiAgICAgfQogICAgIAotICAgIGlmIChyZW5kZXJMYXllci0+
aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogcG9zWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAg
ICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKLSAgICAgICAgICAgICAg
ICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIocG9zWk9yZGVyTGlz
dC0+YXQoaSkpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxheWVyT2JqZWN0LT5zZXRDaGls
ZExheWVycyhjaGlsZHJlbkFycmF5KTsKLSAgICAKICAgICByZXR1cm4gbGF5ZXJPYmplY3Q7CiB9
CiAKQEAgLTE4NSw2ICsyMDksMTggQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpJbnRSZWN0PiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3QKICAgICAgICAg
LnNldEhlaWdodChyZWN0LmhlaWdodCgpKS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQqIHJlYXNvbnMpCit7CisgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQp
OworICAgIAorICAgIGlmICghcmVuZGVyTGF5ZXIpCisgICAgICAgICplcnJvclN0cmluZyA9ICJD
b3VsZCBub3QgZmluZCBhIGJvdW5kIGxheWVyIGZvciB0aGUgcHJvdmlkZWQgaWQiOworICAgIGVs
c2UgaWYgKCFyZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCkpCisgICAgICAgICplcnJvclN0cmlu
ZyA9ICJMYXllciBmb3IgdGhlIHByb3ZpZGVkIGlkIGlzIG5vdCBjb21wb3NpdGVkIjsKKyAgICBl
bHNlCisgICAgICAgICpyZWFzb25zID0gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJMYXllci0+Y29t
cG9zaXRvcigpLT5yZWFzb25zRm9yQ29tcG9zaXRpbmcocmVuZGVyTGF5ZXIpKTsKK30KKwogU3Ry
aW5nIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
cikKIHsKICAgICBpZiAoIWxheWVyKQpAQCAtMjA4LDIyICsyNDQsNiBAQCB2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIG1f
aWRUb0xheWVyLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6bm9kZUlkRm9yTGF5ZXJJZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgbGF5ZXJJZCwgaW50KiByZXN1bHROb2RlSWQpCi17Ci0gICAgLy8gT2J0YWluIHRo
ZSBSZW5kZXJMYXllciBmcm9tIHRoZSBpZGVudGlmaWVyIHByb3ZpZGVkLgotICAgIGNvbnN0IFJl
bmRlckxheWVyKiByZW5kZXJMYXllciA9IG1faWRUb0xheWVyLmdldChsYXllcklkKTsKLSAgICAK
LSAgICAvLyBTZW5kIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIHN1Y2ggcmVnaXN0ZXJlZCBsYXll
ciBpZC4KLSAgICBpZiAoIXJlbmRlckxheWVyKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJD
b3VsZCBub3QgZmluZCBhIGJvdW5kIGxheWVyIGZvciB0aGUgcHJvdmlkZWQgaWQiOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIEdldCB0aGUgbm9kZSBpZCBmcm9tIHRoZSBE
T00gYWdlbnQgYW5kIHJldHVybiBpdCB0byB0aGUgZnJvbnQtZW5kLgotICAgIEluc3BlY3RvckRP
TUFnZW50KiBpbnNwZWN0b3JET01BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yRE9NQWdlbnQoKTsKLSAgICAqcmVzdWx0Tm9kZUlkID0gaW5zcGVjdG9yRE9NQWdlbnQtPnB1
c2hOb2RlUGF0aEZvclJlbmRlckxheWVyVG9Gcm9udGVuZChyZW5kZXJMYXllcik7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmlu
ZGV4IDQ3MzIwZGZjMjczNmFjYjczZGIzZWY4MDlmMWVjNGY0ZjNmYjQ0OGIuLjhjNTJlM2ZhZjY3
ZWQyZDhiZTRkNDQ3NGY2NjhlNWM0Zjg4MmRjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC0zNCw3ICszNCw5IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02Nyw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+Jik7Ci0gICAgdmlydHVhbCB2b2lkIG5vZGVJZEZvckxheWVy
SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIGludCogcmVzdWx0Tm9kZUlk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGJvb2wgb25seUNvbXBvc2l0ZWRMYXllcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVh
c29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVy
SWQsIGludCogcmVhc29ucyk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgUGFnZSop
OwpAQCAtNzcsNyArNzksOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBiaW5kKGNvbnN0IFJlbmRl
ckxheWVyKik7CiAgICAgdm9pZCB1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yUm9v
dExheWVyKCk7ICAgCisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShSZW5kZXJPYmplY3QqLCBib29sIG9ubHlDb21wb3NpdGVkTGF5ZXJzLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiA+Jik7CisgICAg
dm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KFJlbmRlckxheWVyKiwg
Ym9vbCBvbmx5Q29tcG9zaXRlZExheWVycywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gPiYpOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqKTsK
ICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2Jq
ZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0ODY3NGEw
YTRhYTFkMGE1NzJlNjZjNDVlNGE0ZTBmOTlhNDNkYTAuLjYzOWMxMTNkMzdlNmIyZTcxMzEyZWNl
NDQzZTU3OTQ0MjhkYjFlMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMy0wMi0yNSAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGVuaGFuY2UgdGhlIExheWVyVHJlZUFnZW50IHByb3RvY29sIHRvIHJlcG9ydCBzbWFydGVyIGlu
Zm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTA0MDcKKworICAgICAgICBBZGFwdGluZyBleGlzdGluZyB0ZXN0cyB0byB1c2UgdGhlIG5l
dyBMYXllclRyZWUubGF5ZXJzRm9yTm9kZShub2RlLCBvbmx5Q29tcG9zaXRlZExheWVycykKKyAg
ICAgICAgQVBJIGludHJvZHVjZWQgaW4gV2ViQ29yZSBpbiByZXBsYWNlbWVudCB0byBMYXllclRy
ZWUuZ2V0TGF5ZXJUcmVlKCkgYW5kIG90aGVyIHJlbGF0ZWQgQVBJCisgICAgICAgIGNoYW5nZXMu
IEFkZGl0aW9uYWwgdGVzdGluZyBjb3ZlcmFnZSBmb3IgbmV3IHByb3BlcnRpZXMgcmV0dXJuZWQg
Zm9yIGxheWVycyAoZ2VuZXJhdGVkIGNvbnRlbnQsCisgICAgICAgIHJlZmxlY3Rpb25zKSBhbmQg
dGhlIG5ldyBET00ucHVzaE5vZGVCeUlkVG9Gcm9udGVuZChiYWNrZW5kTm9kZUlkKSBtZXRob2Qu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVl
LWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yLXBy
b3RvY29sL2xheWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1w
cm90b2NvbC9sYXllcnMvbGF5ZXJzLWNvbXBvc2l0ZWQtb25seS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLWNvbXBvc2l0ZWQt
b25seS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xh
eWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9s
YXllcnMvbGF5ZXJzLWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJhdGVkLWNvbnRlbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMt
cHVzaC1ub2RlLWJ5LWlkLXRvLWZyb250ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtcHVzaC1ub2RlLWJ5LWlkLXRvLWZy
b250ZW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllcnMv
bGF5ZXJzLXJlZmxlY3RlZC1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtcmVmbGVjdGVkLWNvbnRlbnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMuaHRtbDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0
bWwuCisKIDIwMTMtMDItMjUgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5IHByb3BlcnR5IGRvZXNuJ3QgYWNjZXB0ICJhbGws
IDxJREVOVD4iLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xh
eWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xh
eWVyLXRyZWUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGVl
ZTc5NWQ4MzJjZjkzOWUxYjk0NzNmYWE2NTYwYzg2OTY4NzdlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9sYXllci10cmVlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBA
Ci0KLT09PSBHZXQgdGhlIERvY3VtZW50ID09PQotCi1QQVNTCi0KLT09PSBFbmFibGUgdGhlIExh
eWVyVHJlZSBhZ2VudCA9PT0KLQotUEFTUwotCi09PT0gR2V0IHRoZSBpbml0aWFsIGxheWVyIHRy
ZWUgPT09Ci0KLVBBU1MKLQotewotICAgICJsYXllcklkIjogInN0cmluZyIsCi0gICAgImJvdW5k
cyI6IHsKLSAgICAgICAgIngiOiAwLAotICAgICAgICAieSI6IDAsCi0gICAgICAgICJ3aWR0aCI6
ICJudW1iZXIiLAotICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKLSAgICB9LAotICAgICJpc0Nv
bXBvc2l0ZWQiOiB0cnVlLAotICAgICJtZW1vcnkiOiAibnVtYmVyIiwKLSAgICAiY29tcG9zaXRl
ZEJvdW5kcyI6IHsKLSAgICAgICAgIngiOiAwLAotICAgICAgICAieSI6IDAsCi0gICAgICAgICJ3
aWR0aCI6ICJudW1iZXIiLAotICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKLSAgICB9LAotICAg
ICJwYWludENvdW50IjogIm51bWJlciIsCi0gICAgImNoaWxkTGF5ZXJzIjogWwotICAgICAgICB7
Ci0gICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAotICAgICAgICAgICAgImJvdW5kcyI6
IHsKLSAgICAgICAgICAgICAgICAieCI6IDAsCi0gICAgICAgICAgICAgICAgInkiOiAwLAotICAg
ICAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICJoZWlnaHQi
OiAibnVtYmVyIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBm
YWxzZSwKLSAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCi0gICAgICAgICAgICAgICAg
ICAgICJib3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3Ry
aW5nIiwKLSAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAotICAgICAgICAgICAgICAgICAgICAgICAgImhl
aWdodCI6IDUwCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJl
ciIsCi0gICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogewotICAgICAgICAg
ICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogNTAKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAgImNoaWxk
TGF5ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImJvdW5kcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogNTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWludENvdW50IjogIm51bWJl
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogewotICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMTAwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgImhlaWdodCI6IDEwMAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6
ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ5
IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIiwKLSAgICAgICAgICAgICAgICAg
ICAgImNoaWxkTGF5ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImJvdW5kcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
eSI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWludENvdW50
IjogIm51bWJlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
W10KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAi
bGF5ZXJJZCI6ICJzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogewotICAg
ICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInki
OiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJoZWlnaHQiOiAwCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgImNo
aWxkTGF5ZXJzIjogW10KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKLSAgICAgICAgICAgICAgICAg
ICAgImJvdW5kcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJ5IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6
IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCi0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIs
Ci0gICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAieCI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJo
ZWlnaHQiOiAibnVtYmVyIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6
ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ5
IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIsCi0gICAgICAg
ICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgXQotICAgICAgICB9Ci0gICAgXQotfQotCi09PT0gTWVzc2FnZSB0aGUgcGFnZSB0byBh
ZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciA9PT0KLQotUEFTUwotCi09PT0gR2V0IHRoZSBtb2Rp
ZmllZCBsYXllciB0cmVlID09PQotCi1QQVNTCi0KLXsKLSAgICAibGF5ZXJJZCI6ICJzdHJpbmci
LAotICAgICJib3VuZHMiOiB7Ci0gICAgICAgICJ4IjogMCwKLSAgICAgICAgInkiOiAwLAotICAg
ICAgICAid2lkdGgiOiAibnVtYmVyIiwKLSAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCi0gICAg
fSwKLSAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKLSAgICAibWVtb3J5IjogIm51bWJlciIsCi0g
ICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Ci0gICAgICAgICJ4IjogMCwKLSAgICAgICAgInkiOiAw
LAotICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKLSAgICAgICAgImhlaWdodCI6ICJudW1iZXIi
Ci0gICAgfSwKLSAgICAicGFpbnRDb3VudCI6ICJudW1iZXIiLAotICAgICJjaGlsZExheWVycyI6
IFsKLSAgICAgICAgewotICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKLSAgICAgICAg
ICAgICJib3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAg
ICJ5IjogMCwKLSAgICAgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKLSAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogIm51bWJlciIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiaXND
b21wb3NpdGVkIjogZmFsc2UsCi0gICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAotICAg
ICAgICAgICAgICAgICAgICAiYm91bmRzIjogewotICAgICAgICAgICAgICAgICAgICAgICAgIngi
OiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIndpZHRoIjogMTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDEw
MAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3Np
dGVkIjogZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJs
YXllcklkIjogInN0cmluZyIsCi0gICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAieCI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAieSI6
IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJoZWlnaHQiOiA1MAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIm1l
bW9yeSI6ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICJ5IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIsCi0gICAgICAgICAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInkiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFpbnRD
b3VudCI6ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVy
cyI6IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgImxheWVySWQiOiAic3RyaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICJ5IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICJtZW1vcnkiOiAibnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRC
b3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAieSI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIsCi0gICAg
ICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInki
OiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVk
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInkiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lk
dGgiOiA1MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFpbnRDb3VudCI6ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
aGlsZExheWVycyI6IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIF0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgImJv
dW5kcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJ5IjogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMAotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCi0gICAg
ICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAieCI6
IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAid2lkdGgiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6
IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGF5ZXJJ
ZCI6ICJzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogewotICAgICAgICAg
ICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogIm51bWJlciIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICJtZW1vcnkiOiAibnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRC
b3VuZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAieSI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAibnVt
YmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAicGFpbnRDb3VudCI6ICJudW1i
ZXIiLAotICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogewotICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiaGVpZ2h0IjogNTAKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAi
bnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAieCI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAieSI6
IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJoZWlnaHQiOiA1MAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICAicGFpbnRDb3VudCI6ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAi
Y2hpbGRMYXllcnMiOiBbXQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF0KLSAgICAg
ICAgfQotICAgIF0KLX0KLQotPT09IE9idGFpbiB0aGUgbm9kZSBpZCBmb3IgdGhlIG5ld2x5IGlu
c2VydGVkIGxheWVyID09PQotCi1QQVNTCi0KLT09PSBHZXQgYXR0cmlidXRlcyBmb3IgdGhlIG5l
d2x5IGluc2VydGVkIG5vZGUgPT09Ci0KLVBBU1MKLQotPT09IFRlc3QgY29tcGxldGUsIGFsbCBl
eHBlY3RlZCBjb25kaXRpb25zIG1ldCA9PT0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZ2VuZXJhdGVkLWNv
bnRlbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2RiZGQ2
ZGRkNTNjNjk2MjJkZmIwYTc4NzIzYTZhOTRmZDJkOTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9s
YXllci10cmVlLWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLQotPT09IEdldCB0aGUgRG9jdW1lbnQgPT09Ci0KLVBBU1MKLQotPT09
IEVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50ID09PQotCi1QQVNTCi0KLT09PSBHZXQgdGhlIGxh
eWVyIHRyZWUgPT09Ci0KLVBBU1MKLQotPT09IE9idGFpbiBhbGwgbm9kZSBJRHMgZm9yIGxheWVy
cyBpbiB0aGUgdHJlZSA9PT0KLQotUEFTUwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1nZW5lcmF0ZWQtY29udGVudC5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZ2VuZXJhdGVkLWNvbnRlbnQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM5OWY2NjM2ZWRhYWU5OTRhZGU0NDk1
MDdjNWJhNmE5N2Q5ZGEzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1nZW5lcmF0
ZWQtY29udGVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
Ci0gICAgZ2V0RG9jdW1lbnQoKTsKLSAgICAKLSAgICBmdW5jdGlvbiBnZXREb2N1bWVudCgpCi0g
ICAgewotICAgICAgICAvLyBXZSBtdXN0IGZpcnN0IGdldCB0aGUgZG9jdW1lbnQgc28gdGhhdCBs
YXRlciBvbiB3ZSBtYXkgZ2V0IHNlbnNpYmxlIG5vZGVJZHMuCi0gICAgICAgIHN0ZXAoewotICAg
ICAgICAgICAgbmFtZTogIkdldCB0aGUgRG9jdW1lbnQiLAotICAgICAgICAgICAgY29tbWFuZDog
IkRPTS5nZXREb2N1bWVudCIsCi0gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKLSAgICAgICAg
ICAgIGNhbGxiYWNrOiBlbmFibGVMYXllclRyZWVBZ2VudAotICAgICAgICB9KTsKLSAgICB9Owot
ICAgIAotICAgIGZ1bmN0aW9uIGVuYWJsZUxheWVyVHJlZUFnZW50KHJlc3VsdCkKLSAgICB7Ci0g
ICAgICAgIHN0ZXAoewotICAgICAgICAgICAgbmFtZTogIkVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFn
ZW50IiwKLSAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZW5hYmxlIiwKLSAgICAgICAg
ICAgIHBhcmFtZXRlcnM6IHt9LAotICAgICAgICAgICAgY2FsbGJhY2s6IGdldExheWVyVHJlZQot
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24gZ2V0TGF5ZXJUcmVlKHJlc3VsdCkK
LSAgICB7Ci0gICAgICAgIHN0ZXAoewotICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgbGF5ZXIg
dHJlZSIsCi0gICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmdldExheWVyVHJlZSIsCi0g
ICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKLSAgICAgICAgICAgIGNhbGxiYWNrOiBnb3RMYXll
clRyZWUKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHZhciBsYXllckNvdW50OwotCi0gICAg
ZnVuY3Rpb24gZ290TGF5ZXJUcmVlKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciBmbGF0VHJl
ZSA9IGZsYXR0ZW5lZExheWVyVHJlZShyZXN1bHQubGF5ZXJUcmVlKTsKLSAgICAgICAgdmFyIGxh
eWVySWRzID0gT2JqZWN0LmtleXMoZmxhdFRyZWUpOwotICAgICAgICAKLSAgICAgICAgbGF5ZXJD
b3VudCA9IGxheWVySWRzLmxlbmd0aDsKLQotICAgICAgICBsb2dUZXN0TmFtZSgiT2J0YWluIGFs
bCBub2RlIElEcyBmb3IgbGF5ZXJzIGluIHRoZSB0cmVlIik7Ci0KLSAgICAgICAgZnVuY3Rpb24g
b2J0YWluTm9kZUlkRm9yTGF5ZXJJZChsYXllcklkKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
dW5Db21tYW5kKHsKLSAgICAgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLm5vZGVJZEZv
ckxheWVySWQiLAotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibGF5ZXJJZCI6IGxheWVy
SWR9LAotICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBnb3ROb2RlSWRGb3JMYXllcgotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbGF5ZXJJZHMuZm9yRWFjaChvYnRhaW5O
b2RlSWRGb3JMYXllcklkKTsKLSAgICB9OwotCi0gICAgdmFyIG5vZGVJZHMgPSBbXTsKLQotICAg
IGZ1bmN0aW9uIGdvdE5vZGVJZEZvckxheWVyKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciBp
ZCA9IHJlc3VsdC5ub2RlSWQ7Ci0KLSAgICAgICAgbm9kZUlkcy5wdXNoKGlkKTsKLQotICAgICAg
ICBpZiAoIS0tbGF5ZXJDb3VudCkKLSAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICB9Owot
Ci0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCi0gICAgewotICAgICAgICAvLyBXZSBwYXNzIGlm
IHdlIGdvdCB0aGlzIGZhciBhbmQgd2UgaGF2ZSBzb21lIG5vZGUgSURzIHJlcG9ydGVkIHRvIGJl
IDAsCi0gICAgICAgIC8vIHdoaWNoIGlzIHdoYXQgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0dXJuZWQg
Zm9yIGxheWVycyBub3QgYXNzb2NpYXRlZCB3aXRoCi0gICAgICAgIC8vIGEgTm9kZSwgZm9yIGlu
c3RhbmNlIENTUyBnZW5lcmF0ZWQgY29udGVudC4KLSAgICAgICAgaWYgKG5vZGVJZHMuaW5kZXhP
ZigwKSAhPT0gLTEpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFTUyIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogRGlkIG5vdCBn
ZXQgYW55IG5vZGUgSUQgZXF1YWwgdG8gMC4iKTsKLSAgICAgICAgCi0gICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGZsYXR0ZW5lZExh
eWVyVHJlZShsYXllclRyZWUpCi0gICAgewotICAgICAgICB2YXIgbGF5ZXJCeUlkcyA9IHt9Owot
Ci0gICAgICAgIGZ1bmN0aW9uIHJlY3Vyc2UobGF5ZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGxheWVyQnlJZHNbbGF5ZXIubGF5ZXJJZF0gPSBsYXllcjsKLSAgICAgICAgICAgIGlmIChsYXll
ci5jaGlsZExheWVycykKLSAgICAgICAgICAgICAgICBsYXllci5jaGlsZExheWVycy5mb3JFYWNo
KHJlY3Vyc2UpOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgcmVjdXJzZShsYXllclRy
ZWUpOwotCi0gICAgICAgIHJldHVybiBsYXllckJ5SWRzOwotICAgIH07Ci0KLSAgICBmdW5jdGlv
biBzdGVwKHRlc3QpCi0gICAgewotICAgICAgICBsb2dUZXN0TmFtZSh0ZXN0Lm5hbWUpOwotICAg
ICAgICBydW5Db21tYW5kKHRlc3QpOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBsb2dUZXN0TmFt
ZShuYW1lKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuPT09ICIgKyBuYW1l
ICsgIiA9PT1cbiIpOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBydW5Db21tYW5kKGNvbW1hbmQp
Ci0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKGNvbW1hbmQuY29tbWFu
ZCwgY29tbWFuZC5wYXJhbWV0ZXJzLCBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KSB7Ci0gICAgICAg
ICAgICBpZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiZXJyb3IiKSkgewotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZU9iamVjdC5lcnJv
ci5tZXNzYWdlICsgIiAoIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSArICIpIik7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjb21tYW5kLm5hbWUp
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1MiKTsKLQotICAgICAgICAg
ICAgY29tbWFuZC5jYWxsYmFjayhtZXNzYWdlT2JqZWN0LnJlc3VsdCk7Ci0gICAgICAgIH0pOwot
ICAgIH07Ci0KLX07Ci0KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVk
IiwgZnVuY3Rpb24oKQotewotICAgIHJ1blRlc3QoKTsKLX0sIGZhbHNlKTsKLQotPC9zY3JpcHQ+
Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgICAgCi0gICAgZGl2OjphZnRlciB7Ci0gICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICBo
ZWlnaHQ6IDEwMHB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKLSAgICAgICAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7Ci0gICAgICAgIGNvbnRlbnQ6ICIiOwot
ICAgIH0KLQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5PgotCi0gICAgPGRpdj48L2Rpdj4KLQot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL2xheWVyLXRyZWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXll
ci10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YWFkNjAyYjZhMDU3
NTUwN2EyMzljOTEyNmQ3Y2UwODIzYmE2ZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRy
ZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCi1mdW5jdGlvbiBhZGRDb21wb3NpdGVkTGF5ZXIo
KQotewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgZWxlbWVudC5jbGFzc05hbWUgPSAiY29tcG9zaXRlZCI7Ci0gICAgZWxlbWVudC5pZCA9ICJs
YXN0LWVsZW1lbnQiOwotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci19
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgaW5pdGlhbExheWVyVHJlZTsKLSAgICB2
YXIgZXZlbnRzQ291bnQgPSAwOwotCi0gICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkxh
eWVyVHJlZS5sYXllclRyZWVEaWRDaGFuZ2UiXSA9IGZ1bmN0aW9uIChtZXNzYWdlT2JqZWN0KSB7
Ci0gICAgICAgIGV2ZW50c0NvdW50Kys7Ci0gICAgfTsKLQotICAgIGdldERvY3VtZW50KCk7Ci0g
ICAgCi0gICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQoKQotICAgIHsKLSAgICAgICAgLy8gV2UgbXVz
dCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNvIHRoYXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5z
aWJsZSBub2RlSWRzLgotICAgICAgICBzdGVwKHsKLSAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhl
IERvY3VtZW50IiwKLSAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0RG9jdW1lbnQiLAotICAg
ICAgICAgICAgcGFyYW1ldGVyczoge30sCi0gICAgICAgICAgICBjYWxsYmFjazogZW5hYmxlTGF5
ZXJUcmVlQWdlbnQKLSAgICAgICAgfSk7Ci0gICAgfTsKLSAgICAKLSAgICBmdW5jdGlvbiBlbmFi
bGVMYXllclRyZWVBZ2VudChyZXN1bHQpCi0gICAgewotICAgICAgICBzdGVwKHsKLSAgICAgICAg
ICAgIG5hbWU6ICJFbmFibGUgdGhlIExheWVyVHJlZSBhZ2VudCIsCi0gICAgICAgICAgICBjb21t
YW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIsCi0gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKLSAg
ICAgICAgICAgIGNhbGxiYWNrOiBnZXRJbml0aWFsTGF5ZXJUcmVlCi0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBmdW5jdGlvbiBnZXRJbml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkKLSAgICB7Ci0g
ICAgICAgIHN0ZXAoewotICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgaW5pdGlhbCBsYXllciB0
cmVlIiwKLSAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZ2V0TGF5ZXJUcmVlIiwKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAotICAgICAgICAgICAgY2FsbGJhY2s6IGdvdEluaXRp
YWxMYXllclRyZWUKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGdvdEluaXRp
YWxMYXllclRyZWUocmVzdWx0KQotICAgIHsKLSAgICAgICAgaW5pdGlhbExheWVyVHJlZSA9IHJl
c3VsdC5sYXllclRyZWU7Ci0KLSAgICAgICAgZHVtcExheWVyVHJlZShpbml0aWFsTGF5ZXJUcmVl
KTsKLQotICAgICAgICBzdGVwKHsKLSAgICAgICAgICAgIG5hbWU6ICJNZXNzYWdlIHRoZSBwYWdl
IHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVyIiwKLSAgICAgICAgICAgIGNvbW1hbmQ6ICJS
dW50aW1lLmV2YWx1YXRlIiwKLSAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsiZXhwcmVzc2lvbiI6
ICJhZGRDb21wb3NpdGVkTGF5ZXIoKSJ9LAotICAgICAgICAgICAgY2FsbGJhY2s6IGdldE1vZGlm
aWVkTGF5ZXJUcmVlCi0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBnZXRNb2Rp
ZmllZExheWVyVHJlZShyZXN1bHQpCi0gICAgewotICAgICAgICBzdGVwKHsKLSAgICAgICAgICAg
IG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUiLAotICAgICAgICAgICAgY29tbWFu
ZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUiLAotICAgICAgICAgICAgcGFyYW1ldGVyczoge30s
Ci0gICAgICAgICAgICBjYWxsYmFjazogZ290TW9kaWZpZWRMYXllclRyZWUKLSAgICAgICAgfSk7
Ci0gICAgfTsKLQotICAgIHZhciBsYXllckNvdW50ID0gMDsKLQotICAgIGZ1bmN0aW9uIGdvdE1v
ZGlmaWVkTGF5ZXJUcmVlKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGR1bXBMYXllclRyZWUocmVz
dWx0LmxheWVyVHJlZSk7Ci0KLSAgICAgICAgdmFyIG11dGF0aW9ucyA9IGxheWVyVHJlZU11dGF0
aW9ucyhpbml0aWFsTGF5ZXJUcmVlLCByZXN1bHQubGF5ZXJUcmVlKTsKLSAgICAgICAgdmFyIGxh
c3RJZCA9IG11dGF0aW9ucy5hZGRpdGlvbnNbMF07Ci0KLSAgICAgICAgc3RlcCh7Ci0gICAgICAg
ICAgICBuYW1lOiAiT2J0YWluIHRoZSBub2RlIGlkIGZvciB0aGUgbmV3bHkgaW5zZXJ0ZWQgbGF5
ZXIiLAotICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5ub2RlSWRGb3JMYXllcklkIiwK
LSAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibGF5ZXJJZCI6IGxhc3RJZH0sCi0gICAgICAgICAg
ICBjYWxsYmFjazogZ290Tm9kZUlkRm9yTGFzdExheWVyCi0gICAgICAgIH0pOwotICAgIH07Ci0K
LSAgICBmdW5jdGlvbiBnb3ROb2RlSWRGb3JMYXN0TGF5ZXIocmVzdWx0KQotICAgIHsKLSAgICAg
ICAgdmFyIGlkID0gcmVzdWx0Lm5vZGVJZDsKLSAgICAgICAgc3RlcCh7Ci0gICAgICAgICAgICBu
YW1lOiAiR2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBuZXdseSBpbnNlcnRlZCBub2RlIiwKLSAgICAg
ICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0QXR0cmlidXRlcyIsCi0gICAgICAgICAgICBwYXJhbWV0
ZXJzOiB7Im5vZGVJZCI6IGlkfSwKLSAgICAgICAgICAgIGNhbGxiYWNrOiBnb3ROb2RlQXR0cmli
dXRlcwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgZnVuY3Rpb24gZ290Tm9kZUF0dHJpYnV0
ZXMocmVzdWx0KQotICAgIHsKLSAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzRGlj
dGlvbmFyeUZyb21BcnJheShyZXN1bHQuYXR0cmlidXRlcyk7Ci0gICAgICAgIGlmIChhdHRyaWJ1
dGVzLmlkICE9PSAibGFzdC1lbGVtZW50IikKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJGQUlMOiBEaWQgbm90IG9idGFpbiB0aGUgZXhwZWN0ZWQgZWxlbWVudCBmb3IgdGhlIGxhc3Qg
aW5zZXJ0ZWQgbGF5ZXIuIik7Ci0KLSAgICAgICAgZmluaXNoVGVzdCgpOwotICAgIH07Ci0KLSAg
ICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKLSAgICB7Ci0gICAgICAgIGlmICghZXZlbnRzQ291bnQp
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogRGlkIG5vdCByZWNlaXZlIGxh
eWVyVHJlZURpZENoYW5nZSBldmVudHMuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJcbj09PSBUZXN0IGNvbXBsZXRlLCBhbGwgZXhwZWN0ZWQgY29uZGl0
aW9ucyBtZXQgPT09Iik7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
LSAgICB9OwotCi0gICAgZnVuY3Rpb24gbGF5ZXJUcmVlTXV0YXRpb25zKG9sZExheWVyVHJlZSwg
bmV3TGF5ZXJUcmVlKQotICAgIHsKLSAgICAgICAgdmFyIG9sZEtleXMgPSBPYmplY3Qua2V5cyhm
bGF0dGVuZWRMYXllclRyZWUob2xkTGF5ZXJUcmVlKSk7Ci0gICAgICAgIHZhciBuZXdLZXlzID0g
T2JqZWN0LmtleXMoZmxhdHRlbmVkTGF5ZXJUcmVlKG5ld0xheWVyVHJlZSkpOwotCi0gICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICBhZGRpdGlvbnM6IG5ld0tleXMuZmlsdGVyKGZ1bmN0aW9u
IChrZXkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKG9sZEtleXMuaW5kZXhPZihrZXkpID09
PSAtMSk7Ci0gICAgICAgICAgICB9KSwKLSAgICAgICAgICAgIHJlbW92YWxzOiBvbGRLZXlzLmZp
bHRlcihmdW5jdGlvbiAoa2V5KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChuZXdLZXlzLmlu
ZGV4T2Yoa2V5KSA9PT0gLTEpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgfTsKLSAgICB9Owot
Ci0gICAgZnVuY3Rpb24gZmxhdHRlbmVkTGF5ZXJUcmVlKGxheWVyVHJlZSkKLSAgICB7Ci0gICAg
ICAgIHZhciBsYXllckJ5SWRzID0ge307Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVjdXJzZShsYXll
cikKLSAgICAgICAgewotICAgICAgICAgICAgbGF5ZXJCeUlkc1tsYXllci5sYXllcklkXSA9IGxh
eWVyOwotICAgICAgICAgICAgaWYgKGxheWVyLmNoaWxkTGF5ZXJzKQotICAgICAgICAgICAgICAg
IGxheWVyLmNoaWxkTGF5ZXJzLmZvckVhY2gocmVjdXJzZSk7Ci0gICAgICAgIH07Ci0gICAgICAg
IAotICAgICAgICByZWN1cnNlKGxheWVyVHJlZSk7Ci0KLSAgICAgICAgcmV0dXJuIGxheWVyQnlJ
ZHM7Ci0gICAgfTsKLQotICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5RnJvbUFycmF5
KGF0dHJpYnV0ZXMpCi0gICAgewotICAgICAgICB2YXIgZGljdGlvbmFyeSA9IHt9Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgY291bnQ7IGkg
Kz0gMikgewotICAgICAgICAgICAgZGljdGlvbmFyeVthdHRyaWJ1dGVzW2ldXSA9IGF0dHJpYnV0
ZXNbaSArIDFdOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkaWN0aW9uYXJ5OwotICAgIH07
Ci0KLSAgICBmdW5jdGlvbiBkdW1wTGF5ZXJUcmVlKGxheWVyVHJlZSkKLSAgICB7Ci0gICAgICAg
IGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChrZXkgPT09ICJsYXllcklkIiB8fCBrZXkgPT09ICJtZW1vcnkiIHx8IGtleSA9PT0gInBhaW50
Q291bnQiKQotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YodmFsdWUpOwotCi0gICAgICAg
ICAgICAvLyBzb21lIHZhbHVlcyBkaWZmZXIgYmFzZWQgb24gcG9ydCwgYnV0IHRoZSBvbmVzIHdl
IG1vc3QKLSAgICAgICAgICAgIC8vIGNhcmUgYWJvdXQgd2lsbCBhbHdheXMgYmUgbGVzcyBvciBl
cXVhbCAxMDAuCi0gICAgICAgICAgICBpZiAoKGtleSA9PT0gIndpZHRoIiB8fCBrZXkgPT09ICJo
ZWlnaHQiKSAmJiB2YWx1ZSA+IDEwMCkgCi0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZih2
YWx1ZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAg
fTsKLSAgICAgICAgCi0gICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbiIgKyBKU09OLnN0cmlu
Z2lmeShsYXllclRyZWUsIHJlcGxhY2VyLCAiICAgICIpKTsKLSAgICB9OwotCi0gICAgZnVuY3Rp
b24gc3RlcCh0ZXN0KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuPT09ICIg
KyB0ZXN0Lm5hbWUgKyAiID09PVxuIikKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFu
ZCh0ZXN0LmNvbW1hbmQsIHRlc3QucGFyYW1ldGVycywgZnVuY3Rpb24obWVzc2FnZU9iamVjdCkg
ewotICAgICAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3duUHJvcGVydHkoImVycm9yIikp
IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogIiArIG1lc3NhZ2VP
YmplY3QuZXJyb3IubWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLmNvZGUgKyAi
KSIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiUEFTUyIpOwotICAgICAgICAgICAgdGVzdC5jYWxsYmFjayhtZXNzYWdlT2Jq
ZWN0LnJlc3VsdCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLX07Ci0KLXdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24gKCkgewotICAgIHJ1blRlc3Qo
KTsKLX0sIGZhbHNlKTsKLQotPC9zY3JpcHQ+Ci08c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAg
ICAgCi0gICAgZGl2IHsKLSAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgICAgICB0b3A6
IDA7Ci0gICAgICAgIGxlZnQ6IDA7Ci0gICAgfQotICAgICAgCi0gICAgLnJlZ3VsYXIgewotICAg
ICAgICB3aWR0aDogMTAwcHg7Ci0gICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsYWNrOwotICAgIH0KLQotICAgIC5jb21wb3NpdGVkIHsKLSAgICAgICAg
dG9wOiAyNXB4OwotICAgICAgICBsZWZ0OiAyNXB4OwotICAgICAgICB3aWR0aDogNTBweDsKLSAg
ICAgICAgaGVpZ2h0OiA1MHB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwotICAg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKLSAgICB9Ci0gICAgICAKLSAg
ICAub2Zmc2V0IHsKLSAgICAgICAgbGVmdDogMjAwcHg7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNm
b3JtOiB0cmFuc2xhdGVaKDApOwotICAgIH0KLQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5Pgot
Ci0gICAgPGRpdiBjbGFzcz0icmVndWxhciI+PC9kaXY+Ci0KLSAgICA8ZGl2IGNsYXNzPSJjb21w
b3NpdGVkIj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PC9kaXY+Ci0gICAgPC9k
aXY+Ci0KLSAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIG9mZnNldCI+Ci0gICAgICAgIDxkaXYgY2xh
c3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgotICAgIDwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmYWEyOWRhMWU0MjZiZmRlMTdmNTIxYjc1NzM4YTNmMGNkNmZiNmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2MCBAQAorCis9PT0gRW5hYmxlIHRoZSBMYXllclRyZWUg
YWdlbnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKwor
PT09IEdldCB0aGUgaW5pdGlhbCBsYXllciB0cmVlID09PQorCitQQVNTCisKK1sKKyAgICB7Cisg
ICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwK
KyAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgImhlaWdo
dCI6ICJudW1iZXIiCisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAor
ICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjog
eworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAg
IndpZHRoIjogIm51bWJlciIsCisgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICAg
ICAgfSwKKyAgICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIgorICAgIH0sCisgICAgeworICAg
ICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6
IDAsCisgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICJoZWlnaHQi
OiAibnVtYmVyIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJsYXllcklkIjog
InN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJvdW5kcyI6
IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAg
ICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgfQorICAg
IH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlk
IjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDI1LAor
ICAgICAgICAgICAgInkiOiAyNSwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAg
ICAgImhlaWdodCI6IDUwCisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVl
LAorICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRz
IjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAg
ICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgfSwKKyAg
ICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIgorICAgIH0sCisgICAgeworICAgICAgICAibGF5
ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDUwLAorICAgICAgICAgICAgInkiOiA1MCwKKyAg
ICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAg
IH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAibWVtb3J5IjogIm51
bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAw
LAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAg
ICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgfSwKKyAgICAgICAgInBhaW50Q291bnQiOiAibnVt
YmVyIgorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAg
ICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAi
eCI6IDIwMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwK
KyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgfSwKKyAgICAgICAgImlzQ29tcG9z
aXRlZCI6IHRydWUsCisgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgImNvbXBv
c2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAs
CisgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisg
ICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9LAorICAgIHsK
KyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIi
LAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyMjUsCisgICAgICAgICAg
ICAieSI6IDI1LAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAiaGVpZ2h0
IjogNTAKKyAgICAgICAgfSwKKyAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAg
ICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAg
ICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgi
OiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICB9LAorICAgICAgICAicGFp
bnRDb3VudCI6ICJudW1iZXIiCisgICAgfSwKKyAgICB7CisgICAgICAgICJsYXllcklkIjogInN0
cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJvdW5kcyI6IHsK
KyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3
aWR0aCI6IDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICB9CisgICAgfSwKKyAg
ICB7CisgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVt
YmVyIiwKKyAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAg
ICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAgICAgICAgICAiaGVpZ2h0
IjogMAorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJsYXllcklkIjogInN0cmlu
ZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJvdW5kcyI6IHsKKyAg
ICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0
aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgIH0s
CisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAibWVtb3J5IjogIm51bWJl
ciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAg
ICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICAgICAgfSwKKyAgICAgICAgInBhaW50Q291
bnQiOiAibnVtYmVyIgorICAgIH0KK10KKworPT09IE1lc3NhZ2UgdGhlIHBhZ2UgdG8gYWRkIGEg
bmV3IGNvbXBvc2l0ZWQgbGF5ZXIgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgbW9kaWZpZWQg
bGF5ZXIgdHJlZSA9PT0KKworUEFTUworCitbCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJz
dHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7
CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAi
d2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgorICAgICAg
ICB9LAorICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6ICJu
dW1iZXIiLAorICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4Ijog
MCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAor
ICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgIH0sCisgICAgICAgICJwYWlu
dENvdW50IjogIm51bWJlciIKKyAgICB9LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3Ry
aW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogewor
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndp
ZHRoIjogIm51bWJlciIsCisgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICAgICAg
fQorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAi
bm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6
IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAg
ICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIiLAorICAgICAg
ICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyNSwKKyAgICAgICAgICAgICJ5IjogMjUs
CisgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAg
ICAgICB9LAorICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6
ICJudW1iZXIiLAorICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4
IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAg
ICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50Ijog
Im51bWJlciIKKyAgICB9LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAg
ICAgICAgIm5vZGVJZCI6ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAg
ICAgIngiOiA1MCwKKyAgICAgICAgICAgICJ5IjogNTAsCisgICAgICAgICAgICAid2lkdGgiOiA1
MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICB9LAorICAgICAgICAiaXNDb21w
b3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAiY29t
cG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5Ijog
MCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisg
ICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9LAorICAgIHsK
KyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIi
LAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyMDAsCisgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAiaGVpZ2h0
IjogMTAwCisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAg
ICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAg
ICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRo
IjogMTAwLAorICAgICAgICAgICAgImhlaWdodCI6IDEwMAorICAgICAgICB9LAorICAgICAgICAi
cGFpbnRDb3VudCI6ICJudW1iZXIiCisgICAgfSwKKyAgICB7CisgICAgICAgICJsYXllcklkIjog
InN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJvdW5kcyI6
IHsKKyAgICAgICAgICAgICJ4IjogMjI1LAorICAgICAgICAgICAgInkiOiAyNSwKKyAgICAgICAg
ICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgIH0sCisg
ICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAibWVtb3J5IjogIm51bWJlciIs
CisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAg
ICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAi
aGVpZ2h0IjogNTAKKyAgICAgICAgfSwKKyAgICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIgor
ICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9k
ZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAwLAorICAgICAgICAg
ICAgImhlaWdodCI6IDAKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJ
ZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3Vu
ZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAid2lkdGgiOiAwLAorICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgfQorICAg
IH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlk
IjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAg
ICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgorICAgICAgICB9LAorICAgICAgICAiaXNDb21wb3Np
dGVkIjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAiY29tcG9z
aXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwK
KyAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgImhlaWdodCI6ICJu
dW1iZXIiCisgICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9
LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6
ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyNSwKKyAg
ICAgICAgICAgICJ5IjogMjUsCisgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAg
ICJoZWlnaHQiOiA1MAorICAgICAgICB9LAorICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwK
KyAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6
IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAg
ICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgIH0sCisgICAg
ICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9CitdCisKKz09PSBHZXQgYXR0cmlidXRl
cyBmb3IgdGhlIG5ld2x5IGluc2VydGVkIG5vZGUgPT09CisKK1BBU1MKKworPT09IFRlc3QgY29t
cGxldGUsIGFsbCBleHBlY3RlZCBjb25kaXRpb25zIG1ldCA9PT0KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtY29tcG9zaXRlZC1vbmx5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5
ZXJzLWNvbXBvc2l0ZWQtb25seS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcyOTRlZDQ4YWFl
NTE3YWZiYTI0MGFkZDUxMTdhZTI1MjMwYWE4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLWNvbXBvc2l0ZWQtb25seS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorCis9PT0gRW5hYmxlIHRoZSBMYXllclRyZWUgYWdl
bnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKworPT09
IEdldCB0aGUgbGF5ZXIgdHJlZSB3aXRoIHdpdGggYWxsIGxheWVycyA9PT0KKworUEFTUworUEFT
UzogR290IDYgbGF5ZXJzLgorCis9PT0gR2V0IHRoZSBsYXllciB0cmVlIHdpdGggb25seSBjb21w
b3NpdGVkIGxheWVycyA9PT0KKworUEFTUworUEFTUzogR290IDQgbGF5ZXJzLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1jb21wb3Np
dGVkLW9ubHkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5
ZXJzLWNvbXBvc2l0ZWQtb25seS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNjJkYzU2ZTJiNjAxYjMxZDc4
ZTNlNDE2MmVjN2E0Yjk1MmEyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1jb21wb3NpdGVkLW9ubHkuaHRtbApAQCAtMCww
ICsxLDEzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICB2YXIgZG9jdW1lbnROb2RlSWQ7CisKKyAgICBl
bmFibGVMYXllclRyZWVBZ2VudCgpOworICAgIAorICAgIGZ1bmN0aW9uIGVuYWJsZUxheWVyVHJl
ZUFnZW50KHJlc3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTog
IkVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXll
clRyZWUuZW5hYmxlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAg
Y2FsbGJhY2s6IGdldERvY3VtZW50CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlv
biBnZXREb2N1bWVudCgpCisgICAgeworICAgICAgICAvLyBXZSBtdXN0IGZpcnN0IGdldCB0aGUg
ZG9jdW1lbnQgc28gdGhhdCBsYXRlciBvbiB3ZSBtYXkgZ2V0IHNlbnNpYmxlIG5vZGVJZHMuCisg
ICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgRG9jdW1lbnQiLAorICAg
ICAgICAgICAgY29tbWFuZDogIkRPTS5nZXREb2N1bWVudCIsCisgICAgICAgICAgICBwYXJhbWV0
ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXRMYXllclRyZWUKKyAgICAgICAgfSk7
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdldExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAg
ICAgICBkb2N1bWVudE5vZGVJZCA9IHJlc3VsdC5yb290Lm5vZGVJZDsKKworICAgICAgICBzdGVw
KHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIGxheWVyIHRyZWUgd2l0aCB3aXRoIGFsbCBs
YXllcnMiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5sYXllcnNGb3JOb2RlIiwK
KyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZG9jdW1lbnROb2RlSWQsICJvbmx5
Q29tcG9zaXRlZExheWVycyI6IGZhbHNlfSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnb3RMYXll
clRyZWVXaXRoQWxsTGF5ZXJzCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBn
b3RMYXllclRyZWVXaXRoQWxsTGF5ZXJzKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGFzc2VydCgi
R290IDYgbGF5ZXJzIiwgcmVzdWx0LmxheWVycy5sZW5ndGgsIDcpOworCisgICAgICAgIHN0ZXAo
eworICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgbGF5ZXIgdHJlZSB3aXRoIG9ubHkgY29tcG9z
aXRlZCBsYXllcnMiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5sYXllcnNGb3JO
b2RlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZG9jdW1lbnROb2RlSWQs
ICJvbmx5Q29tcG9zaXRlZExheWVycyI6IHRydWV9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdv
dExheWVyVHJlZVdpdGhPbmx5Q29tcG9zaXRlZExheWVycworICAgICAgICB9KTsKKyAgICB9Owor
CisgICAgZnVuY3Rpb24gZ290TGF5ZXJUcmVlV2l0aE9ubHlDb21wb3NpdGVkTGF5ZXJzKHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGFzc2VydCgiR290IDQgbGF5ZXJzIiwgcmVzdWx0LmxheWVycy5s
ZW5ndGgsIDQpOworCisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0LmNh
bGxiYWNrKQorICAgICAgICAgICAgbG9nVGVzdE5hbWUodGVzdC5uYW1lKTsKKyAgICAgICAgcnVu
Q29tbWFuZCh0ZXN0KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbG9nVGVzdE5hbWUobmFtZSkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgbmFtZSArICIgPT09
XG4iKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gcnVuQ29tbWFuZChjb21tYW5kKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZChjb21tYW5kLmNvbW1hbmQsIGNvbW1h
bmQucGFyYW1ldGVycywgZnVuY3Rpb24obWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgaWYg
KG1lc3NhZ2VPYmplY3QuaGFzT3duUHJvcGVydHkoImVycm9yIikpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiRVJST1I6ICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLm1lc3Nh
Z2UpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29tbWFuZC5uYW1lKQorICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJQQVNTIik7CisKKyAgICAgICAgICAgIGlmIChjb21tYW5kLmNh
bGxiYWNrKQorICAgICAgICAgICAgICAgIGNvbW1hbmQuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5y
ZXN1bHQpOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gYXNzZXJ0KG5hbWUs
IGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICBpZiAoZXhwZWN0ZWQgPT09IGFjdHVh
bCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiAiICsgbmFtZSArICIuIik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsg
bmFtZSArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCArICIgYnV0IGdvdCAiICsgYWN0dWFsKTsK
KyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRl
ZCIsIGZ1bmN0aW9uKCkKK3sKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKworICAgIC5wb3NpdGlvbmVkIHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIH0KKworICAg
IC5jb21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7
CisgICAgfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKyAgICA8ZGl2IGNsYXNzPSJw
b3NpdGlvbmVkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb25lZCBjb21wb3NpdGVkIj4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uZWQiPgorICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InBvc2l0aW9uZWQgY29tcG9zaXRlZCI+PC9kaXY+CisgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJwb3NpdGlv
bmVkIGNvbXBvc2l0ZWQiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWZhYTI5ZGExZTQyNmJmZGUxN2Y1MjFiNzU3MzhhM2YwY2Q2ZmI2Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMv
bGF5ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2MCBAQAorCis9PT0gRW5hYmxlIHRoZSBM
YXllclRyZWUgYWdlbnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisK
K1BBU1MKKworPT09IEdldCB0aGUgaW5pdGlhbCBsYXllciB0cmVlID09PQorCitQQVNTCisKK1sK
KyAgICB7CisgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAi
bnVtYmVyIiwKKyAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAg
ICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQi
OiB0cnVlLAorICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVk
Qm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJl
ciIKKyAgICAgICAgfSwKKyAgICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIgorICAgIH0sCisg
ICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51
bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAgICAg
ICJoZWlnaHQiOiAibnVtYmVyIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJs
YXllcklkIjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAg
ImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAg
ICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAg
ICAgfQorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAg
ICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAi
eCI6IDI1LAorICAgICAgICAgICAgInkiOiAyNSwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAor
ICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0
ZWQiOiB0cnVlLAorICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3Np
dGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAor
ICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAg
ICAgfSwKKyAgICAgICAgInBhaW50Q291bnQiOiAibnVtYmVyIgorICAgIH0sCisgICAgeworICAg
ICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDUwLAorICAgICAgICAgICAgInki
OiA1MCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUw
CisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAibWVt
b3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAg
ICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogNTAs
CisgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgfSwKKyAgICAgICAgInBhaW50Q291
bnQiOiAibnVtYmVyIgorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmci
LAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAg
ICAgICAgICAieCI6IDIwMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0
aCI6IDEwMCwKKyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgfSwKKyAgICAgICAg
ImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAg
ICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAiaGVpZ2h0
IjogMTAwCisgICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9
LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6
ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyMjUsCisg
ICAgICAgICAgICAieSI6IDI1LAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAg
ICAiaGVpZ2h0IjogNTAKKyAgICAgICAgfSwKKyAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUs
CisgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMi
OiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAg
ICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICB9LAorICAg
ICAgICAicGFpbnRDb3VudCI6ICJudW1iZXIiCisgICAgfSwKKyAgICB7CisgICAgICAgICJsYXll
cklkIjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJv
dW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICJ3aWR0aCI6IDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICB9Cisg
ICAgfSwKKyAgICB7CisgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICJub2Rl
SWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwK
KyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAgICAgICAg
ICAiaGVpZ2h0IjogMAorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJsYXllcklk
IjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAg
ICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisg
ICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAibWVtb3J5
IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAg
IngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogIm51bWJl
ciIsCisgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICAgICAgfSwKKyAgICAgICAg
InBhaW50Q291bnQiOiAibnVtYmVyIgorICAgIH0KK10KKworPT09IE1lc3NhZ2UgdGhlIHBhZ2Ug
dG8gYWRkIGEgbmV3IGNvbXBvc2l0ZWQgbGF5ZXIgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUg
bW9kaWZpZWQgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCitbCisgICAgeworICAgICAgICAibGF5
ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAg
ICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICJoZWlnaHQiOiAibnVtYmVy
IgorICAgICAgICB9LAorICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgIm1l
bW9yeSI6ICJudW1iZXIiLAorICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6ICJu
dW1iZXIiLAorICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgIH0sCisgICAg
ICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9LAorICAgIHsKKyAgICAgICAgImxheWVy
SWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIiLAorICAgICAgICAiYm91
bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIK
KyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAor
ICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAg
ICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAx
MDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgIH0KKyAgICB9LAorICAgIHsK
KyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIi
LAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyNSwKKyAgICAgICAgICAg
ICJ5IjogMjUsCisgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQi
OiA1MAorICAgICAgICB9LAorICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAg
Im1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAg
ICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6
IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgIH0sCisgICAgICAgICJwYWlu
dENvdW50IjogIm51bWJlciIKKyAgICB9LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3Ry
aW5nIiwKKyAgICAgICAgIm5vZGVJZCI6ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogewor
ICAgICAgICAgICAgIngiOiA1MCwKKyAgICAgICAgICAgICJ5IjogNTAsCisgICAgICAgICAgICAi
d2lkdGgiOiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICB9LAorICAgICAg
ICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAg
ICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAg
ICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdo
dCI6IDUwCisgICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9
LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgIm5vZGVJZCI6
ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAyMDAsCisg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAg
ICAiaGVpZ2h0IjogMTAwCisgICAgICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVl
LAorICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRz
IjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAg
ICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgImhlaWdodCI6IDEwMAorICAgICAgICB9LAor
ICAgICAgICAicGFpbnRDb3VudCI6ICJudW1iZXIiCisgICAgfSwKKyAgICB7CisgICAgICAgICJs
YXllcklkIjogInN0cmluZyIsCisgICAgICAgICJub2RlSWQiOiAibnVtYmVyIiwKKyAgICAgICAg
ImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMjI1LAorICAgICAgICAgICAgInkiOiAyNSwK
KyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAg
ICAgIH0sCisgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAibWVtb3J5Ijog
Im51bWJlciIsCisgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngi
OiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAg
ICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgfSwKKyAgICAgICAgInBhaW50Q291bnQiOiAi
bnVtYmVyIgorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAg
ICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAg
ICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAwLAor
ICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAg
ICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAibm9kZUlkIjogIm51bWJlciIsCisgICAg
ICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAs
CisgICAgICAgICAgICAid2lkdGgiOiAwLAorICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAg
ICAgfQorICAgIH0sCisgICAgeworICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAg
ICAibm9kZUlkIjogIm51bWJlciIsCisgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAi
eCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVy
IiwKKyAgICAgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgorICAgICAgICB9LAorICAgICAgICAi
aXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAg
ICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAg
ICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgImhl
aWdodCI6ICJudW1iZXIiCisgICAgICAgIH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJl
ciIKKyAgICB9LAorICAgIHsKKyAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAg
Im5vZGVJZCI6ICJudW1iZXIiLAorICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngi
OiAyNSwKKyAgICAgICAgICAgICJ5IjogMjUsCisgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAg
ICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICB9LAorICAgICAgICAiaXNDb21wb3NpdGVk
IjogdHJ1ZSwKKyAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAiY29tcG9zaXRl
ZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAg
ICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAg
IH0sCisgICAgICAgICJwYWludENvdW50IjogIm51bWJlciIKKyAgICB9CitdCisKKz09PSBHZXQg
YXR0cmlidXRlcyBmb3IgdGhlIG5ld2x5IGluc2VydGVkIG5vZGUgPT09CisKK1BBU1MKKworPT09
IFRlc3QgY29tcGxldGUsIGFsbCBleHBlY3RlZCBjb25kaXRpb25zIG1ldCA9PT0KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtZ2VuZXJh
dGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2xheWVycy9sYXllcnMtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM4YzBlNzc5YjA1NDk1ZjM3NWQxMjkwOGMwODZjNjMwNGQxOGI4NzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1nZW5lcmF0
ZWQtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorCis9PT0gRW5hYmxlIHRo
ZSBMYXllclRyZWUgYWdlbnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09
CisKK1BBU1MKKworPT09IEdldCB0aGUgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCis9PT0gQ2hl
Y2sgbGF5ZXJzID09PQorCitQQVNTOiBFeHBlY3RlZCBudW1iZXIgb2YgOjpiZWZvcmUgbGF5ZXJz
LgorUEFTUzogVGhlIHNvbGUgOjpiZWZvcmUgbGF5ZXIgaXMgbm90IGNvbXBvc2l0ZWQuCitQQVNT
OiBUaGUgc29sZSA6OmJlZm9yZSBsYXllciBoYXMgYSBwc2V1ZG8gZWxlbWVudC4KK1BBU1M6IEV4
cGVjdGVkIG51bWJlciBvZiA6OmFmdGVyIGxheWVycy4KK1BBU1M6IFRoZSBzb2xlIDo6YWZ0ZXIg
bGF5ZXIgaXMgY29tcG9zaXRlZC4KK1BBU1M6IFRoZSBzb2xlIDo6YWZ0ZXIgbGF5ZXIgaGFzIGEg
cHNldWRvIGVsZW1lbnQuCitQQVNTOiBCb3RoIGdlbmVyYXRlZCBsYXllcnMgaGF2ZSB0aGUgc2Ft
ZSBub2RlIGlkLgorUEFTUzogVGhlIHR3byBnZW5lcmF0ZWQgbGF5ZXJzIGhhdmUgZGlmZmVyZW50
IHBzZXVkbyBlbGVtZW50IGlkcy4KKworPT09IENoZWNrIGdlbmVyYXRpbmcgbm9kZSA9PT0KKwor
UEFTUzogTm9kZSBoYXMgZXhwZWN0ZWQgbm9kZSBpZC4KK1BBU1M6IE5vZGUgaGFzIGV4cGVjdGVk
IGxvY2FsTmFtZS4KK1BBU1M6IE5vZGUgaGFzIGlkLgorUEFTUzogTm9kZSBoYXMgZXhwZWN0ZWQg
aWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMv
bGF5ZXJzLWdlbmVyYXRlZC1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvbGF5ZXJzL2xheWVycy1nZW5lcmF0ZWQtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
MTQ2MzMxZGVlYzcwMjgyM2I5YmEwN2QyMWIyNWM3MWUyNmY3NTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1nZW5lcmF0ZWQt
Y29udGVudC5odG1sCkBAIC0wLDAgKzEsMTY2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIHZhciBnZW5l
cmF0aW5nTm9kZUlkOworIAorICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJET00uc2V0
Q2hpbGROb2RlcyJdID0gc2V0Q2hpbGROb2RlczsKKworICAgIGVuYWJsZUxheWVyVHJlZUFnZW50
KCk7CisgICAgCisgICAgZnVuY3Rpb24gZW5hYmxlTGF5ZXJUcmVlQWdlbnQocmVzdWx0KQorICAg
IHsKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiRW5hYmxlIHRoZSBMYXllclRy
ZWUgYWdlbnQiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5lbmFibGUiLAorICAg
ICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ2V0RG9jdW1l
bnQKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KCkKKyAg
ICB7CisgICAgICAgIC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVudCBzbyB0aGF0IGxh
dGVyIG9uIHdlIG1heSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAgICAgICAgc3RlcCh7CisgICAg
ICAgICAgICBuYW1lOiAiR2V0IHRoZSBEb2N1bWVudCIsCisgICAgICAgICAgICBjb21tYW5kOiAi
RE9NLmdldERvY3VtZW50IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAg
ICAgY2FsbGJhY2s6IGdldExheWVyVHJlZQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVu
Y3Rpb24gZ2V0TGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAg
ICAgICAgbmFtZTogIkdldCB0aGUgbGF5ZXIgdHJlZSIsCisgICAgICAgICAgICBjb21tYW5kOiAi
TGF5ZXJUcmVlLmxheWVyc0Zvck5vZGUiLAorICAgICAgICAgICAgcGFyYW1ldGVyczogeyJub2Rl
SWQiOiByZXN1bHQucm9vdC5ub2RlSWQsICJvbmx5Q29tcG9zaXRlZExheWVycyI6IGZhbHNlfSwK
KyAgICAgICAgICAgIGNhbGxiYWNrOiBnb3RMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsK
KworICAgIGZ1bmN0aW9uIGdvdExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICB2YXIg
YmVmb3JlTGF5ZXJzID0gW107CisgICAgICAgIHZhciBhZnRlckxheWVycyA9IFtdOworICAgICAg
ICByZXN1bHQubGF5ZXJzLmZvckVhY2goZnVuY3Rpb24gKGxheWVyKSB7CisgICAgICAgICAgICBp
ZiAoIWxheWVyLmlzR2VuZXJhdGVkQ29udGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmIChsYXllci5wc2V1ZG9DbGFzcyA9PT0gImJlZm9yZSIpCisgICAgICAg
ICAgICAgICAgYmVmb3JlTGF5ZXJzLnB1c2gobGF5ZXIpOworICAgICAgICAgICAgaWYgKGxheWVy
LnBzZXVkb0NsYXNzID09PSAiYWZ0ZXIiKQorICAgICAgICAgICAgICAgIGFmdGVyTGF5ZXJzLnB1
c2gobGF5ZXIpOworICAgICAgICB9KTsKKworICAgICAgICBsb2dUZXN0TmFtZSgiQ2hlY2sgbGF5
ZXJzIik7CisKKyAgICAgICAgYXNzZXJ0KCJFeHBlY3RlZCBudW1iZXIgb2YgOjpiZWZvcmUgbGF5
ZXJzIiwgYmVmb3JlTGF5ZXJzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydCgiVGhlIHNvbGUg
OjpiZWZvcmUgbGF5ZXIgaXMgbm90IGNvbXBvc2l0ZWQiLCBiZWZvcmVMYXllcnNbMF0uaXNDb21w
b3NpdGVkLCB1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQoIlRoZSBzb2xlIDo6YmVmb3JlIGxh
eWVyIGhhcyBhIHBzZXVkbyBlbGVtZW50IiwgYmVmb3JlTGF5ZXJzWzBdLnBzZXVkb0VsZW1lbnRJ
ZCA+IDAsIHRydWUpOworCisgICAgICAgIGFzc2VydCgiRXhwZWN0ZWQgbnVtYmVyIG9mIDo6YWZ0
ZXIgbGF5ZXJzIiwgYWZ0ZXJMYXllcnMubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0KCJUaGUg
c29sZSA6OmFmdGVyIGxheWVyIGlzIGNvbXBvc2l0ZWQiLCBhZnRlckxheWVyc1swXS5pc0NvbXBv
c2l0ZWQsIHRydWUpOworICAgICAgICBhc3NlcnQoIlRoZSBzb2xlIDo6YWZ0ZXIgbGF5ZXIgaGFz
IGEgcHNldWRvIGVsZW1lbnQiLCBhZnRlckxheWVyc1swXS5wc2V1ZG9FbGVtZW50SWQgPiAwLCB0
cnVlKTsKKworICAgICAgICBhc3NlcnQoIkJvdGggZ2VuZXJhdGVkIGxheWVycyBoYXZlIHRoZSBz
YW1lIG5vZGUgaWQiLCBiZWZvcmVMYXllcnNbMF0ubm9kZUlkLCBhZnRlckxheWVyc1swXS5ub2Rl
SWQpOworICAgICAgICBhc3NlcnQoIlRoZSB0d28gZ2VuZXJhdGVkIGxheWVycyBoYXZlIGRpZmZl
cmVudCBwc2V1ZG8gZWxlbWVudCBpZHMiLCBiZWZvcmVMYXllcnNbMF0ucHNldWRvRWxlbWVudElk
ICE9PSBhZnRlckxheWVyc1swXS5wc2V1ZG9FbGVtZW50SWQsIHRydWUpOworCisgICAgICAgIGdl
bmVyYXRpbmdOb2RlSWQgPSBiZWZvcmVMYXllcnNbMF0ubm9kZUlkOworCisgICAgICAgIHN0ZXAo
eworICAgICAgICAgICAgbmFtZTogIlB1c2ggbm9kZSBmb3IgZ2VuZXJhdGVkIGNvbnRlbnQiLAor
ICAgICAgICAgICAgY29tbWFuZDogIkRPTS5wdXNoTm9kZUJ5SWRUb0Zyb250ZW5kIiwKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnM6IHsiYmFja2VuZE5vZGVJZCI6IGdlbmVyYXRpbmdOb2RlSWR9Cisg
ICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzZXRDaGlsZE5vZGVzIChtZXNzYWdl
T2JqZWN0KSB7CisgICAgICAgIHZhciBub2RlID0gbWVzc2FnZU9iamVjdC5wYXJhbXMubm9kZXNb
MF07CisgICAgICAgIAorICAgICAgICBsb2dUZXN0TmFtZSgiQ2hlY2sgZ2VuZXJhdGluZyBub2Rl
Iik7CisgICAgICAgIAorICAgICAgICBhc3NlcnQoIk5vZGUgaGFzIGV4cGVjdGVkIG5vZGUgaWQi
LCBOdW1iZXIobm9kZS5ub2RlSWQpLCBnZW5lcmF0aW5nTm9kZUlkKTsKKyAgICAgICAgYXNzZXJ0
KCJOb2RlIGhhcyBleHBlY3RlZCBsb2NhbE5hbWUiLCBub2RlLmxvY2FsTmFtZSwgImRpdiIpOwor
ICAgICAgICBhc3NlcnQoIk5vZGUgaGFzIGlkIiwgbm9kZS5hdHRyaWJ1dGVzWzBdLCAiaWQiKTsK
KyAgICAgICAgYXNzZXJ0KCJOb2RlIGhhcyBleHBlY3RlZCBpZCIsIG5vZGUuYXR0cmlidXRlc1sx
XSwgImdlbmVyYXRvciIpOworICAgICAgICAKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gc3RlcCh0ZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKHRlc3QuY2FsbGJhY2spCisgICAgICAgICAgICBsb2dUZXN0TmFtZSh0ZXN0Lm5hbWUp
OworICAgICAgICBydW5Db21tYW5kKHRlc3QpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBsb2dU
ZXN0TmFtZShuYW1lKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuPT09ICIg
KyBuYW1lICsgIiA9PT1cbiIpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBydW5Db21tYW5kKGNv
bW1hbmQpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKGNvbW1hbmQu
Y29tbWFuZCwgY29tbWFuZC5wYXJhbWV0ZXJzLCBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KSB7Cisg
ICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiZXJyb3IiKSkgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZU9iamVj
dC5lcnJvci5tZXNzYWdlICsgIiAoIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSArICIpIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb21tYW5k
Lm5hbWUpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1MiKTsKKworICAg
ICAgICAgICAgaWYgKGNvbW1hbmQuY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY29tbWFuZC5j
YWxsYmFjayhtZXNzYWdlT2JqZWN0LnJlc3VsdCk7CisgICAgICAgIH0pOworICAgIH07CisKKyAg
ICBmdW5jdGlvbiBhc3NlcnQobmFtZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICB7CisgICAgICAg
IGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlBBU1M6ICIgKyBuYW1lICsgIi4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIkZBSUw6ICIgKyBuYW1lICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsg
IiBidXQgZ290ICIgKyBhY3R1YWwpOworICAgIH07CisKK307CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKQoreworICAgIHJ1blRlc3QoKTsK
K30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAg
CisgICAgI2dlbmVyYXRvcjo6YmVmb3JlIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICBjb250ZW50OiAiIjsKKyAgICB9CisKKyAg
ICAjZ2VuZXJhdG9yOjphZnRlciB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVoo
MCk7CisgICAgICAgIGNvbnRlbnQ6ICIiOworICAgIH0KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorCisgICAgPGRpdiBpZD0iZ2VuZXJhdG9yIj48L2Rpdj4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXll
cnMtcHVzaC1ub2RlLWJ5LWlkLXRvLWZyb250ZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9sYXllcnMvbGF5ZXJzLXB1c2gtbm9kZS1ieS1pZC10by1mcm9u
dGVuZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMxZjhjYjFiMzhjZjRhMjhiNzE5NDZhODQ4
NGJkMTU0YmRkODgwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1w
cm90b2NvbC9sYXllcnMvbGF5ZXJzLXB1c2gtbm9kZS1ieS1pZC10by1mcm9udGVuZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyNiBAQAorCis9PT0gRW5hYmxlIHRoZSBMYXllclRyZWUgYWdlbnQg
PT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKworPT09IEdl
dCB0aGUgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCis9PT0gUHVzaCBub2RlIGZvciAjY29tcG9z
aXRlZCBlbGVtZW50ID09PQorCitQQVNTCitQQVNTOiBOb2RlIHdhcyBvYnRhaW5lZCBhcyBleHBl
Y3RlZC4KKworPT09IFB1c2ggbm9kZSBmb3IgI2NvbXBvc2l0ZWQgZWxlbWVudCBhZ2FpbiA9PT0K
KworRVJST1I6IE5vZGUgd2l0aCBnaXZlbiBpZCB3YXMgYWxyZWFkeSBwdXNoZWQKKworPT09IFB1
c2ggbm9kZSB3aXRoIG5lZ2F0aXZlIGlkID09PQorCitFUlJPUjogTm8gbm9kZSB3aXRoIGdpdmVu
IGlkIGZvdW5kCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9s
YXllcnMvbGF5ZXJzLXB1c2gtbm9kZS1ieS1pZC10by1mcm9udGVuZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtcHVzaC1ub2RlLWJ5LWlkLXRvLWZy
b250ZW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcwMWU5YTZmNzI5MmZkZmM2N2U2YjdmYWNkY2MyMTAx
MGJkMzFiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9sYXllcnMvbGF5ZXJzLXB1c2gtbm9kZS1ieS1pZC10by1mcm9udGVuZC5odG1sCkBAIC0wLDAg
KzEsMTQ4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3Rv
Y29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIHZhciBub2RlSWQ7CisgICAgdmFyIG5vZGVXYXNQ
dXNoZWQ7CisgCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRPTS5zZXRDaGlsZE5v
ZGVzIl0gPSBzZXRDaGlsZE5vZGVzOworCisgICAgZW5hYmxlTGF5ZXJUcmVlQWdlbnQoKTsKKyAg
ICAKKyAgICBmdW5jdGlvbiBlbmFibGVMYXllclRyZWVBZ2VudChyZXN1bHQpCisgICAgeworICAg
ICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJFbmFibGUgdGhlIExheWVyVHJlZSBhZ2Vu
dCIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIsCisgICAgICAgICAg
ICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXREb2N1bWVudAorICAg
ICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQoKQorICAgIHsKKyAg
ICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNvIHRoYXQgbGF0ZXIgb24g
d2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBzdGVwKHsKKyAgICAgICAgICAg
IG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0
RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxs
YmFjazogZ2V0TGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBn
ZXRMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBu
YW1lOiAiR2V0IHRoZSBsYXllciB0cmVlIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRy
ZWUubGF5ZXJzRm9yTm9kZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IHJl
c3VsdC5yb290Lm5vZGVJZCwgIm9ubHlDb21wb3NpdGVkTGF5ZXJzIjogdHJ1ZX0sCisgICAgICAg
ICAgICBjYWxsYmFjazogZ290TGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBnb3RMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgbm9kZUlkID0gcmVz
dWx0LmxheWVyc1sxXS5ub2RlSWQ7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1l
OiAiUHVzaCBub2RlIGZvciAjY29tcG9zaXRlZCBlbGVtZW50IiwKKyAgICAgICAgICAgIGNvbW1h
bmQ6ICJET00ucHVzaE5vZGVCeUlkVG9Gcm9udGVuZCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJz
OiB7ImJhY2tlbmROb2RlSWQiOiBub2RlSWR9LAorICAgICAgICAgICAgY2FsbGJhY2s6IHB1c2hl
ZE5vZGVPbmNlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzZXRDaGlsZE5v
ZGVzIChtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgIG5vZGVXYXNQdXNoZWQgPSB0cnVlOworICAg
IH07CisKKyAgICBmdW5jdGlvbiBwdXNoZWROb2RlT25jZShyZXN1bHQpCisgICAgeworICAgICAg
ICBhc3NlcnQoIk5vZGUgd2FzIG9idGFpbmVkIGFzIGV4cGVjdGVkIiwgbm9kZVdhc1B1c2hlZCwg
dHJ1ZSk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiUHVzaCBub2RlIGZv
ciAjY29tcG9zaXRlZCBlbGVtZW50IGFnYWluIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00u
cHVzaE5vZGVCeUlkVG9Gcm9udGVuZCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ImJhY2tl
bmROb2RlSWQiOiBub2RlSWR9LAorICAgICAgICAgICAgY2FsbGJhY2s6IHB1c2hlZE5vZGVUd2lj
ZQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gcHVzaGVkTm9kZVR3aWNlKHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIlB1c2ggbm9k
ZSB3aXRoIG5lZ2F0aXZlIGlkIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00ucHVzaE5vZGVC
eUlkVG9Gcm9udGVuZCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ImJhY2tlbmROb2RlSWQi
OiAtMX0sCisgICAgICAgICAgICBjYWxsYmFjazogcHVzaGVkVW5rbm93bk5vZGUKKyAgICAgICAg
fSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHB1c2hlZFVua25vd25Ob2RlKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfTsKKworICAg
IGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0LmNhbGxiYWNrKQor
ICAgICAgICAgICAgbG9nVGVzdE5hbWUodGVzdC5uYW1lKTsKKyAgICAgICAgcnVuQ29tbWFuZCh0
ZXN0KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbG9nVGVzdE5hbWUobmFtZSkKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgbmFtZSArICIgPT09XG4iKTsKKyAg
ICB9OworCisgICAgZnVuY3Rpb24gcnVuQ29tbWFuZChjb21tYW5kKQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZChjb21tYW5kLmNvbW1hbmQsIGNvbW1hbmQucGFyYW1l
dGVycywgZnVuY3Rpb24obWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2VP
YmplY3QuaGFzT3duUHJvcGVydHkoImVycm9yIikpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkVSUk9SOiAiICsgbWVzc2FnZU9iamVjdC5lcnJvci5tZXNzYWdlKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNvbW1hbmQubmFtZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUEFTUyIpOworCisgICAgICAgICAgICBpZiAoY29tbWFuZC5jYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBjb21tYW5kLmNhbGxiYWNrKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAg
ICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGFzc2VydChuYW1lLCBhY3R1YWwsIGV4
cGVjdGVkKQorICAgIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkID09PSBhY3R1YWwpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFTUzogIiArIG5hbWUgKyAiLiIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogIiArIG5hbWUgKyAiLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiIGJ1dCBnb3QgIiArIGFjdHVhbCk7CisgICAgfTsKKwor
fTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlv
bigpCit7CisgICAgcnVuVGVzdCgpOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisKKyAgICAjY29tcG9zaXRlZCB7CisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisK
KyAgICA8ZGl2IGlkPSJjb21wb3NpdGVkIj48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtcmVm
bGVjdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL2xheWVycy9sYXllcnMtcmVmbGVjdGVkLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2YjhhMDg1YTZhZmRmMWQ3NmIwYWQyNmVkOTRiNTU0MjlkZmYwYjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1yZWZs
ZWN0ZWQtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOSBAQAorCis9PT0gRW5hYmxl
IHRoZSBMYXllclRyZWUgYWdlbnQgPT09CisKK1BBU1MKKworPT09IEdldCB0aGUgRG9jdW1lbnQg
PT09CisKK1BBU1MKKworPT09IEdldCB0aGUgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCis9PT0g
Q2hlY2sgbGF5ZXJzID09PQorCitQQVNTOiBFeHBlY3RlZCBudW1iZXIgb2YgcmVmbGVjdGVkIGxh
eWVycy4KK1BBU1M6IEZpcnN0IHJlZmxlY3RlZCBsYXllciBpc24ndCBjb21wb3NpdGVkLgorUEFT
UzogRmlyc3QgcmVmbGVjdGVkIGxheWVyIGhhcyBhIG5vZGUuCitQQVNTOiBTZWNvbmQgcmVmbGVj
dGVkIGxheWVyIGlzIGNvbXBvc2l0ZWQuCitQQVNTOiBTZWNvbmQgcmVmbGVjdGVkIGxheWVyIGhh
cyBhIG5vZGUuCisKKz09PSBDaGVjayByZWZsZWN0ZWQgbm9kZSA9PT0KKworUEFTUzogTm9kZSBo
YXMgZXhwZWN0ZWQgbm9kZSBpZC4KK1BBU1M6IE5vZGUgaGFzIGV4cGVjdGVkIGxvY2FsTmFtZS4K
K1BBU1M6IE5vZGUgaGFzIGV4cGVjdGVkIG51bWJlciBvZiBhdHRyaWJ1dGVzLgorUEFTUzogTm9k
ZSBoYXMgQ1NTIGNsYXNzLgorUEFTUzogTm9kZSBoYXMgZXhwZWN0ZWQgQ1NTIGNsYXNzLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVycy1y
ZWZsZWN0ZWQtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xh
eWVycy9sYXllcnMtcmVmbGVjdGVkLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmE2ODQzNGYz
NzhlZGUzMzgwOGY4YTcxYzVjMzdmZmY2MWNlNDUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMtcmVmbGVjdGVkLWNvbnRlbnQu
aHRtbApAQCAtMCwwICsxLDE1MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jl
c291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICB2YXIgcmVmbGVjdGlvbk5v
ZGVJZDsKKyAKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiRE9NLnNldENoaWxkTm9k
ZXMiXSA9IHNldENoaWxkTm9kZXM7CisKKyAgICBlbmFibGVMYXllclRyZWVBZ2VudCgpOworICAg
IAorICAgIGZ1bmN0aW9uIGVuYWJsZUxheWVyVHJlZUFnZW50KHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50
IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZW5hYmxlIiwKKyAgICAgICAgICAg
IHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdldERvY3VtZW50CisgICAg
ICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXREb2N1bWVudCgpCisgICAgeworICAg
ICAgICAvLyBXZSBtdXN0IGZpcnN0IGdldCB0aGUgZG9jdW1lbnQgc28gdGhhdCBsYXRlciBvbiB3
ZSBtYXkgZ2V0IHNlbnNpYmxlIG5vZGVJZHMuCisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAg
bmFtZTogIkdldCB0aGUgRG9jdW1lbnQiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5nZXRE
b2N1bWVudCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxi
YWNrOiBnZXRMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdl
dExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5h
bWU6ICJHZXQgdGhlIGxheWVyIHRyZWUiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJl
ZS5sYXllcnNGb3JOb2RlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogcmVz
dWx0LnJvb3Qubm9kZUlkLCAib25seUNvbXBvc2l0ZWRMYXllcnMiOiBmYWxzZX0sCisgICAgICAg
ICAgICBjYWxsYmFjazogZ290TGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBnb3RMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIHJlZmxlY3Rl
ZExheWVycyA9IHJlc3VsdC5sYXllcnMuZmlsdGVyKGZ1bmN0aW9uKGxheWVyKSB7CisgICAgICAg
ICAgICByZXR1cm4gbGF5ZXIuaXNSZWZsZWN0aW9uOworICAgICAgICB9KTsKKworICAgICAgICBs
b2dUZXN0TmFtZSgiQ2hlY2sgbGF5ZXJzIik7CisKKyAgICAgICAgYXNzZXJ0KCJFeHBlY3RlZCBu
dW1iZXIgb2YgcmVmbGVjdGVkIGxheWVycyIsIHJlZmxlY3RlZExheWVycy5sZW5ndGgsIDIpOwor
CisgICAgICAgIGFzc2VydCgiRmlyc3QgcmVmbGVjdGVkIGxheWVyIGlzbid0IGNvbXBvc2l0ZWQi
LCByZWZsZWN0ZWRMYXllcnNbMF0uaXNDb21wb3NpdGVkLCB1bmRlZmluZWQpOworICAgICAgICBh
c3NlcnQoIkZpcnN0IHJlZmxlY3RlZCBsYXllciBoYXMgYSBub2RlIiwgcmVmbGVjdGVkTGF5ZXJz
WzBdLm5vZGVJZCA+IDAsIHRydWUpOworCisgICAgICAgIGFzc2VydCgiU2Vjb25kIHJlZmxlY3Rl
ZCBsYXllciBpcyBjb21wb3NpdGVkIiwgcmVmbGVjdGVkTGF5ZXJzWzFdLmlzQ29tcG9zaXRlZCwg
dHJ1ZSk7CisgICAgICAgIGFzc2VydCgiU2Vjb25kIHJlZmxlY3RlZCBsYXllciBoYXMgYSBub2Rl
IiwgcmVmbGVjdGVkTGF5ZXJzWzFdLm5vZGVJZCA+IDAsIHRydWUpOworCisgICAgICAgIHJlZmxl
Y3Rpb25Ob2RlSWQgPSByZWZsZWN0ZWRMYXllcnNbMF0ubm9kZUlkOworCisgICAgICAgIHN0ZXAo
eworICAgICAgICAgICAgbmFtZTogIlB1c2ggbm9kZSBmb3IgcmVmbGVjdGlvbiIsCisgICAgICAg
ICAgICBjb21tYW5kOiAiRE9NLnB1c2hOb2RlQnlJZFRvRnJvbnRlbmQiLAorICAgICAgICAgICAg
cGFyYW1ldGVyczogeyJiYWNrZW5kTm9kZUlkIjogcmVmbGVjdGlvbk5vZGVJZH0KKyAgICAgICAg
fSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHNldENoaWxkTm9kZXMgKG1lc3NhZ2VPYmplY3Qp
IHsKKyAgICAgICAgdmFyIG5vZGUgPSBtZXNzYWdlT2JqZWN0LnBhcmFtcy5ub2Rlc1swXTsKKyAg
ICAgICAgCisgICAgICAgIGxvZ1Rlc3ROYW1lKCJDaGVjayByZWZsZWN0ZWQgbm9kZSIpOworCisg
ICAgICAgIGFzc2VydCgiTm9kZSBoYXMgZXhwZWN0ZWQgbm9kZSBpZCIsIE51bWJlcihub2RlLm5v
ZGVJZCksIHJlZmxlY3Rpb25Ob2RlSWQpOworICAgICAgICBhc3NlcnQoIk5vZGUgaGFzIGV4cGVj
dGVkIGxvY2FsTmFtZSIsIG5vZGUubG9jYWxOYW1lLCAiZGl2Iik7CisgICAgICAgIGFzc2VydCgi
Tm9kZSBoYXMgZXhwZWN0ZWQgbnVtYmVyIG9mIGF0dHJpYnV0ZXMiLCBub2RlLmF0dHJpYnV0ZXMu
bGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0KCJOb2RlIGhhcyBDU1MgY2xhc3MiLCBub2RlLmF0
dHJpYnV0ZXNbMF0sICJjbGFzcyIpOworICAgICAgICBhc3NlcnQoIk5vZGUgaGFzIGV4cGVjdGVk
IENTUyBjbGFzcyIsIG5vZGUuYXR0cmlidXRlc1sxXSwgInJlZmxlY3RlZCIpOworICAgICAgICAK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9OworCisgICAgZnVu
Y3Rpb24gc3RlcCh0ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHRlc3QuY2FsbGJhY2spCisgICAg
ICAgICAgICBsb2dUZXN0TmFtZSh0ZXN0Lm5hbWUpOworICAgICAgICBydW5Db21tYW5kKHRlc3Qp
OworICAgIH07CisKKyAgICBmdW5jdGlvbiBsb2dUZXN0TmFtZShuYW1lKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuPT09ICIgKyBuYW1lICsgIiA9PT1cbiIpOworICAgIH07
CisKKyAgICBmdW5jdGlvbiBydW5Db21tYW5kKGNvbW1hbmQpCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LnNlbmRDb21tYW5kKGNvbW1hbmQuY29tbWFuZCwgY29tbWFuZC5wYXJhbWV0ZXJz
LCBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVj
dC5oYXNPd25Qcm9wZXJ0eSgiZXJyb3IiKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZU9iamVjdC5lcnJvci5tZXNzYWdlICsgIiAoIiArIG1l
c3NhZ2VPYmplY3QuZXJyb3IuY29kZSArICIpIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChjb21tYW5kLm5hbWUpCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlBBU1MiKTsKKworICAgICAgICAgICAgaWYgKGNvbW1hbmQuY2FsbGJh
Y2spCisgICAgICAgICAgICAgICAgY29tbWFuZC5jYWxsYmFjayhtZXNzYWdlT2JqZWN0LnJlc3Vs
dCk7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBhc3NlcnQobmFtZSwgYWN0
dWFsLCBleHBlY3RlZCkKKyAgICB7CisgICAgICAgIGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKQor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6ICIgKyBuYW1lICsgIi4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBuYW1l
ICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiBidXQgZ290ICIgKyBhY3R1YWwpOworICAg
IH07CisKK307CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwg
ZnVuY3Rpb24oKQoreworICAgIHJ1blRlc3QoKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisgICAgLnJlZmxlY3RlZCB7CisgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgLXdlYmtpdC1i
b3gtcmVmbGVjdDogYmVsb3c7CisgICAgfQorCisgICAgLmNvbXBvc2l0ZWQgeworICAgICAgICAt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICB9CisKKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKworICAgIDxkaXYgY2xhc3M9InJlZmxlY3RlZCI+PC9kaXY+CisgICAgPGRp
diBjbGFzcz0icmVmbGVjdGVkIGNvbXBvc2l0ZWQiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXJzL2xheWVy
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9sYXllcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41N2EwMTcwNGZhODYwZjQ5YTJlNWM5NGE0ZDIxODA4MjNmODU5YWJjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVycy9s
YXllcnMuaHRtbApAQCAtMCwwICsxLDIzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gYWRkQ29tcG9zaXRlZExheWVyKCkKK3sKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1l
bnQuY2xhc3NOYW1lID0gImNvbXBvc2l0ZWQiOworICAgIGVsZW1lbnQuaWQgPSAibGFzdC1lbGVt
ZW50IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworfTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGRvY3VtZW50Tm9kZTsKKyAgICB2YXIgaW5pdGlhbExh
eWVyczsKKyAgICB2YXIgZXZlbnRzQ291bnQgPSAwOworCisgICAgSW5zcGVjdG9yVGVzdC5ldmVu
dEhhbmRsZXJbIkxheWVyVHJlZS5sYXllclRyZWVEaWRDaGFuZ2UiXSA9IGZ1bmN0aW9uIChtZXNz
YWdlT2JqZWN0KSB7CisgICAgICAgIGV2ZW50c0NvdW50Kys7CisgICAgfTsKKworICAgIGVuYWJs
ZUxheWVyVHJlZUFnZW50KCk7CisKKyAgICBmdW5jdGlvbiBlbmFibGVMYXllclRyZWVBZ2VudChy
ZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJFbmFibGUg
dGhlIExheWVyVHJlZSBhZ2VudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVu
YWJsZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNr
OiBnZXREb2N1bWVudAorICAgICAgICB9KTsKKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIGdl
dERvY3VtZW50KHJlc3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFt
ZTogIkdldCB0aGUgRG9jdW1lbnQiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5nZXREb2N1
bWVudCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNr
OiBnZXRJbml0aWFsTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisgICAgCisgICAgZnVu
Y3Rpb24gZ2V0SW5pdGlhbExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBkb2N1bWVu
dE5vZGUgPSByZXN1bHQucm9vdDsKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAi
R2V0IHRoZSBpbml0aWFsIGxheWVyIHRyZWUiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVy
VHJlZS5sYXllcnNGb3JOb2RlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjog
ZG9jdW1lbnROb2RlLm5vZGVJZCwgIm9ubHlDb21wb3NpdGVkTGF5ZXJzIjogZmFsc2V9LAorICAg
ICAgICAgICAgY2FsbGJhY2s6IGdvdEluaXRpYWxMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIGdvdEluaXRpYWxMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAg
ICAgICAgaW5pdGlhbExheWVycyA9IHJlc3VsdC5sYXllcnM7CisKKyAgICAgICAgZHVtcExheWVy
cyhpbml0aWFsTGF5ZXJzKTsKKworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJN
ZXNzYWdlIHRoZSBwYWdlIHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVyIiwKKyAgICAgICAg
ICAgIGNvbW1hbmQ6ICJSdW50aW1lLmV2YWx1YXRlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6
IHsiZXhwcmVzc2lvbiI6ICJhZGRDb21wb3NpdGVkTGF5ZXIoKSJ9LAorICAgICAgICAgICAgY2Fs
bGJhY2s6IGdldE1vZGlmaWVkTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBnZXRNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBzdGVw
KHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUiLAorICAg
ICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5sYXllcnNGb3JOb2RlIiwKKyAgICAgICAgICAg
IHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZG9jdW1lbnROb2RlLm5vZGVJZCwgIm9ubHlDb21wb3Np
dGVkTGF5ZXJzIjogZmFsc2V9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE1vZGlmaWVkTGF5
ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICB2YXIgbGF5ZXJDb3VudCA9IDA7CisK
KyAgICBmdW5jdGlvbiBnb3RNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAg
ICBkdW1wTGF5ZXJzKHJlc3VsdC5sYXllcnMpOworCisgICAgICAgIHZhciBtdXRhdGlvbnMgPSBs
YXllck11dGF0aW9ucyhpbml0aWFsTGF5ZXJzLCByZXN1bHQubGF5ZXJzKTsKKyAgICAgICAgdmFy
IG5ld0xheWVyID0gbXV0YXRpb25zLmFkZGl0aW9uc1swXTsKKworICAgICAgICBzdGVwKHsKKyAg
ICAgICAgICAgIG5hbWU6ICJHZXQgYXR0cmlidXRlcyBmb3IgdGhlIG5ld2x5IGluc2VydGVkIG5v
ZGUiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5nZXRBdHRyaWJ1dGVzIiwKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogbmV3TGF5ZXIubm9kZUlkfSwKKyAgICAgICAgICAg
IGNhbGxiYWNrOiBnb3ROb2RlQXR0cmlidXRlcworICAgICAgICB9KTsKKyAgICB9OworCisgICAg
ZnVuY3Rpb24gZ290Tm9kZUF0dHJpYnV0ZXMocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzRGljdGlvbmFyeUZyb21BcnJheShyZXN1bHQuYXR0cmlidXRl
cyk7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmlkICE9PSAibGFzdC1lbGVtZW50IikKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiBEaWQgbm90IG9idGFpbiB0aGUgZXhwZWN0
ZWQgZWxlbWVudCBmb3IgdGhlIGxhc3QgaW5zZXJ0ZWQgbGF5ZXIuIik7CisKKyAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICB7Cisg
ICAgICAgIGlmICghZXZlbnRzQ291bnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
RkFJTDogRGlkIG5vdCByZWNlaXZlIGxheWVyVHJlZURpZENoYW5nZSBldmVudHMuIik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSBUZXN0IGNvbXBs
ZXRlLCBhbGwgZXhwZWN0ZWQgY29uZGl0aW9ucyBtZXQgPT09Iik7CisKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbGF5ZXJNdXRh
dGlvbnMob2xkTGF5ZXJzLCBuZXdMYXllcnMpCisgICAgeworICAgICAgICBmdW5jdGlvbiBsYXll
cklkTWFwKGxheWVyKSB7CisgICAgICAgICAgICByZXR1cm4gbGF5ZXIubGF5ZXJJZDsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBvbGRMYXllcklkcyA9IG9sZExheWVycy5tYXAobGF5ZXJJZE1h
cCk7CisgICAgICAgIHZhciBuZXdMYXllcklkcyA9IG5ld0xheWVycy5tYXAobGF5ZXJJZE1hcCk7
CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGFkZGl0aW9uczogbmV3TGF5ZXJzLmZp
bHRlcihmdW5jdGlvbiAobGF5ZXIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG9sZExheWVy
SWRzLmluZGV4T2YobGF5ZXIubGF5ZXJJZCkgPT09IC0xKTsKKyAgICAgICAgICAgIH0pLAorICAg
ICAgICAgICAgcmVtb3ZhbHM6IG9sZExheWVycy5maWx0ZXIoZnVuY3Rpb24gKGxheWVyKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIChuZXdMYXllcklkcy5pbmRleE9mKGxheWVyLmxheWVySWQp
ID09PSAtMSk7CisgICAgICAgICAgICB9KQorICAgICAgICB9OworICAgIH07CisKKyAgICBmdW5j
dGlvbiBhdHRyaWJ1dGVzRGljdGlvbmFyeUZyb21BcnJheShhdHRyaWJ1dGVzKQorICAgIHsKKyAg
ICAgICAgdmFyIGRpY3Rpb25hcnkgPSB7fQorICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQg
PSBhdHRyaWJ1dGVzLmxlbmd0aDsgaSA8IGNvdW50OyBpICs9IDIpIHsKKyAgICAgICAgICAgIGRp
Y3Rpb25hcnlbYXR0cmlidXRlc1tpXV0gPSBhdHRyaWJ1dGVzW2kgKyAxXTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZGljdGlvbmFyeTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZHVtcExh
eWVycyhsYXllcnMpCisgICAgeworICAgICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVl
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2V5ID09PSAibGF5ZXJJZCIgfHwga2V5ID09
PSAibm9kZUlkIiB8fCBrZXkgPT09ICJtZW1vcnkiIHx8IGtleSA9PT0gInBhaW50Q291bnQiKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YodmFsdWUpOworCisgICAgICAgICAgICAvLyBz
b21lIHZhbHVlcyBkaWZmZXIgYmFzZWQgb24gcG9ydCwgYnV0IHRoZSBvbmVzIHdlIG1vc3QKKyAg
ICAgICAgICAgIC8vIGNhcmUgYWJvdXQgd2lsbCBhbHdheXMgYmUgbGVzcyBvciBlcXVhbCAxMDAu
CisgICAgICAgICAgICBpZiAoKGtleSA9PT0gIndpZHRoIiB8fCBrZXkgPT09ICJoZWlnaHQiKSAm
JiB2YWx1ZSA+IDEwMCkgCisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZih2YWx1ZSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfTsKKyAgICAg
ICAgCisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbiIgKyBKU09OLnN0cmluZ2lmeShsYXll
cnMsIHJlcGxhY2VyLCAiICAgICIpKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gc3RlcCh0ZXN0
KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuPT09ICIgKyB0ZXN0Lm5hbWUg
KyAiID09PVxuIikKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCh0ZXN0LmNvbW1h
bmQsIHRlc3QucGFyYW1ldGVycywgZnVuY3Rpb24obWVzc2FnZU9iamVjdCkgeworICAgICAgICAg
ICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3duUHJvcGVydHkoImVycm9yIikpIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogIiArIG1lc3NhZ2VPYmplY3QuZXJyb3Iu
bWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLmNvZGUgKyAiKSIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
UEFTUyIpOworICAgICAgICAgICAgdGVzdC5jYWxsYmFjayhtZXNzYWdlT2JqZWN0LnJlc3VsdCk7
CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBhc3NlcnQobmFtZSwgYWN0dWFs
LCBleHBlY3RlZCkKKyAgICB7CisgICAgICAgIGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6ICIgKyBuYW1lICsgIi4iKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBuYW1lICsg
Ii4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiBidXQgZ290ICIgKyBhY3R1YWwpOworICAgIH07
CisKK307CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVu
Y3Rpb24gKCkgeworICAgIHJ1blRlc3QoKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgCisgICAgZGl2IHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICB0b3A6IDA7CisgICAgICAgIGxlZnQ6IDA7CisgICAgfQorICAg
ICAgCisgICAgLnJlZ3VsYXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgIH0KKworICAg
IC5jb21wb3NpdGVkIHsKKyAgICAgICAgdG9wOiAyNXB4OworICAgICAgICBsZWZ0OiAyNXB4Owor
ICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRl
WigwKTsKKyAgICB9CisgICAgICAKKyAgICAub2Zmc2V0IHsKKyAgICAgICAgbGVmdDogMjAwcHg7
CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgIH0KKworPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCisgICAgPGRpdiBjbGFzcz0icmVndWxhciI+PC9kaXY+
CisKKyAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29t
cG9zaXRlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIG9m
ZnNldCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorICAgIDwvZGl2
PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="210831"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>