<?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>164266</bug_id>
          
          <creation_ts>2016-10-31 22:16:42 -0700</creation_ts>
          <short_desc>Web Inspector: Add the support for custom elements</short_desc>
          <delta_ts>2016-11-01 01:15:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>Safari Technology Preview</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246819</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-31 22:16:42 -0700</bug_when>
    <thetext>Show the custom element state in the DOM node details pane and add the context menu item to jump to the custom element definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246820</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-31 22:17:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/29038883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246828</commentid>
    <comment_count>2</comment_count>
      <attachid>293530</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-31 22:44:08 -0700</bug_when>
    <thetext>Created attachment 293530
Adds the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246830</commentid>
    <comment_count>3</comment_count>
      <attachid>293530</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-10-31 23:10:11 -0700</bug_when>
    <thetext>Comment on attachment 293530
Adds the support

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

r- because it lacks a test for the protocol change. Comments below will guide you through an example for that, but otherwise this is great!

&gt; Source/WebCore/ChangeLog:9
&gt; +        Set &quot;customElementState&quot; property on each DOMNode object when building an protocol object for node.

Typo: &quot;an protocol&quot; =&gt; &quot;a protocol&quot;
Typo: &quot;for node&quot; =&gt; &quot;for the node&quot;.

&gt; Source/JavaScriptCore/inspector/protocol/DOM.json:61
&gt;                  { &quot;name&quot;: &quot;shadowRootType&quot;, &quot;$ref&quot;: &quot;ShadowRootType&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Shadow root type.&quot; },
&gt; +                { &quot;name&quot;: &quot;customElementState&quot;, &quot;$ref&quot;: &quot;CustomElementState&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Custom element state.&quot; },

We can and should test this. Look at LayoutTests/inspector/dom/shadowRootType.html for an example. It should end up really similar to that. Let me know if you have any questions!

&gt; Source/JavaScriptCore/inspector/protocol/DOM.json:559
&gt; +                { &quot;name&quot;: &quot;elementId&quot;, &quot;$ref&quot;: &quot;NodeId&quot;, &quot;description&quot;: &quot;Element id.&quot; },
&gt; +                { &quot;name&quot;: &quot;customElementState&quot;, &quot;$ref&quot;: &quot;CustomElementState&quot;, &quot;description&quot;: &quot;Custom element state.&quot; }

Style: &quot;elementId&quot; =&gt; &quot;nodeId&quot;. You can keep the description to say this must be an element, but otherwise have it match the type.
You can drop the descriptions if you want, because here they just match the types which have the same description.

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNode.js:87
&gt; +            this._customElementState = payload.customElementState || WebInspector.DOMNode.CustomElementState.BuiltIn;

Nit: This should be &quot;Builtin&quot; not &quot;BuiltIn&quot;

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNode.js:273
&gt; +        return this._customElementState == WebInspector.DOMNode.CustomElementState.Custom;

Style: ===

&gt; Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js:88
&gt; +    customElementStateChanged(elementId, customElementState)
&gt; +    {
&gt; +        WebInspector.domTreeManager._customElementStateChanged(elementId, customElementState);
&gt; +    }

Style: elementId =&gt; nodeId (throughout the frontend). Although element is clearer, we use nodeId more canonically.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:32
&gt; +        WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.CustomElementStateChanged, this._customElementStateChanged, this);

Style: Put this one at the bottom of this list (after CharacterDataModified). It more closely matches the order the Events are defined in DOMTreeManager.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:759
&gt; +                WebInspector.RemoteObject.resolveNode(node, &quot;&quot;, (remoteObject) =&gt; {
&gt; +                    remoteObject.getProperty(&quot;constructor&quot;, (error, result, wasThrown) =&gt; {
&gt; +                        if (error) {
&gt; +                            console.error(error);
&gt; +                            return;
&gt; +                        }
&gt; +
&gt; +                        DebuggerAgent.getFunctionDetails(result.objectId, (error, response) =&gt; {
&gt; +                            if (error) {
&gt; +                                console.error(error);
&gt; +                                return;
&gt; +                            }

There should be an if (!remoteObject) return at the top level. Since removeNode can fail if the node was deleted on the page between when you right clicked it and did &quot;Jump to Definition&quot;.

We should be calling remoteObject.release() after the getProperty call. See other users of WebInspector.RemoteObject.resolveNode. This is necessary to remove the inspector&apos;s strong reference to the node that we created here.
We should be calling result.release() after getFunctionDetails as well to remove the inspector strong reference to the function that we created here.

We should remove the console.errors now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246832</commentid>
    <comment_count>4</comment_count>
      <attachid>293532</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-31 23:48:50 -0700</bug_when>
    <thetext>Created attachment 293532
Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246835</commentid>
    <comment_count>5</comment_count>
      <attachid>293532</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-11-01 00:13:59 -0700</bug_when>
    <thetext>Comment on attachment 293532
Addressed review comments

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

Awesome! r=me with some cleanup suggestions for the test

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1404
&gt; +        value-&gt;setCustomElementState(customElementState(element));

We can avoid setting this in the default case (Builtin) to slightly reduce the JSON message size for nodes in the common case:

    Inspector::Protocol::DOM::CustomElementState customElementState = customElementState(element);
    if (customElementState != Inspector::Protocol::DOM::CustomElementState::Builtin)
        value-&gt;setCustomElementState(customElementState);

The frontend defaults to Builtin when customElementState is missing.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:746
&gt; +

Style: Remove this empty line now that you&apos;ve nicely moved this to a function!

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:1504
&gt; +                if (error || result.type != &quot;function&quot;)

Style: !==

&gt; LayoutTests/inspector/dom/customElementState.html:10
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;DOMNode.shadowRootType&quot;);

Typo: DOMNode.customElementState

&gt; LayoutTests/inspector/dom/customElementState.html:14
&gt; +        test: (resolve, reject) =&gt; {

Style: &quot;test: (resolve, reject) =&gt;&quot; =&gt; &quot;test(resolve, reject) {&quot; for all of these.

&gt; LayoutTests/inspector/dom/customElementState.html:17
&gt; +                InspectorTest.expectThat(node.customElementState(), &quot;builtin&quot;);

This is not testing what you expect. This is testing that node.customElementState() is truthy, and producing the message &quot;builtin&quot;. We should use the newer InspectorTest.expectEqual and provide a message.

    InspectorTest.expectEqual(node.customElementState(), WebInspector.DOMNode.CustomElementState.Builtin, &quot;#builtin should be CustomElementState.Builtin.&quot;);
    InspectorTest.expectEqual(node.customElementState(), WebInspector.DOMNode.CustomElementState.Custom, &quot;constructed-element should be CustomElementState.Custom.&quot;)
    ...

The last argument (the message) should be a complete sentence of the form &quot;Foo should be bar.&quot; so that it reads nicely in the expected results.

&gt; LayoutTests/inspector/dom/customElementState.html:73
&gt; +customElements.define(&apos;constructed-element&apos;, class extends HTMLElement { });

Style: Double quote strings when possible. (Normally LayoutTests is a style wild-west, but we try to be pretty consistent in LayoutTests/inspector).

Lets move this inside the &lt;body&gt; but before &lt;div style=&quot;display:none&quot;&gt; since it is easy to miss here.

&gt; LayoutTests/inspector/dom/customElementState.html:78
&gt; +&lt;p&gt;Test for DOMNode.shadowRootType.&lt;/p&gt;

Typo: DOMNode.customElementState

&gt; LayoutTests/inspector/dom/customElementState.html:92
&gt; +window.onerror = function (message) {
&gt; +    if (message == &apos;failedElementError&apos;)
&gt; +        return true;
&gt; +    return false;
&gt; +}

I think this can just be a TestPage.allowUncaught something or other.

&gt; LayoutTests/inspector/dom/customElementState.html:94
&gt; +customElements.define(&apos;upgraded-element&apos;, class extends HTMLElement { });
&gt; +customElements.define(&apos;failed-element&apos;, class extends HTMLElement { constructor() { super(); throw &apos;failedElementError&apos;; } });

Style: Double quote strings when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246839</commentid>
    <comment_count>6</comment_count>
      <attachid>293535</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-01 00:38:58 -0700</bug_when>
    <thetext>Created attachment 293535
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246851</commentid>
    <comment_count>7</comment_count>
      <attachid>293535</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 01:15:13 -0700</bug_when>
    <thetext>Comment on attachment 293535
Patch for landing

Clearing flags on attachment: 293535

Committed r208218: &lt;http://trac.webkit.org/changeset/208218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246852</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 01:15:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293530</attachid>
            <date>2016-10-31 22:44:08 -0700</date>
            <delta_ts>2016-10-31 23:48:44 -0700</delta_ts>
            <desc>Adds the support</desc>
            <filename>bug-164266-20161031224011.patch</filename>
            <type>text/plain</type>
            <size>29281</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OThkNzEwOGRmNTc0NDdlOTUxZTIwMjhlNmZkZDA5MjYwMGZmMDVlLi45ZTRhYjMyNDA2MGVlZDc2
Yzg4ZjRjODRhZWE3ODIyZGI2ZThkM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMC0zMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjY2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAzODg4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjdXN0b21FbGVtZW50U3RhdGUg
b2YgdHlwZSBDdXN0b21FbGVtZW50U3RhdGUgdG8gcmVmbGVjdCB0aGUgY3VzdG9tIGVsZW1lbnQg
c3RhdGUgb24gZWFjaCBET00gbm9kZQorICAgICAgICBhbG9uZyB3aXRoIGN1c3RvbUVsZW1lbnRT
dGF0ZUNoYW5nZWQgd2hpY2ggZmlyZXMgd2hlbiB0aGUgY3VzdG9tIGVsZW1lbnQgc3RhdGUgY2hh
bmdlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoKKwogMjAxNi0x
MC0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkICR2bS5j
b2RlQmxvY2tGb3IoKSBkZWJ1Z2dpbmcgdXRpbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNmViNzM3NDJj
Y2ZiNWI3MDgyZmRjMzIzNjM0MTE3YWQwYTRhZDcyLi5lODU2ZjAyMjUwNzE0ZDNiYzg1MjBlZTkz
MmMzZTY5Y2MxNjJjMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTYtMTAtMzEg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIHRoZSBzdXBwb3J0IGZvciBjdXN0b20gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI2NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkwMzg4ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2V0ICJjdXN0b21FbGVtZW50U3RhdGUiIHByb3BlcnR5IG9uIGVhY2ggRE9NTm9k
ZSBvYmplY3Qgd2hlbiBidWlsZGluZyBhbiBwcm90b2NvbCBvYmplY3QgZm9yIG5vZGUuCisgICAg
ICAgIEFsc28gYWRkZWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21F
bGVtZW50U3RhdGUgdG8gdHJhY2sgdGhlIGNoYW5nZXMgdG8gY3VzdG9tIGVsZW1lbnQgc3RhdGVz
LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6IEludm9rZSBkaWRDaGFuZ2VDdXN0b21FbGVt
ZW50U3RhdGUgdG8gdXBkYXRlIHRoZSBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldElzRmFpbGVkQ3VzdG9tRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZSk6IERpdHRvLgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXN0
b21FbGVtZW50U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUpOiBTZXQgdGhlIGN1c3RvbSBlbGVtZW50IHN0YXRlLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENoYW5nZUN1c3RvbUVsZW1l
bnRTdGF0ZSk6IEludm9rZSBjdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGVJbXBsKTogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3Rh
dGUpOiBBZGRlZC4KKwogMjAxNi0xMC0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUo
KSB3b3JrIG9uIE1hYyBXSzEgYW5kIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNjkw
ZWUxM2E1YjlmNTU0NGE5MTMzOWVlMjFmYjc1ODc1Njk4MTI2MC4uNzMwNjJlMmU0MzFlZDU2YmY5
OWQyZTc1YjRjOGU2YWRlZTlhMDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDkgQEAKKzIwMTYtMTAtMzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHRoZSBzdXBwb3J0IGZvciBjdXN0b20gZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI2
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkwMzg4ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hvdyB0aGUgY3VzdG9tIGVsZW1lbnQgc3Rh
dGUgaW4gRE9NIG5vZGUncyBkZXRhaWxzIHBhbmU6CisgICAgICAgICAtICJFbGVtZW50IiBmb3Ig
YWxsIGJ1aWx0aW4gZWxlbWVudHMuCisgICAgICAgICAtICJFbGVtZW50IChDdXN0b20pIiBmb3Ig
YW55IHVwZ3JhZGVkIGN1c3RvbSBlbGVtZW50cy4KKyAgICAgICAgIC0gIkVsZW1lbnQgKFdhaXRp
bmcgdG8gYmUgdXBncmFkZWQpIiBmb3IgYW55IGVsZW1lbnQgd2FpdGluZyB0byBiZSB1cGdyYWRl
ZC4KKyAgICAgICAgIC0gIkVsZW1lbnQgKEZhaWxlZCB0byB1cGdyYWRlKSIgZm9yIGFueSBjdXN0
b20gZWxlbWVudCB0aGF0IGZhaWxlZCBkdXJpbmcgY29uc3RydWN0aW9uIG9yIGFuIHVwZ3JhZGUu
CisKKyAgICAgICAgQW5kIGFkZCAiSnVtcCB0byBEZWZpbml0aW9uIiB0byB0aGUgY29udGV4dCBt
ZW51IG9mIGFuIG5vZGUgdG8gZmluZCB0aGUgY3VzdG9tIGVsZW1lbnQncyBkZWZpbml0aW9uLgor
CisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOiBB
ZGRlZCBsb2NhbGl6ZWQgc3RyaW5ncy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RPTVRyZWVNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLnByb3RvdHlwZS5fY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCk6IEFkZGVkLiBVcGRhdGUg
dGhlIHN0YXRlIGFuZCBmaXJlCisgICAgICAgIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5F
dmVudC5DdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkIHRvIHVwZGF0ZSB0aGUgbm9kZSdzIGRldGFp
bHMgcGFuZS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUpOiBTZXQgdGhlIGN1c3RvbSBlbGVtZW50IHN0YXRl
IG9yIGRlZmF1bHQgdG8gImJ1aWx0aW4iLiBVc2UgbnVsbCB3aGVuIHRoZSBub2RlCisgICAgICAg
IGlzIG5vdCBhbiBlbGVtZW50LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90
eXBlLmlzQ3VzdG9tRWxlbWVudCk6IEFkZGVkLiBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhIHN1
Y2Nlc3NmdWxseQorICAgICAgICBjb25zdHJ1Y3RlZCBvciB1cGdyYWRlZCBjdXN0b20gZWxlbWVu
dC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5jdXN0b21FbGVtZW50
U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLkN1c3RvbUVsZW1l
bnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2Jz
ZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIucHJvdG90eXBlLmN1
c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1Byb3RvY29sL1JlbW90ZU9iamVjdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QucHJvdG90eXBlLmdldFByb3BlcnR5KTogQWRkZWQuIFJldHJpZXZlcyB0aGUgcHJvcGVy
dHkgb2YgYSBnaXZlbiBuYW1lIGZyb20KKyAgICAgICAgdGhlIHJlbW90ZSBiYWNrZW5kLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwpOiBDYWxs
IF9jdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkIHdoZW4gdGhlIGN1c3RvbSBlbGVtZW50CisgICAg
ICAgIHN0YXRlIGNoYW5nZXMgYnkgbGlzdGVuaW5nIHRvIFdlYkluc3BlY3Rvci5ET01UcmVlTWFu
YWdlci5FdmVudC5DdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVm
cmVzaElkZW50aXR5KTogRXh0cmFjdGVkIGZyb20gbGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY3VzdG9tRWxlbWVudFN0
YXRlQ2hhbmdlZCk6IEFkZGVkLiAKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWls
c1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX25vZGVUeXBlRGlzcGxheU5hbWUpOiBJbmNsdWRlIHRo
ZSBjdXN0b20gZWxlbWVudAorICAgICAgICBzdGF0ZSB3aGVuIGl0J3Mgbm90IGEgYnVpbHRpbiBl
bGVtZW50IChfY3VzdG9tRWxlbWVudFN0YXRlIHJldHVybnMgbnVsbCBpbiB0aGF0IGNhc2UpLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fY3VzdG9tRWxlbWVudFN0YXRlKTogR2V0IHRoZSBsb2NhbGl6ZWQgc3RyaW5nIGZvcgorICAg
ICAgICBlYWNoIGN1c3RvbSBlbGVtZW50IHN0YXRlLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudSk6IEFkZCAiSnVtcCB0byBE
ZWZpbml0aW9uIiBpdGVtIGluIHRoZQorICAgICAgICBjb250ZXh0IG1lbnUgb2YgYW4gZWxlbWVu
dCB3aGVuIGl0J3MgYSBzdWNjZXNzZnVsbHkgY29uc3RydWN0ZWQgb3IgdXBncmFkZWQgY3VzdG9t
IGVsZW1lbnQuCisKIDIwMTYtMTAtMzEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaGFkb3cgRE9NIHNjb3BlZCBzdHlsZXMg
YXJlIG1pc3NpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0RPTS5qc29uCmluZGV4IGRkMmEzMDkwN2Y3MGIxNTE5YWVkODcyZDZlYmI1MzY1MGRmMGFl
YmEuLjJkOTgxZjcxNmJmNDFjZTc5MjRmNGZmMzJkODBiYmJjNGE4YjY2ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMjYs
NiArMjYsMTIgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTaGFkb3cgcm9vdCB0eXBl
LiIKICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkN1c3RvbUVsZW1l
bnRTdGF0ZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImVu
dW0iOiBbImJ1aWx0aW4iLCAiY3VzdG9tIiwgIndhaXRpbmciLCAiZmFpbGVkIl0sCisgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiQ3VzdG9tIGVsZW1lbnQgc3RhdGUuIgorICAgICAgICB9LAor
ICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiTGl2ZVJlZ2lvblJlbGV2YW50IiwKICAgICAg
ICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZW51bSI6IFsiYWRkaXRpb25z
IiwgInJlbW92YWxzIiwgInRleHQiXSwKQEAgLTUyLDYgKzU4LDcgQEAKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInZhbHVlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIjxjb2RlPkF0dHI8L2NvZGU+J3MgdmFsdWUuIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicHNldWRvVHlwZSIsICIkcmVmIjogIlBzZXVkb1R5cGUiLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUHNldWRvIGVsZW1lbnQgdHlwZSBmb3IgdGhp
cyBub2RlLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYWRvd1Jvb3RUeXBlIiwg
IiRyZWYiOiAiU2hhZG93Um9vdFR5cGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiU2hhZG93IHJvb3QgdHlwZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjdXN0
b21FbGVtZW50U3RhdGUiLCAiJHJlZiI6ICJDdXN0b21FbGVtZW50U3RhdGUiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ3VzdG9tIGVsZW1lbnQgc3RhdGUuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBJRCBmb3IgZnJhbWUgb3du
ZXIgZWxlbWVudHMuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudERvY3Vt
ZW50IiwgIiRyZWYiOiAiTm9kZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJD
b250ZW50IGRvY3VtZW50IGZvciBmcmFtZSBvd25lciBlbGVtZW50cy4iIH0sCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzaGFkb3dSb290cyIsICJ0eXBlIjogImFycmF5IiwgIm9wdGlvbmFs
IjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJOb2RlIiB9LCAiZGVzY3JpcHRpb24iOiAiU2hh
ZG93IHJvb3QgbGlzdCBmb3IgZ2l2ZW4gZWxlbWVudCBob3N0LiIgfSwKQEAgLTU0Niw2ICs1NTMs
MTQgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgd2hlbiBzaGFkb3cgcm9v
dCBpcyBwb3BwZWQgZnJvbSB0aGUgZWxlbWVudC4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogImN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQiLAorICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbGVtZW50SWQi
LCAiJHJlZiI6ICJOb2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiRWxlbWVudCBpZC4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjdXN0b21FbGVtZW50U3RhdGUiLCAiJHJlZiI6ICJDdXN0
b21FbGVtZW50U3RhdGUiLCAiZGVzY3JpcHRpb24iOiAiQ3VzdG9tIGVsZW1lbnQgc3RhdGUuIiB9
CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGxlZCB3aGVu
IHRoZSBjdXN0b20gZWxlbWVudCBzdGF0ZSBpcyBjaGFuZ2VkLiIKKyAgICAgICAgfSwKKyAgICAg
ICAgewogICAgICAgICAgICAgIm5hbWUiOiAicHNldWRvRWxlbWVudEFkZGVkIiwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFyZW50SWQi
LCAiJHJlZiI6ICJOb2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiUHNldWRvIGVsZW1lbnQncyBwYXJl
bnQgZWxlbWVudCBpZC4iIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNWY3YTI1OGZlYzY2
MzVlZDE3MGY3YzU4NGU0YTg4M2M3YTQyYjUzYy4uOWFiOWIwYjVmMGU2NzcxYTI1ZjJhMTVlZDdl
ZmM5NmZiNzY2Mjg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTg4Myw2ICsxODgzLDcg
QEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCkp
CiAgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3Vu
aXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0
aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQoSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlJikKQEAgLTE4OTYsNiArMTg5Nyw3IEBAIHZvaWQgRWxlbWVudDo6
c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYpCiAgICAg
ICAgIGlmIChhdXRvKiBxdWV1ZSA9IGVsZW1lbnRSYXJlRGF0YSgpLT5jdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZSgpKQogICAgICAgICAgICAgcXVldWUtPmNsZWFyKCk7CiAgICAgfQorICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlz
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRl
KCkKQEAgLTE5MDMsNiArMTkwNSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNDdXN0b21FbGVtZW50
VXBncmFkZUNhbmRpZGF0ZSgpCiAgICAgQVNTRVJUKCFnZXRGbGFnKElzQ3VzdG9tRWxlbWVudCkp
OwogICAgIHNldEZsYWcoSXNDdXN0b21FbGVtZW50KTsKICAgICBzZXRGbGFnKElzRWRpdGluZ1Rl
eHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKIHZvaWQgRWxl
bWVudDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJ
bnRlcmZhY2UpCkBAIC0xOTEwLDYgKzE5MTMsNyBAQCB2b2lkIEVsZW1lbnQ6OmVucXVldWVUb1Vw
Z3JhZGUoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogICAgIEFT
U0VSVCghaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpICYmICFpc0ZhaWxlZEN1c3RvbUVsZW1lbnQo
KSk7CiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIHNldEZsYWcoSXNFZGl0aW5n
VGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIAogICAgIGF1dG8m
IGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBBU1NFUlQoIWRhdGEuY3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAyOWVhYzk3ZWM5ODcyNDgwM2VjZTE5N2UwMGI2ZDY2
MzM4YjAzYjVjLi5mMTgwYzAwMTIyNmVlNzJmYzkzZDg1Y2E3YTE3ZGQxY2YwYzkwYTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEz
MDMsNiArMTMwMywxNyBAQCBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpTaGFkb3dS
b290VHlwZSBzaGFkb3dSb290VHlwZShTaGFkb3dSb290TW9kZSBtbwogICAgIHJldHVybiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OlNoYWRvd1Jvb3RUeXBlOjpVc2VyQWdlbnQ7CiB9CiAKK3N0
YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkN1c3RvbUVsZW1lbnRTdGF0ZSBjdXN0b21F
bGVtZW50U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudC5p
c0RlZmluZWRDdXN0b21FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkN1c3RvbUVsZW1lbnRTdGF0ZTo6Q3VzdG9tOworICAgIGlmIChlbGVtZW50Lmlz
RmFpbGVkQ3VzdG9tRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpDdXN0b21FbGVtZW50U3RhdGU6OkZhaWxlZDsKKyAgICBpZiAoZWxlbWVudC5pc1Vu
ZGVmaW5lZEN1c3RvbUVsZW1lbnQoKSB8fCBlbGVtZW50LmlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVD
YW5kaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Q3Vz
dG9tRWxlbWVudFN0YXRlOjpXYWl0aW5nOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkN1c3RvbUVsZW1lbnRTdGF0ZTo6QnVpbHRpbjsKK30KKwogc3RhdGljIFN0cmluZyBj
b21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSBkaWdlc3Qgd2l0aCByZXNwZWN0IHRv
IHRoZSByYXcgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGFnZS4KQEAgLTEzOTAsNiArMTQwMSw4
IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSoKICAgICAgICAgaWYgKGlzPEhUTUxTdHlsZUVsZW1l
bnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1l
bnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIp
KSkKICAgICAgICAgICAgIHZhbHVlLT5zZXRDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKGNvbXB1
dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGVsZW1lbnQpKTsKIAorICAgICAgICB2
YWx1ZS0+c2V0Q3VzdG9tRWxlbWVudFN0YXRlKGN1c3RvbUVsZW1lbnRTdGF0ZShlbGVtZW50KSk7
CisKICAgICAgICAgaWYgKGVsZW1lbnQucHNldWRvSWQoKSkgewogICAgICAgICAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGU7CiAgICAgICAgICAgICBp
ZiAocHNldWRvRWxlbWVudFR5cGUoZWxlbWVudC5wc2V1ZG9JZCgpLCAmcHNldWRvVHlwZSkpCkBA
IC0yMDc1LDYgKzIwODgsMTUgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYgcm9vdCkKICAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnNoYWRvd1Jvb3RQb3BwZWQoaG9zdElkLCByb290SWQpOwogfQogCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBpbnQgZWxlbWVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdl
dCgmZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50SWQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkKGVsZW1lbnRJ
ZCwgY3VzdG9tRWxlbWVudFN0YXRlKGVsZW1lbnQpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUqIGZyYW1lKQogewogICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhMjQ4ZGVjMWQzYWUxOGM2NzZmMzgxY2VjNmY5
MmY5NmVhNGY4NjVhLi4wOTA3ZDgyNjlhMzMwNzEwOTcwNmNlZGU1M2Q4NDYwMWNkYjc1Y2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTY4
LDYgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9k
ZSYpOwogICAgIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9v
dCYpOwogICAgIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9v
dCYpOworICAgIHZvaWQgZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKEVsZW1lbnQmKTsKICAg
ICBib29sIGhhbmRsZVRvdWNoRXZlbnQoTm9kZSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChE
b2N1bWVudCopOwogICAgIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggZDU3M2IzZGVmYjBlYjQxY2M2ZTIwOGRiYThkOTY2Zjk2M2JmZjRlOS4uYzNjNzhl
MjZhYzJkNmFmMjY1ZTIyYzAwZTU1MDI4ZjA2NmQ5YzQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTIxOSw2
ICsyMTksMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dS
b290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnUKICAgICAgICAgZG9tQWdlbnQtPndp
bGxQb3BTaGFkb3dSb290KGhvc3QsIHJvb3QpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT5kaWRDaGFuZ2VDdXN0b21FbGVtZW50U3Rh
dGUoZWxlbWVudCk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9F
bGVtZW50Q3JlYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgUHNldWRvRWxlbWVudCYgcHNldWRvRWxlbWVudCkKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCmluZGV4IDEwOGIwZWUzNTMzZWU1MjczZjdmNTk3NzdhZGIzMGYzNjE5OWEwZDUuLmJh
NmI0ZmI4NWNiNTJhZmFlMmE3ZGM3N2E3NTE1NGI2YjY3OGQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyMiw2
ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYWN0aXZlU3R5bGVTaGVldHNVcGRh
dGVkKERvY3VtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVu
dCYgaG9zdCwgU2hhZG93Um9vdCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290
KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VD
dXN0b21FbGVtZW50U3RhdGUoRWxlbWVudCYpOwogICAgIHN0YXRpYyB2b2lkIHBzZXVkb0VsZW1l
bnRDcmVhdGVkKFBhZ2UqLCBQc2V1ZG9FbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgcHNldWRv
RWxlbWVudERlc3Ryb3llZChQYWdlKiwgUHNldWRvRWxlbWVudCYpOwogICAgIHN0YXRpYyB2b2lk
IGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyYpOwpAQCAtMjk1
LDYgKzI5Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWN0aXZlU3R5bGVTaGVldHNV
cGRhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQm
IGhvc3QsIFNoYWRvd1Jvb3QmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBFbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgcHNldWRvRWxlbWVudENyZWF0
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBQc2V1ZG9FbGVtZW50Jik7CiAgICAgc3RhdGlj
IHZvaWQgcHNldWRvRWxlbWVudERlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBz
ZXVkb0VsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyYpOwpAQCAtNTY3
LDYgKzU2OSwxMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQ
b3BTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1JvbwogICAgICAgICB3aWxsUG9wU2hh
ZG93Um9vdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGhvc3QsIHJvb3QpOwogfQogCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRT
dGF0ZShFbGVtZW50JiBlbGVtZW50KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGVsZW1lbnQuZG9jdW1lbnQoKSkp
CisgICAgICAgIGRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZUltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGVsZW1lbnQpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnBzZXVkb0VsZW1lbnRDcmVhdGVkKFBhZ2UqIHBhZ2UsIFBzZXVkb0VsZW1lbnQmIHBzZXVk
b0VsZW1lbnQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA3ZWE2YTFjODEzMDNhMjU5NjM0Yjg2
NDFhMDc2ZmYzZjgzOTM3YTcwLi42MjNlY2ZmNDMyYTMwMDUyMjc0NTExOTRjM2U5MjEyYzhhOGZj
NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTIxOSw2ICsyMTksNyBA
QCBsb2NhbGl6ZWRTdHJpbmdzWyJDcmVhdGUgJXMgUnVsZSJdID0gIkNyZWF0ZSAlcyBSdWxlIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSBhIG5ldyB0YWIiXSA9ICJDcmVhdGUgYSBuZXcgdGFi
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1cnJlbnQiXSA9ICJDdXJyZW50IjsKIGxvY2FsaXplZFN0
cmluZ3NbIkN1cnNvciJdID0gIkN1cnNvciI7Citsb2NhbGl6ZWRTdHJpbmdzWyJDdXN0b20iXSA9
ICJDdXN0b20iOwogbG9jYWxpemVkU3RyaW5nc1siRE5TIl0gPSAiRE5TIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkRPTSBDb250ZW50IExvYWRlZCBcdTIwMTQgJXMiXSA9ICJET00gQ29udGVudCBMb2Fk
ZWQgXHUyMDE0ICVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRhbXBpbmciXSA9ICJEYW1waW5nIjsK
QEAgLTMzOCw2ICszMzksNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFeHByZXNzaW9uIl0gPSAiRXhw
cmVzc2lvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHRlbnNpb24gU2NyaXB0cyJdID0gIkV4dGVu
c2lvbiBTY3JpcHRzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4dHJhIFNjcmlwdHMiXSA9ICJFeHRy
YSBTY3JpcHRzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZhZGUgdW5leGVjdXRlZCBjb2RlIl0gPSAi
RmFkZSB1bmV4ZWN1dGVkIGNvZGUiOworbG9jYWxpemVkU3RyaW5nc1siRmFpbGVkIHRvIHVwZ3Jh
ZGUiXSA9ICJGYWlsZWQgdG8gdXBncmFkZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGYW1pbHkiXSA9
ICJGYW1pbHkiOwogbG9jYWxpemVkU3RyaW5nc1siRmVhdHVyZXMiXSA9ICJGZWF0dXJlcyI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJGaWxlIG9yIFJlc291cmNlIl0gPSAiRmlsZSBvciBSZXNvdXJjZSI7
CkBAIC04MTMsNiArODE1LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siVmVyc2lvbiJdID0gIlZlcnNp
b24iOwogbG9jYWxpemVkU3RyaW5nc1siVmVydGljYWwiXSA9ICJWZXJ0aWNhbCI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJWaXNpYmlsaXR5Il0gPSAiVmlzaWJpbGl0eSI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJWaXNpYmxlIl0gPSAiVmlzaWJsZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJXYWl0aW5nIHRvIGJl
IHVwZ3JhZGVkIl0gPSAiV2FpdGluZyB0byBiZSB1cGdyYWRlZCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJXYXJuaW5nOiAiXSA9ICJXYXJuaW5nOiAiOwogbG9jYWxpemVkU3RyaW5nc1siV2FybmluZ3Mi
XSA9ICJXYXJuaW5ncyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJXYXRjaCBFeHByZXNzaW9ucyJdID0g
IldhdGNoIEV4cHJlc3Npb25zIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKaW5k
ZXggZjZhNmJjZDU0MmMxMDZiYzdmMDU2ODk2NWFlMjAyYTQ1NjE4ZjQ4OC4uYjYyZGVlMzdkOTkx
NjQ1N2U1ZDJkMjkyY2VmOWJhY2M1ZDEyZWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1h
bmFnZXIuanMKQEAgLTI0OCw2ICsyNDgsMTMgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
ID0gY2xhc3MgRE9NVHJlZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAg
ICAgIHRoaXMuX3VuYmluZChub2RlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB7bm9k
ZSwgcGFyZW50fSk7CiAgICAgfQorICAgIAorICAgIF9jdXN0b21FbGVtZW50U3RhdGVDaGFuZ2Vk
KGVsZW1lbnRJZCwgbmV3U3RhdGUpCisgICAgeworICAgICAgICBjb25zdCBub2RlID0gdGhpcy5f
aWRUb0RPTU5vZGVbZWxlbWVudElkXTsKKyAgICAgICAgbm9kZS5fY3VzdG9tRWxlbWVudFN0YXRl
ID0gbmV3U3RhdGU7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5DdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkLCB7
bm9kZX0pOworICAgIH0KIAogICAgIF9wc2V1ZG9FbGVtZW50QWRkZWQocGFyZW50SWQsIHBzZXVk
b0VsZW1lbnQpCiAgICAgewpAQCAtNzc5LDYgKzc4Niw3IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5FdmVudCA9IHsKICAgICBDaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6ICJkb20tdHJlZS1t
YW5hZ2VyLWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkIiwKICAgICBOb2RlSW5zZXJ0ZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLW5vZGUtaW5zZXJ0ZWQiLAogICAgIE5vZGVSZW1vdmVkOiAiZG9tLXRyZWUt
bWFuYWdlci1ub2RlLXJlbW92ZWQiLAorICAgIEN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQ6ICJk
b20tdHJlZS1tYW5hZ2VyLWN1c3RvbS1lbGVtZW50LXN0YXRlLWNoYW5nZWQiLAogICAgIERvY3Vt
ZW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItZG9jdW1lbnQtdXBkYXRlZCIsCiAgICAgQ2hp
bGROb2RlQ291bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1jaGlsZC1ub2RlLWNvdW50LXVw
ZGF0ZWQiLAogICAgIERPTU5vZGVXYXNJbnNwZWN0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWRvbS1u
b2RlLXdhcy1pbnNwZWN0ZWQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwppbmRleCA3MDllM2RkY2RiNTRiMWU2NWZiODVl
MzVmZGRlNWU2MmU5ODEwOGI1Li43NjM0NWI4ZDM3NGMzNjZmYTc3MTUwYmIwMGMxOGU2MWY5Yjc3
MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRE9NTm9kZS5qcwpAQCAtODMsNiArODMsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUg
PSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkVMRU1F
TlRfTk9ERSkKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVsZW1lbnRTdGF0ZSA9IHBheWxvYWQu
Y3VzdG9tRWxlbWVudFN0YXRlIHx8IFdlYkluc3BlY3Rvci5ET01Ob2RlLkN1c3RvbUVsZW1lbnRT
dGF0ZS5CdWlsdEluOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jdXN0b21FbGVt
ZW50U3RhdGUgPSBudWxsOworCiAgICAgICAgIGlmIChwYXlsb2FkLnRlbXBsYXRlQ29udGVudCkg
ewogICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVDb250ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5E
T01Ob2RlKHRoaXMuX2RvbVRyZWVNYW5hZ2VyLCB0aGlzLm93bmVyRG9jdW1lbnQsIGZhbHNlLCBw
YXlsb2FkLnRlbXBsYXRlQ29udGVudCk7CiAgICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZUNvbnRl
bnQucGFyZW50Tm9kZSA9IHRoaXM7CkBAIC0yNjMsNiArMjY4LDE2IEBAIFdlYkluc3BlY3Rvci5E
T01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2lzSW5TaGFkb3dUcmVlICYmIHRoaXMuYW5jZXN0b3JTaGFkb3dSb290
KCkuaXNVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgfQogCisgICAgaXNDdXN0b21FbGVtZW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21FbGVtZW50U3RhdGUgPT0gV2Vi
SW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLkN1c3RvbTsKKyAgICB9CisKKyAg
ICBjdXN0b21FbGVtZW50U3RhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3Rv
bUVsZW1lbnRTdGF0ZTsKKyAgICB9CisKICAgICBpc1NoYWRvd1Jvb3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuICEhdGhpcy5fc2hhZG93Um9vdFR5cGU7CkBAIC04MDgsMyArODIzLDEwIEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBlID0gewogICAgIENsb3NlZDogImNsb3Nl
ZCIsCiAgICAgT3BlbjogIm9wZW4iLAogfTsKKyAgICAgICAgICAgICAgICAgICAgIAorV2ViSW5z
cGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlID0geworICAgIEJ1aWx0aW46ICJidWls
dGluIiwKKyAgICBDdXN0b206ICJjdXN0b20iLAorICAgIFdhaXRpbmc6ICJ3YWl0aW5nIiwKKyAg
ICBGYWlsZWQ6ICJmYWlsZWQiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggNzBiOWJj
NTY2NzIzZTI0NmNkZDVkMDM0ZjAzYTdkMzQzMDJlZDViYS4uNjIxYzIwZWIxMmNmODliN2U2NTI5
YzBmZTk3MzU5MDczYjA2Nzc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKQEAgLTgyLDYgKzgy
LDExIEBAIFdlYkluc3BlY3Rvci5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVyCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnRO
b2RlSWQsIG5vZGVJZCk7CiAgICAgfQogCisgICAgY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChl
bGVtZW50SWQsIGN1c3RvbUVsZW1lbnRTdGF0ZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5fY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChlbGVtZW50SWQsIGN1
c3RvbUVsZW1lbnRTdGF0ZSk7CisgICAgfQorCiAgICAgcHNldWRvRWxlbWVudEFkZGVkKHBhcmVu
dE5vZGVJZCwgcHNldWRvRWxlbWVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5fcHNldWRvRWxlbWVudEFkZGVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9SZW1vdGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMKaW5kZXggMTk4NmEzOGFkYTJkM2U0Y2Y4NGZiNmJi
MmFjYjYzMmUxZDJmNzA1MC4uNDE4ZTBhYzUzNWM2YWZlNTY3ZWY4NjQ0Nzc3MTExNGM4ZTkyMzU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvUmVtb3RlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwpAQCAtNDE4LDYgKzQxOCwxNSBAQCBXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBjYWxs
YmFjaygwKTsKICAgICB9CiAKKyAgICBnZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9vYmplY3RfZ2V0UHJvcGVy
dHkocHJvcGVydHkpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfb2JqZWN0X2dl
dFByb3BlcnR5LCBbcHJvcGVydHlOYW1lXSwgdHJ1ZSwgY2FsbGJhY2spOworICAgIH0KKwogICAg
IGNhbGxGdW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBnZW5lcmF0ZVByZXZpZXcs
IGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgcmVz
dWx0LCB3YXNUaHJvd24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCmluZGV4IGEzZGY3ZjU2ZjYyNzNiNzgxYzVkNzQyOWI4ZDVhMjRiYzI5ZGJmYjYuLmZmZDdk
MGE0NWY5OGZmYTQ5ZTA3YTUyMzA2NmU4NmNjNTgxOGJmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0yOSw2ICsyOSw3IEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJh
clBhbmVsIGV4dGVuCiAgICAgewogICAgICAgICBzdXBlcigiZG9tLW5vZGUtZGV0YWlscyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTm9kZSIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUi
KSk7CiAKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNo
YW5nZWQsIHRoaXMuX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXND
aGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJl
bW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVN
YW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcy5fY2hhcmFjdGVyRGF0YU1v
ZGlmaWVkLCB0aGlzKTsKQEAgLTEwMCwxNSArMTAxLDEwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2Rl
RGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4
dGVuCiAKICAgICBsYXlvdXQoKQogICAgIHsKLSAgICAgICAgdmFyIGRvbU5vZGUgPSB0aGlzLmRv
bU5vZGU7Ci0gICAgICAgIGlmICghZG9tTm9kZSkKKyAgICAgICAgaWYgKCF0aGlzLmRvbU5vZGUp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlVHlwZVJv
dy52YWx1ZSA9IHRoaXMuX25vZGVUeXBlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgdGhpcy5faWRl
bnRpdHlOb2RlTmFtZVJvdy52YWx1ZSA9IGRvbU5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7
Ci0gICAgICAgIHRoaXMuX2lkZW50aXR5Tm9kZVZhbHVlUm93LnZhbHVlID0gZG9tTm9kZS5ub2Rl
VmFsdWUoKTsKLSAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaFJvdy52YWx1ZSA9IGRvbU5vZGUuY29udGVudFNlY3VyaXR5UG9saWN5SGFzaCgpOwotCisg
ICAgICAgIHRoaXMuX3JlZnJlc2hJZGVudGl0eSgpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQXR0
cmlidXRlcygpOwogICAgICAgICB0aGlzLl9yZWZyZXNoUHJvcGVydGllcygpOwogICAgICAgICB0
aGlzLl9yZWZyZXNoRXZlbnRMaXN0ZW5lcnMoKTsKQEAgLTEyMiw2ICsxMTgsMTUgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwgZXh0ZW4KICAgICAgICAgcmV0dXJuIHdpbmRvdy5ET01BZ2VudCAmJiBET01B
Z2VudC5nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGU7CiAgICAgfQogCisgICAgX3Jl
ZnJlc2hJZGVudGl0eSgpCisgICAgeworICAgICAgICBjb25zdCBkb21Ob2RlID0gdGhpcy5kb21O
b2RlOworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93LnZhbHVlID0gdGhpcy5fbm9k
ZVR5cGVEaXNwbGF5TmFtZSgpOworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVOYW1lUm93LnZh
bHVlID0gZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKKyAgICAgICAgdGhpcy5faWRl
bnRpdHlOb2RlVmFsdWVSb3cudmFsdWUgPSBkb21Ob2RlLm5vZGVWYWx1ZSgpOworICAgICAgICB0
aGlzLl9pZGVudGl0eU5vZGVDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoUm93LnZhbHVlID0gZG9t
Tm9kZS5jb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKCk7CisgICAgfQorCiAgICAgX3JlZnJlc2hB
dHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5k
YXRhR3JpZCA9IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpOwpAQCAtNTg0LDYgKzU4
OSwxMyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBE
T01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbgogCiAgICAgICAgIGRvbU5vZGUuYWNjZXNz
aWJpbGl0eVByb3BlcnRpZXMoYWNjZXNzaWJpbGl0eVByb3BlcnRpZXNDYWxsYmFjay5iaW5kKHRo
aXMpKTsKICAgICB9CisgICAgCisgICAgX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQoZXZlbnQp
CisgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0YS5ub2RlICE9PSB0aGlzLmRvbU5vZGUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3JlZnJlc2hJZGVudGl0eSgpOworICAg
IH0KIAogICAgIF9hdHRyaWJ1dGVzQ2hhbmdlZChldmVudCkKICAgICB7CkBAIC02MDMsOCArNjE1
LDExIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuCiAgICAgX25vZGVUeXBlRGlzcGxheU5hbWUo
KQogICAgIHsKICAgICAgICAgc3dpdGNoICh0aGlzLmRvbU5vZGUubm9kZVR5cGUoKSkgewotICAg
ICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRWxlbWVudCIpOworICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RF
OiB7CisgICAgICAgICAgICBjb25zdCBub2RlTmFtZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RWxlbWVudCIpOworICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9jdXN0b21FbGVtZW50
U3RhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZSA9PT0gbnVsbCA/IG5vZGVOYW1lIDog
YCR7bm9kZU5hbWV9ICgke3N0YXRlfSlgOworICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9kZS5U
RVhUX05PREU6CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUZXh0
IE5vZGUiKTsKICAgICAgICAgY2FzZSBOb2RlLkNPTU1FTlRfTk9ERToKQEAgLTYyNSw2ICs2NDAs
MjMgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW4KICAgICAgICAgfQogICAgIH0KIAorICAgIF9j
dXN0b21FbGVtZW50U3RhdGUoKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmRv
bU5vZGUuY3VzdG9tRWxlbWVudFN0YXRlKCk7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRE9NTm9kZS5DdXN0b21FbGVtZW50U3RhdGUuQnVpbHRp
bjoKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5E
T01Ob2RlLkN1c3RvbUVsZW1lbnRTdGF0ZS5DdXN0b206CisgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDdXN0b20iKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
RE9NTm9kZS5DdXN0b21FbGVtZW50U3RhdGUuV2FpdGluZzoKKyAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhaXRpbmcgdG8gYmUgdXBncmFkZWQiKTsKKyAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuRE9NTm9kZS5DdXN0b21FbGVtZW50U3RhdGUuRmFpbGVkOgorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmFpbGVkIHRvIHVwZ3JhZGUi
KTsKKyAgICAgICAgfQorICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIERPTSBjdXN0b20g
ZWxlbWVudCBzdGF0ZTogIiwgc3RhdGUpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisK
ICAgICBfY3JlYXRlQXR0cmlidXRlc0RhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHZhciBkb21O
b2RlID0gdGhpcy5kb21Ob2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCAzYjc5MGI5M2Q3
MGU5ZmZiOGQ3NTAxMDQ2NWQxY2M1MTg5NmUzNDU3Li40ZmVlYWU0YTM5OTRiMzQ2ZDJmMTNkOTNj
YTg3YjQ0MGYxNzc2NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtNzQwLDYgKzc0MCwz
NiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5UcmVlRWxlbQogICAgICAgICAgICAgICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5jb3B5VGV4dCh4cGF0aCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQor
CisgICAgICAgIGlmIChub2RlLmlzQ3VzdG9tRWxlbWVudCgpKSB7CisgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkp1bXAgdG8gRGVmaW5pdGlvbiIpLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29s
dmVOb2RlKG5vZGUsICIiLCAocmVtb3RlT2JqZWN0KSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IHJlbW90ZU9iamVjdC5nZXRQcm9wZXJ0eSgiY29uc3RydWN0b3IiLCAoZXJyb3IsIHJlc3VsdCwg
d2FzVGhyb3duKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25EZXRhaWxz
KHJlc3VsdC5vYmplY3RJZCwgKGVycm9yLCByZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHJlc3BvbnNlLmxvY2F0aW9uOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5zY3JpcHRGb3JJZGVudGlmaWVyKGxvY2F0aW9uLnNjcmlwdElkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBz
b3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihs
b2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2RlTG9jYXRpb24o
c291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgX3N0YXJ0RWRpdGluZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293532</attachid>
            <date>2016-10-31 23:48:50 -0700</date>
            <delta_ts>2016-11-01 00:38:52 -0700</delta_ts>
            <desc>Addressed review comments</desc>
            <filename>bug-164266-20161031234454.patch</filename>
            <type>text/plain</type>
            <size>34553</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OThkNzEwOGRmNTc0NDdlOTUxZTIwMjhlNmZkZDA5MjYwMGZmMDVlLi45ZTRhYjMyNDA2MGVlZDc2
Yzg4ZjRjODRhZWE3ODIyZGI2ZThkM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMC0zMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjY2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAzODg4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjdXN0b21FbGVtZW50U3RhdGUg
b2YgdHlwZSBDdXN0b21FbGVtZW50U3RhdGUgdG8gcmVmbGVjdCB0aGUgY3VzdG9tIGVsZW1lbnQg
c3RhdGUgb24gZWFjaCBET00gbm9kZQorICAgICAgICBhbG9uZyB3aXRoIGN1c3RvbUVsZW1lbnRT
dGF0ZUNoYW5nZWQgd2hpY2ggZmlyZXMgd2hlbiB0aGUgY3VzdG9tIGVsZW1lbnQgc3RhdGUgY2hh
bmdlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoKKwogMjAxNi0x
MC0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkICR2bS5j
b2RlQmxvY2tGb3IoKSBkZWJ1Z2dpbmcgdXRpbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNmViNzM3NDJj
Y2ZiNWI3MDgyZmRjMzIzNjM0MTE3YWQwYTRhZDcyLi44OWQ5NGYxMGM0YTIyMjBkY2E1ZTJlMzM3
NDJhNzM4MTdkODNmNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMzEg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIHRoZSBzdXBwb3J0IGZvciBjdXN0b20gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI2NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjkwMzg4ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2V0ICJjdXN0b21FbGVtZW50U3RhdGUiIHByb3BlcnR5IG9uIGVhY2ggRE9NTm9k
ZSBvYmplY3Qgd2hlbiBidWlsZGluZyBhIHByb3RvY29sIG9iamVjdCBmb3IgdGhlIG5vZGUuCisg
ICAgICAgIEFsc28gYWRkZWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0
b21FbGVtZW50U3RhdGUgdG8gdHJhY2sgdGhlIGNoYW5nZXMgdG8gY3VzdG9tIGVsZW1lbnQgc3Rh
dGVzLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvZG9tL2N1c3RvbUVsZW1lbnRTdGF0ZS5o
dG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KTogSW52b2tlIGRpZENoYW5nZUN1c3RvbUVs
ZW1lbnRTdGF0ZSB0byB1cGRhdGUgdGhlIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpzZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKTogRGl0dG8uCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1
c3RvbUVsZW1lbnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6IFNldCB0aGUgY3VzdG9tIGVsZW1lbnQgc3RhdGUu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ2hhbmdlQ3VzdG9tRWxl
bWVudFN0YXRlKTogSW52b2tlIGN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQuCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZUltcGwpOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRT
dGF0ZSk6IEFkZGVkLgorCiAyMDE2LTEwLTMxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgVUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2Fs
ZSgpIHdvcmsgb24gTWFjIFdLMSBhbmQgV0syCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
OTBlZTEzYTViOWY1NTQ0YTkxMzM5ZWUyMWZiNzU4NzU2OTgxMjYwLi43MzA2MmUyZTQzMWVkNTZi
Zjk5ZDJlNzViNGM4ZTZhZGVlOWEwMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNi0xMC0zMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjY2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAzODg4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaG93IHRoZSBjdXN0b20gZWxlbWVudCBz
dGF0ZSBpbiBET00gbm9kZSdzIGRldGFpbHMgcGFuZToKKyAgICAgICAgIC0gIkVsZW1lbnQiIGZv
ciBhbGwgYnVpbHRpbiBlbGVtZW50cy4KKyAgICAgICAgIC0gIkVsZW1lbnQgKEN1c3RvbSkiIGZv
ciBhbnkgdXBncmFkZWQgY3VzdG9tIGVsZW1lbnRzLgorICAgICAgICAgLSAiRWxlbWVudCAoV2Fp
dGluZyB0byBiZSB1cGdyYWRlZCkiIGZvciBhbnkgZWxlbWVudCB3YWl0aW5nIHRvIGJlIHVwZ3Jh
ZGVkLgorICAgICAgICAgLSAiRWxlbWVudCAoRmFpbGVkIHRvIHVwZ3JhZGUpIiBmb3IgYW55IGN1
c3RvbSBlbGVtZW50IHRoYXQgZmFpbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gb3IgYW4gdXBncmFk
ZS4KKworICAgICAgICBBbmQgYWRkICJKdW1wIHRvIERlZmluaXRpb24iIHRvIHRoZSBjb250ZXh0
IG1lbnUgb2YgYW4gbm9kZSB0byBmaW5kIHRoZSBjdXN0b20gZWxlbWVudCdzIGRlZmluaXRpb24u
CisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6
IEFkZGVkIGxvY2FsaXplZCBzdHJpbmdzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRE9NVHJlZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1h
bmFnZXIucHJvdG90eXBlLl9jdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkKTogQWRkZWQuIFVwZGF0
ZSB0aGUgc3RhdGUgYW5kIGZpcmUKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQgdG8gdXBkYXRlIHRoZSBub2RlJ3MgZGV0
YWlscyBwYW5lLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZSk6IFNldCB0aGUgY3VzdG9tIGVsZW1lbnQgc3Rh
dGUgb3IgZGVmYXVsdCB0byAiYnVpbHRpbiIuIFVzZSBudWxsIHdoZW4gdGhlIG5vZGUKKyAgICAg
ICAgaXMgbm90IGFuIGVsZW1lbnQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90
b3R5cGUuaXNDdXN0b21FbGVtZW50KTogQWRkZWQuIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEg
c3VjY2Vzc2Z1bGx5CisgICAgICAgIGNvbnN0cnVjdGVkIG9yIHVwZ3JhZGVkIGN1c3RvbSBlbGVt
ZW50LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLmN1c3RvbUVsZW1l
bnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxl
bWVudFN0YXRlKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01P
YnNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01PYnNlcnZlci5wcm90b3R5cGUu
Y3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5wcm90b3R5cGUuZ2V0UHJvcGVydHkpOiBBZGRlZC4gUmV0cmlldmVzIHRoZSBwcm9w
ZXJ0eSBvZiBhIGdpdmVuIG5hbWUgZnJvbQorICAgICAgICB0aGUgcmVtb3RlIGJhY2tlbmQuCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCk6IENh
bGwgX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQgd2hlbiB0aGUgY3VzdG9tIGVsZW1lbnQKKyAg
ICAgICAgc3RhdGUgY2hhbmdlcyBieSBsaXN0ZW5pbmcgdG8gV2ViSW5zcGVjdG9yLkRPTVRyZWVN
YW5hZ2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9y
ZWZyZXNoSWRlbnRpdHkpOiBFeHRyYWN0ZWQgZnJvbSBsYXlvdXQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9jdXN0b21FbGVtZW50
U3RhdGVDaGFuZ2VkKTogQWRkZWQuIAorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fbm9kZVR5cGVEaXNwbGF5TmFtZSk6IEluY2x1ZGUg
dGhlIGN1c3RvbSBlbGVtZW50CisgICAgICAgIHN0YXRlIHdoZW4gaXQncyBub3QgYSBidWlsdGlu
IGVsZW1lbnQgKF9jdXN0b21FbGVtZW50U3RhdGUgcmV0dXJucyBudWxsIGluIHRoYXQgY2FzZSku
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9jdXN0b21FbGVtZW50U3RhdGUpOiBHZXQgdGhlIGxvY2FsaXplZCBzdHJpbmcgZm9yCisg
ICAgICAgIGVhY2ggY3VzdG9tIGVsZW1lbnQgc3RhdGUuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KTogQWRkICJKdW1wIHRv
IERlZmluaXRpb24iIGl0ZW0gaW4gdGhlCisgICAgICAgIGNvbnRleHQgbWVudSBvZiBhbiBlbGVt
ZW50IHdoZW4gaXQncyBhIHN1Y2Nlc3NmdWxseSBjb25zdHJ1Y3RlZCBvciB1cGdyYWRlZCBjdXN0
b20gZWxlbWVudC4KKwogMjAxNi0xMC0zMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNoYWRvdyBET00gc2NvcGVkIHN0eWxl
cyBhcmUgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9ET00uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvRE9NLmpzb24KaW5kZXggZGQyYTMwOTA3ZjcwYjE1MTlhZWQ4NzJkNmViYjUzNjUwZGYw
YWViYS4uZDQ0YTk3NzQ0OWJkNmM1M2I2NmE2ODk5Y2E1YzkzZjI3NDYzYTU1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCkBAIC0y
Niw2ICsyNiwxMiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNoYWRvdyByb290IHR5
cGUuIgogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiQ3VzdG9tRWxl
bWVudFN0YXRlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAi
ZW51bSI6IFsiYnVpbHRpbiIsICJjdXN0b20iLCAid2FpdGluZyIsICJmYWlsZWQiXSwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJDdXN0b20gZWxlbWVudCBzdGF0ZS4iCisgICAgICAgIH0s
CisgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJMaXZlUmVnaW9uUmVsZXZhbnQiLAogICAg
ICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJlbnVtIjogWyJhZGRpdGlv
bnMiLCAicmVtb3ZhbHMiLCAidGV4dCJdLApAQCAtNTIsNiArNTgsNyBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiPGNvZGU+QXR0cjwvY29kZT4ncyB2YWx1ZS4iIH0sCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJwc2V1ZG9UeXBlIiwgIiRyZWYiOiAiUHNldWRvVHlwZSIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJQc2V1ZG8gZWxlbWVudCB0eXBlIGZvciB0
aGlzIG5vZGUuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZG93Um9vdFR5cGUi
LCAiJHJlZiI6ICJTaGFkb3dSb290VHlwZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJTaGFkb3cgcm9vdCB0eXBlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImN1
c3RvbUVsZW1lbnRTdGF0ZSIsICIkcmVmIjogIkN1c3RvbUVsZW1lbnRTdGF0ZSIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDdXN0b20gZWxlbWVudCBzdGF0ZS4iIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFtZUlk
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZyYW1lIElEIGZvciBmcmFtZSBv
d25lciBlbGVtZW50cy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50RG9j
dW1lbnQiLCAiJHJlZiI6ICJOb2RlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IkNvbnRlbnQgZG9jdW1lbnQgZm9yIGZyYW1lIG93bmVyIGVsZW1lbnRzLiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNoYWRvd1Jvb3RzIiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9u
YWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIk5vZGUiIH0sICJkZXNjcmlwdGlvbiI6ICJT
aGFkb3cgcm9vdCBsaXN0IGZvciBnaXZlbiBlbGVtZW50IGhvc3QuIiB9LApAQCAtNTQ2LDYgKzU1
MywxNCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGxlZCB3aGVuIHNoYWRvdyBy
b290IGlzIHBvcHBlZCBmcm9tIHRoZSBlbGVtZW50LiIKICAgICAgICAgfSwKICAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCIsCisgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIs
ICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJFbGVtZW50IGlkLiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImN1c3RvbUVsZW1lbnRTdGF0ZSIsICIkcmVmIjogIkN1c3Rv
bUVsZW1lbnRTdGF0ZSIsICJkZXNjcmlwdGlvbiI6ICJDdXN0b20gZWxlbWVudCBzdGF0ZS4iIH0K
KyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FsbGVkIHdoZW4g
dGhlIGN1c3RvbSBlbGVtZW50IHN0YXRlIGlzIGNoYW5nZWQuIgorICAgICAgICB9LAorICAgICAg
ICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwc2V1ZG9FbGVtZW50QWRkZWQiLAogICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYXJlbnRJZCIs
ICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJQc2V1ZG8gZWxlbWVudCdzIHBhcmVu
dCBlbGVtZW50IGlkLiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1ZjdhMjU4ZmVjNjYz
NWVkMTcwZjdjNTg0ZTRhODgzYzdhNDJiNTNjLi45YWI5YjBiNWYwZTY3NzFhMjVmMmExNWVkN2Vm
Yzk2ZmI3NjYyODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xODgzLDYgKzE4ODMsNyBA
QCB2b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYQogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKSkK
ICAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5p
cXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRo
aXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldElzRmFpbGVkQ3VzdG9tRWxlbWVudChKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UmKQpAQCAtMTg5Niw2ICsxODk3LDcgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJikKICAgICAg
ICAgaWYgKGF1dG8qIHF1ZXVlID0gZWxlbWVudFJhcmVEYXRhKCktPmN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBxdWV1ZS0+Y2xlYXIoKTsKICAgICB9CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMp
OwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUo
KQpAQCAtMTkwMyw2ICsxOTA1LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0N1c3RvbUVsZW1lbnRV
cGdyYWRlQ2FuZGlkYXRlKCkKICAgICBBU1NFUlQoIWdldEZsYWcoSXNDdXN0b21FbGVtZW50KSk7
CiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIHNldEZsYWcoSXNFZGl0aW5nVGV4
dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KIAogdm9pZCBFbGVt
ZW50OjplbnF1ZXVlVG9VcGdyYWRlKEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudElu
dGVyZmFjZSkKQEAgLTE5MTAsNiArMTkxMyw3IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZVRvVXBn
cmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhY2UpCiAgICAgQVNT
RVJUKCFpc0RlZmluZWRDdXN0b21FbGVtZW50KCkgJiYgIWlzRmFpbGVkQ3VzdG9tRWxlbWVudCgp
KTsKICAgICBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7CiAgICAgc2V0RmxhZyhJc0VkaXRpbmdU
ZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMpOwogCiAgICAgYXV0byYg
ZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIEFTU0VSVCghZGF0YS5jdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDI5ZWFjOTdlYzk4NzI0ODAzZWNlMTk3ZTAwYjZkNjYz
MzhiMDNiNWMuLmYxODBjMDAxMjI2ZWU3MmZjOTNkODVjYTdhMTdkZDFjZjBjOTBhNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTMw
Myw2ICsxMzAzLDE3IEBAIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OlNoYWRvd1Jv
b3RUeXBlIHNoYWRvd1Jvb3RUeXBlKFNoYWRvd1Jvb3RNb2RlIG1vCiAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6U2hhZG93Um9vdFR5cGU6OlVzZXJBZ2VudDsKIH0KIAorc3Rh
dGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Q3VzdG9tRWxlbWVudFN0YXRlIGN1c3RvbUVs
ZW1lbnRTdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChlbGVtZW50Lmlz
RGVmaW5lZEN1c3RvbUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Q3VzdG9tRWxlbWVudFN0YXRlOjpDdXN0b207CisgICAgaWYgKGVsZW1lbnQuaXNG
YWlsZWRDdXN0b21FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OkN1c3RvbUVsZW1lbnRTdGF0ZTo6RmFpbGVkOworICAgIGlmIChlbGVtZW50LmlzVW5k
ZWZpbmVkQ3VzdG9tRWxlbWVudCgpIHx8IGVsZW1lbnQuaXNDdXN0b21FbGVtZW50VXBncmFkZUNh
bmRpZGF0ZSgpKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpDdXN0
b21FbGVtZW50U3RhdGU6OldhaXRpbmc7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Q3VzdG9tRWxlbWVudFN0YXRlOjpCdWlsdGluOworfQorCiBzdGF0aWMgU3RyaW5nIGNv
bXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIGRpZ2VzdCB3aXRoIHJlc3BlY3QgdG8g
dGhlIHJhdyBieXRlcyByZWNlaXZlZCBmcm9tIHRoZSBwYWdlLgpAQCAtMTM5MCw2ICsxNDAxLDgg
QEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAgICAgICBpZiAoaXM8SFRNTFN0eWxlRWxlbWVu
dD4oZWxlbWVudCkgfHwgKGlzPEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSAmJiAhZWxlbWVu
dC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0cikp
KQogICAgICAgICAgICAgdmFsdWUtPnNldENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2goY29tcHV0
ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2goZWxlbWVudCkpOwogCisgICAgICAgIHZh
bHVlLT5zZXRDdXN0b21FbGVtZW50U3RhdGUoY3VzdG9tRWxlbWVudFN0YXRlKGVsZW1lbnQpKTsK
KwogICAgICAgICBpZiAoZWxlbWVudC5wc2V1ZG9JZCgpKSB7CiAgICAgICAgICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5cGUgcHNldWRvVHlwZTsKICAgICAgICAgICAgIGlm
IChwc2V1ZG9FbGVtZW50VHlwZShlbGVtZW50LnBzZXVkb0lkKCksICZwc2V1ZG9UeXBlKSkKQEAg
LTIwNzUsNiArMjA4OCwxNSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93
Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290JiByb290KQogICAgICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+c2hhZG93Um9vdFBvcHBlZChob3N0SWQsIHJvb3RJZCk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZShFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGludCBlbGVtZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0
KCZlbGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnRJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQoZWxlbWVudElk
LCBjdXN0b21FbGVtZW50U3RhdGUoZWxlbWVudCkpOworfQorCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGEyNDhkZWMxZDNhZTE4YzY3NmYzODFjZWM2Zjky
Zjk2ZWE0Zjg2NWEuLjA5MDdkODI2OWEzMzA3MTA5NzA2Y2VkZTUzZDg0NjAxY2RiNzVjZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNjgs
NiArMTY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2Rl
Jik7CiAgICAgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290
Jik7CiAgICAgdm9pZCB3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290
Jik7CisgICAgdm9pZCBkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoRWxlbWVudCYpOwogICAg
IGJvb2wgaGFuZGxlVG91Y2hFdmVudChOb2RlJik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKERv
Y3VtZW50Kik7CiAgICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCBkNTczYjNkZWZiMGViNDFjYzZlMjA4ZGJhOGQ5NjZmOTYzYmZmNGU5Li5jM2M3OGUy
NmFjMmQ2YWYyNjVlMjJjMDBlNTUwMjhmMDY2ZDljNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjE5LDYg
KzIxOSwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jv
b3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydQogICAgICAgICBkb21BZ2VudC0+d2ls
bFBvcFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0
ZShlbGVtZW50KTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0Vs
ZW1lbnRDcmVhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogewogICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggMTA4YjBlZTM1MzNlZTUyNzNmN2Y1OTc3N2FkYjMwZjM2MTk5YTBkNS4uYmE2
YjRmYjg1Y2I1MmFmYWUyYTdkYzc3YTc1MTU0YjZiNjc4ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTIyLDYg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhY3RpdmVTdHlsZVNoZWV0c1VwZGF0
ZWQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50
JiBob3N0LCBTaGFkb3dSb290Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3Qo
RWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUN1
c3RvbUVsZW1lbnRTdGF0ZShFbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgcHNldWRvRWxlbWVu
dENyZWF0ZWQoUGFnZSosIFBzZXVkb0VsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBwc2V1ZG9F
bGVtZW50RGVzdHJveWVkKFBhZ2UqLCBQc2V1ZG9FbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Jik7CkBAIC0yOTUs
NiArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhY3RpdmVTdHlsZVNoZWV0c1Vw
ZGF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFB1c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYg
aG9zdCwgU2hhZG93Um9vdCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOworICAg
IHN0YXRpYyB2b2lkIGRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEVsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBwc2V1ZG9FbGVtZW50Q3JlYXRl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBzZXVkb0VsZW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUHNl
dWRvRWxlbWVudCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Jik7CkBAIC01Njcs
NiArNTY5LDEzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBv
cFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vCiAgICAgICAgIHdpbGxQb3BTaGFk
b3dSb290SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaG9zdCwgcm9vdCk7CiB9CiAKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0
YXRlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZWxlbWVudC5kb2N1bWVudCgpKSkK
KyAgICAgICAgZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZWxlbWVudCk7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cHNldWRvRWxlbWVudENyZWF0ZWQoUGFnZSogcGFnZSwgUHNldWRvRWxlbWVudCYgcHNldWRv
RWxlbWVudCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDdlYTZhMWM4MTMwM2EyNTk2MzRiODY0
MWEwNzZmZjNmODM5MzdhNzAuLjYyM2VjZmY0MzJhMzAwNTIyNzQ1MTE5NGMzZTkyMTJjOGE4ZmM0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMjE5LDYgKzIxOSw3IEBA
IGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSAlcyBSdWxlIl0gPSAiQ3JlYXRlICVzIFJ1bGUiOwog
bG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIGEgbmV3IHRhYiJdID0gIkNyZWF0ZSBhIG5ldyB0YWIi
OwogbG9jYWxpemVkU3RyaW5nc1siQ3VycmVudCJdID0gIkN1cnJlbnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siQ3Vyc29yIl0gPSAiQ3Vyc29yIjsKK2xvY2FsaXplZFN0cmluZ3NbIkN1c3RvbSJdID0g
IkN1c3RvbSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJETlMiXSA9ICJETlMiOwogbG9jYWxpemVkU3Ry
aW5nc1siRE9NIENvbnRlbnQgTG9hZGVkIFx1MjAxNCAlcyJdID0gIkRPTSBDb250ZW50IExvYWRl
ZCBcdTIwMTQgJXMiOwogbG9jYWxpemVkU3RyaW5nc1siRGFtcGluZyJdID0gIkRhbXBpbmciOwpA
QCAtMzM4LDYgKzMzOSw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIkV4cHJlc3Npb24iXSA9ICJFeHBy
ZXNzaW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4dGVuc2lvbiBTY3JpcHRzIl0gPSAiRXh0ZW5z
aW9uIFNjcmlwdHMiOwogbG9jYWxpemVkU3RyaW5nc1siRXh0cmEgU2NyaXB0cyJdID0gIkV4dHJh
IFNjcmlwdHMiOwogbG9jYWxpemVkU3RyaW5nc1siRmFkZSB1bmV4ZWN1dGVkIGNvZGUiXSA9ICJG
YWRlIHVuZXhlY3V0ZWQgY29kZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJGYWlsZWQgdG8gdXBncmFk
ZSJdID0gIkZhaWxlZCB0byB1cGdyYWRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZhbWlseSJdID0g
IkZhbWlseSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGZWF0dXJlcyJdID0gIkZlYXR1cmVzIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkZpbGUgb3IgUmVzb3VyY2UiXSA9ICJGaWxlIG9yIFJlc291cmNlIjsK
QEAgLTgxMyw2ICs4MTUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJzaW9uIl0gPSAiVmVyc2lv
biI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJ0aWNhbCJdID0gIlZlcnRpY2FsIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlZpc2liaWxpdHkiXSA9ICJWaXNpYmlsaXR5IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlZpc2libGUiXSA9ICJWaXNpYmxlIjsKK2xvY2FsaXplZFN0cmluZ3NbIldhaXRpbmcgdG8gYmUg
dXBncmFkZWQiXSA9ICJXYWl0aW5nIHRvIGJlIHVwZ3JhZGVkIjsKIGxvY2FsaXplZFN0cmluZ3Nb
Ildhcm5pbmc6ICJdID0gIldhcm5pbmc6ICI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJXYXJuaW5ncyJd
ID0gIldhcm5pbmdzIjsKIGxvY2FsaXplZFN0cmluZ3NbIldhdGNoIEV4cHJlc3Npb25zIl0gPSAi
V2F0Y2ggRXhwcmVzc2lvbnMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcwppbmRl
eCBmNmE2YmNkNTQyYzEwNmJjN2YwNTY4OTY1YWUyMDJhNDU2MThmNDg4Li5iNjJkZWUzN2Q5OTE2
NDU3ZTVkMmQyOTJjZWY5YmFjYzVkMTJlYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFu
YWdlci5qcwpAQCAtMjQ4LDYgKzI0OCwxMyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIg
PSBjbGFzcyBET01UcmVlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdGhpcy5fdW5iaW5kKG5vZGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHtub2Rl
LCBwYXJlbnR9KTsKICAgICB9CisgICAgCisgICAgX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQo
ZWxlbWVudElkLCBuZXdTdGF0ZSkKKyAgICB7CisgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLl9p
ZFRvRE9NTm9kZVtlbGVtZW50SWRdOworICAgICAgICBub2RlLl9jdXN0b21FbGVtZW50U3RhdGUg
PSBuZXdTdGF0ZTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQsIHtu
b2RlfSk7CisgICAgfQogCiAgICAgX3BzZXVkb0VsZW1lbnRBZGRlZChwYXJlbnRJZCwgcHNldWRv
RWxlbWVudCkKICAgICB7CkBAIC03NzksNiArNzg2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVN
YW5hZ2VyLkV2ZW50ID0gewogICAgIENoYXJhY3RlckRhdGFNb2RpZmllZDogImRvbS10cmVlLW1h
bmFnZXItY2hhcmFjdGVyLWRhdGEtbW9kaWZpZWQiLAogICAgIE5vZGVJbnNlcnRlZDogImRvbS10
cmVlLW1hbmFnZXItbm9kZS1pbnNlcnRlZCIsCiAgICAgTm9kZVJlbW92ZWQ6ICJkb20tdHJlZS1t
YW5hZ2VyLW5vZGUtcmVtb3ZlZCIsCisgICAgQ3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZDogImRv
bS10cmVlLW1hbmFnZXItY3VzdG9tLWVsZW1lbnQtc3RhdGUtY2hhbmdlZCIsCiAgICAgRG9jdW1l
bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1kb2N1bWVudC11cGRhdGVkIiwKICAgICBDaGls
ZE5vZGVDb3VudFVwZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWNoaWxkLW5vZGUtY291bnQtdXBk
YXRlZCIsCiAgICAgRE9NTm9kZVdhc0luc3BlY3RlZDogImRvbS10cmVlLW1hbmFnZXItZG9tLW5v
ZGUtd2FzLWluc3BlY3RlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCmluZGV4IDcwOWUzZGRjZGI1NGIxZTY1ZmI4NWUz
NWZkZGU1ZTYyZTk4MTA4YjUuLjA3ZGEzOTg0ZmRkMGE5ZGE1NjRhOTYzYTY1MTFmMmI5OWFlYTk0
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9ET01Ob2RlLmpzCkBAIC04Myw2ICs4MywxMSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9
IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRUxFTUVO
VF9OT0RFKQorICAgICAgICAgICAgdGhpcy5fY3VzdG9tRWxlbWVudFN0YXRlID0gcGF5bG9hZC5j
dXN0b21FbGVtZW50U3RhdGUgfHwgV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0
YXRlLkJ1aWx0aW47CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVsZW1l
bnRTdGF0ZSA9IG51bGw7CisKICAgICAgICAgaWYgKHBheWxvYWQudGVtcGxhdGVDb250ZW50KSB7
CiAgICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZUNvbnRlbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRP
TU5vZGUodGhpcy5fZG9tVHJlZU1hbmFnZXIsIHRoaXMub3duZXJEb2N1bWVudCwgZmFsc2UsIHBh
eWxvYWQudGVtcGxhdGVDb250ZW50KTsKICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlQ29udGVu
dC5wYXJlbnROb2RlID0gdGhpczsKQEAgLTI2Myw2ICsyNjgsMTYgQEAgV2ViSW5zcGVjdG9yLkRP
TU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICByZXR1cm4gdGhpcy5faXNJblNoYWRvd1RyZWUgJiYgdGhpcy5hbmNlc3RvclNoYWRvd1Jvb3Qo
KS5pc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB9CiAKKyAgICBpc0N1c3RvbUVsZW1lbnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUVsZW1lbnRTdGF0ZSA9PT0gV2Vi
SW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLkN1c3RvbTsKKyAgICB9CisKKyAg
ICBjdXN0b21FbGVtZW50U3RhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3Rv
bUVsZW1lbnRTdGF0ZTsKKyAgICB9CisKICAgICBpc1NoYWRvd1Jvb3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuICEhdGhpcy5fc2hhZG93Um9vdFR5cGU7CkBAIC04MDgsMyArODIzLDEwIEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBlID0gewogICAgIENsb3NlZDogImNsb3Nl
ZCIsCiAgICAgT3BlbjogIm9wZW4iLAogfTsKKyAgICAgICAgICAgICAgICAgICAgIAorV2ViSW5z
cGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlID0geworICAgIEJ1aWx0aW46ICJidWls
dGluIiwKKyAgICBDdXN0b206ICJjdXN0b20iLAorICAgIFdhaXRpbmc6ICJ3YWl0aW5nIiwKKyAg
ICBGYWlsZWQ6ICJmYWlsZWQiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggNzBiOWJj
NTY2NzIzZTI0NmNkZDVkMDM0ZjAzYTdkMzQzMDJlZDViYS4uNDBhOTk3NzE2NTE2ZDcxY2MzZmM3
MWE1ZTA0MzBiNmRiZThhZTU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKQEAgLTgyLDYgKzgy
LDExIEBAIFdlYkluc3BlY3Rvci5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVyCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnRO
b2RlSWQsIG5vZGVJZCk7CiAgICAgfQogCisgICAgY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChu
b2RlSWQsIGN1c3RvbUVsZW1lbnRTdGF0ZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5fY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChub2RlSWQsIGN1c3RvbUVs
ZW1lbnRTdGF0ZSk7CisgICAgfQorCiAgICAgcHNldWRvRWxlbWVudEFkZGVkKHBhcmVudE5vZGVJ
ZCwgcHNldWRvRWxlbWVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5fcHNldWRvRWxlbWVudEFkZGVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9S
ZW1vdGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9SZW1vdGVPYmplY3QuanMKaW5kZXggMTk4NmEzOGFkYTJkM2U0Y2Y4NGZiNmJiMmFjYjYz
MmUxZDJmNzA1MC4uNDE4ZTBhYzUzNWM2YWZlNTY3ZWY4NjQ0Nzc3MTExNGM4ZTkyMzU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVt
b3RlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1JlbW90ZU9iamVjdC5qcwpAQCAtNDE4LDYgKzQxOCwxNSBAQCBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBjYWxsYmFjaygw
KTsKICAgICB9CiAKKyAgICBnZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9vYmplY3RfZ2V0UHJvcGVydHkocHJv
cGVydHkpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfb2JqZWN0X2dldFByb3Bl
cnR5LCBbcHJvcGVydHlOYW1lXSwgdHJ1ZSwgY2FsbGJhY2spOworICAgIH0KKwogICAgIGNhbGxG
dW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBnZW5lcmF0ZVByZXZpZXcsIGNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgcmVzdWx0LCB3
YXNUaHJvd24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmlu
ZGV4IGEzZGY3ZjU2ZjYyNzNiNzgxYzVkNzQyOWI4ZDVhMjRiYzI5ZGJmYjYuLmIzNmNlZTRlZmIy
OWZmZThmODgyN2MxNzI5MzE2ZjgxNTNhMmEzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0zMiw2ICszMiw3IEBAIFdlYkluc3BlY3Rvci5ET01O
b2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dGVuCiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwg
dGhpcy5fYXR0cmlidXRlc0NoYW5nZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRlc0NoYW5nZWQsIHRoaXMpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlz
Ll9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQ3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCwgdGhpcy5fY3VzdG9tRWxlbWVudFN0YXRl
Q2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRv
bS1ub2RlIik7CiAKQEAgLTEwMCwxNSArMTAxLDEwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVu
CiAKICAgICBsYXlvdXQoKQogICAgIHsKLSAgICAgICAgdmFyIGRvbU5vZGUgPSB0aGlzLmRvbU5v
ZGU7Ci0gICAgICAgIGlmICghZG9tTm9kZSkKKyAgICAgICAgaWYgKCF0aGlzLmRvbU5vZGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlVHlwZVJvdy52
YWx1ZSA9IHRoaXMuX25vZGVUeXBlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgdGhpcy5faWRlbnRp
dHlOb2RlTmFtZVJvdy52YWx1ZSA9IGRvbU5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7Ci0g
ICAgICAgIHRoaXMuX2lkZW50aXR5Tm9kZVZhbHVlUm93LnZhbHVlID0gZG9tTm9kZS5ub2RlVmFs
dWUoKTsKLSAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlQ29udGVudFNlY3VyaXR5UG9saWN5SGFz
aFJvdy52YWx1ZSA9IGRvbU5vZGUuY29udGVudFNlY3VyaXR5UG9saWN5SGFzaCgpOwotCisgICAg
ICAgIHRoaXMuX3JlZnJlc2hJZGVudGl0eSgpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQXR0cmli
dXRlcygpOwogICAgICAgICB0aGlzLl9yZWZyZXNoUHJvcGVydGllcygpOwogICAgICAgICB0aGlz
Ll9yZWZyZXNoRXZlbnRMaXN0ZW5lcnMoKTsKQEAgLTEyMiw2ICsxMTgsMTUgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW4KICAgICAgICAgcmV0dXJuIHdpbmRvdy5ET01BZ2VudCAmJiBET01BZ2Vu
dC5nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGU7CiAgICAgfQogCisgICAgX3JlZnJl
c2hJZGVudGl0eSgpCisgICAgeworICAgICAgICBjb25zdCBkb21Ob2RlID0gdGhpcy5kb21Ob2Rl
OworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93LnZhbHVlID0gdGhpcy5fbm9kZVR5
cGVEaXNwbGF5TmFtZSgpOworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVOYW1lUm93LnZhbHVl
ID0gZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKKyAgICAgICAgdGhpcy5faWRlbnRp
dHlOb2RlVmFsdWVSb3cudmFsdWUgPSBkb21Ob2RlLm5vZGVWYWx1ZSgpOworICAgICAgICB0aGlz
Ll9pZGVudGl0eU5vZGVDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoUm93LnZhbHVlID0gZG9tTm9k
ZS5jb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKCk7CisgICAgfQorCiAgICAgX3JlZnJlc2hBdHRy
aWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5kYXRh
R3JpZCA9IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpOwpAQCAtNjAwLDExICs2MDUs
MjEgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW4KICAgICAgICAgdGhpcy5faWRlbnRpdHlOb2Rl
VmFsdWVSb3cudmFsdWUgPSB0aGlzLmRvbU5vZGUubm9kZVZhbHVlKCk7CiAgICAgfQogCisgICAg
X2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZl
bnQuZGF0YS5ub2RlICE9PSB0aGlzLmRvbU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHRoaXMuX3JlZnJlc2hJZGVudGl0eSgpOworICAgIH0KKwogICAgIF9ub2RlVHlwZURpc3Bs
YXlOYW1lKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcy5kb21Ob2RlLm5vZGVUeXBlKCkp
IHsKLSAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVsZW1lbnQiKTsKKyAgICAgICAgY2FzZSBOb2RlLkVMRU1F
TlRfTk9ERTogeworICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkVsZW1lbnQiKTsKKyAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fY3VzdG9t
RWxlbWVudFN0YXRlKCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGUgPT09IG51bGwgPyBub2Rl
TmFtZSA6IGAke25vZGVOYW1lfSAoJHtzdGF0ZX0pYDsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IE5vZGUuVEVYVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVGV4dCBOb2RlIik7CiAgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CkBAIC02MjUs
NiArNjQwLDIzIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNs
YXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBfY3VzdG9tRWxlbWVudFN0YXRlKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0YXRlID0g
dGhpcy5kb21Ob2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpOworICAgICAgICBzd2l0Y2ggKHN0YXRl
KSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRl
LkJ1aWx0aW46CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5DdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tOgorICAgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ3VzdG9tIik7CisgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmc6CisgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXYWl0aW5nIHRvIGJlIHVwZ3JhZGVkIik7Cisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLkZhaWxl
ZDoKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhaWxlZCB0byB1
cGdyYWRlIik7CisgICAgICAgIH0KKyAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBET00g
Y3VzdG9tIGVsZW1lbnQgc3RhdGU6ICIsIHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorCiAgICAgX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpCiAgICAgewogICAgICAgICB2
YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggM2I3
OTBiOTNkNzBlOWZmYjhkNzUwMTA0NjVkMWNjNTE4OTZlMzQ1Ny4uN2JkM2Y3ZTAxNWZhMzExNDFm
YzIwNDc4MjQyZTE2YzExY2VmZWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTc0MCw2
ICs3NDAsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW0KICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoeHBhdGgpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KKworICAgICAgICBpZiAobm9kZS5pc0N1c3RvbUVsZW1lbnQoKSkgeworICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisKKyAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJKdW1wIHRvIERlZmluaXRpb24i
KSwgdGhpcy5fc2hvd0N1c3RvbUVsZW1lbnREZWZpbml0aW9uLmJpbmQodGhpcykpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgX3N0YXJ0RWRpdGluZygpCkBAIC0xNDg4LDYgKzE0OTQsMzMgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVHJlZUVsZW0KICAgICAgICAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5yZXNvbHZlTm9kZShub2RlLCAiIiwgcmVzb2x2ZWROb2RlKTsKICAgICB9CiAKKyAgICBfc2hv
d0N1c3RvbUVsZW1lbnREZWZpbml0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnN0IG5vZGUgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnJlc29sdmVOb2RlKG5vZGUsICIiLCAocmVtb3RlT2JqZWN0KSA9PiB7CisgICAgICAgICAgICBp
ZiAoIXJlbW90ZU9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBy
ZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkoImNvbnN0cnVjdG9yIiwgKGVycm9yLCByZXN1bHQsIHdh
c1Rocm93bikgPT4geworICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXN1bHQudHlwZSAh
PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgRGVidWdnZXJBZ2VudC5nZXRGdW5jdGlvbkRldGFpbHMocmVzdWx0Lm9iamVjdElkLCAoZXJy
b3IsIHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBsZXQgbG9j
YXRpb24gPSByZXNwb25zZS5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHNvdXJj
ZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdEZvcklkZW50aWZpZXIo
bG9jYXRpb24uc2NyaXB0SWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGUp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0
aW9uKGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2RlTG9jYXRpb24oc291
cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQucmVsZWFzZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZW1vdGVPYmpl
Y3QucmVsZWFzZSgpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBfZWRpdEFzSFRNTCgpCiAg
ICAgewogICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGFhOThiOTZlY2MyNzM4MTM0MWRjODBmN2Y1ZjVjMGMyOGU2YjUzMWMuLjM0YjUyNWU1ZTIzMTc4
ZjkwNmE1MjNjZDcxYTQzOTExMmQyYjBiNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0x
MC0zMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBJbnNwZWN0b3IgcHJv
dG9jb2wgdGVzdCBmb3IgQ3VzdG9tRWxlbWVudFN0YXRlLgorCisgICAgICAgICogaW5zcGVjdG9y
L2RvbS9jdXN0b21FbGVtZW50U3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZG9tL2N1c3RvbUVsZW1lbnRTdGF0ZS5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0z
MSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUoKSB3b3JrIG9uIE1hYyBXSzEgYW5kIFdL
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3Rh
dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50
U3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NDY2OTE1NzQ3ZDE0YWU3MjhkNTIwZjI1
NjEyYzZlZGVkMWEzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2N1c3RvbUVsZW1lbnRTdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVz
dCBmb3IgRE9NTm9kZS5zaGFkb3dSb290VHlwZS4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6
IERPTU5vZGUuc2hhZG93Um9vdFR5cGUKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDdXN0b21FbGVt
ZW50U3RhdGUuQnVpbHRpbgorUEFTUzogYnVpbHRpbgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
Q3VzdG9tRWxlbWVudFN0YXRlLkN1c3RvbS5Db25zdHJ1Y3RlZAorUEFTUzogY3VzdG9tCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLlVwZ3JhZGVkCitQ
QVNTOiBjdXN0b20KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEN1c3RvbUVsZW1lbnRTdGF0ZS5X
YWl0aW5nCitQQVNTOiB3YWl0aW5nCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDdXN0b21FbGVt
ZW50U3RhdGUuRmFpbGVkCitQQVNTOiBmYWlsZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vY3VzdG9tRWxlbWVudFN0YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3ZjIxMmE0NmYy
MTkwMWRlODQ0ZWY4YTRkM2ViMmI1YzBkMGE0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vY3VzdG9tRWxlbWVudFN0YXRlLmh0bWwKQEAgLTAsMCArMSw5OCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IGRvY3VtZW50Tm9kZTsKKwor
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NTm9kZS5z
aGFkb3dSb290VHlwZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiQ3VzdG9tRWxlbWVudFN0YXRlLkJ1aWx0aW4iLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucXVl
cnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjYnVpbHRpbiIsIChub2RlSWQpID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBub2RlID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5v
ZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChub2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpLCAiYnVpbHRpbiIpOworICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDdXN0b21FbGVtZW50U3RhdGUuQ3Vz
dG9tLkNvbnN0cnVjdGVkIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9j
dW1lbnROb2RlLmlkLCAiY29uc3RydWN0ZWQtZWxlbWVudCIsIChub2RlSWQpID0+IHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBub2RlID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVG
b3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChu
b2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpLCAiY3VzdG9tIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkN1c3RvbUVsZW1lbnRTdGF0ZS5DdXN0b20u
VXBncmFkZWQiLAorICAgICAgICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5v
ZGUuaWQsICJ1cGdyYWRlZC1lbGVtZW50IiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgICAg
IGNvbnN0IG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5vZGVJ
ZCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5vZGUuY3VzdG9t
RWxlbWVudFN0YXRlKCksICJjdXN0b20iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmciLAorICAgICAg
ICB0ZXN0OiAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICJ1bmRlZmluZWQt
ZWxlbWVudCIsIChub2RlSWQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gV2Vi
SW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChub2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpLCAi
d2FpdGluZyIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJDdXN0b21FbGVtZW50U3RhdGUuRmFpbGVkIiwKKyAgICAgICAgdGVzdDogKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnF1
ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiZmFpbGVkLWVsZW1lbnQiLCAobm9kZUlkKSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQobm9kZS5jdXN0b21FbGVtZW50U3RhdGUoKSwgImZhaWxlZCIpOworICAgICAgICAg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9
PiB7CisgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CisgICAgICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworICAgIH0pOworfQorCitjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2Nv
bnN0cnVjdGVkLWVsZW1lbnQnLCBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHsgfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCBmb3Ig
RE9NTm9kZS5zaGFkb3dSb290VHlwZS48L3A+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lIj4K
KyAgICA8aW5wdXQgaWQ9ImJ1aWx0aW4iPgorICAgIDxjb25zdHJ1Y3RlZC1lbGVtZW50PjwvY29u
c3RydWN0ZWQtZWxlbWVudD4KKyAgICA8dXBncmFkZWQtZWxlbWVudD48L3VwZ3JhZGVkLWVsZW1l
bnQ+CisgICAgPHVuZGVmaW5lZC1lbGVtZW50PjwvdW5kZWZpbmVkLWVsZW1lbnQ+CisgICAgPGZh
aWxlZC1lbGVtZW50PjwvZmFpbGVkLWVsZW1lbnQ+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK3dpbmRv
dy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsKKyAgICBpZiAobWVzc2FnZSA9PSAnZmFp
bGVkRWxlbWVudEVycm9yJykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNl
OworfQorY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd1cGdyYWRlZC1lbGVtZW50JywgY2xhc3MgZXh0
ZW5kcyBIVE1MRWxlbWVudCB7IH0pOworY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdmYWlsZWQtZWxl
bWVudCcsIGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIo
KTsgdGhyb3cgJ2ZhaWxlZEVsZW1lbnRFcnJvcic7IH0gfSk7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293535</attachid>
            <date>2016-11-01 00:38:58 -0700</date>
            <delta_ts>2016-11-01 01:15:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164266-20161101003502.patch</filename>
            <type>text/plain</type>
            <size>35276</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OThkNzEwOGRmNTc0NDdlOTUxZTIwMjhlNmZkZDA5MjYwMGZmMDVlLi5mM2Y5Njk2YzYyOTM4Zjk1
ZjIxM2FlYmMyNDVlYWY2MGRlZDAzMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMC0zMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjY2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAzODg4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgQWRkZWQgY3VzdG9tRWxlbWVudFN0YXRl
IG9mIHR5cGUgQ3VzdG9tRWxlbWVudFN0YXRlIHRvIHJlZmxlY3QgdGhlIGN1c3RvbSBlbGVtZW50
IHN0YXRlIG9uIGVhY2ggRE9NIG5vZGUKKyAgICAgICAgYWxvbmcgd2l0aCBjdXN0b21FbGVtZW50
U3RhdGVDaGFuZ2VkIHdoaWNoIGZpcmVzIHdoZW4gdGhlIGN1c3RvbSBlbGVtZW50IHN0YXRlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb246CisKIDIwMTYt
MTAtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAkdm0u
Y29kZUJsb2NrRm9yKCkgZGVidWdnaW5nIHV0aWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlYjczNzQy
Y2NmYjViNzA4MmZkYzMyMzYzNDExN2FkMGE0YWQ3Mi4uNzI0Nzc3OWI1YTZlZWI3NGVlMWJhMzlm
ZjZjMjU1ZWJhNWE0ZDBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTEwLTMx
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCB0aGUgc3VwcG9ydCBmb3IgY3VzdG9tIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyNjYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI5MDM4ODgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4K
KworICAgICAgICBTZXQgImN1c3RvbUVsZW1lbnRTdGF0ZSIgcHJvcGVydHkgb24gZWFjaCBET01O
b2RlIG9iamVjdCB3aGVuIGJ1aWxkaW5nIGEgcHJvdG9jb2wgb2JqZWN0IGZvciB0aGUgbm9kZS4K
KyAgICAgICAgQWxzbyBhZGRlZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1
c3RvbUVsZW1lbnRTdGF0ZSB0byB0cmFjayB0aGUgY2hhbmdlcyB0byBjdXN0b20gZWxlbWVudCBz
dGF0ZXMuCisKKyAgICAgICAgVGVzdHM6IGluc3BlY3Rvci9kb20vY3VzdG9tRWxlbWVudFN0YXRl
Lmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQpOiBJbnZva2UgZGlkQ2hhbmdlQ3VzdG9t
RWxlbWVudFN0YXRlIHRvIHVwZGF0ZSB0aGUgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOiBEaXR0by4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3VzdG9tRWxlbWVudFN0YXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKTogU2V0IHRoZSBjdXN0b20gZWxlbWVudCBzdGF0
ZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21F
bGVtZW50U3RhdGUpOiBJbnZva2UgY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlSW1wbCk6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVu
dFN0YXRlKTogQWRkZWQuCisKIDIwMTYtMTAtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1Nj
YWxlKCkgd29yayBvbiBNYWMgV0sxIGFuZCBXSzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IDY5MGVlMTNhNWI5ZjU1NDRhOTEzMzllZTIxZmI3NTg3NTY5ODEyNjAuLmI3MmQ2MTgxMmMwYzJh
ZmIyNWQ4ZDg4MWQ2Njc5ZTdlMDI0MzY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDE2LTEwLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCB0aGUgc3VwcG9ydCBmb3IgY3VzdG9tIGVs
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQyNjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MDM4ODgzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBTaG93IHRoZSBjdXN0b20gZWxlbWVu
dCBzdGF0ZSBpbiBET00gbm9kZSdzIGRldGFpbHMgcGFuZToKKyAgICAgICAgIC0gIkVsZW1lbnQi
IGZvciBhbGwgYnVpbHRpbiBlbGVtZW50cy4KKyAgICAgICAgIC0gIkVsZW1lbnQgKEN1c3RvbSki
IGZvciBhbnkgdXBncmFkZWQgY3VzdG9tIGVsZW1lbnRzLgorICAgICAgICAgLSAiRWxlbWVudCAo
V2FpdGluZyB0byBiZSB1cGdyYWRlZCkiIGZvciBhbnkgZWxlbWVudCB3YWl0aW5nIHRvIGJlIHVw
Z3JhZGVkLgorICAgICAgICAgLSAiRWxlbWVudCAoRmFpbGVkIHRvIHVwZ3JhZGUpIiBmb3IgYW55
IGN1c3RvbSBlbGVtZW50IHRoYXQgZmFpbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gb3IgYW4gdXBn
cmFkZS4KKworICAgICAgICBBbmQgYWRkICJKdW1wIHRvIERlZmluaXRpb24iIHRvIHRoZSBjb250
ZXh0IG1lbnUgb2YgYW4gbm9kZSB0byBmaW5kIHRoZSBjdXN0b20gZWxlbWVudCdzIGRlZmluaXRp
b24uCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anM6IEFkZGVkIGxvY2FsaXplZCBzdHJpbmdzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIucHJvdG90eXBlLl9jdXN0b21FbGVtZW50U3RhdGVDaGFuZ2VkKTogQWRkZWQuIFVw
ZGF0ZSB0aGUgc3RhdGUgYW5kIGZpcmUKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQgdG8gdXBkYXRlIHRoZSBub2RlJ3Mg
ZGV0YWlscyBwYW5lLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZSk6IFNldCB0aGUgY3VzdG9tIGVsZW1lbnQg
c3RhdGUgb3IgZGVmYXVsdCB0byAiYnVpbHRpbiIuIFVzZSBudWxsIHdoZW4gdGhlIG5vZGUKKyAg
ICAgICAgaXMgbm90IGFuIGVsZW1lbnQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZS5w
cm90b3R5cGUuaXNDdXN0b21FbGVtZW50KTogQWRkZWQuIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlz
IGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgIGNvbnN0cnVjdGVkIG9yIHVwZ3JhZGVkIGN1c3RvbSBl
bGVtZW50LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLmN1c3RvbUVs
ZW1lbnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9t
RWxlbWVudFN0YXRlKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
T01PYnNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01PYnNlcnZlci5wcm90b3R5
cGUuY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0UHJvcGVydHkpOiBBZGRlZC4gUmV0cmlldmVzIHRoZSBw
cm9wZXJ0eSBvZiBhIGdpdmVuIG5hbWUgZnJvbQorICAgICAgICB0aGUgcmVtb3RlIGJhY2tlbmQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCk6
IENhbGwgX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQgd2hlbiB0aGUgY3VzdG9tIGVsZW1lbnQK
KyAgICAgICAgc3RhdGUgY2hhbmdlcyBieSBsaXN0ZW5pbmcgdG8gV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmxheW91dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9yZWZyZXNoSWRlbnRpdHkpOiBFeHRyYWN0ZWQgZnJvbSBsYXlvdXQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9jdXN0b21FbGVt
ZW50U3RhdGVDaGFuZ2VkKTogQWRkZWQuIAorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fbm9kZVR5cGVEaXNwbGF5TmFtZSk6IEluY2x1
ZGUgdGhlIGN1c3RvbSBlbGVtZW50CisgICAgICAgIHN0YXRlIHdoZW4gaXQncyBub3QgYSBidWls
dGluIGVsZW1lbnQgKF9jdXN0b21FbGVtZW50U3RhdGUgcmV0dXJucyBudWxsIGluIHRoYXQgY2Fz
ZSkuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9jdXN0b21FbGVtZW50U3RhdGUpOiBHZXQgdGhlIGxvY2FsaXplZCBzdHJpbmcgZm9y
CisgICAgICAgIGVhY2ggY3VzdG9tIGVsZW1lbnQgc3RhdGUuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KTogQWRkICJKdW1w
IHRvIERlZmluaXRpb24iIGl0ZW0gaW4gdGhlCisgICAgICAgIGNvbnRleHQgbWVudSBvZiBhbiBl
bGVtZW50IHdoZW4gaXQncyBhIHN1Y2Nlc3NmdWxseSBjb25zdHJ1Y3RlZCBvciB1cGdyYWRlZCBj
dXN0b20gZWxlbWVudC4KKwogMjAxNi0xMC0zMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNoYWRvdyBET00gc2NvcGVkIHN0
eWxlcyBhcmUgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvRE9NLmpzb24KaW5kZXggZGQyYTMwOTA3ZjcwYjE1MTlhZWQ4NzJkNmViYjUzNjUw
ZGYwYWViYS4uZDQ0YTk3NzQ0OWJkNmM1M2I2NmE2ODk5Y2E1YzkzZjI3NDYzYTU1NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCkBA
IC0yNiw2ICsyNiwxMiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNoYWRvdyByb290
IHR5cGUuIgogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiQ3VzdG9t
RWxlbWVudFN0YXRlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAg
ICAiZW51bSI6IFsiYnVpbHRpbiIsICJjdXN0b20iLCAid2FpdGluZyIsICJmYWlsZWQiXSwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDdXN0b20gZWxlbWVudCBzdGF0ZS4iCisgICAgICAg
IH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJMaXZlUmVnaW9uUmVsZXZhbnQiLAog
ICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJlbnVtIjogWyJhZGRp
dGlvbnMiLCAicmVtb3ZhbHMiLCAidGV4dCJdLApAQCAtNTIsNiArNTgsNyBAQAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiPGNvZGU+QXR0cjwvY29kZT4ncyB2YWx1ZS4iIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJwc2V1ZG9UeXBlIiwgIiRyZWYiOiAiUHNldWRvVHlwZSIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJQc2V1ZG8gZWxlbWVudCB0eXBlIGZv
ciB0aGlzIG5vZGUuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhZG93Um9vdFR5
cGUiLCAiJHJlZiI6ICJTaGFkb3dSb290VHlwZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJTaGFkb3cgcm9vdCB0eXBlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImN1c3RvbUVsZW1lbnRTdGF0ZSIsICIkcmVmIjogIkN1c3RvbUVsZW1lbnRTdGF0ZSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDdXN0b20gZWxlbWVudCBzdGF0ZS4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFt
ZUlkIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZyYW1lIElEIGZvciBmcmFt
ZSBvd25lciBlbGVtZW50cy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50
RG9jdW1lbnQiLCAiJHJlZiI6ICJOb2RlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIkNvbnRlbnQgZG9jdW1lbnQgZm9yIGZyYW1lIG93bmVyIGVsZW1lbnRzLiIgfSwKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNoYWRvd1Jvb3RzIiwgInR5cGUiOiAiYXJyYXkiLCAib3B0
aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIk5vZGUiIH0sICJkZXNjcmlwdGlvbiI6
ICJTaGFkb3cgcm9vdCBsaXN0IGZvciBnaXZlbiBlbGVtZW50IGhvc3QuIiB9LApAQCAtNTQ2LDYg
KzU1MywxNCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGxlZCB3aGVuIHNoYWRv
dyByb290IGlzIHBvcHBlZCBmcm9tIHRoZSBlbGVtZW50LiIKICAgICAgICAgfSwKICAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAiY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJ
ZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJFbGVtZW50IGlkLiIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImN1c3RvbUVsZW1lbnRTdGF0ZSIsICIkcmVmIjogIkN1
c3RvbUVsZW1lbnRTdGF0ZSIsICJkZXNjcmlwdGlvbiI6ICJDdXN0b20gZWxlbWVudCBzdGF0ZS4i
IH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FsbGVkIHdo
ZW4gdGhlIGN1c3RvbSBlbGVtZW50IHN0YXRlIGlzIGNoYW5nZWQuIgorICAgICAgICB9LAorICAg
ICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwc2V1ZG9FbGVtZW50QWRkZWQiLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYXJlbnRJ
ZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJQc2V1ZG8gZWxlbWVudCdzIHBh
cmVudCBlbGVtZW50IGlkLiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1ZjdhMjU4ZmVj
NjYzNWVkMTcwZjdjNTg0ZTRhODgzYzdhNDJiNTNjLi45YWI5YjBiNWYwZTY3NzFhMjVmMmExNWVk
N2VmYzk2ZmI3NjYyODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xODgzLDYgKzE4ODMs
NyBAQCB2b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYQogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVt
ZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUo
KSkKICAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2Vf
dW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUo
KnRoaXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldElzRmFpbGVkQ3VzdG9tRWxlbWVudChKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UmKQpAQCAtMTg5Niw2ICsxODk3LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJikKICAg
ICAgICAgaWYgKGF1dG8qIHF1ZXVlID0gZWxlbWVudFJhcmVEYXRhKCktPmN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBxdWV1ZS0+Y2xlYXIoKTsKICAgICB9CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRo
aXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRh
dGUoKQpAQCAtMTkwMyw2ICsxOTA1LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0N1c3RvbUVsZW1l
bnRVcGdyYWRlQ2FuZGlkYXRlKCkKICAgICBBU1NFUlQoIWdldEZsYWcoSXNDdXN0b21FbGVtZW50
KSk7CiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIHNldEZsYWcoSXNFZGl0aW5n
VGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KIAogdm9pZCBF
bGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVu
dEludGVyZmFjZSkKQEAgLTE5MTAsNiArMTkxMyw3IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZVRv
VXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhY2UpCiAgICAg
QVNTRVJUKCFpc0RlZmluZWRDdXN0b21FbGVtZW50KCkgJiYgIWlzRmFpbGVkQ3VzdG9tRWxlbWVu
dCgpKTsKICAgICBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7CiAgICAgc2V0RmxhZyhJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMpOwogCiAgICAgYXV0
byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIEFTU0VSVCghZGF0YS5jdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDI5ZWFjOTdlYzk4NzI0ODAzZWNlMTk3ZTAwYjZk
NjYzMzhiMDNiNWMuLmRmMjU4NTg2MDkzYTM1MmMwMGE0YTFlNjgxMThiY2M4ODA3MjNlZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
MTMwMyw2ICsxMzAzLDE3IEBAIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OlNoYWRv
d1Jvb3RUeXBlIHNoYWRvd1Jvb3RUeXBlKFNoYWRvd1Jvb3RNb2RlIG1vCiAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6U2hhZG93Um9vdFR5cGU6OlVzZXJBZ2VudDsKIH0KIAor
c3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Q3VzdG9tRWxlbWVudFN0YXRlIGN1c3Rv
bUVsZW1lbnRTdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChlbGVtZW50
LmlzRGVmaW5lZEN1c3RvbUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Q3VzdG9tRWxlbWVudFN0YXRlOjpDdXN0b207CisgICAgaWYgKGVsZW1lbnQu
aXNGYWlsZWRDdXN0b21FbGVtZW50KCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkN1c3RvbUVsZW1lbnRTdGF0ZTo6RmFpbGVkOworICAgIGlmIChlbGVtZW50Lmlz
VW5kZWZpbmVkQ3VzdG9tRWxlbWVudCgpIHx8IGVsZW1lbnQuaXNDdXN0b21FbGVtZW50VXBncmFk
ZUNhbmRpZGF0ZSgpKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpD
dXN0b21FbGVtZW50U3RhdGU6OldhaXRpbmc7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Q3VzdG9tRWxlbWVudFN0YXRlOjpCdWlsdGluOworfQorCiBzdGF0aWMgU3RyaW5n
IGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIGRpZ2VzdCB3aXRoIHJlc3BlY3Qg
dG8gdGhlIHJhdyBieXRlcyByZWNlaXZlZCBmcm9tIHRoZSBwYWdlLgpAQCAtMTM5MCw2ICsxNDAx
LDEwIEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSoKICAgICAgICAgaWYgKGlzPEhUTUxTdHlsZUVs
ZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkgJiYgIWVs
ZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0
dHIpKSkKICAgICAgICAgICAgIHZhbHVlLT5zZXRDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKGNv
bXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGVsZW1lbnQpKTsKIAorICAgICAg
ICBhdXRvIHN0YXRlID0gY3VzdG9tRWxlbWVudFN0YXRlKGVsZW1lbnQpOworICAgICAgICBpZiAo
c3RhdGUgIT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpDdXN0b21FbGVtZW50U3RhdGU6OkJ1
aWx0aW4pCisgICAgICAgICAgICB2YWx1ZS0+c2V0Q3VzdG9tRWxlbWVudFN0YXRlKHN0YXRlKTsK
KwogICAgICAgICBpZiAoZWxlbWVudC5wc2V1ZG9JZCgpKSB7CiAgICAgICAgICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5cGUgcHNldWRvVHlwZTsKICAgICAgICAgICAgIGlm
IChwc2V1ZG9FbGVtZW50VHlwZShlbGVtZW50LnBzZXVkb0lkKCksICZwc2V1ZG9UeXBlKSkKQEAg
LTIwNzUsNiArMjA5MCwxNSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93
Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290JiByb290KQogICAgICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+c2hhZG93Um9vdFBvcHBlZChob3N0SWQsIHJvb3RJZCk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZShFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGludCBlbGVtZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0
KCZlbGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnRJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQoZWxlbWVudElk
LCBjdXN0b21FbGVtZW50U3RhdGUoZWxlbWVudCkpOworfQorCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGEyNDhkZWMxZDNhZTE4YzY3NmYzODFjZWM2Zjky
Zjk2ZWE0Zjg2NWEuLjA5MDdkODI2OWEzMzA3MTA5NzA2Y2VkZTUzZDg0NjAxY2RiNzVjZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNjgs
NiArMTY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2Rl
Jik7CiAgICAgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290
Jik7CiAgICAgdm9pZCB3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290
Jik7CisgICAgdm9pZCBkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoRWxlbWVudCYpOwogICAg
IGJvb2wgaGFuZGxlVG91Y2hFdmVudChOb2RlJik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKERv
Y3VtZW50Kik7CiAgICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCBkNTczYjNkZWZiMGViNDFjYzZlMjA4ZGJhOGQ5NjZmOTYzYmZmNGU5Li5jM2M3OGUy
NmFjMmQ2YWYyNjVlMjJjMDBlNTUwMjhmMDY2ZDljNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjE5LDYg
KzIxOSwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jv
b3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydQogICAgICAgICBkb21BZ2VudC0+d2ls
bFBvcFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0
ZShlbGVtZW50KTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0Vs
ZW1lbnRDcmVhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogewogICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggMTA4YjBlZTM1MzNlZTUyNzNmN2Y1OTc3N2FkYjMwZjM2MTk5YTBkNS4uYmE2
YjRmYjg1Y2I1MmFmYWUyYTdkYzc3YTc1MTU0YjZiNjc4ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTIyLDYg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhY3RpdmVTdHlsZVNoZWV0c1VwZGF0
ZWQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50
JiBob3N0LCBTaGFkb3dSb290Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3Qo
RWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUN1
c3RvbUVsZW1lbnRTdGF0ZShFbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgcHNldWRvRWxlbWVu
dENyZWF0ZWQoUGFnZSosIFBzZXVkb0VsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBwc2V1ZG9F
bGVtZW50RGVzdHJveWVkKFBhZ2UqLCBQc2V1ZG9FbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Jik7CkBAIC0yOTUs
NiArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhY3RpdmVTdHlsZVNoZWV0c1Vw
ZGF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFB1c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYg
aG9zdCwgU2hhZG93Um9vdCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOworICAg
IHN0YXRpYyB2b2lkIGRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEVsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBwc2V1ZG9FbGVtZW50Q3JlYXRl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBzZXVkb0VsZW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUHNl
dWRvRWxlbWVudCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Jik7CkBAIC01Njcs
NiArNTY5LDEzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBv
cFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vCiAgICAgICAgIHdpbGxQb3BTaGFk
b3dSb290SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaG9zdCwgcm9vdCk7CiB9CiAKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0
YXRlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZWxlbWVudC5kb2N1bWVudCgpKSkK
KyAgICAgICAgZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZWxlbWVudCk7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cHNldWRvRWxlbWVudENyZWF0ZWQoUGFnZSogcGFnZSwgUHNldWRvRWxlbWVudCYgcHNldWRv
RWxlbWVudCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDdlYTZhMWM4MTMwM2EyNTk2MzRiODY0
MWEwNzZmZjNmODM5MzdhNzAuLjYyM2VjZmY0MzJhMzAwNTIyNzQ1MTE5NGMzZTkyMTJjOGE4ZmM0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMjE5LDYgKzIxOSw3IEBA
IGxvY2FsaXplZFN0cmluZ3NbIkNyZWF0ZSAlcyBSdWxlIl0gPSAiQ3JlYXRlICVzIFJ1bGUiOwog
bG9jYWxpemVkU3RyaW5nc1siQ3JlYXRlIGEgbmV3IHRhYiJdID0gIkNyZWF0ZSBhIG5ldyB0YWIi
OwogbG9jYWxpemVkU3RyaW5nc1siQ3VycmVudCJdID0gIkN1cnJlbnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siQ3Vyc29yIl0gPSAiQ3Vyc29yIjsKK2xvY2FsaXplZFN0cmluZ3NbIkN1c3RvbSJdID0g
IkN1c3RvbSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJETlMiXSA9ICJETlMiOwogbG9jYWxpemVkU3Ry
aW5nc1siRE9NIENvbnRlbnQgTG9hZGVkIFx1MjAxNCAlcyJdID0gIkRPTSBDb250ZW50IExvYWRl
ZCBcdTIwMTQgJXMiOwogbG9jYWxpemVkU3RyaW5nc1siRGFtcGluZyJdID0gIkRhbXBpbmciOwpA
QCAtMzM4LDYgKzMzOSw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIkV4cHJlc3Npb24iXSA9ICJFeHBy
ZXNzaW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4dGVuc2lvbiBTY3JpcHRzIl0gPSAiRXh0ZW5z
aW9uIFNjcmlwdHMiOwogbG9jYWxpemVkU3RyaW5nc1siRXh0cmEgU2NyaXB0cyJdID0gIkV4dHJh
IFNjcmlwdHMiOwogbG9jYWxpemVkU3RyaW5nc1siRmFkZSB1bmV4ZWN1dGVkIGNvZGUiXSA9ICJG
YWRlIHVuZXhlY3V0ZWQgY29kZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJGYWlsZWQgdG8gdXBncmFk
ZSJdID0gIkZhaWxlZCB0byB1cGdyYWRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZhbWlseSJdID0g
IkZhbWlseSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGZWF0dXJlcyJdID0gIkZlYXR1cmVzIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkZpbGUgb3IgUmVzb3VyY2UiXSA9ICJGaWxlIG9yIFJlc291cmNlIjsK
QEAgLTgxMyw2ICs4MTUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJzaW9uIl0gPSAiVmVyc2lv
biI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJ0aWNhbCJdID0gIlZlcnRpY2FsIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlZpc2liaWxpdHkiXSA9ICJWaXNpYmlsaXR5IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlZpc2libGUiXSA9ICJWaXNpYmxlIjsKK2xvY2FsaXplZFN0cmluZ3NbIldhaXRpbmcgdG8gYmUg
dXBncmFkZWQiXSA9ICJXYWl0aW5nIHRvIGJlIHVwZ3JhZGVkIjsKIGxvY2FsaXplZFN0cmluZ3Nb
Ildhcm5pbmc6ICJdID0gIldhcm5pbmc6ICI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJXYXJuaW5ncyJd
ID0gIldhcm5pbmdzIjsKIGxvY2FsaXplZFN0cmluZ3NbIldhdGNoIEV4cHJlc3Npb25zIl0gPSAi
V2F0Y2ggRXhwcmVzc2lvbnMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcwppbmRl
eCBmNmE2YmNkNTQyYzEwNmJjN2YwNTY4OTY1YWUyMDJhNDU2MThmNDg4Li5iNjJkZWUzN2Q5OTE2
NDU3ZTVkMmQyOTJjZWY5YmFjYzVkMTJlYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFu
YWdlci5qcwpAQCAtMjQ4LDYgKzI0OCwxMyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIg
PSBjbGFzcyBET01UcmVlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAg
ICAgdGhpcy5fdW5iaW5kKG5vZGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHtub2Rl
LCBwYXJlbnR9KTsKICAgICB9CisgICAgCisgICAgX2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQo
ZWxlbWVudElkLCBuZXdTdGF0ZSkKKyAgICB7CisgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLl9p
ZFRvRE9NTm9kZVtlbGVtZW50SWRdOworICAgICAgICBub2RlLl9jdXN0b21FbGVtZW50U3RhdGUg
PSBuZXdTdGF0ZTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkN1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQsIHtu
b2RlfSk7CisgICAgfQogCiAgICAgX3BzZXVkb0VsZW1lbnRBZGRlZChwYXJlbnRJZCwgcHNldWRv
RWxlbWVudCkKICAgICB7CkBAIC03NzksNiArNzg2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVN
YW5hZ2VyLkV2ZW50ID0gewogICAgIENoYXJhY3RlckRhdGFNb2RpZmllZDogImRvbS10cmVlLW1h
bmFnZXItY2hhcmFjdGVyLWRhdGEtbW9kaWZpZWQiLAogICAgIE5vZGVJbnNlcnRlZDogImRvbS10
cmVlLW1hbmFnZXItbm9kZS1pbnNlcnRlZCIsCiAgICAgTm9kZVJlbW92ZWQ6ICJkb20tdHJlZS1t
YW5hZ2VyLW5vZGUtcmVtb3ZlZCIsCisgICAgQ3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZDogImRv
bS10cmVlLW1hbmFnZXItY3VzdG9tLWVsZW1lbnQtc3RhdGUtY2hhbmdlZCIsCiAgICAgRG9jdW1l
bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1kb2N1bWVudC11cGRhdGVkIiwKICAgICBDaGls
ZE5vZGVDb3VudFVwZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWNoaWxkLW5vZGUtY291bnQtdXBk
YXRlZCIsCiAgICAgRE9NTm9kZVdhc0luc3BlY3RlZDogImRvbS10cmVlLW1hbmFnZXItZG9tLW5v
ZGUtd2FzLWluc3BlY3RlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCmluZGV4IDcwOWUzZGRjZGI1NGIxZTY1ZmI4NWUz
NWZkZGU1ZTYyZTk4MTA4YjUuLjA3ZGEzOTg0ZmRkMGE5ZGE1NjRhOTYzYTY1MTFmMmI5OWFlYTk0
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9ET01Ob2RlLmpzCkBAIC04Myw2ICs4MywxMSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9
IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRUxFTUVO
VF9OT0RFKQorICAgICAgICAgICAgdGhpcy5fY3VzdG9tRWxlbWVudFN0YXRlID0gcGF5bG9hZC5j
dXN0b21FbGVtZW50U3RhdGUgfHwgV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0
YXRlLkJ1aWx0aW47CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVsZW1l
bnRTdGF0ZSA9IG51bGw7CisKICAgICAgICAgaWYgKHBheWxvYWQudGVtcGxhdGVDb250ZW50KSB7
CiAgICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZUNvbnRlbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRP
TU5vZGUodGhpcy5fZG9tVHJlZU1hbmFnZXIsIHRoaXMub3duZXJEb2N1bWVudCwgZmFsc2UsIHBh
eWxvYWQudGVtcGxhdGVDb250ZW50KTsKICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlQ29udGVu
dC5wYXJlbnROb2RlID0gdGhpczsKQEAgLTI2Myw2ICsyNjgsMTYgQEAgV2ViSW5zcGVjdG9yLkRP
TU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICByZXR1cm4gdGhpcy5faXNJblNoYWRvd1RyZWUgJiYgdGhpcy5hbmNlc3RvclNoYWRvd1Jvb3Qo
KS5pc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB9CiAKKyAgICBpc0N1c3RvbUVsZW1lbnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUVsZW1lbnRTdGF0ZSA9PT0gV2Vi
SW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLkN1c3RvbTsKKyAgICB9CisKKyAg
ICBjdXN0b21FbGVtZW50U3RhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3Rv
bUVsZW1lbnRTdGF0ZTsKKyAgICB9CisKICAgICBpc1NoYWRvd1Jvb3QoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuICEhdGhpcy5fc2hhZG93Um9vdFR5cGU7CkBAIC04MDgsMyArODIzLDEwIEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlLlNoYWRvd1Jvb3RUeXBlID0gewogICAgIENsb3NlZDogImNsb3Nl
ZCIsCiAgICAgT3BlbjogIm9wZW4iLAogfTsKKyAgICAgICAgICAgICAgICAgICAgIAorV2ViSW5z
cGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlID0geworICAgIEJ1aWx0aW46ICJidWls
dGluIiwKKyAgICBDdXN0b206ICJjdXN0b20iLAorICAgIFdhaXRpbmc6ICJ3YWl0aW5nIiwKKyAg
ICBGYWlsZWQ6ICJmYWlsZWQiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggNzBiOWJj
NTY2NzIzZTI0NmNkZDVkMDM0ZjAzYTdkMzQzMDJlZDViYS4uNDBhOTk3NzE2NTE2ZDcxY2MzZmM3
MWE1ZTA0MzBiNmRiZThhZTU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKQEAgLTgyLDYgKzgy
LDExIEBAIFdlYkluc3BlY3Rvci5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVyCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnRO
b2RlSWQsIG5vZGVJZCk7CiAgICAgfQogCisgICAgY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChu
b2RlSWQsIGN1c3RvbUVsZW1lbnRTdGF0ZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5fY3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZChub2RlSWQsIGN1c3RvbUVs
ZW1lbnRTdGF0ZSk7CisgICAgfQorCiAgICAgcHNldWRvRWxlbWVudEFkZGVkKHBhcmVudE5vZGVJ
ZCwgcHNldWRvRWxlbWVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5fcHNldWRvRWxlbWVudEFkZGVkKHBhcmVudE5vZGVJZCwgcHNldWRvRWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9S
ZW1vdGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9SZW1vdGVPYmplY3QuanMKaW5kZXggMTk4NmEzOGFkYTJkM2U0Y2Y4NGZiNmJiMmFjYjYz
MmUxZDJmNzA1MC4uNDE4ZTBhYzUzNWM2YWZlNTY3ZWY4NjQ0Nzc3MTExNGM4ZTkyMzU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVt
b3RlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1JlbW90ZU9iamVjdC5qcwpAQCAtNDE4LDYgKzQxOCwxNSBAQCBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICBjYWxsYmFjaygw
KTsKICAgICB9CiAKKyAgICBnZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9vYmplY3RfZ2V0UHJvcGVydHkocHJv
cGVydHkpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfb2JqZWN0X2dldFByb3Bl
cnR5LCBbcHJvcGVydHlOYW1lXSwgdHJ1ZSwgY2FsbGJhY2spOworICAgIH0KKwogICAgIGNhbGxG
dW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBnZW5lcmF0ZVByZXZpZXcsIGNhbGxi
YWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgcmVzdWx0LCB3
YXNUaHJvd24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmlu
ZGV4IGEzZGY3ZjU2ZjYyNzNiNzgxYzVkNzQyOWI4ZDVhMjRiYzI5ZGJmYjYuLmIzNmNlZTRlZmIy
OWZmZThmODgyN2MxNzI5MzE2ZjgxNTNhMmEzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0zMiw2ICszMiw3IEBAIFdlYkluc3BlY3Rvci5ET01O
b2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dGVuCiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwg
dGhpcy5fYXR0cmlidXRlc0NoYW5nZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRlc0NoYW5nZWQsIHRoaXMpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlz
Ll9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQ3VzdG9tRWxlbWVudFN0YXRlQ2hhbmdlZCwgdGhpcy5fY3VzdG9tRWxlbWVudFN0YXRl
Q2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRv
bS1ub2RlIik7CiAKQEAgLTEwMCwxNSArMTAxLDEwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVu
CiAKICAgICBsYXlvdXQoKQogICAgIHsKLSAgICAgICAgdmFyIGRvbU5vZGUgPSB0aGlzLmRvbU5v
ZGU7Ci0gICAgICAgIGlmICghZG9tTm9kZSkKKyAgICAgICAgaWYgKCF0aGlzLmRvbU5vZGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlVHlwZVJvdy52
YWx1ZSA9IHRoaXMuX25vZGVUeXBlRGlzcGxheU5hbWUoKTsKLSAgICAgICAgdGhpcy5faWRlbnRp
dHlOb2RlTmFtZVJvdy52YWx1ZSA9IGRvbU5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7Ci0g
ICAgICAgIHRoaXMuX2lkZW50aXR5Tm9kZVZhbHVlUm93LnZhbHVlID0gZG9tTm9kZS5ub2RlVmFs
dWUoKTsKLSAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlQ29udGVudFNlY3VyaXR5UG9saWN5SGFz
aFJvdy52YWx1ZSA9IGRvbU5vZGUuY29udGVudFNlY3VyaXR5UG9saWN5SGFzaCgpOwotCisgICAg
ICAgIHRoaXMuX3JlZnJlc2hJZGVudGl0eSgpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQXR0cmli
dXRlcygpOwogICAgICAgICB0aGlzLl9yZWZyZXNoUHJvcGVydGllcygpOwogICAgICAgICB0aGlz
Ll9yZWZyZXNoRXZlbnRMaXN0ZW5lcnMoKTsKQEAgLTEyMiw2ICsxMTgsMTUgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW4KICAgICAgICAgcmV0dXJuIHdpbmRvdy5ET01BZ2VudCAmJiBET01BZ2Vu
dC5nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGU7CiAgICAgfQogCisgICAgX3JlZnJl
c2hJZGVudGl0eSgpCisgICAgeworICAgICAgICBjb25zdCBkb21Ob2RlID0gdGhpcy5kb21Ob2Rl
OworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93LnZhbHVlID0gdGhpcy5fbm9kZVR5
cGVEaXNwbGF5TmFtZSgpOworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVOYW1lUm93LnZhbHVl
ID0gZG9tTm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKKyAgICAgICAgdGhpcy5faWRlbnRp
dHlOb2RlVmFsdWVSb3cudmFsdWUgPSBkb21Ob2RlLm5vZGVWYWx1ZSgpOworICAgICAgICB0aGlz
Ll9pZGVudGl0eU5vZGVDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoUm93LnZhbHVlID0gZG9tTm9k
ZS5jb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKCk7CisgICAgfQorCiAgICAgX3JlZnJlc2hBdHRy
aWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5kYXRh
R3JpZCA9IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpOwpAQCAtNjAwLDExICs2MDUs
MjEgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW4KICAgICAgICAgdGhpcy5faWRlbnRpdHlOb2Rl
VmFsdWVSb3cudmFsdWUgPSB0aGlzLmRvbU5vZGUubm9kZVZhbHVlKCk7CiAgICAgfQogCisgICAg
X2N1c3RvbUVsZW1lbnRTdGF0ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZl
bnQuZGF0YS5ub2RlICE9PSB0aGlzLmRvbU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHRoaXMuX3JlZnJlc2hJZGVudGl0eSgpOworICAgIH0KKwogICAgIF9ub2RlVHlwZURpc3Bs
YXlOYW1lKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcy5kb21Ob2RlLm5vZGVUeXBlKCkp
IHsKLSAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVsZW1lbnQiKTsKKyAgICAgICAgY2FzZSBOb2RlLkVMRU1F
TlRfTk9ERTogeworICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkVsZW1lbnQiKTsKKyAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fY3VzdG9t
RWxlbWVudFN0YXRlKCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGUgPT09IG51bGwgPyBub2Rl
TmFtZSA6IGAke25vZGVOYW1lfSAoJHtzdGF0ZX0pYDsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IE5vZGUuVEVYVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVGV4dCBOb2RlIik7CiAgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CkBAIC02MjUs
NiArNjQwLDIzIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNs
YXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBfY3VzdG9tRWxlbWVudFN0YXRlKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0YXRlID0g
dGhpcy5kb21Ob2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpOworICAgICAgICBzd2l0Y2ggKHN0YXRl
KSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRl
LkJ1aWx0aW46CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5DdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tOgorICAgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ3VzdG9tIik7CisgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmc6CisgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXYWl0aW5nIHRvIGJlIHVwZ3JhZGVkIik7Cisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkRPTU5vZGUuQ3VzdG9tRWxlbWVudFN0YXRlLkZhaWxl
ZDoKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhaWxlZCB0byB1
cGdyYWRlIik7CisgICAgICAgIH0KKyAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBET00g
Y3VzdG9tIGVsZW1lbnQgc3RhdGU6ICIsIHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfQorCiAgICAgX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpCiAgICAgewogICAgICAgICB2
YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggM2I3
OTBiOTNkNzBlOWZmYjhkNzUwMTA0NjVkMWNjNTE4OTZlMzQ1Ny4uYWRkMTY1MDhlYTQ4MjA3Njc2
NDM4ODg1MjkzOTAwN2FiY2VmYzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTc0MCw2
ICs3NDAsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW0KICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQoeHBhdGgpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KKworICAgICAgICBpZiAobm9kZS5pc0N1c3RvbUVsZW1lbnQoKSkgeworICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiSnVtcCB0byBEZWZpbml0aW9uIiks
IHRoaXMuX3Nob3dDdXN0b21FbGVtZW50RGVmaW5pdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIF9zdGFydEVkaXRpbmcoKQpAQCAtMTQ4OCw2ICsxNDkzLDM1IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlRyZWVFbGVtCiAgICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
cmVzb2x2ZU5vZGUobm9kZSwgIiIsIHJlc29sdmVkTm9kZSk7CiAgICAgfQogCisgICAgX3Nob3dD
dXN0b21FbGVtZW50RGVmaW5pdGlvbigpCisgICAgeworICAgICAgICBjb25zdCBub2RlID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5y
ZXNvbHZlTm9kZShub2RlLCAiIiwgKHJlbW90ZU9iamVjdCkgPT4geworICAgICAgICAgICAgaWYg
KCFyZW1vdGVPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBy
ZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkoImNvbnN0cnVjdG9yIiwgKGVycm9yLCByZXN1bHQsIHdh
c1Rocm93bikgPT4geworICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXN1bHQudHlwZSAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICAgICAgRGVidWdnZXJBZ2VudC5nZXRGdW5jdGlvbkRldGFpbHMocmVzdWx0Lm9iamVjdElkLCAo
ZXJyb3IsIHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBsZXQg
bG9jYXRpb24gPSByZXNwb25zZS5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHNv
dXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnNjcmlwdEZvcklkZW50aWZp
ZXIobG9jYXRpb24uc2NyaXB0SWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZUNv
ZGUpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxv
Y2F0aW9uKGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsK
KyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2RlTG9jYXRpb24o
c291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQucmVsZWFzZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZW1vdGVP
YmplY3QucmVsZWFzZSgpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBfZWRpdEFzSFRNTCgp
CiAgICAgewogICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGFhOThiOTZlY2MyNzM4MTM0MWRjODBmN2Y1ZjVjMGMyOGU2YjUzMWMuLjRkNmFmMzZmNzIz
MmQ3MmQ1ODVlY2FmMjM2NTVlOTE0MmIxNTNiY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ni0xMC0zMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIEFkZGVkIGEgSW5zcGVjdG9y
IHByb3RvY29sIHRlc3QgZm9yIEN1c3RvbUVsZW1lbnRTdGF0ZS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9kb20vY3VzdG9tRWxlbWVudFN0YXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTYt
MTAtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxlKCkgd29yayBvbiBNYWMgV0sxIGFu
ZCBXSzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3VzdG9tRWxlbWVu
dFN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3VzdG9tRWxl
bWVudFN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTBjNzg4ZTZjYThkNmNmYWVjYTUz
OGQ4MDg1MTViODE4OGRiNDAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS9jdXN0b21FbGVtZW50U3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA5MTogZmFpbGVkRWxlbWVudEVycm9yCitUZXN0IGZvciBE
T01Ob2RlLmN1c3RvbUVsZW1lbnRTdGF0ZS4KKworVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3Qg
cGFnZTogZmFpbGVkRWxlbWVudEVycm9yIFtjdXN0b21FbGVtZW50U3RhdGUuaHRtbDo5MV0KKwor
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01Ob2RlLmN1c3RvbUVsZW1lbnRTdGF0ZQorLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IEN1c3RvbUVsZW1lbnRTdGF0ZS5CdWlsdGluCitQQVNTOiAjYnVpbHRp
biBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLkJ1aWx0aW4uCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLkNvbnN0cnVjdGVkCitQQVNTOiBjb25z
dHJ1Y3RlZC1lbGVtZW50IHNob3VsZCBiZSBDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogQ3VzdG9tRWxlbWVudFN0YXRlLkN1c3RvbS5VcGdyYWRlZAor
UEFTUzogdXBncmFkZWQtZWxlbWVudCBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLkN1c3Rv
bS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEN1c3RvbUVsZW1lbnRTdGF0ZS5XYWl0aW5nCitQ
QVNTOiB1bmRlZmluZWQtZWxlbWVudCBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRp
bmcuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDdXN0b21FbGVtZW50U3RhdGUuRmFpbGVkCitQ
QVNTOiBmYWlsZWQtZWxlbWVudCBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLkZhaWxlZC4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jdXN0b21FbGVtZW50U3Rh
dGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3VzdG9tRWxlbWVudFN0YXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzJlMGVjY2E5MDgwNjBlNjNiNWQzNjJlM2Y0ZTQ4Nzc1MDc1ZWIxYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY3VzdG9tRWxlbWVu
dFN0YXRlLmh0bWwKQEAgLTAsMCArMSw5NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorVGVzdFBhZ2UuYWxsb3dVbmNh
dWdodEV4Y2VwdGlvbnMgPSB0cnVlOworVGVzdFBhZ2UubmVlZFRvU2FuaXRpemVVbmNhdWdodEV4
Y2VwdGlvblVSTHMgPSB0cnVlOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTU5vZGUuY3VzdG9tRWxlbWVudFN0
YXRlIik7CisgICAgbGV0IGRvY3VtZW50Tm9kZTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkN1c3RvbUVsZW1lbnRTdGF0ZS5CdWlsdGluIiwKKyAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiNidWlsdGluIiwgKG5vZGVJZCkg
PT4geworICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIubm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChub2RlLmN1c3RvbUVsZW1lbnRTdGF0ZSgpLCAiYnVpbHRpbiIsICIjYnVpbHRp
biBzaG91bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLkJ1aWx0aW4uIik7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkN1c3RvbUVsZW1lbnRTdGF0ZS5D
dXN0b20uQ29uc3RydWN0ZWQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1l
bnROb2RlLmlkLCAiY29uc3RydWN0ZWQtZWxlbWVudCIsIChub2RlSWQpID0+IHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBub2RlID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJ
ZChub2RlSWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9k
ZS5jdXN0b21FbGVtZW50U3RhdGUoKSwgImN1c3RvbSIsICJjb25zdHJ1Y3RlZC1lbGVtZW50IHNo
b3VsZCBiZSBDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9tLiIpOworICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDdXN0b21FbGVtZW50U3RhdGUuQ3VzdG9t
LlVwZ3JhZGVkIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5xdWVyeVNlbGVjdG9yKGRvY3VtZW50Tm9kZS5p
ZCwgInVwZ3JhZGVkLWVsZW1lbnQiLCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgY29u
c3Qgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5vZGUuY3VzdG9tRWxl
bWVudFN0YXRlKCksICJjdXN0b20iLCAidXBncmFkZWQtZWxlbWVudCBzaG91bGQgYmUgQ3VzdG9t
RWxlbWVudFN0YXRlLkN1c3RvbS4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiQ3VzdG9tRWxlbWVudFN0YXRlLldhaXRpbmciLAorICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVN
YW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAidW5kZWZpbmVkLWVsZW1lbnQi
LCAobm9kZUlkKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5vZGUuY3VzdG9tRWxlbWVudFN0YXRlKCksICJ3YWl0aW5n
IiwgInVuZGVmaW5lZC1lbGVtZW50IHNob3VsZCBiZSBDdXN0b21FbGVtZW50U3RhdGUuV2FpdGlu
Zy4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
Q3VzdG9tRWxlbWVudFN0YXRlLkZhaWxlZCIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rv
cihkb2N1bWVudE5vZGUuaWQsICJmYWlsZWQtZWxlbWVudCIsIChub2RlSWQpID0+IHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBub2RlID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVG
b3JJZChub2RlSWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
bm9kZS5jdXN0b21FbGVtZW50U3RhdGUoKSwgImZhaWxlZCIsICJmYWlsZWQtZWxlbWVudCBzaG91
bGQgYmUgQ3VzdG9tRWxlbWVudFN0YXRlLkZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4geworICAgICAg
ICBkb2N1bWVudE5vZGUgPSBub2RlOworICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5p
c2goKTsKKyAgICB9KTsKK30KKworY3VzdG9tRWxlbWVudHMuZGVmaW5lKCJjb25zdHJ1Y3RlZC1l
bGVtZW50IiwgY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH0pOworCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgZm9yIERPTU5vZGUuY3Vz
dG9tRWxlbWVudFN0YXRlLjwvcD4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgIDxp
bnB1dCBpZD0iYnVpbHRpbiI+CisgICAgPGNvbnN0cnVjdGVkLWVsZW1lbnQ+PC9jb25zdHJ1Y3Rl
ZC1lbGVtZW50PgorICAgIDx1cGdyYWRlZC1lbGVtZW50PjwvdXBncmFkZWQtZWxlbWVudD4KKyAg
ICA8dW5kZWZpbmVkLWVsZW1lbnQ+PC91bmRlZmluZWQtZWxlbWVudD4KKyAgICA8ZmFpbGVkLWVs
ZW1lbnQ+PC9mYWlsZWQtZWxlbWVudD4KKzwvZGl2PgorPHNjcmlwdD4KKworY3VzdG9tRWxlbWVu
dHMuZGVmaW5lKCJ1cGdyYWRlZC1lbGVtZW50IiwgY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
IH0pOworY3VzdG9tRWxlbWVudHMuZGVmaW5lKCJmYWlsZWQtZWxlbWVudCIsIGNsYXNzIGV4dGVu
ZHMgSFRNTEVsZW1lbnQgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhyb3cgImZhaWxlZEVs
ZW1lbnRFcnJvciI7IH0gfSk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>