<?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>185843</bug_id>
          
          <creation_ts>2018-05-21 14:59:49 -0700</creation_ts>
          <short_desc>Web Inspector: extend XHR breakpoints to work with fetch</short_desc>
          <delta_ts>2019-01-07 14:41:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1425866</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-05-21 14:59:49 -0700</bug_when>
    <thetext>Summary:
Extend XHR Breakpoints to work for fetch requests as well. Rename UI to &quot;Request Breakpoints&quot; or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425867</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-21 15:00:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/40431027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492169</commentid>
    <comment_count>2</comment_count>
      <attachid>358471</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-06 17:56:33 -0800</bug_when>
    <thetext>Created attachment 358471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492170</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-06 17:59:21 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492171</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-06 17:59:32 -0800</bug_when>
    <thetext>Attachment 358471 did not pass style-queue:


ERROR: Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h:92:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492310</commentid>
    <comment_count>5</comment_count>
      <attachid>358471</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-01-07 11:24:07 -0800</bug_when>
    <thetext>Comment on attachment 358471
Patch

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

r=me, nice refactoring. I think we should combine fetch-breakpoints.html and xhr-breakpoints.html, since the files are nearly identical.

&gt; Source/WebInspectorUI/UserInterface/Models/URLBreakpoint.js:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2019

&gt; Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.css:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

Ditto for all these copy-pasted files.

&gt; LayoutTests/inspector/dom-debugger/fetch-breakpoints-expected.txt:19
&gt; +Sending Fetch.

Nit: logging the URL improves the clarity of tests that that URL matches a string/regular expression.

Sending Fetch -&gt; Fetch &quot;dataFetch.json&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492313</commentid>
    <comment_count>6</comment_count>
      <attachid>358471</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-01-07 11:39:28 -0800</bug_when>
    <thetext>Comment on attachment 358471
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:-123
&gt; -    m_xhrBreakpoints.clear();

Should this now include `m_urlBreakpoints.clear()`?

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:468
&gt; +    Inspector::DebuggerFrontendDispatcher::Reason breakReason;
&gt; +    switch (source) {
&gt; +    case URLBreakpointSource::Fetch:
&gt; +        breakReason = Inspector::DebuggerFrontendDispatcher::Reason::Fetch;
&gt; +        break;
&gt; +
&gt; +    case URLBreakpointSource::XHR:
&gt; +        breakReason = Inspector::DebuggerFrontendDispatcher::Reason::XHR;
&gt; +        break;
&gt; +
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        breakReason = Inspector::DebuggerFrontendDispatcher::Reason::Other;
&gt; +        break;
&gt; +    }

Style: I like putting these conversions into a static helper function. You can then use `return` instead of assign + break statements so it ends up more concise.

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h:114
&gt; +    bool m_pauseOnAllURLsEnabled { false };

This value should be getting reset somewhere, probably in `disable()`, back to `false` when a frontend disconnects.

&gt; Source/WebInspectorUI/UserInterface/Base/Setting.js:48
&gt; +    static takeDeprecatedValue(key)

How about naming this something like: `migrateValue(key)`?

&gt; Source/WebInspectorUI/UserInterface/Base/Setting.js:56
&gt; +            delete window.localStorage[key];

It might be cleaner to do:

    window.localStorage.removeItem(key);

That should avoid any possible weirdness with the `delete` operator and `[key]` indexing.

Though I realize we use `delete ...` in other places so maybe just keep this to be consistent.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:518
&gt; +
&gt; +

Style: Extra newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492347</commentid>
    <comment_count>7</comment_count>
      <attachid>358514</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-07 12:39:11 -0800</bug_when>
    <thetext>Created attachment 358514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492348</commentid>
    <comment_count>8</comment_count>
      <attachid>358471</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-07 12:39:45 -0800</bug_when>
    <thetext>Comment on attachment 358471
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:-123
&gt;&gt; -    m_xhrBreakpoints.clear();
&gt; 
&gt; Should this now include `m_urlBreakpoints.clear()`?

I think this should just be moved to `InspectorDOMAgent::disable`.  It doesn&apos;t make sense to clear url/event breakpoints when the main frame navigates, as there&apos;s nothing page-specific about either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492349</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-07 12:41:53 -0800</bug_when>
    <thetext>Attachment 358514 did not pass style-queue:


ERROR: Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h:92:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492420</commentid>
    <comment_count>10</comment_count>
      <attachid>358514</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-07 14:41:39 -0800</bug_when>
    <thetext>Comment on attachment 358514
Patch

Clearing flags on attachment: 358514

Committed r239703: &lt;https://trac.webkit.org/changeset/239703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492421</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-07 14:41:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358471</attachid>
            <date>2019-01-06 17:56:33 -0800</date>
            <delta_ts>2019-01-07 12:39:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185843-20190106185632.patch</filename>
            <type>text/plain</type>
            <size>106310</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVmNDYwODlhODUwYmRjMmE0MjA2YjU1M2QwYjUy
MmU1YjE2ZDVlZDcuLjM3ZWYyY2MxMjI0YjE0Y2NmMTg4NGJhZTA5MjNhODg0ODBlNGM4NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAxLTA2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBl
eHRlbmQgWEhSIGJyZWFrcG9pbnRzIHRvIHdvcmsgd2l0aCBmZXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80MDQzMTAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29uOgorICAgICAg
ICBSZW5hbWUgYFhIUmAgdG8gYFVSTGAuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wv
RGVidWdnZXIuanNvbjoKKyAgICAgICAgQWRkIGBGZXRjaGAgdG8gYHJlYXNvbmAgZW51bSBmb3Ig
dGhlIGBEZWJ1Z2dlci5wYXVzZWRgIGV2ZW50LgorCiAyMDE5LTAxLTA0ICBUYWRldSBaYWdhbGxv
ICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIEJhc2VsaW5lIHZlcnNpb24gb2YgZ2V0
X2J5X2lkIG1heSBjb3JydXB0IG1ldGFkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA1MzRhZDk0YTU2NmY4
ZDc4ZjcyZDIzYzQ5MGUxMWI1M2FlZWVhMy4uNTMwN2ZhMjFiMWE3Njk2YTc5NTQ5Y2E4OGY4NTIw
YWU4NzBlYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTAxLTA2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBl
eHRlbmQgWEhSIGJyZWFrcG9pbnRzIHRvIHdvcmsgd2l0aCBmZXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80MDQzMTAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2ZldGNoLWJyZWFrcG9pbnRz
Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpmZXRjaCk6CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxGZXRjaCk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmV0Y2hJbXBsKTogQWRkZWQuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFVSTEJyZWFrcG9p
bnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnJlbW92ZVVSTEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmJyZWFrT25VUkxJZk5lZWRlZCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmV0
Y2gpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnNldFhIUkJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlWEhSQnJlYWtwb2ludCk6IERlbGV0ZWQuCisKIDIwMTkt
MDEtMDYgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV1bR1RLXSBCdWlsZGluZyB3aXRoIEVOQUJMRV9WSURFTz1PRkYgZmFpbHMgdHJ5aW5nIHRv
IHVzZSBEb2N1bWVudCBNZWRpYVBsYXliYWNrIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nCmluZGV4IGYwNTg2N2U3NzJiMWU3MmYxZjcxZjJkOGRkN2FhOTkyYTE4YzQwYzYuLjIyN2U0
ODZhNzg3MDgzYWM1Yzc1Mjg0MzhhNjBkMGI1MTNkYTRkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTAxLTA2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBleHRlbmQgWEhSIGJyZWFrcG9p
bnRzIHRvIHdvcmsgd2l0aCBmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg1ODQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDQzMTAyNz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBw
b3J0c1VSTEJyZWFrcG9pbnRzKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLmdldCB1cmxCcmVha3BvaW50cyk6IEFkZGVkLgorICAgICAgICAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS51cmxCcmVha3BvaW50Rm9yVVJMKTogQWRkZWQuCisg
ICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFVSTEJyZWFrcG9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3Zl
VVJMQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cyk6CisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVVUkxCcmVha3BvaW50KTogQWRkZWQu
CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9yZXNvbHZlVVJMQnJl
YWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5fc2F2ZVVSTEJyZWFrcG9pbnRzKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl91cmxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSk6IEFk
ZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgeGhyQnJl
YWtwb2ludHMpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3Rv
dHlwZS54aHJCcmVha3BvaW50Rm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuYWRkWEhSQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVhIUkJyZWFrcG9pbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRl
WEhSQnJlYWtwb2ludC5icmVha3BvaW50VXBkYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVYSFJCcmVha3BvaW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVYSFJC
cmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90
b3R5cGUuX3NhdmVYSFJCcmVha3BvaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLl94aHJCcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5n
ZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVn
Z2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Bh
dXNlUmVhc29uRnJvbVBheWxvYWQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVs
KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS53aWxsRGlzbWlz
c1BvcG92ZXIpOgorICAgICAgICAoV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9h
ZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fdHJlZVNlbGVjdGlvbkRpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX2FkZFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5fdXBkYXRlUGF1c2VSZWFzb25TZWN0aW9uKToKKyAgICAgICAg
KFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlQ3JlYXRlQnJlYWtwb2lu
dENsaWNrZWQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX2lzVHJlZUVsZW1lbnRXaXRob3V0UmVwcmVzZW50ZWRPYmplY3QpOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qczogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9YSFJCcmVha3BvaW50LmpzLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFBvcG92ZXIuY3NzOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhS
QnJlYWtwb2ludFBvcG92ZXIuY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJM
QnJlYWtwb2ludFBvcG92ZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVha3BvaW50UG9wb3Zlci5qcy4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVha3Bv
aW50VHJlZUVsZW1lbnQuY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIChXSS5TZXR0aW5n
LnRha2VEZXByZWNhdGVkVmFsdWUpOiBBZGRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCisgICAgICAg
ICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorCiAyMDE5LTAx
LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3Rvcjogc3ViY2xhc3NlcyBvZiBXSS5DbHVzdGVyQ29udGVudFZpZXcgZG9uJ3Qgc2F2
ZS9yZXN0b3JlIGNvbnRlbnQgdmlld3MgYWZ0ZXIgdGhlIGluaXRpYWwgdmlldwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dl
ci5qc29uCmluZGV4IGI0MjA0ZDE4ZDA1NzE0OWYzZDFiYjI0NjBlYzljMzcxMTExNGQ4MDEuLmI0
NGM3ZjBiNWVhYmE3YzA5MDI2YjVhZjliMzAzMDg2MDI0MjA3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpz
b24KQEAgLTUwLDE4ICs1MCwxOCBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAg
ICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJzZXRYSFJCcmVha3BvaW50IiwKLSAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJTZXRzIGJyZWFrcG9pbnQgb24gWE1MSHR0cFJlcXVlc3QuIiwKKyAg
ICAgICAgICAgICJuYW1lIjogInNldFVSTEJyZWFrcG9pbnQiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlNldHMgYnJlYWtwb2ludCBvbiBuZXR3b3JrIGFjdGl2aXR5IGZvciB0aGUgZ2l2
ZW4gVVJMLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJj
ZSBVUkwgc3Vic3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbi4gQWxsIFhIUnMgaGF2aW5nIHRo
aXMgc3Vic3RyaW5nIGluIHRoZSBVUkwgd2lsbCBnZXQgc3RvcHBlZCB1cG9uLiBBbiBlbXB0eSBz
dHJpbmcgd2lsbCBwYXVzZSBvbiBhbGwgWEhScy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgVVJM
IHN1YnN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24uIEFsbCByZXF1ZXN0cyBoYXZpbmcgdGhp
cyBzdWJzdHJpbmcgaW4gdGhlIFVSTCB3aWxsIGdldCBzdG9wcGVkIHVwb24uIEFuIGVtcHR5IHN0
cmluZyB3aWxsIHBhdXNlIG9uIGFsbCByZXF1ZXN0cy4iIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoZSBVUkwgc3RyaW5nIGlzIGEgcmVndWxhciBleHByZXNz
aW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAg
ICAibmFtZSI6ICJyZW1vdmVYSFJCcmVha3BvaW50IiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZW1vdmVzIGJyZWFrcG9pbnQgZnJvbSBYTUxIdHRwUmVxdWVzdC4iLAorICAgICAgICAg
ICAgIm5hbWUiOiAicmVtb3ZlVVJMQnJlYWtwb2ludCIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiUmVtb3ZlcyBicmVha3BvaW50IGZyb20gbmV0d29yayBhY3Rpdml0eSBmb3IgdGhlIGdp
dmVuIFVSTC4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUmVzb3Vy
Y2UgVVJMIHN1YnN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIHdpbGwgc3RvcCBwYXVzaW5nIG9uIGFs
bCBYSFJzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIFVSTCBzdWJzdHJpbmcuIEFuIGVtcHR5IHN0
cmluZyB3aWxsIHN0b3AgcGF1c2luZyBvbiBhbGwgcmVxdWVzdHMuIiB9CiAgICAgICAgICAgICBd
CiAgICAgICAgIH0KICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24KaW5kZXggNDE4YTViZTkwN2NlZTczMzUyMzFm
Y2Q0NjgzYmFiOTJhMTc2NWM4Ni4uMmVlNDQ0MjU0YWFlMTBjM2I0YWY3YTExNjQ2OTIxZWU4NTc0
ZDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9EZWJ1Z2dlci5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvRGVidWdnZXIuanNvbgpAQCAtMzQwLDcgKzM0MCw3IEBACiAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRmlyZWQgd2hlbiB0aGUgdmlydHVhbCBtYWNoaW5lIHN0b3BwZWQgb24gYnJl
YWtwb2ludCBvciBleGNlcHRpb24gb3IgYW55IG90aGVyIHN0b3AgY3JpdGVyaWEuIiwKICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZy
YW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJDYWxsRnJhbWUiIH0s
ICJkZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc3RvcHBlZCBv
bi4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWFzb24iLCAidHlwZSI6ICJzdHJp
bmciLCAiZW51bSI6IFsiWEhSIiwgIkRPTSIsICJBbmltYXRpb25GcmFtZSIsICJFdmVudExpc3Rl
bmVyIiwgIlRpbWVyIiwgImV4Y2VwdGlvbiIsICJhc3NlcnQiLCAiQ1NQVmlvbGF0aW9uIiwgIkRl
YnVnZ2VyU3RhdGVtZW50IiwgIkJyZWFrcG9pbnQiLCAiUGF1c2VPbk5leHRTdGF0ZW1lbnQiLCAi
b3RoZXIiXSwgImRlc2NyaXB0aW9uIjogIlBhdXNlIHJlYXNvbi4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZWFzb24iLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsiWEhSIiwg
IkZldGNoIiwgIkRPTSIsICJBbmltYXRpb25GcmFtZSIsICJFdmVudExpc3RlbmVyIiwgIlRpbWVy
IiwgImV4Y2VwdGlvbiIsICJhc3NlcnQiLCAiQ1NQVmlvbGF0aW9uIiwgIkRlYnVnZ2VyU3RhdGVt
ZW50IiwgIkJyZWFrcG9pbnQiLCAiUGF1c2VPbk5leHRTdGF0ZW1lbnQiLCAib3RoZXIiXSwgImRl
c2NyaXB0aW9uIjogIlBhdXNlIHJlYXNvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJkYXRhIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIk9iamVjdCBjb250YWluaW5nIGJyZWFrLXNwZWNpZmljIGF1eGlsaWFyeSBwcm9wZXJ0aWVz
LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFzeW5jU3RhY2tUcmFjZSIsICIkcmVm
IjogIkNvbnNvbGUuU3RhY2tUcmFjZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJMaW5rZWQgbGlzdCBvZiBhc3luY2hyb25vdXMgU3RhY2tUcmFjZXMuIiB9CiAgICAgICAgICAg
ICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCA4ZGFmYzY0NTAyNWEwMmYwMzYyNTRhYTMxYzFiZGEzN2VjZTI5YWVkLi4zZTk5OWQ4MTEx
NjY1NDdiNTNjMDgzMDA4YzRmOTJjOWFkYjllMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU2luay5oIgpA
QCAtMjI5LDYgKzIzMCw5IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAgICAgICAgIHJlc3Bv
bnNlQ2FsbGJhY2soRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJSZWFkYWJsZVN0cmVh
bSB1cGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZldGNoKGNvbnRleHQsIHJl
cXVlc3QudXJsKCkpOworCiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hS
ZXNwb25zZShjb250ZXh0LCBGZXRjaEJvZHkgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRj
aEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCB7IH0pKTsKIAogICAgIHJlc3BvbnNlLT5ib2R5
KCkuY29uc3VtZXIoKS5zZXRBc0xvYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNjJlMDljZjA3NDdk
NjUyN2JhOWVkYjE3OWUxYzU1ZTU3YjhmOWNjNy4uY2M4ZjFmMDMzYjBjNDIwYzA1NmIzNGE2MTNk
OTZlZTYwNzQxNDQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTI5OCw2ICsyOTgsMTIgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGkKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbFNlbmRYTUxIdHRw
UmVxdWVzdCh1cmwpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZl
dGNoSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBT
dHJpbmcmIHVybCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVi
dWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCgpKQorICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsRmV0Y2godXJsKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIFNlY29uZHMgdGlt
ZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNmIyMGNj
YWM5MWRiZmRlZDg4Nzk0ODFmNzI1ZjM5YWM2MDE1M2YzNC4uZmRhZWE2MjE2NGFkNDFhNjU4YzFj
MDMzOGE1OWQ4NDRhNGM5ZTZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0
cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAg
ICBzdGF0aWMgdm9pZCB3aWxsRmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0
cmluZyYgdXJsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnN0YWxsVGltZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGludCB0aW1lcklkLCBTZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hv
dCk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGludCB0aW1lcklkKTsKIApAQCAtMzI4LDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAogICAgIHN0YXRpYyB2
b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25z
dCBTdHJpbmcmIHVybCk7CisgICAgc3RhdGljIHZvaWQgd2lsbEZldGNoSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRpYyB2b2lkIGRpZEluc3Rh
bGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBTZWNvbmRzIHRp
bWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRp
bWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIApAQCAtNjk1LDYgKzY5NywxMyBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgICAgICB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdXJsKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgd2ls
bEZldGNoSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdXJsKTsKK30KKwogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5n
bGVTaG90KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZGFkMjRmNzk0ZjBiNDE4MGQ3MDFjOGRlMjZjZTE2
N2E4ZGI3ZWYyOS4uNzUyMDcwNjM2YWNjODQwN2UwOTA4NmFlYjVlYjcyNWYzZjQ1OTc0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMjAsNyArMTIwLDYgQEAgdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSYgZnJhbWUpCiB2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiB7CiAgICAg
bV9kb21CcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1feGhyQnJlYWtwb2ludHMuY2xlYXIoKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKQEAgLTQwOCwzOSArNDA3LDM5IEBAIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVBbmltYXRpb25GcmFtZSgpCiAgICAgbV9kZWJ1
Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QW5pbWF0aW9uRnJhbWUsIFdURk1vdmUoZXZl
bnREYXRhKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJl
YWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRp
b25hbElzUmVnZXgpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFVSTEJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9u
YWxJc1JlZ2V4KQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcGF1c2VP
bkFsbFhIUnNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsVVJMc0VuYWJsZWQg
PSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0
aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwotICAgIG1feGhyQnJlYWtw
b2ludHMuc2V0KHVybCwgaXNSZWdleCA/IFhIUkJyZWFrcG9pbnRUeXBlOjpSZWd1bGFyRXhwcmVz
c2lvbiA6IFhIUkJyZWFrcG9pbnRUeXBlOjpUZXh0KTsKKyAgICBtX3VybEJyZWFrcG9pbnRzLnNl
dCh1cmwsIGlzUmVnZXggPyBVUkxCcmVha3BvaW50VHlwZTo6UmVndWxhckV4cHJlc3Npb24gOiBV
UkxCcmVha3BvaW50VHlwZTo6VGV4dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJs
KQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVVUkxCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbV9wYXVzZU9uQWxsWEhSc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9w
YXVzZU9uQWxsVVJMc0VuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1feGhyQnJlYWtwb2ludHMucmVtb3ZlKHVybCk7CisgICAgbV91cmxCcmVha3BvaW50cy5y
ZW1vdmUodXJsKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpicmVha09uVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmwsIFVSTEJyZWFr
cG9pbnRTb3VyY2Ugc291cmNlKQogewogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3Bv
aW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYnJlYWtwb2ludFVS
TDsKLSAgICBpZiAobV9wYXVzZU9uQWxsWEhSc0VuYWJsZWQpCisgICAgaWYgKG1fcGF1c2VPbkFs
bFVSTHNFbmFibGVkKQogICAgICAgICBicmVha3BvaW50VVJMID0gZW1wdHlTdHJpbmcoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1feGhyQnJlYWtwb2ludHMpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fdXJsQnJlYWtwb2ludHMpIHsKICAgICAgICAg
ICAgIGNvbnN0IGF1dG8mIHF1ZXJ5ID0gZW50cnkua2V5OwotICAgICAgICAgICAgYm9vbCBpc1Jl
Z2V4ID0gZW50cnkudmFsdWUgPT0gWEhSQnJlYWtwb2ludFR5cGU6OlJlZ3VsYXJFeHByZXNzaW9u
OworICAgICAgICAgICAgYm9vbCBpc1JlZ2V4ID0gZW50cnkudmFsdWUgPT0gVVJMQnJlYWtwb2lu
dFR5cGU6OlJlZ3VsYXJFeHByZXNzaW9uOwogICAgICAgICAgICAgYXV0byByZWdleCA9IENvbnRl
bnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBmYWxzZSwgaXNSZWdl
eCk7CiAgICAgICAgICAgICBpZiAocmVnZXgubWF0Y2godXJsKSAhPSAtMSkgewogICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnRVUkwgPSBxdWVyeTsKQEAgLTQ1MiwxMCArNDUxLDM2IEBAIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBpZiAoYnJlYWtwb2ludFVSTC5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
IGJyZWFrUmVhc29uOworICAgIHN3aXRjaCAoc291cmNlKSB7CisgICAgY2FzZSBVUkxCcmVha3Bv
aW50U291cmNlOjpGZXRjaDoKKyAgICAgICAgYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkZldGNoOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgVVJMQnJlYWtwb2ludFNvdXJjZTo6WEhSOgorICAgICAgICBicmVha1JlYXNvbiA9
IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6WEhSOworICAg
ICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVha1JlYXNvbiA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6T3RoZXI7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIFJlZjxK
U09OOjpPYmplY3Q+IGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZl
bnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRVUkwiLCBicmVha3BvaW50VVJMKTsKICAgICBl
dmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OlhIUiwgV1RGTW92ZShldmVudERhdGEpKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJv
Z3JhbShicmVha1JlYXNvbiwgV1RGTW92ZShldmVudERhdGEpKTsKK30KKwordm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
dXJsKQoreworICAgIGJyZWFrT25VUkxJZk5lZWRlZCh1cmwsIFVSTEJyZWFrcG9pbnRTb3VyY2U6
OlhIUik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZldGNoKGNv
bnN0IFN0cmluZyYgdXJsKQoreworICAgIGJyZWFrT25VUkxJZk5lZWRlZCh1cmwsIFVSTEJyZWFr
cG9pbnRTb3VyY2U6OkZldGNoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaAppbmRleCBlM2E0ZTFiMWMzNDg4NWFiM2RiMGM4MWJmY2Q4NjQxMzhhNmRl
OGU3Li40NTljYjM2OTQzYzQyNDBiOWY3ZDQ4YWMzNDBjOGU0NzExNDNkZWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaApAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCi0gICAg
dm9pZCBzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVYSFJCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIGZpbmFsOworICAgIHZvaWQg
c2V0VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBi
b29sKiBvcHRpb25hbElzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlVVJMQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsKICAgICB2b2lkIHNldEV2
ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGUs
IGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUV2ZW50QnJl
YWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGUsIGNvbnN0
IFN0cmluZyYgZXZlbnROYW1lKSBmaW5hbDsKICAgICB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpAQCAtNzIs
NiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmKTsKICAg
ICB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmKTsKICAgICB2b2lkIHdpbGxTZW5kWE1M
SHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgd2lsbEZldGNoKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJik7CiAg
ICAgdm9pZCB3aWxsSGFuZGxlRXZlbnQoY29uc3QgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lciYpOwogICAgIHZvaWQgd2lsbEZpcmVUaW1lcihib29sIG9uZVNob3QpOwpAQCAt
ODgsNiArODksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpIGZp
bmFsOwogICAgIHZvaWQgZGlzYWJsZSgpOwogCisgICAgZW51bSBjbGFzcyBVUkxCcmVha3BvaW50
U291cmNlIHsgRmV0Y2gsIFhIUiB9OworICAgIHZvaWQgYnJlYWtPblVSTElmTmVlZGVkKGNvbnN0
IFN0cmluZyYgdXJsLCBVUkxCcmVha3BvaW50U291cmNlKTsKKwogICAgIHZvaWQgZGVzY3JpcHRp
b25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNl
cnRpb24sIEpTT046Ok9iamVjdCYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJl
ZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwogICAgIGJv
b2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwpAQCAtMTA1LDEwICsxMDksOSBAQCBw
cml2YXRlOgogICAgICAgICBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8RXZlbnRCcmVha3BvaW50VHlwZT4sIFdURjo6SGFzaFRyYWl0czxTdHJpbmc+PgogICAg
ID4gbV9ldmVudEJyZWFrcG9pbnRzOwogCi0gICAgZW51bSBjbGFzcyBYSFJCcmVha3BvaW50VHlw
ZSB7IFRleHQsIFJlZ3VsYXJFeHByZXNzaW9uIH07Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgWEhS
QnJlYWtwb2ludFR5cGU+IG1feGhyQnJlYWtwb2ludHM7Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxY
SFJzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgZW51bSBjbGFzcyBVUkxCcmVha3BvaW50VHlwZSB7
IFJlZ3VsYXJFeHByZXNzaW9uLCBUZXh0IH07CisgICAgSGFzaE1hcDxTdHJpbmcsIFVSTEJyZWFr
cG9pbnRUeXBlPiBtX3VybEJyZWFrcG9pbnRzOworICAgIGJvb2wgbV9wYXVzZU9uQWxsVVJMc0Vu
YWJsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZGI0ZDUxODU4NzQyZWJjODMyMWVkZWY5MWJjM2I0
ODU1ZjY0YzhjMC4uM2U3N2E2MDI3MzU0YjI1OWRjM2QzNzFkZWM4MDIwY2EzNjliMzk5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC05ODAsMTIgKzk4MCwxNCBAQCBsb2Nh
bGl6ZWRTdHJpbmdzWyJUcmFjZTogJXMiXSA9ICJUcmFjZTogJXMiOwogbG9jYWxpemVkU3RyaW5n
c1siVHJhbnNmZXIgU2l6ZSJdID0gIlRyYW5zZmVyIFNpemUiOwogbG9jYWxpemVkU3RyaW5nc1si
VHJhbnNmZXJyZWQiXSA9ICJUcmFuc2ZlcnJlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJUcmlnZ2Vy
ZWQgQnJlYWtwb2ludCJdID0gIlRyaWdnZXJlZCBCcmVha3BvaW50IjsKK2xvY2FsaXplZFN0cmlu
Z3NbIlRyaWdnZXJlZCBVUkwgQnJlYWtwb2ludCJdID0gIlRyaWdnZXJlZCBVUkwgQnJlYWtwb2lu
dCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJUcmlnZ2VyZWQgWEhSIEJyZWFrcG9pbnQiXSA9ICJUcmln
Z2VyZWQgWEhSIEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siVHJ1ZSJdID0gIlRydWUi
OwogbG9jYWxpemVkU3RyaW5nc1siVHlwZSJdID0gIlR5cGUiOwogbG9jYWxpemVkU3RyaW5nc1si
VHlwZSBJc3N1ZSJdID0gIlR5cGUgSXNzdWUiOwogbG9jYWxpemVkU3RyaW5nc1siVHlwZSBpbmZv
cm1hdGlvbiBmb3IgdmFyaWFibGU6ICVzIl0gPSAiVHlwZSBpbmZvcm1hdGlvbiBmb3IgdmFyaWFi
bGU6ICVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVSTCJdID0gIlVSTCI7Citsb2NhbGl6ZWRTdHJp
bmdzWyJVUkwgQnJlYWtwb2ludFx1MjAyNiJdID0gIlVSTCBCcmVha3BvaW50XHUyMDI2IjsKIGxv
Y2FsaXplZFN0cmluZ3NbIlVuYWJsZSB0byBkZXRlcm1pbmUgcGF0aCB0byBwcm9wZXJ0eSBmcm9t
IHJvb3QiXSA9ICJVbmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkgZnJvbSByb290
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlVuYWJsZSB0byBwYXJzZSBhcyBKU09OOiAlcyJdID0gIlVu
YWJsZSB0byBwYXJzZSBhcyBKU09OOiAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVbmFibGUgdG8g
c2hvdyBjZXJ0aWZpY2F0ZSBmb3IgXHUyMDFDJXNcdTIwMUMiXSA9ICJVbmFibGUgdG8gc2hvdyBj
ZXJ0aWZpY2F0ZSBmb3IgXHUyMDFDJXNcdTIwMUMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IDBmNmRiMTcxZTJiMjFi
ZGQ5YzY0ZWU5MTJmOTNkNmY5ZDMzOWU3YTIuLmE0YzQ0MDdmNTJkNjVjNzQ4NDE5NjNmNzJiMmVm
YzUxMDlmNGFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvU2V0dGluZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTQzLDYgKzQzLDIxIEBAIFdJLlNldHRpbmcgPSBjbGFz
cyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9
IGRlZmF1bHRWYWx1ZTsKICAgICB9CiAKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyB0YWtl
RGVwcmVjYXRlZFZhbHVlKGtleSkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgaWYgKCF3aW5kb3cuSW5zcGVjdG9yVGVzdCAmJiB3aW5kb3cubG9jYWxTdG9y
YWdlICYmIGtleSBpbiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgIHZhbHVlID0gSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlW2tl
eV0pOworICAgICAgICAgICAgfSBjYXRjaCB7IH0KKworICAgICAgICAgICAgZGVsZXRlIHdpbmRv
dy5sb2NhbFN0b3JhZ2Vba2V5XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgfQorCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKaW5kZXggNzc3MDUxYjMxOTM1MjdkYzBmMWYyZmM0OGNl
Mzk3MTlmMjViNjA4NC4uYWIxY2Q4YzU3YTA4OTc5ODE5N2E2Y2IxMDhhOTgwNGQ2OTEyNTE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMzYsMTUgKzM2
LDE1IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9ldmVudEJyZWFrcG9pbnRTZXR0aW5nID0g
bmV3IFdJLlNldHRpbmcoImV2ZW50LWJyZWFrcG9pbnRzIiwgW10pOwogICAgICAgICB0aGlzLl9l
dmVudEJyZWFrcG9pbnRzID0gW107CiAKLSAgICAgICAgdGhpcy5feGhyQnJlYWtwb2ludHNTZXR0
aW5nID0gbmV3IFdJLlNldHRpbmcoInhoci1icmVha3BvaW50cyIsIFtdKTsKLSAgICAgICAgdGhp
cy5feGhyQnJlYWtwb2ludHMgPSBbXTsKKyAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHNTZXR0
aW5nID0gbmV3IFdJLlNldHRpbmcoInVybC1icmVha3BvaW50cyIsIFdJLlNldHRpbmcudGFrZURl
cHJlY2F0ZWRWYWx1ZSgieGhyLWJyZWFrcG9pbnRzIikgfHwgW10pOworICAgICAgICB0aGlzLl91
cmxCcmVha3BvaW50cyA9IFtdOwogICAgICAgICB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtcmVxdWVzdHMiLCBm
YWxzZSk7CiAKLSAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50ID0gbmV3IFdJLlhI
UkJyZWFrcG9pbnQobnVsbCwgbnVsbCwgIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJs
ZWRTZXR0aW5nLnZhbHVlKTsKKyAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50ID0g
bmV3IFdJLlVSTEJyZWFrcG9pbnQobnVsbCwgbnVsbCwgIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlKTsKIAogICAgICAgICBXSS5ET01CcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hh
bmdlLCB0aGlzLl9kb21CcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAg
ICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkV2ZW50QnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9ldmVudEJyZWFrcG9pbnRE
aXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuWEhSQnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLlhIUkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENo
YW5nZSwgdGhpcy5feGhyQnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICBXSS5VUkxCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuVVJMQnJlYWtwb2lu
dC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl91cmxCcmVha3BvaW50RGlzYWJs
ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1v
dmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRP
TU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwpA
QCAtNjUsMTYgKzY1LDE2IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVn
Z2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgZm9yIChsZXQgcGF5bG9h
ZCBvZiB0aGlzLl9ldmVudEJyZWFrcG9pbnRTZXR0aW5nLnZhbHVlKQogICAgICAgICAgICAgICAg
IHRoaXMuYWRkRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5mcm9tUGF5bG9hZChw
YXlsb2FkKSk7CiAKLSAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiB0aGlzLl94aHJCcmVh
a3BvaW50c1NldHRpbmcudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9
IG5ldyBXSS5YSFJCcmVha3BvaW50KGNvb2tpZS50eXBlLCBjb29raWUudXJsLCBjb29raWUuZGlz
YWJsZWQpOwotICAgICAgICAgICAgICAgIHRoaXMuYWRkWEhSQnJlYWtwb2ludChicmVha3BvaW50
KTsKKyAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiB0aGlzLl91cmxCcmVha3BvaW50c1Nl
dHRpbmcudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5V
UkxCcmVha3BvaW50KGNvb2tpZS50eXBlLCBjb29raWUudXJsLCBjb29raWUuZGlzYWJsZWQpOwor
ICAgICAgICAgICAgICAgIHRoaXMuYWRkVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSBmYWxz
ZTsKICAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMoKTsK
IAogICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlWEhSQnJlYWtwb2ludCh0aGlzLl9hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJyZWFrcG9p
bnQodGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50KTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
ODUsNiArODUsMTEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBET01EZWJ1Z2dlckFnZW50
LnNldEV2ZW50QnJlYWtwb2ludCAmJiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtw
b2ludDsKICAgICB9CiAKKyAgICBzdGF0aWMgc3VwcG9ydHNVUkxCcmVha3BvaW50cygpCisgICAg
eworICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkRPTURlYnVnZ2VyLnNl
dFVSTEJyZWFrcG9pbnQgJiYgSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkRPTURlYnVnZ2VyLnJl
bW92ZVVSTEJyZWFrcG9pbnQ7CisgICAgfQorCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc3Vw
cG9ydGVkKCkKQEAgLTExOCw3ICsxMjMsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBldmVudEJy
ZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fZXZlbnRCcmVha3BvaW50czsgfQogCi0gICAgZ2V0
IHhockJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5feGhyQnJlYWtwb2ludHM7IH0KKyAgICBn
ZXQgdXJsQnJlYWtwb2ludHMoKSB7IHJldHVybiB0aGlzLl91cmxCcmVha3BvaW50czsgfQogCiAg
ICAgaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KQogICAgIHsKQEAgLTI3Niw2NCArMjgx
LDcyIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJl
YWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3BvaW50
UmVtb3ZlZCk7CiAgICAgfQogCi0gICAgeGhyQnJlYWtwb2ludEZvclVSTCh1cmwpCisgICAgdXJs
QnJlYWtwb2ludEZvclVSTCh1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5feGhyQnJl
YWtwb2ludHMuZmluZCgoYnJlYWtwb2ludCkgPT4gYnJlYWtwb2ludC51cmwgPT09IHVybCkgfHwg
bnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VybEJyZWFrcG9pbnRzLmZpbmQoKGJyZWFrcG9p
bnQpID0+IGJyZWFrcG9pbnQudXJsID09PSB1cmwpIHx8IG51bGw7CiAgICAgfQogCi0gICAgYWRk
WEhSQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIGFkZFVSTEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBX
SS5YSFJCcmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLlVSTEJyZWFrcG9pbnQpOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChi
cmVha3BvaW50KSkgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9p
bnR9KTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5feGhyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCksICJBbHJlYWR5IGFkZGVk
IFhIUiBicmVha3BvaW50LiIsIGJyZWFrcG9pbnQpOwotICAgICAgICBpZiAodGhpcy5feGhyQnJl
YWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0
aGlzLl91cmxCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSwgIkFscmVhZHkgYWRkZWQg
VVJMIGJyZWFrcG9pbnQuIiwgYnJlYWtwb2ludCk7CisgICAgICAgIGlmICh0aGlzLl91cmxCcmVh
a3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAodGhpcy5feGhyQnJlYWtwb2ludHMuc29tZSgoZW50cnkpID0+IGVudHJ5LnR5cGUg
PT09IGJyZWFrcG9pbnQudHlwZSAmJiBlbnRyeS51cmwgPT09IGJyZWFrcG9pbnQudXJsKSkKKyAg
ICAgICAgaWYgKHRoaXMuX3VybEJyZWFrcG9pbnRzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeS50eXBl
ID09PSBicmVha3BvaW50LnR5cGUgJiYgZW50cnkudXJsID09PSBicmVha3BvaW50LnVybCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5feGhyQnJlYWtwb2ludHMucHVzaChi
cmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50
KTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuWEhSQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuVVJMQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogCi0gICAgICAgIHRoaXMuX3Jl
c29sdmVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB0aGlzLl9zYXZlWEhSQnJl
YWtwb2ludHMoKTsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CisgICAgICAgIHRoaXMuX3NhdmVVUkxCcmVha3BvaW50cygpOwogICAgIH0KIAotICAgIHJl
bW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICByZW1vdmVVUkxCcmVha3BvaW50KGJy
ZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuWEhSQnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5VUkxCcmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNw
ZWNpYWwoYnJlYWtwb2ludCkpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0
cnVlOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlVSTEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCF0aGlzLl94aHJCcmVha3Bv
aW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkKKyAgICAgICAgaWYgKCF0aGlzLl91cmxCcmVha3Bv
aW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICB0aGlzLl94aHJCcmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludCwgdHJ1ZSk7CisgICAgICAg
IHRoaXMuX3VybEJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50LCB0cnVlKTsKIAotICAgICAg
ICB0aGlzLl9zYXZlWEhSQnJlYWtwb2ludHMoKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRSZW1v
dmVkLCB7YnJlYWtwb2ludH0pOworICAgICAgICB0aGlzLl9zYXZlVVJMQnJlYWtwb2ludHMoKTsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlVSTEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogCiAgICAgICAg
IGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgKGVy
cm9yKSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIH0pOworICAgICAgICAvLyBDb21wYXRpYmlsaXR5IChp
T1MgMTIuMSk6IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludCBkaWQgbm90IGV4
aXN0LgorICAgICAgICBpZiAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtw
b2ludHMoKSkgeworICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3Bv
aW50KGJyZWFrcG9pbnQudXJsLCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJl
bW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIChlcnJvcikgPT4geworICAgICAgICAg
ICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJv
cik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFByaXZhdGUK
QEAgLTQwNiw4ICs0MTksOCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2lu
dCBvZiB0aGlzLl9ldmVudEJyZWFrcG9pbnRzKQogICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZUV2
ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKIAotICAgICAgICBmb3IgKGxldCBicmVha3BvaW50
IG9mIHRoaXMuX3hockJyZWFrcG9pbnRzKQotICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVhIUkJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgdGhp
cy5fdXJsQnJlYWtwb2ludHMpCisgICAgICAgICAgICB0aGlzLl9yZXNvbHZlVVJMQnJlYWtwb2lu
dChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgbm9kZUlkZW50aWZpZXIpCkBAIC00ODAsNyArNDkzLDcgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICBET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5
cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3BvaW50VXBkYXRlZCk7CiAgICAgfQogCi0g
ICAgX3VwZGF0ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCwgY2FsbGJhY2spCisgICAgX3VwZGF0
ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5j
dGlvbiBicmVha3BvaW50VXBkYXRlZChlcnJvcikKICAgICAgICAgewpAQCAtNDkxLDExICs1MDQs
MjMgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgICAg
ICB9CiAKKyAgICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9TIDEyLjEpOiBET01EZWJ1Z2dlckFn
ZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgaWYgKCFXSS5E
T01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNVUkxCcmVha3BvaW50cygpKSB7CisgICAgICAgICAg
ICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgICAgICBET01EZWJ1Z2dlckFn
ZW50LnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIGJyZWFrcG9pbnRVcGRhdGVk
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxldCBpc1JlZ2V4ID0gYnJl
YWtwb2ludC50eXBlID09PSBXSS5VUkxCcmVha3BvaW50LlR5cGUuUmVndWxhckV4cHJlc3Npb247
CisgICAgICAgICAgICAgICAgRGVidWdnZXJBZ2VudC5zZXRYSFJCcmVha3BvaW50KGJyZWFrcG9p
bnQudXJsLCBpc1JlZ2V4LCBicmVha3BvaW50VXBkYXRlZCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworCiAgICAgICAgIGlmIChicmVha3BvaW50LmRp
c2FibGVkKQotICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVYSFJCcmVha3BvaW50
KGJyZWFrcG9pbnQudXJsLCBicmVha3BvaW50VXBkYXRlZCk7CisgICAgICAgICAgICBET01EZWJ1
Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIGJyZWFrcG9pbnRV
cGRhdGVkKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsZXQgaXNSZWdleCA9IGJyZWFr
cG9pbnQudHlwZSA9PT0gV0kuWEhSQnJlYWtwb2ludC5UeXBlLlJlZ3VsYXJFeHByZXNzaW9uOwot
ICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5zZXRYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQu
dXJsLCBpc1JlZ2V4LCBicmVha3BvaW50VXBkYXRlZCk7CisgICAgICAgICAgICBsZXQgaXNSZWdl
eCA9IGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuVVJMQnJlYWtwb2ludC5UeXBlLlJlZ3VsYXJFeHBy
ZXNzaW9uOworICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5zZXRVUkxCcmVha3BvaW50KGJy
ZWFrcG9pbnQudXJsLCBpc1JlZ2V4LCBicmVha3BvaW50VXBkYXRlZCk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTUwOSwxMyArNTM0LDEzIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9KTsKICAgICB9
CiAKLSAgICBfcmVzb2x2ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICBfcmVzb2x2ZVVS
TEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIGlmIChicmVha3BvaW50LmRp
c2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVhIUkJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgKCkgPT4gewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuWEhSQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50
LCAoKSA9PiB7CisgICAgICAgICAgICBicmVha3BvaW50LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5VUkxCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOwogICAgICAg
ICB9KTsKICAgICB9CiAKQEAgLTUzOSwxMiArNTY0LDEyIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0
aGlzLl9ldmVudEJyZWFrcG9pbnRTZXR0aW5nLnZhbHVlID0gdGhpcy5fZXZlbnRCcmVha3BvaW50
cy5tYXAoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9pbnQuc2VyaWFsaXphYmxlSW5mbyk7CiAgICAg
fQogCi0gICAgX3NhdmVYSFJCcmVha3BvaW50cygpCisgICAgX3NhdmVVUkxCcmVha3BvaW50cygp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5feGhyQnJlYWtwb2ludHNTZXR0aW5nLnZhbHVl
ID0gdGhpcy5feGhyQnJlYWtwb2ludHMubWFwKChicmVha3BvaW50KSA9PiBicmVha3BvaW50LnNl
cmlhbGl6YWJsZUluZm8pOworICAgICAgICB0aGlzLl91cmxCcmVha3BvaW50c1NldHRpbmcudmFs
dWUgPSB0aGlzLl91cmxCcmVha3BvaW50cy5tYXAoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9pbnQu
c2VyaWFsaXphYmxlSW5mbyk7CiAgICAgfQogCiAgICAgX2RvbUJyZWFrcG9pbnREaXNhYmxlZFN0
YXRlRGlkQ2hhbmdlKGV2ZW50KQpAQCAtNTYxLDE1ICs1ODYsMTUgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIHRoaXMuX3NhdmVFdmVudEJyZWFrcG9pbnRzKCk7CiAgICAgfQogCi0gICAgX3hockJyZWFr
cG9pbnREaXNhYmxlZFN0YXRlRGlkQ2hhbmdlKGV2ZW50KQorICAgIF91cmxCcmVha3BvaW50RGlz
YWJsZWRTdGF0ZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50
ID0gZXZlbnQudGFyZ2V0OwogCiAgICAgICAgIGlmIChicmVha3BvaW50ID09PSB0aGlzLl9hbGxS
ZXF1ZXN0c0JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9p
bnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwogCi0gICAgICAg
IHRoaXMuX3VwZGF0ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIHRoaXMuX3Nh
dmVYSFJCcmVha3BvaW50cygpOworICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVha3BvaW50KGJy
ZWFrcG9pbnQpOworICAgICAgICB0aGlzLl9zYXZlVVJMQnJlYWtwb2ludHMoKTsKICAgICB9CiAK
ICAgICBfY2hpbGRGcmFtZVdhc1JlbW92ZWQoZXZlbnQpCkBAIC02NDgsNiArNjczLDYgQEAgV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50ID0gewogICAgIERPTUJyZWFrcG9pbnRSZW1vdmVkOiAi
ZG9tLWRlYnVnZ2VyLW1hbmFnZXItZG9tLWJyZWFrcG9pbnQtcmVtb3ZlZCIsCiAgICAgRXZlbnRC
cmVha3BvaW50QWRkZWQ6ICJkb20tZGVidWdnZXItbWFuYWdlci1ldmVudC1icmVha3BvaW50LWFk
ZGVkIiwKICAgICBFdmVudEJyZWFrcG9pbnRSZW1vdmVkOiAiZG9tLWRlYnVnZ2VyLW1hbmFnZXIt
ZXZlbnQtYnJlYWtwb2ludC1yZW1vdmVkIiwKLSAgICBYSFJCcmVha3BvaW50QWRkZWQ6ICJkb20t
ZGVidWdnZXItbWFuYWdlci14aHItYnJlYWtwb2ludC1hZGRlZCIsCi0gICAgWEhSQnJlYWtwb2lu
dFJlbW92ZWQ6ICJkb20tZGVidWdnZXItbWFuYWdlci14aHItYnJlYWtwb2ludC1yZW1vdmVkIiwK
KyAgICBVUkxCcmVha3BvaW50QWRkZWQ6ICJkb20tZGVidWdnZXItbWFuYWdlci11cmwtYnJlYWtw
b2ludC1hZGRlZCIsCisgICAgVVJMQnJlYWtwb2ludFJlbW92ZWQ6ICJkb20tZGVidWdnZXItbWFu
YWdlci11cmwtYnJlYWtwb2ludC1yZW1vdmVkIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dl
ck1hbmFnZXIuanMKaW5kZXggODU2MjgxNmIxZDk3MTg4ODNkYWMzMmQ4NWI0OTIxMzJmMWMxOGE2
OC4uOTNmZmVkNzkwNGEwZjEwNDRkNjAzZWY2Y2Q0OTM3YWVmZDkzN2Q5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtODU4LDYgKzg1OCw4IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgcmV0dXJuIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5FdmVudExpc3RlbmVy
OwogICAgICAgICBjYXNlIERlYnVnZ2VyQWdlbnQuUGF1c2VkUmVhc29uLkV4Y2VwdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uRXhjZXB0aW9u
OworICAgICAgICBjYXNlIERlYnVnZ2VyQWdlbnQuUGF1c2VkUmVhc29uLkZldGNoOgorICAgICAg
ICAgICAgcmV0dXJuIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5GZXRjaDsKICAgICAg
ICAgY2FzZSBEZWJ1Z2dlckFnZW50LlBhdXNlZFJlYXNvbi5QYXVzZU9uTmV4dFN0YXRlbWVudDoK
ICAgICAgICAgICAgIHJldHVybiBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uUGF1c2VP
bk5leHRTdGF0ZW1lbnQ7CiAgICAgICAgIGNhc2UgRGVidWdnZXJBZ2VudC5QYXVzZWRSZWFzb24u
VGltZXI6CkBAIC0xMzg5LDYgKzEzOTEsNyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFz
b24gPSB7CiAgICAgRE9NOiAiRE9NIiwKICAgICBFdmVudExpc3RlbmVyOiAiZXZlbnQtbGlzdGVu
ZXIiLAogICAgIEV4Y2VwdGlvbjogImV4Y2VwdGlvbiIsCisgICAgRmV0Y2g6ICJmZXRjaCIsCiAg
ICAgUGF1c2VPbk5leHRTdGF0ZW1lbnQ6ICJwYXVzZS1vbi1uZXh0LXN0YXRlbWVudCIsCiAgICAg
VGltZXI6ICJ0aW1lciIsCiAgICAgWEhSOiAieGhyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBiMWEyZmM3ZTEzNThlMDYyMzZmZWVlZDk5
YmYwZDFmM2Y4ZmIzNmQ1Li5jNTUxMjViYzE4NGJlYzFjYjlmMzQ2NGFhYWVkYmZiYmRiM2ZhYjg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC0yMjQsMTAgKzIyNCwxMCBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvVHlwZVRva2VuVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvVHlwZVRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9UeXBlVHJlZVZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL1VSTEJyZWFrcG9pbnRQb3BvdmVyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1ZhcmlhYmxlcy5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcu
Y3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1hIUkJyZWFrcG9p
bnRQb3BvdmVyLmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Y
SFJCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9y
RHJhZ1RvQWRqdXN0TnVtYmVyQ29udHJvbGxlci5jc3MiPgpAQCAtNDUzLDkgKzQ1Myw5IEBACiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBlRGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9VUkxCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL1dlYlNvY2tldFJlc291cmNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL1dyYXBwZWRQcm9taXNlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL1hIUkJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9BdWRpdFRlc3RCYXNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0F1
ZGl0VGVzdENhc2UuanMiPjwvc2NyaXB0PgpAQCAtODA3LDEyICs4MDcsMTIgQEAKICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVHlwZVRva2VuVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1R5cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1VSTEJyZWFrcG9pbnRQb3BvdmVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9XZWJTb2NrZXREYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9XZWJTb2NrZXRSZXNvdXJjZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvV29ya2VyVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9YSFJCcmVha3BvaW50UG9wb3Zlci5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IlZpZXdzL1hIUkJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyI+PC9z
Y3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250
cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ0
MzNkNDhjZTQ5NmQwZmM0ODJkOWI1NDM2MThhYWY5N2I4ZmFmOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50
LmpzCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5VUkxCcmVha3BvaW50ID0gY2xh
c3MgVVJMQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHR5
cGUsIHVybCwgZGlzYWJsZWQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRo
aXMuX3R5cGUgPSB0eXBlIHx8IFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0OworICAgICAgICB0
aGlzLl91cmwgPSB1cmwgfHwgIiI7CisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQg
fHwgZmFsc2U7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdHlwZSgpIHsgcmV0
dXJuIHRoaXMuX3R5cGU7IH0KKyAgICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9CisK
KyAgICBnZXQgZGlzYWJsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVk
OworICAgIH0KKworICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9kaXNhYmxlZCA9PT0gZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKKworICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRD
aGFuZ2UpOworICAgIH0KKworICAgIGdldCBzZXJpYWxpemFibGVJbmZvKCkKKyAgICB7CisgICAg
ICAgIGxldCBpbmZvID0ge3R5cGU6IHRoaXMuX3R5cGUsIHVybDogdGhpcy5fdXJsfTsKKyAgICAg
ICAgaWYgKHRoaXMuX2Rpc2FibGVkKQorICAgICAgICAgICAgaW5mby5kaXNhYmxlZCA9IHRydWU7
CisKKyAgICAgICAgcmV0dXJuIGluZm87CisgICAgfQorCisgICAgc2F2ZUlkZW50aXR5VG9Db29r
aWUoY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llWyJ1cmwtYnJlYWtwb2ludC11cmwiXSA9
IHRoaXMuX3VybDsKKyAgICB9Cit9OworCitXSS5VUkxCcmVha3BvaW50LkV2ZW50ID0geworICAg
IERpc2FibGVkU3RhdGVEaWRDaGFuZ2U6ICJ1cmwtYnJlYWtwb2ludC1kaXNhYmxlZC1zdGF0ZS1k
aWQtY2hhbmdlIiwKKyAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAidXJsLWJyZWFrcG9pbnQt
cmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCit9OworCitXSS5VUkxCcmVha3BvaW50LlR5cGUg
PSB7CisgICAgVGV4dDogInRleHQiLAorICAgIFJlZ3VsYXJFeHByZXNzaW9uOiAicmVnZXgiLAor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9YSFJCcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1hIUkJyZWFrcG9pbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVi
N2FjNGYwMjk0MGVhNGIyZmQ3YTk1ZDQ2YTNhYWNhNzc5MGZiNDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1hIUkJyZWFrcG9pbnQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw4MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuWEhSQnJlYWtwb2ludCA9IGNsYXNzIFhIUkJyZWFrcG9p
bnQgZXh0ZW5kcyBXSS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3Rvcih0eXBlLCB1cmwsIGRpc2Fi
bGVkKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl90eXBlID0gdHlw
ZSB8fCBXSS5YSFJCcmVha3BvaW50LlR5cGUuVGV4dDsKLSAgICAgICAgdGhpcy5fdXJsID0gdXJs
IHx8ICIiOwotICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwotICAg
IH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBl
OyB9Ci0gICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQotCi0gICAgZ2V0IGRpc2Fi
bGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKLSAgICB9Ci0KLSAg
ICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJs
ZWQgPT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gZGlzYWJsZWQ7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuWEhSQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlKTsKLSAgICB9
Ci0KLSAgICBnZXQgc2VyaWFsaXphYmxlSW5mbygpCi0gICAgewotICAgICAgICBsZXQgaW5mbyA9
IHt0eXBlOiB0aGlzLl90eXBlLCB1cmw6IHRoaXMuX3VybH07Ci0gICAgICAgIGlmICh0aGlzLl9k
aXNhYmxlZCkKLSAgICAgICAgICAgIGluZm8uZGlzYWJsZWQgPSB0cnVlOwotCi0gICAgICAgIHJl
dHVybiBpbmZvOwotICAgIH0KLQotICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKLSAg
ICB7Ci0gICAgICAgIGNvb2tpZVtXSS5YSFJCcmVha3BvaW50LlVSTENvb2tpZUtleV0gPSB0aGlz
Ll91cmw7Ci0gICAgfQotfTsKLQotV0kuWEhSQnJlYWtwb2ludC5VUkxDb29raWVLZXkgPSAieGhy
LWJyZWFrcG9pbnQtdXJsIjsKLQotV0kuWEhSQnJlYWtwb2ludC5FdmVudCA9IHsKLSAgICBEaXNh
YmxlZFN0YXRlRGlkQ2hhbmdlOiAieGhyLWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNo
YW5nZSIsCi0gICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogInhoci1icmVha3BvaW50LXJlc29s
dmVkLXN0YXRlLWRpZC1jaGFuZ2UiLAotfTsKLQotV0kuWEhSQnJlYWtwb2ludC5UeXBlID0gewot
ICAgIFRleHQ6ICJ0ZXh0IiwKLSAgICBSZWd1bGFyRXhwcmVzc2lvbjogInJlZ2V4IiwKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggZWY4
MzI2YWFkYWRlMGJmYTE5MGQxYjdkMzFlNGQxMjJhNDMyOTgyNC4uZWU0MjgyYjY3MTMwMGE0ZDZh
Y2ZhYmVlMjQzOTE5MmU4MzA5ZWJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjA0LDkgKzIwNCw5IEBACiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9UZXh0UmFuZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
VGltZWxpbmVNYXJrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVGlt
ZWxpbmVSZWNvcmRpbmcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVVJM
QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJTb2Nr
ZXRSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVk
UHJvbWlzZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9YSFJCcmVha3Bv
aW50LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQXVkaXRUZXN0QmFz
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BdWRpdFRlc3RDYXNlLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggZTdiM2Ri
OTJkZDJiODM5NDA2Yzc4NzBhNzUzMTU4MGNhZWRlM2ExNy4uMDk4Y2ZmOTU2YWEyN2NjMjRhNTcx
ZjY3MGUyNzkxMzk4MmU1NWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMK
QEAgLTM2LDEyICszNiwxMiBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVn
Z2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
QnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwogICAgICAgICBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuRE9NQnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMp
OwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50QWRkZWQsIHRoaXMuX2JyZWFrcG9p
bnRBZGRlZCwgdGhpcyk7Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5YSFJCcmVha3BvaW50QWRkZWQsIHRo
aXMuX2JyZWFrcG9pbnRBZGRlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3Bv
aW50QWRkZWQsIHRoaXMuX2JyZWFrcG9pbnRBZGRlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJy
ZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhpcyk7CiAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQs
IHRoaXMpOwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50UmVtb3ZlZCwgdGhpcy5f
YnJlYWtwb2ludFJlbW92ZWQsIHRoaXMpOwotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuWEhSQnJlYWtwb2lu
dFJlbW92ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlVSTEJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhpcyk7
CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0
aGlzLl9zY3JpcHRBZGRlZCwgdGhpcyk7CkBAIC0yMzMsNyArMjMzLDcgQEAgV0kuRGVidWdnZXJT
aWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmln
YXRpb25TaWRlYmEKIAogICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRl
ZCkgewogICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxSZXF1ZXN0c0JyZWFrcG9p
bnQudmFsdWUpCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZFhIUkJy
ZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2ludCk7Cisg
ICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZFVSTEJyZWFrcG9pbnQoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2ludCk7CiAKICAgICAgICAgICAg
IGZvciAobGV0IGV2ZW50QnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuZXZlbnRC
cmVha3BvaW50cykKICAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGV2ZW50QnJl
YWtwb2ludCk7CkBAIC0yNDQsOCArMjQ0LDggQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBj
bGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAg
ICAgICAgICAgIGZvciAobGV0IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50IG9mIFdJLmRvbU1hbmFn
ZXIuZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJy
ZWFrcG9pbnQoZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBmb3IgKGxl
dCB4aHJCcmVha3BvaW50cyBvZiBXSS5kb21EZWJ1Z2dlck1hbmFnZXIueGhyQnJlYWtwb2ludHMp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludCh4aHJCcmVha3BvaW50cyk7Cisg
ICAgICAgICAgICBmb3IgKGxldCB1cmxCcmVha3BvaW50cyBvZiBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIudXJsQnJlYWtwb2ludHMpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludCh1
cmxCcmVha3BvaW50cyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5h
Z2VyLnBhdXNlZCkKQEAgLTQwMiw4ICs0MDIsOCBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9
IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQog
CiAgICAgICAgIGlmIChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KQog
ICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChicmVh
a3BvaW50KTsKLSAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLlhIUkJy
ZWFrcG9pbnQpCi0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkWEhSQnJlYWtw
b2ludChicmVha3BvaW50KTsKKyAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLlVSTEJyZWFrcG9pbnQpCisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRk
VVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCkBAIC00
OTIsOCArNDkyLDggQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNp
ZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgICAgICAgICAgaWYg
KGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAgICAgICBwYXJlbnRUcmVlRWxl
bWVudCA9IGdldERPTU5vZGVUcmVlRWxlbWVudChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIubm9k
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLlhIUkJyZWFr
cG9pbnQpIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gV0kuWEhSQnJlYWtwb2ludFRyZWVF
bGVtZW50OworICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5VUkxC
cmVha3BvaW50KSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IFdJLlVSTEJyZWFrcG9pbnRU
cmVlRWxlbWVudDsKIAogICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQpIHsKICAgICAgICAgICAgICAgICBvcHRp
b25zLmNsYXNzTmFtZSA9IFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkFzc2VydGlvbkljb25TdHls
ZUNsYXNzTmFtZTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9
IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQog
ICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlVHJlZUVsZW1lbnQK
ICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkV2ZW50
QnJlYWtwb2ludFRyZWVFbGVtZW50Ci0gICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5j
ZW9mIFdJLlhIUkJyZWFrcG9pbnRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHx8IHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50KQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CkBAIC0xMDExLDcgKzEwMTEsNyBA
QCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4
dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkg
PT4gdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCwK
ICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50IGluc3RhbmNlb2Yg
V0kuRE9NTm9kZVRyZWVFbGVtZW50LAogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4g
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQsCi0gICAg
ICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlhI
UkJyZWFrcG9pbnRUcmVlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+
IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LAogICAg
ICAgICAgICAgXTsKIAogICAgICAgICAgICAgbGV0IGFSYW5rID0gcmFua0Z1bmN0aW9ucy5maW5k
SW5kZXgoKHJhbmtGdW5jdGlvbikgPT4gcmFua0Z1bmN0aW9uKGEpKTsKQEAgLTEyNzksMjYgKzEy
NzksMjcgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQ
YW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgICAgIHRoaXMuX3BhdXNl
UmVhc29uR3JvdXAucm93cyA9IFtldmVudEJyZWFrcG9pbnRSb3ddOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKKyAgICAgICAgY2FzZSBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24u
RmV0Y2g6CiAgICAgICAgIGNhc2UgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLlhIUjoK
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0
ZWQpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocGF1c2VEYXRhLCAiRXhwZWN0ZWQgWEhS
IGJyZWFrcG9pbnQgZGF0YSwgYnV0IGZvdW5kIG5vbmUuIik7CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChwYXVzZURhdGEsICJFeHBlY3RlZCBVUkwgYnJlYWtwb2ludCBkYXRhLCBidXQgZm91
bmQgbm9uZS4iKTsKICAgICAgICAgICAgIGlmIChwYXVzZURhdGEpIHsKICAgICAgICAgICAgICAg
ICBpZiAocGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IHhockJyZWFrcG9pbnQgPSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIueGhyQnJlYWtwb2ludEZvclVS
TChwYXVzZURhdGEuYnJlYWtwb2ludFVSTCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHhockJyZWFrcG9pbnQsICJFeHBlY3RlZCBYSFIgYnJlYWtwb2ludCBmb3IgVVJMLiIs
IHBhdXNlRGF0YS5icmVha3BvaW50VVJMKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHVybEJy
ZWFrcG9pbnQgPSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIudXJsQnJlYWtwb2ludEZvclVSTChwYXVz
ZURhdGEuYnJlYWtwb2ludFVSTCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHVybEJyZWFrcG9pbnQsICJFeHBlY3RlZCBVUkwgYnJlYWtwb2ludCBmb3IgVVJMLiIsIHBhdXNl
RGF0YS5icmVha3BvaW50VVJMKTsKIAogICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXVzZVJl
YXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUodHJ1ZSk7CiAK
LSAgICAgICAgICAgICAgICAgICAgbGV0IHhockJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBX
SS5YSFJCcmVha3BvaW50VHJlZUVsZW1lbnQoeGhyQnJlYWtwb2ludCwgeworICAgICAgICAgICAg
ICAgICAgICBsZXQgdXJsQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLlVSTEJyZWFrcG9p
bnRUcmVlRWxlbWVudCh1cmxCcmVha3BvaW50LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
bGFzc05hbWU6IFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlBhdXNlZEJyZWFrcG9pbnRJY29uU3R5
bGVDbGFzc05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmco
IlRyaWdnZXJlZCBYSFIgQnJlYWtwb2ludCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGU6IFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkgPyBXSS5V
SVN0cmluZygiVHJpZ2dlcmVkIFVSTCBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiVHJpZ2dl
cmVkIFhIUiBCcmVha3BvaW50IiksCiAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgICAgICBsZXQgeGhyQnJlYWtwb2ludFJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblJv
dzsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBl
bmRDaGlsZCh4aHJCcmVha3BvaW50VHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICB4
aHJCcmVha3BvaW50Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRS
b3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3BhdXNlUmVhc29uVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodXJsQnJlYWtwb2ludFRyZWVFbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdXJsQnJlYWtwb2ludFJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuZWxlbWVudCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UZXh0Um93LnRleHQgPSBwYXVzZURhdGEudXJs
OwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvbkdyb3VwLnJvd3MgPSBbeGhy
QnJlYWtwb2ludFJvdywgdGhpcy5fcGF1c2VSZWFzb25UZXh0Um93XTsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fcGF1c2VSZWFzb25Hcm91cC5yb3dzID0gW3VybEJyZWFrcG9pbnRSb3csIHRo
aXMuX3BhdXNlUmVhc29uVGV4dFJvd107CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwgPT09
ICIiLCAiU2hvdWxkIGJlIHRoZSBBbGwgUmVxdWVzdHMgYnJlYWtwb2ludCB3aGljaCBoYXMgYW4g
ZW1wdHkgVVJMIik7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVGV4dFJv
dy50ZXh0ID0gV0kuVUlTdHJpbmcoIlJlcXVlc3Rpbmc6ICVzIikuZm9ybWF0KHBhdXNlRGF0YS51
cmwpOwpAQCAtMTQ0OCwxNSArMTQ0OSwxNSBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNs
YXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogCiAg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV0kuVUlTdHJpbmcoIkFs
bCBSZXF1ZXN0cyIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKGFsbFJlcXVlc3RzQnJl
YWtwb2ludFNob3duKQotICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlWEhSQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVh
a3BvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92
ZVVSTEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2lu
dCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZFhIUkJyZWFrcG9pbnQo
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2ludCk7CisgICAgICAgICAg
ICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRVUkxCcmVha3BvaW50KFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0sIGFsbFJlcXVlc3RzQnJlYWtwb2ludFNob3duKTsKIAotICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiWEhSIEJyZWFrcG9pbnRcdTIw
MjYiKSwgKCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdJLlhIUkJy
ZWFrcG9pbnRQb3BvdmVyKHRoaXMpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNVUkxCcmVha3BvaW50cygpID8gV0kuVUlT
dHJpbmcoIlVSTCBCcmVha3BvaW50XHUyMDI2IikgOiBXSS5VSVN0cmluZygiWEhSIEJyZWFrcG9p
bnRcdTIwMjYiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdJ
LlVSTEJyZWFrcG9pbnRQb3BvdmVyKHRoaXMpOwogICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hv
dyhldmVudC50YXJnZXQuZWxlbWVudCwgW1dJLlJlY3RFZGdlLk1BWF9ZLCBXSS5SZWN0RWRnZS5N
SU5fWSwgV0kuUmVjdEVkZ2UuTUFYX1hdKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCA0Nzc0ODBiZmM1Y2M0OGE5
N2Q0ODg3OWNkZjc3OGRhNTcxMzk0YWFlLi5jNTNkZjRhZTNhNjM3YjQ0NWM3YmExYzYwMDMwOTRm
Mzc5ZjMyMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTY0
Niw3ICs2NDYsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICAgICAgfHwgdHJl
ZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5JZGxlVHJlZUVsZW1lbnQKICAgICAgICAgICAgIHx8IHRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50CiAgICAgICAg
ICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVt
ZW50Ci0gICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlhIUkJyZWFrcG9p
bnRUcmVlRWxlbWVudAorICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5V
UkxCcmVha3BvaW50VHJlZUVsZW1lbnQKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV0kuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0eXBlb2Yg
dHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09ICJzdHJpbmciCiAgICAgICAgICAgICB8
fCB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFN0cmluZzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRQb3BvdmVyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1VSTEJyZWFrcG9pbnRQb3BvdmVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTEyMjBjZjA4ZmI3NDY0
MGVjZDA4M2QzZDcwODdkZWNkODc2ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFBvcG92ZXIuY3NzCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisucG9wb3ZlciAudXJsLWJyZWFrcG9pbnQtY29u
dGVudCB7CisgICAgcGFkZGluZzogNXB4OworICAgIG1hcmdpbjogMnB4OworfQorCisucG9wb3Zl
ciAudXJsLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3JhcHBlciB7CisgICAgbWFyZ2lu
LXRvcDogNHB4OworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleC1kaXJlY3Rpb246IHJvdzsK
K30KKworLnBvcG92ZXIgLnVybC1icmVha3BvaW50LWNvbnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIg
PiAuZWRpdG9yIHsKKyAgICB3aWR0aDogMTgwcHg7CisgICAgcGFkZGluZzogNHB4IDAgMnB4IDA7
CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7CisgICAgYm9yZGVyOiAxcHggc29s
aWQgaHNsKDAsIDAlLCA3OCUpOworICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtY29s
b3ItY29kZSk7CisKKyAgICAtLWVkaXRvci1tYXJnaW4tc3RhcnQ6IDRweDsKK30KKworYm9keVtk
aXI9bHRyXSAucG9wb3ZlciAudXJsLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3JhcHBl
ciA+IC5lZGl0b3IgeworICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1lZGl0b3ItbWFyZ2luLXN0YXJ0
KTsKK30KKworYm9keVtkaXI9cnRsXSAucG9wb3ZlciAudXJsLWJyZWFrcG9pbnQtY29udGVudCA+
IC5lZGl0b3Itd3JhcHBlciA+IC5lZGl0b3IgeworICAgIG1hcmdpbi1yaWdodDogdmFyKC0tZWRp
dG9yLW1hcmdpbi1zdGFydCk7Cit9CisKKy5wb3BvdmVyIC51cmwtYnJlYWtwb2ludC1jb250ZW50
ID4gLmVkaXRvci13cmFwcGVyID4gLmVkaXRvciA+IC5Db2RlTWlycm9yIHsKKyAgICB3aWR0aDog
Y2FsYygxMDAlIC0gMnB4KTsKKyAgICBoZWlnaHQ6IGF1dG87Cit9CisKKy5wb3BvdmVyIC51cmwt
YnJlYWtwb2ludC1jb250ZW50ID4gLmVkaXRvci13cmFwcGVyID4gLmVkaXRvciA+IC5Db2RlTWly
cm9yLXNjcm9sbCB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJweCk7CisgICAgb3ZlcmZsb3c6
IGhpZGRlbjsKK30KKworQG1lZGlhIChwcmVmZXJzLWRhcmstaW50ZXJmYWNlKSB7CisgICAgLnBv
cG92ZXIgLnVybC1icmVha3BvaW50LWNvbnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9y
IHsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB1bnNldDsKKyAgICAgICAgYm9yZGVyLWNv
bG9yOiB2YXIoLS10ZXh0LWNvbG9yLXF1YXRlcm5hcnkpOworICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRQ
b3BvdmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJM
QnJlYWtwb2ludFBvcG92ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEyMTQzZWQxODI0ZTE3YWI2OTBhMDlj
OGJiZGExMGQwM2VkOWE5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRQb3BvdmVyLmpzCkBAIC0wLDAgKzEs
MTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV0kuVVJMQnJlYWtwb2ludFBvcG92ZXIgPSBjbGFzcyBVUkxC
cmVha3BvaW50UG9wb3ZlciBleHRlbmRzIFdJLlBvcG92ZXIKK3sKKyAgICBjb25zdHJ1Y3Rvcihk
ZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGRlbGVnYXRlKTsKKworICAgICAgICB0aGlz
Ll9icmVha3BvaW50ID0gbnVsbDsKKworICAgICAgICB0aGlzLl9jb2RlTWlycm9yID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX3ByZWZl
cnJlZEVkZ2VzID0gbnVsbDsKKworICAgICAgICB0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXIgPSB0
aGlzLl9wcmVzZW50T3ZlclRhcmdldEVsZW1lbnQuYmluZCh0aGlzKTsKKyAgICB9CisKKyAgICAv
LyBQdWJsaWMKKworICAgIGdldCBicmVha3BvaW50KCkgeyByZXR1cm4gdGhpcy5fYnJlYWtwb2lu
dDsgfQorCisgICAgc2hvdyh0YXJnZXRFbGVtZW50LCBwcmVmZXJyZWRFZGdlcykKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQgPSB0YXJnZXRFbGVtZW50OworICAgICAgICB0aGlz
Ll9wcmVmZXJyZWRFZGdlcyA9IHByZWZlcnJlZEVkZ2VzOworCisgICAgICAgIGxldCBjb250ZW50
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBjb250ZW50
RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ1cmwtYnJlYWtwb2ludC1jb250ZW50Iik7CisKKyAgICAg
ICAgbGV0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGxh
YmVsLmNsYXNzTGlzdC5hZGQoImxhYmVsIik7CisgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0g
V0kuVUlTdHJpbmcoIkJyZWFrIG9uIHJlcXVlc3Qgd2l0aCBVUkw6Iik7CisKKyAgICAgICAgbGV0
IGVkaXRvcldyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
ZWRpdG9yV3JhcHBlci5jbGFzc0xpc3QuYWRkKCJlZGl0b3Itd3JhcHBlciIpOworCisgICAgICAg
IHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0
Iik7CisKKyAgICAgICAgbGV0IGNyZWF0ZU9wdGlvbiA9ICh0ZXh0LCB2YWx1ZSkgPT4geworICAg
ICAgICAgICAgbGV0IG9wdGlvbkVsZW1lbnQgPSB0aGlzLl90eXBlU2VsZWN0RWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7CisgICAgICAgICAgICBv
cHRpb25FbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKKyAgICAgICAgICAgIG9wdGlvbkVsZW1l
bnQudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfTsKKworICAgICAgICBjcmVhdGVPcHRpb24oV0ku
VUlTdHJpbmcoIkNvbnRhaW5pbmciKSwgV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRleHQpOworICAg
ICAgICBjcmVhdGVPcHRpb24oV0kuVUlTdHJpbmcoIk1hdGNoaW5nIiksIFdJLlVSTEJyZWFrcG9p
bnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lvbik7CisKKyAgICAgICAgdGhpcy5fdHlwZVNlbGVjdEVs
ZW1lbnQudmFsdWUgPSBXSS5VUkxCcmVha3BvaW50LlR5cGUuVGV4dDsKKyAgICAgICAgdGhpcy5f
dHlwZVNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICB0aGlzLl91cGRhdGVFZGl0b3IoKTsKKyAgICAgICAgICAgIHRoaXMuX2Nv
ZGVNaXJyb3IuZm9jdXMoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZWRpdG9yV3JhcHBlci5h
cHBlbmQodGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQsIHRoaXMuX2NyZWF0ZUVkaXRvcigpKTsKKyAg
ICAgICAgY29udGVudEVsZW1lbnQuYXBwZW5kKGxhYmVsLCBlZGl0b3JXcmFwcGVyKTsKKworICAg
ICAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50RWxlbWVudDsKKworICAgICAgICB0aGlzLl9wcmVz
ZW50T3ZlclRhcmdldEVsZW1lbnQoKTsKKyAgICB9CisKKyAgICBkaXNtaXNzKCkKKyAgICB7Cisg
ICAgICAgIGxldCB0eXBlID0gdGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQudmFsdWU7CisgICAgICAg
IGxldCB1cmwgPSB0aGlzLl9jb2RlTWlycm9yLmdldFZhbHVlKCk7CisgICAgICAgIGlmICh0eXBl
ICYmIHVybCkKKyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBuZXcgV0kuVVJMQnJlYWtw
b2ludCh0eXBlLCB1cmwpOworCisgICAgICAgIHN1cGVyLmRpc21pc3MoKTsKKyAgICB9CisKKyAg
ICAvLyBQcml2YXRlCisKKyAgICBfY3JlYXRlRWRpdG9yKCkKKyAgICB7CisgICAgICAgIGxldCBl
ZGl0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVk
aXRvckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZWRpdG9yIik7CisKKyAgICAgICAgdGhpcy5fY29k
ZU1pcnJvciA9IFdJLkNvZGVNaXJyb3JFZGl0b3IuY3JlYXRlKGVkaXRvckVsZW1lbnQsIHsKKyAg
ICAgICAgICAgIGxpbmVXcmFwcGluZzogZmFsc2UsCisgICAgICAgICAgICBtYXRjaEJyYWNrZXRz
OiBmYWxzZSwKKyAgICAgICAgICAgIHNjcm9sbGJhclN0eWxlOiBudWxsLAorICAgICAgICAgICAg
dmFsdWU6ICIiLAorICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmFkZEtl
eU1hcCh7CisgICAgICAgICAgICAiRW50ZXIiOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhp
cy5kaXNtaXNzKCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIkVzYyI6ICgpID0+IHsK
KyAgICAgICAgICAgICAgICB0aGlzLmRpc21pc3MoKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
IH0pOworCisgICAgICAgIHRoaXMuX3VwZGF0ZUVkaXRvcigpOworCisgICAgICAgIHJldHVybiBl
ZGl0b3JFbGVtZW50OworICAgIH0KKworICAgIF91cGRhdGVFZGl0b3IoKQorICAgIHsKKyAgICAg
ICAgbGV0IHBsYWNlaG9sZGVyOworICAgICAgICBsZXQgbWltZVR5cGU7CisgICAgICAgIGlmICh0
aGlzLl90eXBlU2VsZWN0RWxlbWVudC52YWx1ZSA9PT0gV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRl
eHQpIHsKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gV0kuVUlTdHJpbmcoIlRleHQiKTsKKyAg
ICAgICAgICAgIG1pbWVUeXBlID0gInRleHQvcGxhaW4iOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcGxhY2Vob2xkZXIgPSBXSS5VSVN0cmluZygiUmVndWxhciBFeHByZXNzaW9uIik7
CisgICAgICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L3gtcmVnZXgiOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24oIm1vZGUiLCBtaW1lVHlwZSk7CisgICAg
ICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJwbGFjZWhvbGRlciIsIHBsYWNlaG9sZGVy
KTsKKyAgICB9CisKKyAgICBfcHJlc2VudE92ZXJUYXJnZXRFbGVtZW50KCkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fdGFyZ2V0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBsZXQgdGFyZ2V0RnJhbWUgPSBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl90
YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAgdGhpcy5wcmVz
ZW50KHRhcmdldEZyYW1lLCB0aGlzLl9wcmVmZXJyZWRFZGdlcyk7CisKKyAgICAgICAgLy8gQ29k
ZU1pcnJvciBuZWVkcyBhIHJlZnJlc2ggYWZ0ZXIgdGhlIHBvcG92ZXIgZGlzcGxheXMsIHRvIGxh
eW91dCwgb3RoZXJ3aXNlIGl0IGRvZXNuJ3QgYXBwZWFyLgorICAgICAgICBzZXRUaW1lb3V0KCgp
ID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOworICAgICAgICAg
ICAgdGhpcy5fY29kZU1pcnJvci5mb2N1cygpOworICAgICAgICAgICAgdGhpcy51cGRhdGUoKTsK
KyAgICAgICAgfSwgMCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NWQ5YWU2MDJlYWVkYjdkMGNkOThmMjE2MjI4Nzcy
YWM2MDEwM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCkBAIC0wLDAgKzEsMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisuYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlIHsKKyAgICBmb250LWZh
bWlseTogTWVubG8sIG1vbm9zcGFjZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVl
RWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmNkNDNjYTk3MDkzNDRmZGVhMTJjY2VjNTAzNTkyYzk1
ZjhkNzJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0wLDAgKzEsMTQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgVVJMQnJl
YWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAg
Y29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZSwgdGl0bGV9ID0ge30pCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuVVJMQnJlYWtw
b2ludCk7CisKKyAgICAgICAgaWYgKCFjbGFzc05hbWUpCisgICAgICAgICAgICBjbGFzc05hbWUg
PSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVDbGFzc05hbWU7
CisKKyAgICAgICAgbGV0IHN1YnRpdGxlOworICAgICAgICBpZiAoIXRpdGxlKSB7CisgICAgICAg
ICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJVUkwiKTsKKyAgICAgICAgICAgIGlmIChicmVha3Bv
aW50LnR5cGUgPT09IFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0KQorICAgICAgICAgICAgICAg
IHN1YnRpdGxlID0gZG91YmxlUXVvdGVkU3RyaW5nKGJyZWFrcG9pbnQudXJsKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9ICIvIiArIGJyZWFrcG9pbnQudXJs
ICsgIi8iOworICAgICAgICB9CisKKyAgICAgICAgc3VwZXIoWyJicmVha3BvaW50IiwgInVybCIs
IGNsYXNzTmFtZV0sIHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgdGhp
cy5zdGF0dXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgdGhpcy5z
dGF0dXMuY2xhc3NMaXN0LmFkZCgic3RhdHVzLWltYWdlIiwgInJlc29sdmVkIik7CisKKyAgICAg
ICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOworCisgICAgICAgIGJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3Rh
dGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7CisKKyAgICAgICAgdGhpcy5f
dXBkYXRlU3RhdHVzKCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBvbmF0dGFj
aCgpCisgICAgeworICAgICAgICBzdXBlci5vbmF0dGFjaCgpOworCisgICAgICAgIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRG
b2N1c2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOworICAg
ICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IHRoaXMuX3N0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bi5iaW5kKHRoaXMpOworCisgICAgICAgIHRoaXMuc3RhdHVz
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRD
bGlja2VkKTsKKyAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0
aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOworICAgICAgICB0aGlzLnN0YXR1
cy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxl
bWVudE1vdXNlRG93bik7CisgICAgfQorCisgICAgb25kZXRhY2goKQorICAgIHsKKyAgICAgICAg
c3VwZXIub25kZXRhY2goKTsKKworICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7CisgICAg
ICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRT
dGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKKyAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3Vz
ZURvd24pOworCisgICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9
IG51bGw7CisgICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IG51
bGw7CisgICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gbnVs
bDsKKyAgICB9CisKKyAgICBvbmRlbGV0ZSgpCisgICAgeworICAgICAgICAvLyBXZSBzZXQgdGhp
cyBmbGFnIHNvIHRoYXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcworICAgICAg
ICAvLyBCcmVha3BvaW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRlbGV0
ZWQgZnJvbQorICAgICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0c2lk
ZSBpdCAoZS5nLiBUZXh0RWRpdG9yKS4KKyAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxldGVL
ZXlib2FyZFNob3J0Y3V0ID0gdHJ1ZTsKKworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlVVJMQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgb25lbnRlcigpCisgICAgeworICAgICAgICB0aGlzLl90
b2dnbGVCcmVha3BvaW50KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG9u
c3BhY2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRN
ZW51LCBldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXByZXNl
bnRlZE9iamVjdDsKKyAgICAgICAgbGV0IGxhYmVsID0gYnJlYWtwb2ludC5kaXNhYmxlZCA/IFdJ
LlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpIDogV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJl
YWtwb2ludCIpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxhYmVsLCB0aGlzLl90
b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOworCisgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZFNlcGFyYXRvcigpOworCisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJp
bmcoIkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tl
ZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKKyAgICB9
CisKKyAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVudCkKKyAgICB7CisgICAgICAg
IC8vIFByZXZlbnQgdHJlZSBvdXRsaW5lIGZvY3VzLgorICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKKyAgICB9CisKKyAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50
KQorICAgIHsKKyAgICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1lbnQgc2VsZWN0aW9uLgorICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9CisKKyAgICBfdG9nZ2xlQnJlYWtw
b2ludCgpCisgICAgeworICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkID0g
IXRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7CisgICAgfQorCisgICAgX3VwZGF0ZVN0
YXR1cygpCisgICAgeworICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKCJkaXNh
YmxlZCIsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOworICAgIH0KK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVh
a3BvaW50UG9wb3Zlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9YSFJCcmVha3BvaW50UG9wb3Zlci5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRmMDI5OWQwZGY4Zjg3NDcxN2Y1MWJhZGFjM2U2N2I5ZjUyZDM1ZjQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFBvcG92ZXIuY3NzCisrKyAvZGV2L251
bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5wb3BvdmVyIC54aHItYnJlYWtwb2lu
dC1jb250ZW50IHsKLSAgICBwYWRkaW5nOiA1cHg7Ci0gICAgbWFyZ2luOiAycHg7Ci19Ci0KLS5w
b3BvdmVyIC54aHItYnJlYWtwb2ludC1jb250ZW50ID4gLmVkaXRvci13cmFwcGVyIHsKLSAgICBt
YXJnaW4tdG9wOiA0cHg7Ci0gICAgZGlzcGxheTogZmxleDsKLSAgICBmbGV4LWRpcmVjdGlvbjog
cm93OwotfQotCi0ucG9wb3ZlciAueGhyLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3Jh
cHBlciA+IC5lZGl0b3IgewotICAgIHdpZHRoOiAxODBweDsKLSAgICBwYWRkaW5nOiA0cHggMCAy
cHggMDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsKLSAgICBib3JkZXI6IDFw
eCBzb2xpZCBoc2woMCwgMCUsIDc4JSk7Ci0gICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3Vu
ZC1jb2xvci1jb2RlKTsKLQotICAgIC0tZWRpdG9yLW1hcmdpbi1zdGFydDogNHB4OwotfQotCi1i
b2R5W2Rpcj1sdHJdIC5wb3BvdmVyIC54aHItYnJlYWtwb2ludC1jb250ZW50ID4gLmVkaXRvci13
cmFwcGVyID4gLmVkaXRvciB7Ci0gICAgbWFyZ2luLWxlZnQ6IHZhcigtLWVkaXRvci1tYXJnaW4t
c3RhcnQpOwotfQotCi1ib2R5W2Rpcj1ydGxdIC5wb3BvdmVyIC54aHItYnJlYWtwb2ludC1jb250
ZW50ID4gLmVkaXRvci13cmFwcGVyID4gLmVkaXRvciB7Ci0gICAgbWFyZ2luLXJpZ2h0OiB2YXIo
LS1lZGl0b3ItbWFyZ2luLXN0YXJ0KTsKLX0KLQotLnBvcG92ZXIgLnhoci1icmVha3BvaW50LWNv
bnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9yID4gLkNvZGVNaXJyb3IgewotICAgIHdp
ZHRoOiBjYWxjKDEwMCUgLSAycHgpOwotICAgIGhlaWdodDogYXV0bzsKLX0KLQotLnBvcG92ZXIg
Lnhoci1icmVha3BvaW50LWNvbnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9yID4gLkNv
ZGVNaXJyb3Itc2Nyb2xsIHsKLSAgICB3aWR0aDogY2FsYygxMDAlIC0gMnB4KTsKLSAgICBvdmVy
ZmxvdzogaGlkZGVuOwotfQotCi1AbWVkaWEgKHByZWZlcnMtZGFyay1pbnRlcmZhY2UpIHsKLSAg
ICAucG9wb3ZlciAueGhyLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3JhcHBlciA+IC5l
ZGl0b3IgewotICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHVuc2V0OwotICAgICAgICBib3Jk
ZXItY29sb3I6IHZhcigtLXRleHQtY29sb3ItcXVhdGVybmFyeSk7Ci0gICAgfQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtw
b2ludFBvcG92ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9YSFJCcmVha3BvaW50UG9wb3Zlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YmJkMGJjOWNlYWMwN2VjMTAwNzRhM2ZlNDlmMWU3YmExMzUzYTFiMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9YSFJCcmVha3BvaW50UG9wb3Zlci5qcworKysgL2Rldi9udWxsCkBA
IC0xLDE1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuWEhSQnJlYWtwb2ludFBvcG92ZXIgPSBj
bGFzcyBYSFJCcmVha3BvaW50UG9wb3ZlciBleHRlbmRzIFdJLlBvcG92ZXIKLXsKLSAgICBjb25z
dHJ1Y3RvcihkZWxlZ2F0ZSkKLSAgICB7Ci0gICAgICAgIHN1cGVyKGRlbGVnYXRlKTsKLQotICAg
ICAgICB0aGlzLl9icmVha3BvaW50ID0gbnVsbDsKLQotICAgICAgICB0aGlzLl9jb2RlTWlycm9y
ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRo
aXMuX3ByZWZlcnJlZEVkZ2VzID0gbnVsbDsKLQotICAgICAgICB0aGlzLndpbmRvd1Jlc2l6ZUhh
bmRsZXIgPSB0aGlzLl9wcmVzZW50T3ZlclRhcmdldEVsZW1lbnQuYmluZCh0aGlzKTsKLSAgICB9
Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBicmVha3BvaW50KCkgeyByZXR1cm4gdGhpcy5f
YnJlYWtwb2ludDsgfQotCi0gICAgc2hvdyh0YXJnZXRFbGVtZW50LCBwcmVmZXJyZWRFZGdlcykK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQgPSB0YXJnZXRFbGVtZW50OwotICAg
ICAgICB0aGlzLl9wcmVmZXJyZWRFZGdlcyA9IHByZWZlcnJlZEVkZ2VzOwotCi0gICAgICAgIGxl
dCBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICBjb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ4aHItYnJlYWtwb2ludC1jb250ZW50Iik7
Ci0KLSAgICAgICAgbGV0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgICAgIGxhYmVsLmNsYXNzTGlzdC5hZGQoImxhYmVsIik7Ci0gICAgICAgIGxhYmVsLnRleHRD
b250ZW50ID0gV0kuVUlTdHJpbmcoIkJyZWFrIG9uIHJlcXVlc3Qgd2l0aCBVUkw6Iik7Ci0KLSAg
ICAgICAgbGV0IGVkaXRvcldyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgZWRpdG9yV3JhcHBlci5jbGFzc0xpc3QuYWRkKCJlZGl0b3Itd3JhcHBlciIpOwot
Ci0gICAgICAgIHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic2VsZWN0Iik7Ci0KLSAgICAgICAgbGV0IGNyZWF0ZU9wdGlvbiA9ICh0ZXh0LCB2YWx1ZSkg
PT4gewotICAgICAgICAgICAgbGV0IG9wdGlvbkVsZW1lbnQgPSB0aGlzLl90eXBlU2VsZWN0RWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7Ci0gICAg
ICAgICAgICBvcHRpb25FbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKLSAgICAgICAgICAgIG9w
dGlvbkVsZW1lbnQudmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBjcmVhdGVP
cHRpb24oV0kuVUlTdHJpbmcoIkNvbnRhaW5pbmciKSwgV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRl
eHQpOwotICAgICAgICBjcmVhdGVPcHRpb24oV0kuVUlTdHJpbmcoIk1hdGNoaW5nIiksIFdJLlhI
UkJyZWFrcG9pbnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lvbik7Ci0KLSAgICAgICAgdGhpcy5fdHlw
ZVNlbGVjdEVsZW1lbnQudmFsdWUgPSBXSS5YSFJCcmVha3BvaW50LlR5cGUuVGV4dDsKLSAgICAg
ICAgdGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVFZGl0b3IoKTsKLSAgICAgICAgICAg
IHRoaXMuX2NvZGVNaXJyb3IuZm9jdXMoKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZWRpdG9y
V3JhcHBlci5hcHBlbmQodGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQsIHRoaXMuX2NyZWF0ZUVkaXRv
cigpKTsKLSAgICAgICAgY29udGVudEVsZW1lbnQuYXBwZW5kKGxhYmVsLCBlZGl0b3JXcmFwcGVy
KTsKLQotICAgICAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50RWxlbWVudDsKLQotICAgICAgICB0
aGlzLl9wcmVzZW50T3ZlclRhcmdldEVsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBkaXNtaXNzKCkK
LSAgICB7Ci0gICAgICAgIGxldCB0eXBlID0gdGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQudmFsdWU7
Ci0gICAgICAgIGxldCB1cmwgPSB0aGlzLl9jb2RlTWlycm9yLmdldFZhbHVlKCk7Ci0gICAgICAg
IGlmICh0eXBlICYmIHVybCkKLSAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBuZXcgV0ku
WEhSQnJlYWtwb2ludCh0eXBlLCB1cmwpOwotCi0gICAgICAgIHN1cGVyLmRpc21pc3MoKTsKLSAg
ICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfY3JlYXRlRWRpdG9yKCkKLSAgICB7Ci0gICAg
ICAgIGxldCBlZGl0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgICAgIGVkaXRvckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZWRpdG9yIik7Ci0KLSAgICAgICAg
dGhpcy5fY29kZU1pcnJvciA9IFdJLkNvZGVNaXJyb3JFZGl0b3IuY3JlYXRlKGVkaXRvckVsZW1l
bnQsIHsKLSAgICAgICAgICAgIGxpbmVXcmFwcGluZzogZmFsc2UsCi0gICAgICAgICAgICBtYXRj
aEJyYWNrZXRzOiBmYWxzZSwKLSAgICAgICAgICAgIHNjcm9sbGJhclN0eWxlOiBudWxsLAotICAg
ICAgICAgICAgdmFsdWU6ICIiLAotICAgICAgICB9KTsKLQotICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLmFkZEtleU1hcCh7Ci0gICAgICAgICAgICAiRW50ZXIiOiAoKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5kaXNtaXNzKCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgIkVzYyI6
ICgpID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc21pc3MoKTsKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUVkaXRvcigpOwotCi0gICAgICAg
IHJldHVybiBlZGl0b3JFbGVtZW50OwotICAgIH0KLQotICAgIF91cGRhdGVFZGl0b3IoKQotICAg
IHsKLSAgICAgICAgbGV0IHBsYWNlaG9sZGVyOwotICAgICAgICBsZXQgbWltZVR5cGU7Ci0gICAg
ICAgIGlmICh0aGlzLl90eXBlU2VsZWN0RWxlbWVudC52YWx1ZSA9PT0gV0kuWEhSQnJlYWtwb2lu
dC5UeXBlLlRleHQpIHsKLSAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gV0kuVUlTdHJpbmcoIlRl
eHQiKTsKLSAgICAgICAgICAgIG1pbWVUeXBlID0gInRleHQvcGxhaW4iOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBXSS5VSVN0cmluZygiUmVndWxhciBFeHBy
ZXNzaW9uIik7Ci0gICAgICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L3gtcmVnZXgiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24oIm1vZGUiLCBtaW1lVHlw
ZSk7Ci0gICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJwbGFjZWhvbGRlciIsIHBs
YWNlaG9sZGVyKTsKLSAgICB9Ci0KLSAgICBfcHJlc2VudE92ZXJUYXJnZXRFbGVtZW50KCkKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBsZXQgdGFyZ2V0RnJhbWUgPSBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVj
dCh0aGlzLl90YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKLSAgICAgICAg
dGhpcy5wcmVzZW50KHRhcmdldEZyYW1lLCB0aGlzLl9wcmVmZXJyZWRFZGdlcyk7Ci0KLSAgICAg
ICAgLy8gQ29kZU1pcnJvciBuZWVkcyBhIHJlZnJlc2ggYWZ0ZXIgdGhlIHBvcG92ZXIgZGlzcGxh
eXMsIHRvIGxheW91dCwgb3RoZXJ3aXNlIGl0IGRvZXNuJ3QgYXBwZWFyLgotICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwot
ICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5mb2N1cygpOwotICAgICAgICAgICAgdGhpcy51
cGRhdGUoKTsKLSAgICAgICAgfSwgMCk7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1hIUkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVh
a3BvaW50VHJlZUVsZW1lbnQuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWJh
NWYyZjJjMDE4NGJhNWMwN2Y3MzdkZjEwMmEwYzY1YzYyOGQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1hIUkJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIC9kZXYvbnVsbApA
QCAtMSwyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLmJyZWFrcG9pbnQueGhyIC5zdWJ0aXRsZSB7
Ci0gICAgZm9udC1mYW1pbHk6IE1lbmxvLCBtb25vc3BhY2U7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVha3BvaW50VHJlZUVs
ZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJC
cmVha3BvaW50VHJlZUVsZW1lbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgy
NzQyM2Q1ZTMzN2MxNWYwNWQ0NGQ2ZDQwYmEyZWZjNGVmZjJhN2IuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5YSFJCcmVha3BvaW50VHJlZUVsZW1l
bnQgPSBjbGFzcyBYSFJCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJl
ZUVsZW1lbnQKLXsKLSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRs
ZX0gPSB7fSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFu
Y2VvZiBXSS5YSFJCcmVha3BvaW50KTsKLQotICAgICAgICBpZiAoIWNsYXNzTmFtZSkKLSAgICAg
ICAgICAgIGNsYXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUlj
b25TdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICBsZXQgc3VidGl0bGU7Ci0gICAgICAgIGlmICgh
dGl0bGUpIHsKLSAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIlVSTCIpOwotICAgICAg
ICAgICAgaWYgKGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRleHQp
Ci0gICAgICAgICAgICAgICAgc3VidGl0bGUgPSBkb3VibGVRdW90ZWRTdHJpbmcoYnJlYWtwb2lu
dC51cmwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gIi8i
ICsgYnJlYWtwb2ludC51cmwgKyAiLyI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdXBlcihbImJy
ZWFrcG9pbnQiLCAieGhyIiwgY2xhc3NOYW1lXSwgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50
KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QuYWRkKCJzdGF0dXMtaW1hZ2UiLCAicmVz
b2x2ZWQiKTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7
Ci0KLSAgICAgICAgYnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLlhIUkJyZWFrcG9pbnQu
RXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsK
LQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAgICAvLyBQcm90ZWN0
ZWQKLQotICAgIG9uYXR0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uYXR0YWNoKCk7Ci0K
LSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3Rh
dHVzSW1hZ2VFbGVtZW50Q2xpY2tlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2Vk
LmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VE
b3duID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAg
ICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExp
c3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0g
ICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsKLSAgICB9Ci0KLSAgICBvbmRldGFjaCgp
Ci0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAgIHRoaXMuc3RhdHVz
LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1l
bnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9j
dXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlz
LnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFn
ZUVsZW1lbnRDbGlja2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVs
ZW1lbnRGb2N1c2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24gPSBudWxsOwotICAgIH0KLQotICAgIG9uZGVsZXRlKCkKLSAgICB7Ci0gICAg
ICAgIC8vIFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxsIHJl
bW92ZSB0aGlzCi0gICAgICAgIC8vIEJyZWFrcG9pbnRUcmVlRWxlbWVudCB3aWxsIGtub3cgd2hl
dGhlciBpdCB3YXMgZGVsZXRlZCBmcm9tCi0gICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91dGxp
bmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgotICAgICAgICB0aGlzLl9f
ZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwotCi0gICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5yZW1vdmVYSFJCcmVha3BvaW50KHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgb25zcGFjZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVh
a3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29u
dGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3Bv
aW50LmRpc2FibGVkID8gV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0
cmluZygiRGlzYWJsZSBCcmVha3BvaW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0obGFiZWwsIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAgICAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9zdGF0dXNJ
bWFnZUVsZW1lbnRDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJl
YWtwb2ludCgpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKGV2ZW50
KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIG91dGxpbmUgZm9jdXMuCi0gICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgZWxlbWVu
dCBzZWxlY3Rpb24uCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQot
ICAgIF90b2dnbGVCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuZGlzYWJsZWQgPSAhdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZDsKLSAgICB9
Ci0KLSAgICBfdXBkYXRlU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNz
TGlzdC50b2dnbGUoImRpc2FibGVkIiwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCk7
Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBkNmRhNmNhMGRkMWI4Yjc2MmM1MTJmYjQ4ZWIzNDMyZWI2ZTQy
ZjUzLi42NTc2Y2U2NWQ5OGIxZWIwNGVjNzNjZTc1YjUzZWU4NmNjZTk4OTNjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTktMDEtMDYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dGVuZCBYSFIgYnJlYWtwb2ludHMgdG8gd29y
ayB3aXRoIGZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU4NDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwNDMxMDI3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9mZXRjaC1icmVha3BvaW50cy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3hoci1icmVha3BvaW50cy5odG1sLgorICAgICAgICAqIGlu
c3BlY3Rvci9kb20tZGVidWdnZXIvZmV0Y2gtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKworICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0
bWw6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9kYXRhRmV0
Y2guanNvbjogQWRkZWQuCisKIDIwMTktMDEtMDUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgY2xpcHBpbmcgYWNyb3NzIGNvbXBvc2l0aW5nIGJv
dW5kYXJ5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9m
ZXRjaC1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2ZldGNoLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2Nk
ZTFjNDUyMTdkM2ZhMjE5MDBjNDYwN2YxNWUyZWQyNzJjODk4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9mZXRjaC1icmVha3BvaW50cy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3MiBAQAorVGVzdHMgZm9yIEZldGNoIGJyZWFrcG9pbnRzLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRmV0Y2hCcmVha3BvaW50cworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEJyZWFrT25BbGxGZXRjaGVzCitTZXQgcGF1c2Ugb24gYWxsIEZldGNoZXMuCitT
ZW5kaW5nIEZldGNoLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBGZXRj
aC4KK1BBU1M6IFBhdXNlIGRhdGEgVVJMIHNob3VsZCBiZSBlbXB0eS4KK0NBTEwgU1RBQ0s6Cisw
OiBbRl0gbG9hZFJlc291cmNlRmV0Y2gKKzE6IFtQXSBHbG9iYWwgQ29kZQorLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPbkZldGNoQ29udGFp
bmluZ1RleHQKK1BBU1M6IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQorUEFTUzogQnJl
YWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KK1NlbmRpbmcgRmV0Y2gu
CitQQVVTRUQ6CitQQVNTOiBQYXVzZSByZWFzb24gc2hvdWxkIGJlIEZldGNoLgorUEFTUzogUGF1
c2UgZGF0YSBVUkwgc2hvdWxkIG1hdGNoIGJyZWFrcG9pbnQgVVJMLgorQ0FMTCBTVEFDSzoKKzA6
IFtGXSBsb2FkUmVzb3VyY2VGZXRjaAorMTogW1BdIEdsb2JhbCBDb2RlCistLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uRmV0Y2hNYXRjaGlu
Z1JlZ3VsYXJFeHByZXNzaW9uCitQQVNTOiBBZGRlZCBicmVha3BvaW50IGZvciBVUkw6IGRhdGFb
QS1aXSouKGpzb258dHh0fHBuZykKK1BBU1M6IEJyZWFrcG9pbnQgc2hvdWxkIG5vdCBiZSBkaXNh
YmxlZCBpbml0aWFsbHkuCitTZW5kaW5nIEZldGNoLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVh
c29uIHNob3VsZCBiZSBGZXRjaC4KK1BBU1M6IFBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBi
cmVha3BvaW50IFVSTC4KK0NBTEwgU1RBQ0s6CiswOiBbRl0gbG9hZFJlc291cmNlRmV0Y2gKKzE6
IFtQXSBHbG9iYWwgQ29kZQorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogU2hvdWxkTm90UGF1c2VPbkRpc2FibGVkQnJlYWtwb2ludAorUEFTUzogQWRk
ZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBkYXRhCitQQVNTOiBCcmVha3BvaW50IHNob3VsZCBub3Qg
YmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorQnJlYWtwb2ludCBkaXNhYmxlZC4KK1NlbmRpbmcgRmV0
Y2guCitXYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRvIHJldHVybi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTaG91bGROb3RQYXVzZU9uRmV0Y2hOb3RDb250
YWluaW5nVVJMCitQQVNTOiBBZGRlZCBicmVha3BvaW50IGZvciBVUkw6IG5vbmV4aXN0YW50LXVy
bAorUEFTUzogQnJlYWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KK1Nl
bmRpbmcgRmV0Y2guCitXYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRvIHJldHVybi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UgZm9yIGJyZWFrcG9pbnQgd2l0aCBkaWZmZXJlbnQgVVJMLgorLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogUmVtb3ZlQnJl
YWtwb2ludAorUEFTUzogQWRkZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBkYXRhCitQQVNTOiBCcmVh
a3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorQnJlYWtwb2ludCByZW1v
dmVkLgorV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSZW1vdmVEaXNhYmxlZEJyZWFrcG9pbnQKK1BB
U1M6IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQorUEFTUzogQnJlYWtwb2ludCBzaG91
bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KK0JyZWFrcG9pbnQgZGlzYWJsZWQuCitCcmVh
a3BvaW50IHJlbW92ZWQuCitXYWl0IGZvciBldmFsdWF0ZSBpbiBwYWdlIHRvIHJldHVybi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9mZXRjaC1icmVh
a3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9mZXRjaC1i
cmVha3BvaW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZjk5NDI1MTUxYjE3OWQ1MGE1MDQ0NmYwOTU3
NzVhMzZiNzgyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2ZldGNoLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTAsMCArMSwyMzMgQEAKKzwhZG9j
dHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi93b3JrZXIvcmVzb3VyY2VzL3Jlc291cmNlLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJGZXRjaEJyZWFrcG9pbnRz
Iik7CisKKyAgICBmdW5jdGlvbiB0ZWFyZG93bihyZXNvbHZlKSB7CisgICAgICAgIGxldCBicmVh
a3BvaW50cyA9IFdJLmRvbURlYnVnZ2VyTWFuYWdlci51cmxCcmVha3BvaW50czsKKyAgICAgICAg
Zm9yIChsZXQgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykKKyAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSB0
cnVlOworICAgICAgICByZXNvbHZlKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXdhaXRFdmFs
dWF0ZUluUGFnZShleHByZXNzaW9uKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiV2FpdCBm
b3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24sIChlcnJvcikgPT4geworICAgICAgICAgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKKworICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiByZWplY3RPblBhdXNlKCkgeworICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKKyAgICAg
ICAgICAgIC50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIlNob3Vs
ZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgcmVqZWN0KCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkQnJlYWtwb2ludCh0eXBl
LCB1cmwpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWU7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluRnJhbWUsICJNaXNzaW5n
IG1haW4gZnJhbWUuIik7CisgICAgICAgICAgICBpZiAoIW1haW5GcmFtZSkKKyAgICAgICAgICAg
ICAgICByZWplY3QoKTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuVVJM
QnJlYWtwb2ludCh0eXBlLCB1cmwpOworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmF3YWl0RXZlbnQoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlVSTEJyZWFrcG9pbnRBZGRl
ZCkKKyAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnBhc3MoIkFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogIiArIHVybCk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShicmVha3BvaW50LmRpc2FibGVkLCAiQnJl
YWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4iKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKGJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJCcmVha09uQWxsRmV0Y2hlcyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBk
ZWJ1Z2dlciBwYXVzZXMgZm9yIGFsbCBGZXRjaGVzLiIsCisgICAgICAgIHRlYXJkb3duLAorICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlNldCBwYXVzZSBvbiBhbGwgRmV0Y2hlcy4iKTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNlbmRpbmcgRmV0Y2guIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBsb2FkUmVzb3VyY2VGZXRjaCgicmVzb3Vy
Y2VzL2RhdGFGZXRjaC5qc29uIilgKTsKKworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmF3YWl0RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKKyAgICAgICAgICAg
IC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0RGF0YSA9IFdJLmRlYnVn
Z2VyTWFuYWdlci5kYXRhRm9yVGFyZ2V0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJh
bWUudGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFVU0VEOiIp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0YS5w
YXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkZldGNoLCAiUGF1c2Ug
cmVhc29uIHNob3VsZCBiZSBGZXRjaC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEZhbHNlKHRhcmdldERhdGEucGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwsICJQYXVzZSBk
YXRhIFVSTCBzaG91bGQgYmUgZW1wdHkuIik7CisKKyAgICAgICAgICAgICAgICBsb2dBY3RpdmVT
dGFja1RyYWNlKCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJl
amVjdCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIkJyZWFrT25GZXRjaENvbnRhaW5pbmdUZXh0IiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBvbiBhIFVSTCBjb250YWluaW5nIHRl
eHQuIiwKKyAgICAgICAgdGVhcmRvd24sCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgICAgICBsZXQgZXhwZWN0ZWRCcmVha3BvaW50VVJMOworICAgICAgICAgICAgYWRk
QnJlYWtwb2ludChXSS5VUkxCcmVha3BvaW50LlR5cGUuVGV4dCwgImRhdGEiKQorICAgICAgICAg
ICAgLnRoZW4oKGJyZWFrcG9pbnQpID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3RlZEJyZWFr
cG9pbnRVUkwgPSBicmVha3BvaW50LnVybDsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJTZW5kaW5nIEZldGNoLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYGxvYWRSZXNvdXJjZUZldGNoKCJyZXNvdXJjZXMvZGF0YUZldGNoLmpz
b24iKWApOworICAgICAgICAgICAgICAgIHJldHVybiBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRF
dmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkKTsKKyAgICAgICAgICAgIH0pCisg
ICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldERhdGEg
PSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRhcmdldChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0
aXZlQ2FsbEZyYW1lLnRhcmdldCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlBBVVNFRDoiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRh
cmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5GZXRj
aCwgIlBhdXNlIHJlYXNvbiBzaG91bGQgYmUgRmV0Y2guIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlRGF0YS5icmVha3BvaW50VVJM
LCBleHBlY3RlZEJyZWFrcG9pbnRVUkwsICJQYXVzZSBkYXRhIFVSTCBzaG91bGQgbWF0Y2ggYnJl
YWtwb2ludCBVUkwuIik7CisKKyAgICAgICAgICAgICAgICBsb2dBY3RpdmVTdGFja1RyYWNlKCk7
CisKKyAgICAgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwor
ICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IkJyZWFrT25GZXRjaE1hdGNoaW5nUmVndWxhckV4cHJlc3Npb24iLAorICAgICAgICBkZXNjcmlw
dGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgcGF1c2VzIGJhc2VkIG9uIGEgVVJMIG1hdGNoaW5n
IGEgcmVnZXggcGF0dGVybi4iLAorICAgICAgICB0ZWFyZG93biwKKyAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBleHBlY3RlZEJyZWFrcG9pbnRVUkw7Cisg
ICAgICAgICAgICBhZGRCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5SZWd1bGFyRXhw
cmVzc2lvbiwgImRhdGFbQS1aXSpcLihqc29ufHR4dHxwbmcpIikKKyAgICAgICAgICAgIC50aGVu
KChicmVha3BvaW50KSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRCcmVha3BvaW50VVJM
ID0gYnJlYWtwb2ludC51cmw7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
U2VuZGluZyBGZXRjaC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKGBsb2FkUmVzb3VyY2VGZXRjaCgicmVzb3VyY2VzL2RhdGFGZXRjaC5qc29uIilgKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCk7CisgICAgICAgICAgICB9KQorICAgICAgICAg
ICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGxldCB0YXJnZXREYXRhID0gV0kuZGVi
dWdnZXJNYW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxG
cmFtZS50YXJnZXQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVVTRUQ6
Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRh
LnBhdXNlUmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uRmV0Y2gsICJQYXVz
ZSByZWFzb24gc2hvdWxkIGJlIEZldGNoLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0YS5wYXVzZURhdGEuYnJlYWtwb2ludFVSTCwgZXhwZWN0
ZWRCcmVha3BvaW50VVJMLCAiUGF1c2UgZGF0YSBVUkwgc2hvdWxkIG1hdGNoIGJyZWFrcG9pbnQg
VVJMLiIpOworCisgICAgICAgICAgICAgICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOworCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAg
ICAgIH0pCisgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTaG91bGRO
b3RQYXVzZU9uRGlzYWJsZWRCcmVha3BvaW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVj
ayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIs
CisgICAgICAgIHRlYXJkb3duLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAg
ICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5VUkxCcmVha3BvaW50LlR5cGUuVGV4dCwgImRhdGEi
KQorICAgICAgICAgICAgLnRoZW4oKGJyZWFrcG9pbnQpID0+IHsKKyAgICAgICAgICAgICAgICBi
cmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiQnJlYWtwb2ludCBkaXNhYmxlZC4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJTZW5kaW5nIEZldGNoLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJhY2UoW2F3YWl0RXZhbHVhdGVJblBhZ2UoYGxvYWRSZXNvdXJjZUZldGNoKCJyZXNvdXJj
ZXMvZGF0YUZldGNoLmpzb24iKWApLCByZWplY3RPblBhdXNlKCldKTsKKyAgICAgICAgICAgIH0p
CisgICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKCJTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIpOworICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0
Y2gocmVqZWN0KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiU2hvdWxkTm90UGF1c2VPbkZldGNoTm90Q29udGFpbmluZ1VSTCIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVz
ZSBmb3IgYnJlYWtwb2ludCB3aXRoIGRpZmZlcmVudCBVUkwuIiwKKyAgICAgICAgdGVhcmRvd24s
CisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBhZGRCcmVha3Bv
aW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0LCAibm9uZXhpc3RhbnQtdXJsIikKKyAgICAg
ICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlNlbmRpbmcgRmV0Y2guIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmFjZShbYXdhaXRFdmFsdWF0ZUluUGFnZShgbG9hZFJlc291cmNlRmV0Y2goInJlc291cmNl
cy9kYXRhRmV0Y2guanNvbiIpYCksIHJlamVjdE9uUGF1c2UoKV0pOworICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnBhc3MoIlNob3VsZCBub3QgcGF1c2UgZm9yIGJyZWFrcG9pbnQgd2l0aCBkaWZmZXJlbnQgVVJM
LiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUmVtb3ZlQnJlYWtwb2ludCIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVzZSBmb3IgcmVtb3Zl
ZCBicmVha3BvaW50LiIsCisgICAgICAgIHRlYXJkb3duLAorICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgeworICAgICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5VUkxCcmVha3BvaW50LlR5
cGUuVGV4dCwgImRhdGEiKQorICAgICAgICAgICAgLnRoZW4oKGJyZWFrcG9pbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2lu
dCByZW1vdmVkLiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmFjZShbYXdh
aXRFdmFsdWF0ZUluUGFnZShgbG9hZFJlc291cmNlRmV0Y2goInJlc291cmNlcy9kYXRhRmV0Y2gu
anNvbiIpYCksIHJlamVjdE9uUGF1c2UoKV0pOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAg
IC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNob3Vs
ZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIlJlbW92ZURpc2FibGVkQnJlYWtwb2ludCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hl
Y2sgdGhhdCBhIGRpc2FibGVkIGJyZWFrcG9pbnQgY2FuIGJlIHJlbW92ZWQuIiwKKyAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuVVJM
QnJlYWtwb2ludC5UeXBlLlRleHQsICJkYXRhIikKKyAgICAgICAgICAgIC50aGVuKChicmVha3Bv
aW50KSA9PiB7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgZGlzYWJsZWQuIik7
CisKKyAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtw
b2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJl
YWtwb2ludCByZW1vdmVkLiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmFj
ZShbYXdhaXRFdmFsdWF0ZUluUGFnZShgbG9hZFJlc291cmNlRmV0Y2goInJlc291cmNlcy9kYXRh
RmV0Y2guanNvbiIpYCksIHJlamVjdE9uUGF1c2UoKV0pOworICAgICAgICAgICAgfSkKKyAgICAg
ICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3Mo
IlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLmNh
dGNoKHJlamVjdCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNl
c0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD5UZXN0cyBmb3IgRmV0Y2ggYnJlYWtwb2ludHMuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9yZXNv
dXJjZXMvZGF0YUZldGNoLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L3Jlc291cmNlcy9kYXRhRmV0Y2guanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODRjNjdjNjQ0MDE2NjA1NjJh
YzQyZjAxYmI3ZGY3NTZiMGQ0YmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS1kZWJ1Z2dlci9yZXNvdXJjZXMvZGF0YUZldGNoLmpzb24KQEAgLTAsMCArMSBA
QAoreyJ3ZWJraXQiOnRydWUsICJ0eXBlIjoiRmV0Y2gifQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0bWwKaW5kZXggZjBh
MTM1MGUyNmRlMGY2N2RmMDdkOGJlMjI3NjZhODAxNmRiMmM1MC4uYWFmMGE3NTE2NTg1MTBkNDg2
NzQzZmViOTYxYjQ1MzY5YmVjMDIxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL3hoci1icmVha3BvaW50cy5odG1sCkBAIC0xMCw5ICsxMCw5IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiWEhSQnJlYWtwb2ludHMiKTsKIAogICAgIGZ1bmN0aW9uIHRlYXJkb3duKHJlc29s
dmUpIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnRzID0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnho
ckJyZWFrcG9pbnRzOworICAgICAgICBsZXQgYnJlYWtwb2ludHMgPSBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIudXJsQnJlYWtwb2ludHM7CiAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgYnJl
YWtwb2ludHMpCi0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlWEhSQnJl
YWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgIFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICBy
ZXNvbHZlKCk7CkBAIC00OCwxNSArNDgsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICBpZiAoIW1haW5GcmFtZSkKICAgICAgICAgICAgICAgICByZWplY3QoKTsKIAotICAgICAgICAg
ICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuWEhSQnJlYWtwb2ludCh0eXBlLCB1cmwpOwotICAg
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRBZGRlZCkKKyAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gbmV3IFdJLlVSTEJyZWFrcG9pbnQodHlwZSwgdXJsKTsKKyAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5V
UkxCcmVha3BvaW50QWRkZWQpCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJBZGRlZCBicmVha3BvaW50IGZvciBVUkw6ICIgKyB1
cmwpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoYnJlYWtwb2lu
dC5kaXNhYmxlZCwgIkJyZWFrcG9pbnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHku
Iik7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZShicmVha3BvaW50KTsKICAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkWEhSQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRVUkxCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTkyLDcgKzkyLDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlYXJkb3duLAogICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0IGV4cGVjdGVkQnJlYWtwb2ludFVSTDsKLSAg
ICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRleHQsICJkYXRh
IikKKyAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRleHQs
ICJkYXRhIikKICAgICAgICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7CiAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRCcmVha3BvaW50VVJMID0gYnJlYWtwb2ludC51cmw7CiAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVhcmRvd24sCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBsZXQgZXhwZWN0ZWRCcmVha3BvaW50
VVJMOwotICAgICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5YSFJCcmVha3BvaW50LlR5cGUuUmVn
dWxhckV4cHJlc3Npb24sICJkYXRhW0EtWl0qXC4oanNvbnx0eHR8cG5nKSIpCisgICAgICAgICAg
ICBhZGRCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lvbiwg
ImRhdGFbQS1aXSpcLihqc29ufHR4dHxwbmcpIikKICAgICAgICAgICAgIC50aGVuKChicmVha3Bv
aW50KSA9PiB7CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRCcmVha3BvaW50VVJMID0gYnJlYWtw
b2ludC51cmw7CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciBkaXNh
YmxlZCBicmVha3BvaW50LiIsCiAgICAgICAgIHRlYXJkb3duLAogICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewotICAgICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5YSFJCcmVha3BvaW50
LlR5cGUuVGV4dCwgImRhdGEiKQorICAgICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5VUkxCcmVh
a3BvaW50LlR5cGUuVGV4dCwgImRhdGEiKQogICAgICAgICAgICAgLnRoZW4oKGJyZWFrcG9pbnQp
ID0+IHsKICAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBkaXNhYmxlZC4iKTsKQEAg
LTE2OCw3ICsxNjgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciBicmVha3BvaW50IHdpdGggZGlm
ZmVyZW50IFVSTC4iLAogICAgICAgICB0ZWFyZG93biwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKLSAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuWEhSQnJlYWtwb2ludC5UeXBl
LlRleHQsICJub25leGlzdGFudC11cmwiKQorICAgICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5V
UkxCcmVha3BvaW50LlR5cGUuVGV4dCwgIm5vbmV4aXN0YW50LXVybCIpCiAgICAgICAgICAgICAu
dGhlbigoYnJlYWtwb2ludCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJTZW5kaW5nIFhNTEh0dHBSZXF1ZXN0LiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJhY2UoW2F3YWl0RXZhbHVhdGVJblBhZ2UoYGxvYWRSZXNvdXJjZVhIUigicmVzb3VyY2Vz
L2RhdGFYSFIuanNvbiIpYCksIHJlamVjdE9uUGF1c2UoKV0pOwpAQCAtMTg2LDkgKzE4Niw5IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVidWdn
ZXIgZG9lcyBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iLAogICAgICAgICB0ZWFy
ZG93biwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGFkZEJy
ZWFrcG9pbnQoV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRleHQsICJkYXRhIikKKyAgICAgICAgICAg
IGFkZEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRleHQsICJkYXRhIikKICAgICAg
ICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVtb3Zl
ZC4iKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJhY2UoW2F3YWl0RXZhbHVh
dGVJblBhZ2UoYGxvYWRSZXNvdXJjZVhIUigicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIpYCksIHJl
amVjdE9uUGF1c2UoKV0pOwpAQCAtMjA1LDEyICsyMDUsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIG5hbWU6ICJSZW1vdmVEaXNhYmxlZEJyZWFrcG9pbnQiLAogICAgICAgICBkZXNjcmlw
dGlvbjogIkNoZWNrIHRoYXQgYSBkaXNhYmxlZCBicmVha3BvaW50IGNhbiBiZSByZW1vdmVkLiIs
CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBhZGRCcmVha3Bv
aW50KFdJLlhIUkJyZWFrcG9pbnQuVHlwZS5UZXh0LCAiZGF0YSIpCisgICAgICAgICAgICBhZGRC
cmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0LCAiZGF0YSIpCiAgICAgICAgICAg
ICAudGhlbigoYnJlYWtwb2ludCkgPT4gewogICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlz
YWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3Bv
aW50IGRpc2FibGVkLiIpOwogCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVtb3ZlZC4iKTsKIAogICAg
ICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJhY2UoW2F3YWl0RXZhbHVhdGVJblBhZ2UoYGxv
YWRSZXNvdXJjZVhIUigicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIpYCksIHJlamVjdE9uUGF1c2Uo
KV0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358514</attachid>
            <date>2019-01-07 12:39:11 -0800</date>
            <delta_ts>2019-01-07 14:41:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185843-20190107133910.patch</filename>
            <type>text/plain</type>
            <size>117695</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVmNDYwODlhODUwYmRjMmE0MjA2YjU1M2QwYjUy
MmU1YjE2ZDVlZDcuLjgwN2NkZTBiZjBhNWIyNzBjOGI2MzZiZTY3MTZkMGQwYTYxODE2OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAxLTA3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBl
eHRlbmQgWEhSIGJyZWFrcG9pbnRzIHRvIHdvcmsgd2l0aCBmZXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80MDQzMTAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IEJha2VyLgorCisg
ICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb246CisgICAgICAgIFJl
bmFtZSBgWEhSYCB0byBgVVJMYC4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9EZWJ1
Z2dlci5qc29uOgorICAgICAgICBBZGQgYEZldGNoYCB0byBgcmVhc29uYCBlbnVtIGZvciB0aGUg
YERlYnVnZ2VyLnBhdXNlZGAgZXZlbnQuCisKIDIwMTktMDEtMDQgIFRhZGV1IFphZ2FsbG8gIDx0
emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmFzZWxpbmUgdmVyc2lvbiBvZiBnZXRfYnlf
aWQgbWF5IGNvcnJ1cHQgbWV0YWRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNjJjNWI3NjNjOWE5MWJmNTU2
ZjlkNzZjMGEwOTc0ZTZmN2Q5ZDUzLi40ZmM0OWM3ZWQ5YTc4MWQ0ZTIwZmIwMWEyMjhkMGQ1MjM4
NTQ0MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMDEtMDcgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dGVu
ZCBYSFIgYnJlYWtwb2ludHMgdG8gd29yayB3aXRoIGZldGNoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU4NDMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQwNDMxMDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hdHQgQmFrZXIuCisKKyAgICAg
ICAgVGVzdDogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci91cmwtYnJlYWtwb2ludHMuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OmZldGNoKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEZldGNoKTogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxGZXRjaEltcGwpOiBBZGRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRVUkxCcmVha3BvaW50KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVVUkxC
cmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpicmVha09uVVJMSWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZldGNoKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVh
a3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnJlbW92ZVhIUkJyZWFrcG9pbnQpOiBEZWxldGVkLgorCiAyMDE5LTAxLTA2ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhOXSBJbXBv
cnQgVTJGIGNvbW1hbmQvcmVzcG9uc2UgY29udmVydGVycyBmcm9tIENocm9taXVtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwppbmRleCBmMDU4NjdlNzcyYjFlNzJmMWY3MWYyZDhkZDdhYTk5MmExOGM0
MGM2Li4wNmIwMTgyMmQxMjgwOGU4ZjI2ZjVhMTkwNTAyNWM1YmNkMzE5NDYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxOS0wMS0wNyAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0ZW5kIFhI
UiBicmVha3BvaW50cyB0byB3b3JrIHdpdGggZmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTg0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDA0MzEwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWF0dCBCYWtlci4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIucHJvdG90eXBlLmdldCB1cmxCcmVha3BvaW50cyk6IEFkZGVkLgorICAgICAgICAo
V0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS51cmxCcmVha3BvaW50Rm9yVVJMKTogQWRk
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFVSTEJyZWFr
cG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
cmVtb3ZlVVJMQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cyk6CisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVVUkxCcmVha3BvaW50KTog
QWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9yZXNvbHZl
VVJMQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5fc2F2ZVVSTEJyZWFrcG9pbnRzKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cmxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5n
ZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQg
eGhyQnJlYWtwb2ludHMpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS54aHJCcmVha3BvaW50Rm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRP
TURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkWEhSQnJlYWtwb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVhIUkJyZWFrcG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5f
dXBkYXRlWEhSQnJlYWtwb2ludC5icmVha3BvaW50VXBkYXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVYSFJCcmVha3BvaW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29s
dmVYSFJCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5wcm90b3R5cGUuX3NhdmVYSFJCcmVha3BvaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl94aHJCcmVha3BvaW50RGlzYWJsZWRTdGF0ZURp
ZENoYW5nZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RlYnVnZ2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5
cGUuX3BhdXNlUmVhc29uRnJvbVBheWxvYWQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJh
clBhbmVsKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS53aWxs
RGlzbWlzc1BvcG92ZXIpOgorICAgICAgICAoV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5fdHJlZVNlbGVjdGlvbkRpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlclNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkRlYnVn
Z2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdXBkYXRlUGF1c2VSZWFzb25TZWN0aW9uKToKKyAg
ICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlQ3JlYXRlQnJl
YWtwb2ludENsaWNrZWQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5w
cm90b3R5cGUuX2lzVHJlZUVsZW1lbnRXaXRob3V0UmVwcmVzZW50ZWRPYmplY3QpOgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qczogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9YSFJCcmVha3BvaW50
LmpzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFBvcG92ZXIu
Y3NzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvWEhSQnJlYWtwb2ludFBvcG92ZXIuY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVVJMQnJlYWtwb2ludFBvcG92ZXIuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVha3BvaW50UG9wb3Zlci5qcy4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJC
cmVha3BvaW50VHJlZUVsZW1lbnQuY3NzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIChXSS5T
ZXR0aW5nLm1pZ3JhdGVWYWx1ZSk6IEFkZGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9N
YWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisKKyAgICAgICAg
KiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisKIDIwMTktMDEt
MDQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBzdWJjbGFzc2VzIG9mIFdJLkNsdXN0ZXJDb250ZW50VmlldyBkb24ndCBzYXZl
L3Jlc3RvcmUgY29udGVudCB2aWV3cyBhZnRlciB0aGUgaW5pdGlhbCB2aWV3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2Vy
Lmpzb24KaW5kZXggYjQyMDRkMThkMDU3MTQ5ZjNkMWJiMjQ2MGVjOWMzNzExMTE0ZDgwMS4uYjQ0
YzdmMGI1ZWFiYTdjMDkwMjZiNWFmOWIzMDMwODYwMjQyMDc3MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29uCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNv
bgpAQCAtNTAsMTggKzUwLDE4IEBACiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAg
IHsKLSAgICAgICAgICAgICJuYW1lIjogInNldFhIUkJyZWFrcG9pbnQiLAotICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlNldHMgYnJlYWtwb2ludCBvbiBYTUxIdHRwUmVxdWVzdC4iLAorICAg
ICAgICAgICAgIm5hbWUiOiAic2V0VVJMQnJlYWtwb2ludCIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiU2V0cyBicmVha3BvaW50IG9uIG5ldHdvcmsgYWN0aXZpdHkgZm9yIHRoZSBnaXZl
biBVUkwuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlJlc291cmNl
IFVSTCBzdWJzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uLiBBbGwgWEhScyBoYXZpbmcgdGhp
cyBzdWJzdHJpbmcgaW4gdGhlIFVSTCB3aWxsIGdldCBzdG9wcGVkIHVwb24uIEFuIGVtcHR5IHN0
cmluZyB3aWxsIHBhdXNlIG9uIGFsbCBYSFJzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBVUkwg
c3Vic3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbi4gQWxsIHJlcXVlc3RzIGhhdmluZyB0aGlz
IHN1YnN0cmluZyBpbiB0aGUgVVJMIHdpbGwgZ2V0IHN0b3BwZWQgdXBvbi4gQW4gZW1wdHkgc3Ry
aW5nIHdpbGwgcGF1c2Ugb24gYWxsIHJlcXVlc3RzLiIgfSwKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIldoZXRoZXIgdGhlIFVSTCBzdHJpbmcgaXMgYSByZWd1bGFyIGV4cHJlc3Np
b24uIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAg
ICJuYW1lIjogInJlbW92ZVhIUkJyZWFrcG9pbnQiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJlbW92ZXMgYnJlYWtwb2ludCBmcm9tIFhNTEh0dHBSZXF1ZXN0LiIsCisgICAgICAgICAg
ICAibmFtZSI6ICJyZW1vdmVVUkxCcmVha3BvaW50IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZW1vdmVzIGJyZWFrcG9pbnQgZnJvbSBuZXR3b3JrIGFjdGl2aXR5IGZvciB0aGUgZ2l2
ZW4gVVJMLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJj
ZSBVUkwgc3Vic3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgd2lsbCBzdG9wIHBhdXNpbmcgb24gYWxs
IFhIUnMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgVVJMIHN1YnN0cmluZy4gQW4gZW1wdHkgc3Ry
aW5nIHdpbGwgc3RvcCBwYXVzaW5nIG9uIGFsbCByZXF1ZXN0cy4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfQogICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgppbmRleCA0MThhNWJlOTA3Y2VlNzMzNTIzMWZj
ZDQ2ODNiYWI5MmExNzY1Yzg2Li4yZWU0NDQyNTRhYWUxMGMzYjRhZjdhMTE2NDY5MjFlZTg1NzRk
Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0RlYnVnZ2VyLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9EZWJ1Z2dlci5qc29uCkBAIC0zNDAsNyArMzQwLDcgQEAKICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJGaXJlZCB3aGVuIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc3RvcHBlZCBvbiBicmVh
a3BvaW50IG9yIGV4Y2VwdGlvbiBvciBhbnkgb3RoZXIgc3RvcCBjcml0ZXJpYS4iLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJh
bWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSIgfSwg
ImRlc2NyaXB0aW9uIjogIkNhbGwgc3RhY2sgdGhlIHZpcnR1YWwgbWFjaGluZSBzdG9wcGVkIG9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlYXNvbiIsICJ0eXBlIjogInN0cmlu
ZyIsICJlbnVtIjogWyJYSFIiLCAiRE9NIiwgIkFuaW1hdGlvbkZyYW1lIiwgIkV2ZW50TGlzdGVu
ZXIiLCAiVGltZXIiLCAiZXhjZXB0aW9uIiwgImFzc2VydCIsICJDU1BWaW9sYXRpb24iLCAiRGVi
dWdnZXJTdGF0ZW1lbnQiLCAiQnJlYWtwb2ludCIsICJQYXVzZU9uTmV4dFN0YXRlbWVudCIsICJv
dGhlciJdLCAiZGVzY3JpcHRpb24iOiAiUGF1c2UgcmVhc29uLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlYXNvbiIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJYSFIiLCAi
RmV0Y2giLCAiRE9NIiwgIkFuaW1hdGlvbkZyYW1lIiwgIkV2ZW50TGlzdGVuZXIiLCAiVGltZXIi
LCAiZXhjZXB0aW9uIiwgImFzc2VydCIsICJDU1BWaW9sYXRpb24iLCAiRGVidWdnZXJTdGF0ZW1l
bnQiLCAiQnJlYWtwb2ludCIsICJQYXVzZU9uTmV4dFN0YXRlbWVudCIsICJvdGhlciJdLCAiZGVz
Y3JpcHRpb24iOiAiUGF1c2UgcmVhc29uLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImRhdGEiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiT2JqZWN0IGNvbnRhaW5pbmcgYnJlYWstc3BlY2lmaWMgYXV4aWxpYXJ5IHByb3BlcnRpZXMu
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXN5bmNTdGFja1RyYWNlIiwgIiRyZWYi
OiAiQ29uc29sZS5TdGFja1RyYWNlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IkxpbmtlZCBsaXN0IG9mIGFzeW5jaHJvbm91cyBTdGFja1RyYWNlcy4iIH0KICAgICAgICAgICAg
IF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDhkYWZjNjQ1MDI1YTAyZjAzNjI1NGFhMzFjMWJkYTM3ZWNlMjlhZWQuLjNlOTk5ZDgxMTE2
NjU0N2I1M2MwODMwMDhjNGY5MmM5YWRiOWUwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVk
ZSAiRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgiCkBA
IC0yMjksNiArMjMwLDkgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QKICAgICAgICAgcmVzcG9u
c2VDYWxsYmFjayhFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIlJlYWRhYmxlU3RyZWFt
IHVwbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQorCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmV0Y2goY29udGV4dCwgcmVx
dWVzdC51cmwoKSk7CisKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJl
c3BvbnNlKGNvbnRleHQsIEZldGNoQm9keSB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNo
SGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIHsgfSkpOwogCiAgICAgcmVzcG9uc2UtPmJvZHko
KS5jb25zdW1lcigpLnNldEFzTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA2MmUwOWNmMDc0N2Q2
NTI3YmE5ZWRiMTc5ZTFjNTVlNTdiOGY5Y2M3Li5jYzhmMWYwMzNiMGM0MjBjMDU2YjM0YTYxM2Q5
NmVlNjA3NDE0NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjk4LDYgKzI5OCwxMiBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KHVybCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmV0
Y2hJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0
cmluZyYgdXJsKQoreworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1
Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxGZXRjaCh1cmwpOworfQorCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1l
b3V0LCBib29sIHNpbmdsZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA2YjIwY2Nh
YzkxZGJmZGVkODg3OTQ4MWY3MjVmMzlhYzYwMTUzZjM0Li5mZGFlYTYyMTY0YWQ0MWE2NThjMWMw
MzM4YTU5ZDg0NGE0YzllNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMzcsNiArMTM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYsIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwogCiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAg
IHN0YXRpYyB2b2lkIHdpbGxGZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgaW50IHRpbWVySWQpOwogCkBAIC0zMjgsNiArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBmb3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
RWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwogCiAgICAgc3RhdGljIHZv
aWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRmV0Y2hJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zdGFs
bFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIFNlY29uZHMgdGlt
ZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVtb3ZlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGlt
ZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCkBAIC02OTUsNiArNjk3LDEzIEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250CiAgICAgICAgIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCB1cmwpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxGZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICB3aWxs
RmV0Y2hJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCB1cmwpOworfQorCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkYWQyNGY3OTRmMGI0MTgwZDcwMWM4ZGUyNmNlMTY3
YThkYjdlZjI5Li42NzhlMWMzZGU0MzExOGZlYTViODliNjY1N2VjN2NlZjE3MDMxN2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTkyLDYgKzkyLDkgQEAgdm9pZCBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKICAgICBkaXNjYXJkQmluZGlu
Z3MoKTsKKyAgICBtX2V2ZW50QnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX3VybEJyZWFrcG9p
bnRzLmNsZWFyKCk7CisgICAgbV9wYXVzZU9uQWxsVVJMc0VuYWJsZWQgPSBmYWxzZTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKQpAQCAtMTIwLDcgKzEyMyw2IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUmIGZyYW1lKQogdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQogewogICAgIG1fZG9tQnJlYWtwb2ludHMuY2xl
YXIoKTsKLSAgICBtX3hockJyZWFrcG9pbnRzLmNsZWFyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvciwg
Y29uc3QgU3RyaW5nJiBicmVha3BvaW50VHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBldmVudE5h
bWUpCkBAIC00MDgsMzkgKzQxMCwzOSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoKQogICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQ
YXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246OkFuaW1hdGlvbkZyYW1lLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogfQogCi12b2lk
IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQordm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKICAgICBp
ZiAodXJsLmlzRW1wdHkoKSkgewotICAgICAgICBtX3BhdXNlT25BbGxYSFJzRW5hYmxlZCA9IHRy
dWU7CisgICAgICAgIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRp
b25hbElzUmVnZXggOiBmYWxzZTsKLSAgICBtX3hockJyZWFrcG9pbnRzLnNldCh1cmwsIGlzUmVn
ZXggPyBYSFJCcmVha3BvaW50VHlwZTo6UmVndWxhckV4cHJlc3Npb24gOiBYSFJCcmVha3BvaW50
VHlwZTo6VGV4dCk7CisgICAgbV91cmxCcmVha3BvaW50cy5zZXQodXJsLCBpc1JlZ2V4ID8gVVJM
QnJlYWtwb2ludFR5cGU6OlJlZ3VsYXJFeHByZXNzaW9uIDogVVJMQnJlYWtwb2ludFR5cGU6OlRl
eHQpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZVhIUkJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6cmVtb3ZlVVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcGF1c2VP
bkFsbFhIUnNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVk
ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3hockJyZWFrcG9pbnRz
LnJlbW92ZSh1cmwpOworICAgIG1fdXJsQnJlYWtwb2ludHMucmVtb3ZlKHVybCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25z
dCBTdHJpbmcmIHVybCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6YnJlYWtPblVS
TElmTmVlZGVkKGNvbnN0IFN0cmluZyYgdXJsLCBVUkxCcmVha3BvaW50U291cmNlIHNvdXJjZSkK
IHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJyZWFrcG9pbnRVUkw7Ci0gICAgaWYgKG1fcGF1c2VP
bkFsbFhIUnNFbmFibGVkKQorICAgIGlmIChtX3BhdXNlT25BbGxVUkxzRW5hYmxlZCkKICAgICAg
ICAgYnJlYWtwb2ludFVSTCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX3hockJyZWFrcG9pbnRzKSB7CisgICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX3VybEJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBxdWVy
eSA9IGVudHJ5LmtleTsKLSAgICAgICAgICAgIGJvb2wgaXNSZWdleCA9IGVudHJ5LnZhbHVlID09
IFhIUkJyZWFrcG9pbnRUeXBlOjpSZWd1bGFyRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIGJvb2wg
aXNSZWdleCA9IGVudHJ5LnZhbHVlID09IFVSTEJyZWFrcG9pbnRUeXBlOjpSZWd1bGFyRXhwcmVz
c2lvbjsKICAgICAgICAgICAgIGF1dG8gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpj
cmVhdGVTZWFyY2hSZWdleChxdWVyeSwgZmFsc2UsIGlzUmVnZXgpOwogICAgICAgICAgICAgaWYg
KHJlZ2V4Lm1hdGNoKHVybCkgIT0gLTEpIHsKICAgICAgICAgICAgICAgICBicmVha3BvaW50VVJM
ID0gcXVlcnk7CkBAIC00NTIsMTAgKzQ1NCwzMCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYg
KGJyZWFrcG9pbnRVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEluc3BlY3Rv
cjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbjsKKyAgICBp
ZiAoc291cmNlID09IFVSTEJyZWFrcG9pbnRTb3VyY2U6OkZldGNoKQorICAgICAgICBicmVha1Jl
YXNvbiA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RmV0
Y2g7CisgICAgZWxzZSBpZiAoc291cmNlID09IFVSTEJyZWFrcG9pbnRTb3VyY2U6OlhIUikKKyAg
ICAgICAgYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246OlhIUjsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrUmVhc29uID0gSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcjo6UmVhc29uOjpPdGhlcjsKKyAgICB9CisKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBldmVu
dERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5n
KCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJp
bmcoInVybCIsIHVybCk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVj
dG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpYSFIsIFdURk1vdmUoZXZl
bnREYXRhKSk7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oYnJlYWtSZWFzb24s
IFdURk1vdmUoZXZlbnREYXRhKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBicmVh
a09uVVJMSWZOZWVkZWQodXJsLCBVUkxCcmVha3BvaW50U291cmNlOjpYSFIpOworfQorCit2b2lk
IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGZXRjaChjb25zdCBTdHJpbmcmIHVybCkK
K3sKKyAgICBicmVha09uVVJMSWZOZWVkZWQodXJsLCBVUkxCcmVha3BvaW50U291cmNlOjpGZXRj
aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5k
ZXggZTNhNGUxYjFjMzQ4ODVhYjNkYjBjODFiZmNkODY0MTM4YTZkZThlNy4uNDU5Y2IzNjk0M2M0
MjQwYjlmN2Q0OGFjMzQwYzhlNDcxMTQzZGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAg
LTU3LDggKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQoKTsKIAogICAgIC8vIERPTURlYnVnZ2VyIEFQSQotICAgIHZvaWQgc2V0WEhSQnJlYWtw
b2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25h
bElzUmVnZXgpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsKKyAgICB2b2lkIHNldFVSTEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1Jl
Z2V4KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHVybCkgZmluYWw7CiAgICAgdm9pZCBzZXRFdmVudEJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcmIGV2
ZW50TmFtZSkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCB3aWxsTW9kaWZ5
RE9NQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHdpbGxGZXRjaChjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSYpOwogICAgIHZvaWQgd2lsbEhhbmRs
ZUV2ZW50KGNvbnN0IEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAg
ICB2b2lkIHdpbGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KTsKQEAgLTg4LDYgKzg5LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBmaW5hbDsKICAgICB2b2lkIGRp
c2FibGUoKTsKIAorICAgIGVudW0gY2xhc3MgVVJMQnJlYWtwb2ludFNvdXJjZSB7IEZldGNoLCBY
SFIgfTsKKyAgICB2b2lkIGJyZWFrT25VUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHVybCwgVVJM
QnJlYWtwb2ludFNvdXJjZSk7CisKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9k
ZSYgdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBKU09OOjpPYmpl
Y3QmIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKICAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKQEAgLTEwNSwxMCArMTA5LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
V1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEV2ZW50QnJlYWtw
b2ludFR5cGU+LCBXVEY6Okhhc2hUcmFpdHM8U3RyaW5nPj4KICAgICA+IG1fZXZlbnRCcmVha3Bv
aW50czsKIAotICAgIGVudW0gY2xhc3MgWEhSQnJlYWtwb2ludFR5cGUgeyBUZXh0LCBSZWd1bGFy
RXhwcmVzc2lvbiB9OwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFhIUkJyZWFrcG9pbnRUeXBlPiBt
X3hockJyZWFrcG9pbnRzOwotICAgIGJvb2wgbV9wYXVzZU9uQWxsWEhSc0VuYWJsZWQgeyBmYWxz
ZSB9OworICAgIGVudW0gY2xhc3MgVVJMQnJlYWtwb2ludFR5cGUgeyBSZWd1bGFyRXhwcmVzc2lv
biwgVGV4dCB9OworICAgIEhhc2hNYXA8U3RyaW5nLCBVUkxCcmVha3BvaW50VHlwZT4gbV91cmxC
cmVha3BvaW50czsKKyAgICBib29sIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzCmluZGV4IGRiNGQ1MTg1ODc0MmViYzgzMjFlZGVmOTFiYzNiNDg1NWY2NGM4YzAuLjNlNzdh
NjAyNzM1NGIyNTlkYzNkMzcxZGVjODAyMGNhMzY5YjM5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcwpAQCAtOTgwLDEyICs5ODAsMTQgQEAgbG9jYWxpemVkU3RyaW5nc1siVHJh
Y2U6ICVzIl0gPSAiVHJhY2U6ICVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlRyYW5zZmVyIFNpemUi
XSA9ICJUcmFuc2ZlciBTaXplIjsKIGxvY2FsaXplZFN0cmluZ3NbIlRyYW5zZmVycmVkIl0gPSAi
VHJhbnNmZXJyZWQiOwogbG9jYWxpemVkU3RyaW5nc1siVHJpZ2dlcmVkIEJyZWFrcG9pbnQiXSA9
ICJUcmlnZ2VyZWQgQnJlYWtwb2ludCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJUcmlnZ2VyZWQgVVJM
IEJyZWFrcG9pbnQiXSA9ICJUcmlnZ2VyZWQgVVJMIEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siVHJpZ2dlcmVkIFhIUiBCcmVha3BvaW50Il0gPSAiVHJpZ2dlcmVkIFhIUiBCcmVha3Bv
aW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlRydWUiXSA9ICJUcnVlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlR5cGUiXSA9ICJUeXBlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlR5cGUgSXNzdWUiXSA9ICJU
eXBlIElzc3VlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlR5cGUgaW5mb3JtYXRpb24gZm9yIHZhcmlh
YmxlOiAlcyJdID0gIlR5cGUgaW5mb3JtYXRpb24gZm9yIHZhcmlhYmxlOiAlcyI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJVUkwiXSA9ICJVUkwiOworbG9jYWxpemVkU3RyaW5nc1siVVJMIEJyZWFrcG9p
bnRcdTIwMjYiXSA9ICJVUkwgQnJlYWtwb2ludFx1MjAyNiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJV
bmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkgZnJvbSByb290Il0gPSAiVW5hYmxl
IHRvIGRldGVybWluZSBwYXRoIHRvIHByb3BlcnR5IGZyb20gcm9vdCI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJVbmFibGUgdG8gcGFyc2UgYXMgSlNPTjogJXMiXSA9ICJVbmFibGUgdG8gcGFyc2UgYXMg
SlNPTjogJXMiOwogbG9jYWxpemVkU3RyaW5nc1siVW5hYmxlIHRvIHNob3cgY2VydGlmaWNhdGUg
Zm9yIFx1MjAxQyVzXHUyMDFDIl0gPSAiVW5hYmxlIHRvIHNob3cgY2VydGlmaWNhdGUgZm9yIFx1
MjAxQyVzXHUyMDFDIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAwZjZkYjE3MWUyYjIxYmRkOWM2NGVlOTEyZjkzZDZm
OWQzMzllN2EyLi5jOWQ1MTQwZjE5MTQ4ZTEzMjBhYmIwN2NkYmYxMDdkOTJjZjY4NDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5n
LmpzCkBAIC00Myw2ICs0MywyMSBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CiAg
ICAgfQogCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgbWlncmF0ZVZhbHVlKGtleSkKKyAg
ICB7CisgICAgICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgaWYgKCF3aW5kb3cu
SW5zcGVjdG9yVGVzdCAmJiB3aW5kb3cubG9jYWxTdG9yYWdlICYmIGtleSBpbiB3aW5kb3cubG9j
YWxTdG9yYWdlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZhbHVlID0g
SlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlW2tleV0pOworICAgICAgICAgICAgfSBjYXRj
aCB7IH0KKworICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKwogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IG5hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2Vy
LmpzCmluZGV4IDc3NzA1MWIzMTkzNTI3ZGMwZjFmMmZjNDhjZTM5NzE5ZjI1YjYwODQuLmNiYmY1
ZGY5NmU5ZWY2MTc2MjE4OWZlMDMxZTJiYzYyNzE5ODJiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTM2LDE1ICszNiwxNSBAQCBXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgdGhpcy5fZXZlbnRCcmVha3BvaW50U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJldmVu
dC1icmVha3BvaW50cyIsIFtdKTsKICAgICAgICAgdGhpcy5fZXZlbnRCcmVha3BvaW50cyA9IFtd
OwogCi0gICAgICAgIHRoaXMuX3hockJyZWFrcG9pbnRzU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5n
KCJ4aHItYnJlYWtwb2ludHMiLCBbXSk7Ci0gICAgICAgIHRoaXMuX3hockJyZWFrcG9pbnRzID0g
W107CisgICAgICAgIHRoaXMuX3VybEJyZWFrcG9pbnRzU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5n
KCJ1cmwtYnJlYWtwb2ludHMiLCBXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZSgieGhyLWJyZWFrcG9p
bnRzIikgfHwgW10pOworICAgICAgICB0aGlzLl91cmxCcmVha3BvaW50cyA9IFtdOwogICAgICAg
ICB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0
aW5nKCJicmVhay1vbi1hbGwtcmVxdWVzdHMiLCBmYWxzZSk7CiAKLSAgICAgICAgdGhpcy5fYWxs
UmVxdWVzdHNCcmVha3BvaW50ID0gbmV3IFdJLlhIUkJyZWFrcG9pbnQobnVsbCwgbnVsbCwgIXRo
aXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlKTsKKyAgICAgICAg
dGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50ID0gbmV3IFdJLlVSTEJyZWFrcG9pbnQobnVsbCwg
bnVsbCwgIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlKTsK
IAogICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9kb21CcmVha3BvaW50RGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkV2ZW50QnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzLl9ldmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICAgICAgV0kuWEhSQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLlhIUkJyZWFr
cG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5feGhyQnJlYWtwb2ludERp
c2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5VUkxCcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuVVJMQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hh
bmdlLCB0aGlzLl91cmxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAK
ICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZl
bnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9t
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVk
LCB0aGlzLl9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwpAQCAtNjUsMTYgKzY1LDE2IEBAIFdJLkRPTURl
YnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgZm9yIChsZXQgcGF5bG9hZCBvZiB0aGlzLl9ldmVudEJyZWFrcG9pbnRT
ZXR0aW5nLnZhbHVlKQogICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZlbnRCcmVha3BvaW50KFdJ
LkV2ZW50QnJlYWtwb2ludC5mcm9tUGF5bG9hZChwYXlsb2FkKSk7CiAKLSAgICAgICAgICAgIGZv
ciAobGV0IGNvb2tpZSBvZiB0aGlzLl94aHJCcmVha3BvaW50c1NldHRpbmcudmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5YSFJCcmVha3BvaW50KGNvb2tp
ZS50eXBlLCBjb29raWUudXJsLCBjb29raWUuZGlzYWJsZWQpOwotICAgICAgICAgICAgICAgIHRo
aXMuYWRkWEhSQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIGZvciAobGV0IGNv
b2tpZSBvZiB0aGlzLl91cmxCcmVha3BvaW50c1NldHRpbmcudmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5VUkxCcmVha3BvaW50KGNvb2tpZS50eXBlLCBj
b29raWUudXJsLCBjb29raWUuZGlzYWJsZWQpOworICAgICAgICAgICAgICAgIHRoaXMuYWRkVVJM
QnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhp
cy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuX3NwZWN1
bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMoKTsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLl9h
bGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBk
YXRlWEhSQnJlYWtwb2ludCh0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQpOworICAgICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJyZWFrcG9pbnQodGhpcy5fYWxsUmVxdWVzdHNCcmVha3Bv
aW50KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODUsNiArODUsMTEgQEAgV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHJldHVybiBET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludCAmJiBET01E
ZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludDsKICAgICB9CiAKKyAgICBzdGF0aWMg
c3VwcG9ydHNVUkxCcmVha3BvaW50cygpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
QmFja2VuZC5kb21haW5zLkRPTURlYnVnZ2VyLnNldFVSTEJyZWFrcG9pbnQgJiYgSW5zcGVjdG9y
QmFja2VuZC5kb21haW5zLkRPTURlYnVnZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQ7CisgICAgfQor
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc3VwcG9ydGVkKCkKQEAgLTExOCw3ICsxMjMsNyBA
QCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIGdldCBldmVudEJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5f
ZXZlbnRCcmVha3BvaW50czsgfQogCi0gICAgZ2V0IHhockJyZWFrcG9pbnRzKCkgeyByZXR1cm4g
dGhpcy5feGhyQnJlYWtwb2ludHM7IH0KKyAgICBnZXQgdXJsQnJlYWtwb2ludHMoKSB7IHJldHVy
biB0aGlzLl91cmxCcmVha3BvaW50czsgfQogCiAgICAgaXNCcmVha3BvaW50U3BlY2lhbChicmVh
a3BvaW50KQogICAgIHsKQEAgLTI3Niw2NCArMjgxLDcyIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBE
T01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJy
ZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3BvaW50UmVtb3ZlZCk7CiAgICAgfQogCi0gICAgeGhy
QnJlYWtwb2ludEZvclVSTCh1cmwpCisgICAgdXJsQnJlYWtwb2ludEZvclVSTCh1cmwpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5feGhyQnJlYWtwb2ludHMuZmluZCgoYnJlYWtwb2ludCkg
PT4gYnJlYWtwb2ludC51cmwgPT09IHVybCkgfHwgbnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3VybEJyZWFrcG9pbnRzLmZpbmQoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9pbnQudXJsID09PSB1
cmwpIHx8IG51bGw7CiAgICAgfQogCi0gICAgYWRkWEhSQnJlYWtwb2ludChicmVha3BvaW50KQor
ICAgIGFkZFVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5YSFJCcmVha3BvaW50KTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLlVSTEJyZWFrcG9pbnQpOwog
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
aWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgewotICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlhIUkJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKKyAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVh
a3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5feGhyQnJlYWtwb2ludHMuaW5jbHVk
ZXMoYnJlYWtwb2ludCksICJBbHJlYWR5IGFkZGVkIFhIUiBicmVha3BvaW50LiIsIGJyZWFrcG9p
bnQpOwotICAgICAgICBpZiAodGhpcy5feGhyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2lu
dCkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl91cmxCcmVha3BvaW50cy5pbmNsdWRl
cyhicmVha3BvaW50KSwgIkFscmVhZHkgYWRkZWQgVVJMIGJyZWFrcG9pbnQuIiwgYnJlYWtwb2lu
dCk7CisgICAgICAgIGlmICh0aGlzLl91cmxCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5feGhyQnJlYWtwb2lu
dHMuc29tZSgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IGJyZWFrcG9pbnQudHlwZSAmJiBlbnRy
eS51cmwgPT09IGJyZWFrcG9pbnQudXJsKSkKKyAgICAgICAgaWYgKHRoaXMuX3VybEJyZWFrcG9p
bnRzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBicmVha3BvaW50LnR5cGUgJiYgZW50
cnkudXJsID09PSBicmVha3BvaW50LnVybCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgdGhpcy5feGhyQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5f
dXJsQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuWEhSQnJlYWtwb2lu
dEFkZGVkLCB7YnJlYWtwb2ludH0pOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuVVJMQnJlYWtwb2ludEFkZGVkLCB7YnJl
YWtwb2ludH0pOwogCi0gICAgICAgIHRoaXMuX3Jlc29sdmVYSFJCcmVha3BvaW50KGJyZWFrcG9p
bnQpOwotICAgICAgICB0aGlzLl9zYXZlWEhSQnJlYWtwb2ludHMoKTsKKyAgICAgICAgdGhpcy5f
cmVzb2x2ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuX3NhdmVVUkxC
cmVha3BvaW50cygpOwogICAgIH0KIAotICAgIHJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2lu
dCkKKyAgICByZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuWEhSQnJlYWtwb2ludCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5VUkxCcmVha3Bv
aW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlhIUkJyZWFr
cG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlVSTEJyZWFrcG9pbnRS
ZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKCF0aGlzLl94aHJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkK
KyAgICAgICAgaWYgKCF0aGlzLl91cmxCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl94aHJCcmVha3BvaW50cy5yZW1v
dmUoYnJlYWtwb2ludCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX3VybEJyZWFrcG9pbnRzLnJlbW92
ZShicmVha3BvaW50LCB0cnVlKTsKIAotICAgICAgICB0aGlzLl9zYXZlWEhSQnJlYWtwb2ludHMo
KTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOworICAgICAg
ICB0aGlzLl9zYXZlVVJMQnJlYWtwb2ludHMoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlVSTEJyZWFrcG9pbnRSZW1v
dmVkLCB7YnJlYWtwb2ludH0pOwogCiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhS
QnJlYWtwb2ludChicmVha3BvaW50LnVybCwgKGVycm9yKSA9PiB7Ci0gICAgICAgICAgICBpZiAo
ZXJyb3IpCi0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIH0p
OworICAgICAgICAvLyBDb21wYXRpYmlsaXR5IChpT1MgMTIuMSk6IERPTURlYnVnZ2VyQWdlbnQu
cmVtb3ZlVVJMQnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgorICAgICAgICBpZiAoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtwb2ludHMoKSkgeworICAgICAgICAgICAgRE9N
RGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsLCAoZXJyb3Ip
ID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2lu
dC51cmwsIChlcnJvcikgPT4geworICAgICAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTQwNiw4ICs0MTksOCBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiB0aGlzLl9ldmVudEJyZWFrcG9pbnRz
KQogICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsK
IAotICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRoaXMuX3hockJyZWFrcG9pbnRzKQot
ICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAg
ICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgdGhpcy5fdXJsQnJlYWtwb2ludHMpCisgICAgICAg
ICAgICB0aGlzLl9yZXNvbHZlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAg
ICBfcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9kZUlkZW50aWZpZXIpCkBAIC00
ODAsNyArNDkzLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnNl
dEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lLCBi
cmVha3BvaW50VXBkYXRlZCk7CiAgICAgfQogCi0gICAgX3VwZGF0ZVhIUkJyZWFrcG9pbnQoYnJl
YWtwb2ludCwgY2FsbGJhY2spCisgICAgX3VwZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBicmVha3BvaW50VXBkYXRlZChlcnJv
cikKICAgICAgICAgewpAQCAtNDkxLDExICs1MDQsMjIgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gQ29tcGF0aWJp
bGl0eSAoaU9TIDEyLjEpOiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQgZGlk
IG5vdCBleGlzdC4KKyAgICAgICAgaWYgKCFXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNV
UkxCcmVha3BvaW50cygpKSB7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkK
KyAgICAgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJl
YWtwb2ludC51cmwsIGJyZWFrcG9pbnRVcGRhdGVkKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIGxldCBpc1JlZ2V4ID0gYnJlYWtwb2ludC50eXBlID09PSBXSS5VUkxCcmVh
a3BvaW50LlR5cGUuUmVndWxhckV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgRGVidWdnZXJB
Z2VudC5zZXRYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsLCBpc1JlZ2V4LCBicmVha3BvaW50
VXBkYXRlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KwogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIERPTURlYnVn
Z2VyQWdlbnQucmVtb3ZlWEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgYnJlYWtwb2ludFVw
ZGF0ZWQpOworICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50
KGJyZWFrcG9pbnQudXJsLCBicmVha3BvaW50VXBkYXRlZCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgbGV0IGlzUmVnZXggPSBicmVha3BvaW50LnR5cGUgPT09IFdJLlhIUkJyZWFrcG9p
bnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQu
c2V0WEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgaXNSZWdleCwgYnJlYWtwb2ludFVwZGF0
ZWQpOworICAgICAgICAgICAgbGV0IGlzUmVnZXggPSBicmVha3BvaW50LnR5cGUgPT09IFdJLlVS
TEJyZWFrcG9pbnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIERPTURlYnVn
Z2VyQWdlbnQuc2V0VVJMQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgaXNSZWdleCwgYnJlYWtw
b2ludFVwZGF0ZWQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MDksMTMgKzUzMywxMyBAQCBX
SS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX3Jlc29sdmVYSFJCcmVha3BvaW50
KGJyZWFrcG9pbnQpCisgICAgX3Jlc29sdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAg
ewogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB0aGlzLl91cGRhdGVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQsICgpID0+IHsK
LSAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlhIUkJy
ZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgKCkgPT4geworICAgICAgICAgICAgYnJlYWtw
b2ludC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVVJMQnJlYWtwb2ludC5FdmVudC5SZXNv
bHZlZFN0YXRlRGlkQ2hhbmdlKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC01MzksMTIgKzU2
MywxMiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fZXZlbnRCcmVha3BvaW50U2V0dGluZy52
YWx1ZSA9IHRoaXMuX2V2ZW50QnJlYWtwb2ludHMubWFwKChicmVha3BvaW50KSA9PiBicmVha3Bv
aW50LnNlcmlhbGl6YWJsZUluZm8pOwogICAgIH0KIAotICAgIF9zYXZlWEhSQnJlYWtwb2ludHMo
KQorICAgIF9zYXZlVVJMQnJlYWtwb2ludHMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMu
X3hockJyZWFrcG9pbnRzU2V0dGluZy52YWx1ZSA9IHRoaXMuX3hockJyZWFrcG9pbnRzLm1hcCgo
YnJlYWtwb2ludCkgPT4gYnJlYWtwb2ludC5zZXJpYWxpemFibGVJbmZvKTsKKyAgICAgICAgdGhp
cy5fdXJsQnJlYWtwb2ludHNTZXR0aW5nLnZhbHVlID0gdGhpcy5fdXJsQnJlYWtwb2ludHMubWFw
KChicmVha3BvaW50KSA9PiBicmVha3BvaW50LnNlcmlhbGl6YWJsZUluZm8pOwogICAgIH0KIAog
ICAgIF9kb21CcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZShldmVudCkKQEAgLTU2MSwx
NSArNTg1LDE1IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9zYXZlRXZlbnRCcmVha3BvaW50
cygpOwogICAgIH0KIAotICAgIF94aHJCcmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZShl
dmVudCkKKyAgICBfdXJsQnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UoZXZlbnQpCiAg
ICAgewogICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKIAogICAgICAgICBp
ZiAoYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50KQogICAgICAgICAg
ICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUgPSAhYnJl
YWtwb2ludC5kaXNhYmxlZDsKIAotICAgICAgICB0aGlzLl91cGRhdGVYSFJCcmVha3BvaW50KGJy
ZWFrcG9pbnQpOwotICAgICAgICB0aGlzLl9zYXZlWEhSQnJlYWtwb2ludHMoKTsKKyAgICAgICAg
dGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5fc2F2
ZVVSTEJyZWFrcG9pbnRzKCk7CiAgICAgfQogCiAgICAgX2NoaWxkRnJhbWVXYXNSZW1vdmVkKGV2
ZW50KQpAQCAtNjQ4LDYgKzY3Miw2IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudCA9IHsK
ICAgICBET01CcmVha3BvaW50UmVtb3ZlZDogImRvbS1kZWJ1Z2dlci1tYW5hZ2VyLWRvbS1icmVh
a3BvaW50LXJlbW92ZWQiLAogICAgIEV2ZW50QnJlYWtwb2ludEFkZGVkOiAiZG9tLWRlYnVnZ2Vy
LW1hbmFnZXItZXZlbnQtYnJlYWtwb2ludC1hZGRlZCIsCiAgICAgRXZlbnRCcmVha3BvaW50UmVt
b3ZlZDogImRvbS1kZWJ1Z2dlci1tYW5hZ2VyLWV2ZW50LWJyZWFrcG9pbnQtcmVtb3ZlZCIsCi0g
ICAgWEhSQnJlYWtwb2ludEFkZGVkOiAiZG9tLWRlYnVnZ2VyLW1hbmFnZXIteGhyLWJyZWFrcG9p
bnQtYWRkZWQiLAotICAgIFhIUkJyZWFrcG9pbnRSZW1vdmVkOiAiZG9tLWRlYnVnZ2VyLW1hbmFn
ZXIteGhyLWJyZWFrcG9pbnQtcmVtb3ZlZCIsCisgICAgVVJMQnJlYWtwb2ludEFkZGVkOiAiZG9t
LWRlYnVnZ2VyLW1hbmFnZXItdXJsLWJyZWFrcG9pbnQtYWRkZWQiLAorICAgIFVSTEJyZWFrcG9p
bnRSZW1vdmVkOiAiZG9tLWRlYnVnZ2VyLW1hbmFnZXItdXJsLWJyZWFrcG9pbnQtcmVtb3ZlZCIs
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IDg1NjI4MTZiMWQ5
NzE4ODgzZGFjMzJkODViNDkyMTMyZjFjMThhNjguLjkzZmZlZDc5MDRhMGYxMDQ0ZDYwM2VmNmNk
NDkzN2FlZmQ5MzdkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAg
LTg1OCw2ICs4NTgsOCBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJldHVybiBXSS5EZWJ1Z2dlck1hbmFn
ZXIuUGF1c2VSZWFzb24uRXZlbnRMaXN0ZW5lcjsKICAgICAgICAgY2FzZSBEZWJ1Z2dlckFnZW50
LlBhdXNlZFJlYXNvbi5FeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gV0kuRGVidWdnZXJN
YW5hZ2VyLlBhdXNlUmVhc29uLkV4Y2VwdGlvbjsKKyAgICAgICAgY2FzZSBEZWJ1Z2dlckFnZW50
LlBhdXNlZFJlYXNvbi5GZXRjaDoKKyAgICAgICAgICAgIHJldHVybiBXSS5EZWJ1Z2dlck1hbmFn
ZXIuUGF1c2VSZWFzb24uRmV0Y2g7CiAgICAgICAgIGNhc2UgRGVidWdnZXJBZ2VudC5QYXVzZWRS
ZWFzb24uUGF1c2VPbk5leHRTdGF0ZW1lbnQ6CiAgICAgICAgICAgICByZXR1cm4gV0kuRGVidWdn
ZXJNYW5hZ2VyLlBhdXNlUmVhc29uLlBhdXNlT25OZXh0U3RhdGVtZW50OwogICAgICAgICBjYXNl
IERlYnVnZ2VyQWdlbnQuUGF1c2VkUmVhc29uLlRpbWVyOgpAQCAtMTM4OSw2ICsxMzkxLDcgQEAg
V0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uID0gewogICAgIERPTTogIkRPTSIsCiAgICAg
RXZlbnRMaXN0ZW5lcjogImV2ZW50LWxpc3RlbmVyIiwKICAgICBFeGNlcHRpb246ICJleGNlcHRp
b24iLAorICAgIEZldGNoOiAiZmV0Y2giLAogICAgIFBhdXNlT25OZXh0U3RhdGVtZW50OiAicGF1
c2Utb24tbmV4dC1zdGF0ZW1lbnQiLAogICAgIFRpbWVyOiAidGltZXIiLAogICAgIFhIUjogInho
ciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggYjFhMmZjN2UxMzU4ZTA2MjM2ZmVlZWQ5OWJmMGQxZjNmOGZiMzZkNS4uYzU1MTI1YmMxODRi
ZWMxY2I5ZjM0NjRhYWFlZGJmYmJkYjNmYWI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMjI0LDEwICsyMjQsMTAgQEAKICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUb2tlblZpZXcuY3NzIj4KICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVWaWV3LmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9VUkxCcmVha3BvaW50UG9w
b3Zlci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVVJMQnJl
YWtwb2ludFRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WYXJpYWJsZXMuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3LmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9YSFJCcmVha3BvaW50UG9wb3Zlci5jc3MiPgotICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyI+
CiAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJy
b3JDb21wbGV0aW9uQ29udHJvbGxlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckRyYWdUb0FkanVzdE51bWJlckNvbnRyb2xsZXIu
Y3NzIj4KQEAgLTQ1Myw5ICs0NTMsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVGltZWxp
bmVSZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZURl
c2NyaXB0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1R5cGVTZXQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVVJMQnJlYWtwb2ludC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9YSFJCcmVha3BvaW50LmpzIj48L3Njcmlw
dD4KIAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQXVkaXRUZXN0QmFzZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BdWRpdFRlc3RDYXNlLmpzIj48L3NjcmlwdD4KQEAg
LTgwNywxMiArODA3LDEyIEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUb2tlblZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UeXBlVHJlZVZpZXcuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9VUkxCcmVha3BvaW50UG9wb3Zlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1dlYlNvY2tldENvbnRlbnRWaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvV2ViU29ja2V0RGF0YUdyaWRO
b2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvV2ViU29ja2V0UmVzb3Vy
Y2VUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1dvcmtl
clRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iVmlld3MvWEhSQnJl
YWtwb2ludFBvcG92ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9YSFJC
cmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0Fubm90YXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtw
b2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxC
cmVha3BvaW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4ZmEyOGVmOGUyMGU3NDZmZjgwMjZjYzFmNWQzMzQw
YjQ2YjVkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcwpAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5P
YmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCB1cmwsIGRpc2FibGVkKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBXSS5VUkxCcmVh
a3BvaW50LlR5cGUuVGV4dDsKKyAgICAgICAgdGhpcy5fdXJsID0gdXJsIHx8ICIiOworICAgICAg
ICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IHVy
bCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQorCisgICAgZ2V0IGRpc2FibGVkKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICB9CisKKyAgICBzZXQgZGlzYWJsZWQo
ZGlzYWJsZWQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVk
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJs
ZWQ7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVVJMQnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlKTsKKyAgICB9CisKKyAgICBnZXQgc2Vy
aWFsaXphYmxlSW5mbygpCisgICAgeworICAgICAgICBsZXQgaW5mbyA9IHt0eXBlOiB0aGlzLl90
eXBlLCB1cmw6IHRoaXMuX3VybH07CisgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKKyAgICAg
ICAgICAgIGluZm8uZGlzYWJsZWQgPSB0cnVlOworCisgICAgICAgIHJldHVybiBpbmZvOworICAg
IH0KKworICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNv
b2tpZVsidXJsLWJyZWFrcG9pbnQtdXJsIl0gPSB0aGlzLl91cmw7CisgICAgfQorfTsKKworV0ku
VVJMQnJlYWtwb2ludC5FdmVudCA9IHsKKyAgICBEaXNhYmxlZFN0YXRlRGlkQ2hhbmdlOiAidXJs
LWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCisgICAgUmVzb2x2ZWRTdGF0
ZURpZENoYW5nZTogInVybC1icmVha3BvaW50LXJlc29sdmVkLXN0YXRlLWRpZC1jaGFuZ2UiLAor
fTsKKworV0kuVVJMQnJlYWtwb2ludC5UeXBlID0geworICAgIFRleHQ6ICJ0ZXh0IiwKKyAgICBS
ZWd1bGFyRXhwcmVzc2lvbjogInJlZ2V4IiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvWEhSQnJlYWtwb2ludC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9YSFJCcmVha3BvaW50LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjdhYzRmMDI5NDBlYTRiMmZkN2E5NWQ0NmEzYWFj
YTc3OTBmYjQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9YSFJCcmVha3BvaW50
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLlhIUkJy
ZWFrcG9pbnQgPSBjbGFzcyBYSFJCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0Ci17Ci0gICAg
Y29uc3RydWN0b3IodHlwZSwgdXJsLCBkaXNhYmxlZCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKCk7
Ci0KLSAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGUgfHwgV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRl
eHQ7Ci0gICAgICAgIHRoaXMuX3VybCA9IHVybCB8fCAiIjsKLSAgICAgICAgdGhpcy5fZGlzYWJs
ZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdl
dCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQotICAgIGdldCB1cmwoKSB7IHJldHVybiB0
aGlzLl91cmw7IH0KLQotICAgIGdldCBkaXNhYmxlZCgpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fZGlzYWJsZWQ7Ci0gICAgfQotCi0gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkID09PSBkaXNhYmxlZCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkOwotCi0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlhIUkJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZURpZENoYW5nZSk7Ci0gICAgfQotCi0gICAgZ2V0IHNlcmlhbGl6YWJsZUluZm8o
KQotICAgIHsKLSAgICAgICAgbGV0IGluZm8gPSB7dHlwZTogdGhpcy5fdHlwZSwgdXJsOiB0aGlz
Ll91cmx9OwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0gICAgICAgICAgICBpbmZvLmRp
c2FibGVkID0gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gaW5mbzsKLSAgICB9Ci0KLSAgICBzYXZl
SWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCi0gICAgewotICAgICAgICBjb29raWVbV0kuWEhSQnJl
YWtwb2ludC5VUkxDb29raWVLZXldID0gdGhpcy5fdXJsOwotICAgIH0KLX07Ci0KLVdJLlhIUkJy
ZWFrcG9pbnQuVVJMQ29va2llS2V5ID0gInhoci1icmVha3BvaW50LXVybCI7Ci0KLVdJLlhIUkJy
ZWFrcG9pbnQuRXZlbnQgPSB7Ci0gICAgRGlzYWJsZWRTdGF0ZURpZENoYW5nZTogInhoci1icmVh
a3BvaW50LWRpc2FibGVkLXN0YXRlLWRpZC1jaGFuZ2UiLAotICAgIFJlc29sdmVkU3RhdGVEaWRD
aGFuZ2U6ICJ4aHItYnJlYWtwb2ludC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKLX07Ci0K
LVdJLlhIUkJyZWFrcG9pbnQuVHlwZSA9IHsKLSAgICBUZXh0OiAidGV4dCIsCi0gICAgUmVndWxh
ckV4cHJlc3Npb246ICJyZWdleCIsCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IGVmODMyNmFhZGFkZTBiZmExOTBkMWI3ZDMxZTRkMTIy
YTQzMjk4MjQuLmVlNDI4MmI2NzEzMDBhNGQ2YWNmYWJlZTI0MzkxOTJlODMwOWViYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTIwNCw5
ICsyMDQsOSBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVGV4dFJhbmdlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1RpbWVsaW5lTWFya2VyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvV2ViU29ja2V0UmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvV3JhcHBlZFByb21pc2UuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvWEhSQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0F1ZGl0VGVzdEJhc2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvQXVkaXRUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5l
bC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2Vy
U2lkZWJhclBhbmVsLmpzCmluZGV4IGU3YjNkYjkyZGQyYjgzOTQwNmM3ODcwYTc1MzE1ODBjYWVk
ZTNhMTcuLjA5OGNmZjk1NmFhMjdjYzI0YTU3MWY2NzBlMjc5MTM5ODJlNTVhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lk
ZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCkBAIC0zNiwxMiArMzYsMTIgQEAgV0kuRGVidWdn
ZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5h
dmlnYXRpb25TaWRlYmEKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRBZGRlZCwgdGhpcy5fYnJlYWtw
b2ludEFkZGVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCwg
dGhpcy5fYnJlYWtwb2ludEFkZGVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJl
YWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwotICAgICAgICBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuWEhSQnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwor
ICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuVVJMQnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRk
ZWQsIHRoaXMpOwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVtb3ZlZCwgdGhpcy5fYnJlYWtw
b2ludFJlbW92ZWQsIHRoaXMpOwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92
ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2
ZW50QnJlYWtwb2ludFJlbW92ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKLSAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVt
b3ZlZCwgdGhpcyk7CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3BvaW50UmVtb3ZlZCwgdGhp
cy5fYnJlYWtwb2ludFJlbW92ZWQsIHRoaXMpOwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0Vu
YWJsZWREaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcyk7
CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5TY3JpcHRBZGRlZCwgdGhpcy5fc2NyaXB0QWRkZWQsIHRoaXMpOwpAQCAt
MjMzLDcgKzIzMyw3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJT
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAKICAgICAgICAgaWYgKFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0ZWQpIHsKICAgICAgICAgICAgIGlmIChXSS5zZXR0
aW5ncy5zaG93QWxsUmVxdWVzdHNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hZGRYSFJCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hZGRVUkxCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0
c0JyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICBmb3IgKGxldCBldmVudEJyZWFrcG9pbnQgb2Yg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmV2ZW50QnJlYWtwb2ludHMpCiAgICAgICAgICAgICAgICAg
dGhpcy5fYWRkQnJlYWtwb2ludChldmVudEJyZWFrcG9pbnQpOwpAQCAtMjQ0LDggKzI0NCw4IEBA
IFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAgICAgICAgICBmb3IgKGxldCBldmVudExpc3Rl
bmVyQnJlYWtwb2ludCBvZiBXSS5kb21NYW5hZ2VyLmV2ZW50TGlzdGVuZXJCcmVha3BvaW50cykK
ICAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGV2ZW50TGlzdGVuZXJCcmVha3Bv
aW50KTsKIAotICAgICAgICAgICAgZm9yIChsZXQgeGhyQnJlYWtwb2ludHMgb2YgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLnhockJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJy
ZWFrcG9pbnQoeGhyQnJlYWtwb2ludHMpOworICAgICAgICAgICAgZm9yIChsZXQgdXJsQnJlYWtw
b2ludHMgb2YgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnVybEJyZWFrcG9pbnRzKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQodXJsQnJlYWtwb2ludHMpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5wYXVzZWQpCkBAIC00MDIsOCArNDAyLDgg
QEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBl
eHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgICAgICBpZiAoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkV2ZW50QnJlYWtwb2ludCkKICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hZGRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIGVsc2UgaWYgKGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5YSFJCcmVha3BvaW50KQotICAgICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFkZFhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIGVs
c2UgaWYgKGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5VUkxCcmVha3BvaW50KQorICAgICAgICAg
ICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZFVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAtNDkyLDggKzQ5Miw4IEBAIFdJLkRlYnVnZ2VyU2lk
ZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0
aW9uU2lkZWJhCiAKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCiAg
ICAgICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQgPSBnZXRET01Ob2RlVHJlZUVsZW1lbnQo
YnJlYWtwb2ludC5ldmVudExpc3RlbmVyLm5vZGUpOwotICAgICAgICB9IGVsc2UgaWYgKGJyZWFr
cG9pbnQgaW5zdGFuY2VvZiBXSS5YSFJCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBjb25zdHJ1
Y3RvciA9IFdJLlhIUkJyZWFrcG9pbnRUcmVlRWxlbWVudDsKKyAgICAgICAgfSBlbHNlIGlmIChi
cmVha3BvaW50IGluc3RhbmNlb2YgV0kuVVJMQnJlYWtwb2ludCkgeworICAgICAgICAgICAgY29u
c3RydWN0b3IgPSBXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQ7CiAKICAgICAgICAgICAgIGlm
IChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3Bv
aW50KSB7CiAgICAgICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWUgPSBXSS5EZWJ1Z2dlclNp
ZGViYXJQYW5lbC5Bc3NlcnRpb25JY29uU3R5bGVDbGFzc05hbWU7CkBAIC05NDgsNyArOTQ4LDcg
QEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBl
eHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV0kuRE9NTm9kZVRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBp
bnN0YW5jZW9mIFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHJl
ZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudAotICAgICAg
ICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5YSFJCcmVha3BvaW50VHJlZUVsZW1l
bnQpCisgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlVSTEJyZWFrcG9p
bnRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb25zdCBvcHRp
b25zID0gewpAQCAtMTAxMSw3ICsxMDExLDcgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBj
bGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAg
ICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0ku
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50
KSA9PiB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkRPTU5vZGVUcmVlRWxlbWVudCwKICAgICAg
ICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuRE9N
QnJlYWtwb2ludFRyZWVFbGVtZW50LAotICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4g
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5YSFJCcmVha3BvaW50VHJlZUVsZW1lbnQsCisgICAg
ICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlVS
TEJyZWFrcG9pbnRUcmVlRWxlbWVudCwKICAgICAgICAgICAgIF07CiAKICAgICAgICAgICAgIGxl
dCBhUmFuayA9IHJhbmtGdW5jdGlvbnMuZmluZEluZGV4KChyYW5rRnVuY3Rpb24pID0+IHJhbmtG
dW5jdGlvbihhKSk7CkBAIC0xMjc5LDI2ICsxMjc5LDI3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBh
bmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lk
ZWJhCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvbkdyb3VwLnJvd3MgPSBbZXZlbnRCcmVh
a3BvaW50Um93XTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgICAgIGNhc2UgV0ku
RGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkZldGNoOgogICAgICAgICBjYXNlIFdJLkRlYnVn
Z2VyTWFuYWdlci5QYXVzZVJlYXNvbi5YSFI6CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydGVkKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHBhdXNlRGF0YSwgIkV4cGVjdGVkIFhIUiBicmVha3BvaW50IGRhdGEsIGJ1dCBmb3VuZCBu
b25lLiIpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocGF1c2VEYXRhLCAiRXhwZWN0ZWQg
VVJMIGJyZWFrcG9pbnQgZGF0YSwgYnV0IGZvdW5kIG5vbmUuIik7CiAgICAgICAgICAgICBpZiAo
cGF1c2VEYXRhKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhdXNlRGF0YS5icmVha3BvaW50VVJM
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB4aHJCcmVha3BvaW50ID0gV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLnhockJyZWFrcG9pbnRGb3JVUkwocGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwpOwot
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh4aHJCcmVha3BvaW50LCAiRXhwZWN0
ZWQgWEhSIGJyZWFrcG9pbnQgZm9yIFVSTC4iLCBwYXVzZURhdGEuYnJlYWtwb2ludFVSTCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB1cmxCcmVha3BvaW50ID0gV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnVybEJyZWFrcG9pbnRGb3JVUkwocGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwpOworICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh1cmxCcmVha3BvaW50LCAiRXhwZWN0ZWQgVVJM
IGJyZWFrcG9pbnQgZm9yIFVSTC4iLCBwYXVzZURhdGEuYnJlYWtwb2ludFVSTCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRl
Q29udGVudFRyZWVPdXRsaW5lKHRydWUpOwogCi0gICAgICAgICAgICAgICAgICAgIGxldCB4aHJC
cmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50KHho
ckJyZWFrcG9pbnQsIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRUcmVl
RWxlbWVudCA9IG5ldyBXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQodXJsQnJlYWtwb2ludCwg
ewogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBXSS5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5QYXVzZWRCcmVha3BvaW50SWNvblN0eWxlQ2xhc3NOYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJUcmlnZ2VyZWQgWEhSIEJyZWFrcG9pbnQiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3Vw
cG9ydHNVUkxCcmVha3BvaW50cygpID8gV0kuVUlTdHJpbmcoIlRyaWdnZXJlZCBVUkwgQnJlYWtw
b2ludCIpIDogV0kuVUlTdHJpbmcoIlRyaWdnZXJlZCBYSFIgQnJlYWtwb2ludCIpLAogICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHhockJyZWFrcG9pbnRS
b3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMu
X3BhdXNlUmVhc29uVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoeGhyQnJlYWtwb2ludFRyZWVFbGVt
ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgeGhyQnJlYWtwb2ludFJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuZWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCB1cmxCcmVha3BvaW50Um93ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uUm93
OworICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVu
ZENoaWxkKHVybEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIHVy
bEJyZWFrcG9pbnRSb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wYXVzZVJlYXNvblRyZWVP
dXRsaW5lLmVsZW1lbnQpOwogCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29u
VGV4dFJvdy50ZXh0ID0gcGF1c2VEYXRhLnVybDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5f
cGF1c2VSZWFzb25Hcm91cC5yb3dzID0gW3hockJyZWFrcG9pbnRSb3csIHRoaXMuX3BhdXNlUmVh
c29uVGV4dFJvd107CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uR3JvdXAu
cm93cyA9IFt1cmxCcmVha3BvaW50Um93LCB0aGlzLl9wYXVzZVJlYXNvblRleHRSb3ddOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHBhdXNlRGF0YS5icmVha3BvaW50VVJMID09PSAiIiwgIlNob3VsZCBiZSB0aGUgQWxsIFJlcXVl
c3RzIGJyZWFrcG9pbnQgd2hpY2ggaGFzIGFuIGVtcHR5IFVSTCIpOwogICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9wYXVzZVJlYXNvblRleHRSb3cudGV4dCA9IFdJLlVJU3RyaW5nKCJSZXF1ZXN0
aW5nOiAlcyIpLmZvcm1hdChwYXVzZURhdGEudXJsKTsKQEAgLTE0NDgsMTUgKzE0NDksMTUgQEAg
V0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBjbGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRl
bmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
Q2hlY2tib3hJdGVtKFdJLlVJU3RyaW5nKCJBbGwgUmVxdWVzdHMiKSwgKCkgPT4gewogICAgICAg
ICAgICAgICAgIGlmIChhbGxSZXF1ZXN0c0JyZWFrcG9pbnRTaG93bikKLSAgICAgICAgICAgICAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVhIUkJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQpOwogICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVh
a3BvaW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hZGRYSFJCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWRkVVJMQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVh
a3BvaW50KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LCBhbGxSZXF1ZXN0c0Jy
ZWFrcG9pbnRTaG93bik7CiAKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0ku
VUlTdHJpbmcoIlhIUiBCcmVha3BvaW50XHUyMDI2IiksICgpID0+IHsKLSAgICAgICAgICAgICAg
ICBsZXQgcG9wb3ZlciA9IG5ldyBXSS5YSFJCcmVha3BvaW50UG9wb3Zlcih0aGlzKTsKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBv
cnRzVVJMQnJlYWtwb2ludHMoKSA/IFdJLlVJU3RyaW5nKCJVUkwgQnJlYWtwb2ludFx1MjAyNiIp
IDogV0kuVUlTdHJpbmcoIlhIUiBCcmVha3BvaW50XHUyMDI2IiksICgpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQgcG9wb3ZlciA9IG5ldyBXSS5VUkxCcmVha3BvaW50UG9wb3Zlcih0aGlzKTsK
ICAgICAgICAgICAgICAgICBwb3BvdmVyLnNob3coZXZlbnQudGFyZ2V0LmVsZW1lbnQsIFtXSS5S
ZWN0RWRnZS5NQVhfWSwgV0kuUmVjdEVkZ2UuTUlOX1ksIFdJLlJlY3RFZGdlLk1BWF9YXSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuanMKaW5kZXggNDc3NDgwYmZjNWNjNDhhOTdkNDg4NzljZGY3NzhkYTU3MTM5NGFhZS4uYzUz
ZGY0YWUzYTYzN2I0NDVjN2JhMWM2MDAzMDk0ZjM3OWYzMjA0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC02NDYsNyArNjQ2LDcgQEAgV0kuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5TaWRl
YmFyUGFuZWwKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuSWRsZVRy
ZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkRPTUJy
ZWFrcG9pbnRUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2Vv
ZiBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudAotICAgICAgICAgICAgfHwgdHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXSS5YSFJCcmVha3BvaW50VHJlZUVsZW1lbnQKKyAgICAgICAgICAgIHx8
IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50CiAgICAg
ICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkNTU1N0eWxlU2hlZXRUcmVlRWxl
bWVudAogICAgICAgICAgICAgfHwgdHlwZW9mIHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0
ID09PSAic3RyaW5nIgogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50UG9wb3Zlci5jc3MgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50UG9wb3Zlci5jc3MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDRlOWYyNzU4NjVkN2Q5YmU4MjMzNGRhM2M5ZjdhODk3ZTQwMjA1ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1VSTEJyZWFrcG9pbnRQb3BvdmVyLmNzcwpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LnBvcG92ZXIgLnVybC1icmVha3BvaW50LWNvbnRlbnQgeworICAgIHBhZGRpbmc6IDVweDsKKyAg
ICBtYXJnaW46IDJweDsKK30KKworLnBvcG92ZXIgLnVybC1icmVha3BvaW50LWNvbnRlbnQgPiAu
ZWRpdG9yLXdyYXBwZXIgeworICAgIG1hcmdpbi10b3A6IDRweDsKKyAgICBkaXNwbGF5OiBmbGV4
OworICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7Cit9CisKKy5wb3BvdmVyIC51cmwtYnJlYWtwb2lu
dC1jb250ZW50ID4gLmVkaXRvci13cmFwcGVyID4gLmVkaXRvciB7CisgICAgd2lkdGg6IDE4MHB4
OworICAgIHBhZGRpbmc6IDRweCAwIDJweCAwOworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4
dGZpZWxkOworICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbCgwLCAwJSwgNzglKTsKKyAgICBiYWNr
Z3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yLWNvZGUpOworCisgICAgLS1lZGl0b3ItbWFy
Z2luLXN0YXJ0OiA0cHg7Cit9CisKK2JvZHlbZGlyPWx0cl0gLnBvcG92ZXIgLnVybC1icmVha3Bv
aW50LWNvbnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9yIHsKKyAgICBtYXJnaW4tbGVm
dDogdmFyKC0tZWRpdG9yLW1hcmdpbi1zdGFydCk7Cit9CisKK2JvZHlbZGlyPXJ0bF0gLnBvcG92
ZXIgLnVybC1icmVha3BvaW50LWNvbnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9yIHsK
KyAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWVkaXRvci1tYXJnaW4tc3RhcnQpOworfQorCisucG9w
b3ZlciAudXJsLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3JhcHBlciA+IC5lZGl0b3Ig
PiAuQ29kZU1pcnJvciB7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJweCk7CisgICAgaGVpZ2h0
OiBhdXRvOworfQorCisucG9wb3ZlciAudXJsLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3It
d3JhcHBlciA+IC5lZGl0b3IgPiAuQ29kZU1pcnJvci1zY3JvbGwgeworICAgIHdpZHRoOiBjYWxj
KDEwMCUgLSAycHgpOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKK0BtZWRpYSAocHJlZmVy
cy1kYXJrLWludGVyZmFjZSkgeworICAgIC5wb3BvdmVyIC51cmwtYnJlYWtwb2ludC1jb250ZW50
ID4gLmVkaXRvci13cmFwcGVyID4gLmVkaXRvciB7CisgICAgICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogdW5zZXQ7CisgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1jb2xvci1xdWF0ZXJu
YXJ5KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50UG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRQb3BvdmVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkZDRjYWZhYjI0NmFkZjc4NWQyZmI3ZTkwODcyYjFkMTgxYzNjMTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVh
a3BvaW50UG9wb3Zlci5qcwpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlVSTEJy
ZWFrcG9pbnRQb3BvdmVyID0gY2xhc3MgVVJMQnJlYWtwb2ludFBvcG92ZXIgZXh0ZW5kcyBXSS5Q
b3BvdmVyCit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBl
cihkZWxlZ2F0ZSk7CisKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IG51bGw7CisKKyAgICAg
ICAgdGhpcy5fY29kZU1pcnJvciA9IG51bGw7CisgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQg
PSBudWxsOworICAgICAgICB0aGlzLl9wcmVmZXJyZWRFZGdlcyA9IG51bGw7CisKKyAgICAgICAg
dGhpcy53aW5kb3dSZXNpemVIYW5kbGVyID0gdGhpcy5fcHJlc2VudE92ZXJUYXJnZXRFbGVtZW50
LmJpbmQodGhpcyk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgYnJlYWtwb2lu
dCgpIHsgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7IH0KKworICAgIHNob3codGFyZ2V0RWxlbWVu
dCwgcHJlZmVycmVkRWRnZXMpCisgICAgeworICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50ID0g
dGFyZ2V0RWxlbWVudDsKKyAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBwcmVmZXJyZWRF
ZGdlczsKKworICAgICAgICBsZXQgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidXJsLWJy
ZWFrcG9pbnQtY29udGVudCIpOworCisgICAgICAgIGxldCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsYWJlbC5jbGFzc0xpc3QuYWRkKCJsYWJlbCIpOwor
ICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJCcmVhayBvbiByZXF1ZXN0
IHdpdGggVVJMOiIpOworCisgICAgICAgIGxldCBlZGl0b3JXcmFwcGVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVkaXRvcldyYXBwZXIuY2xhc3NMaXN0LmFkZCgi
ZWRpdG9yLXdyYXBwZXIiKTsKKworICAgICAgICB0aGlzLl90eXBlU2VsZWN0RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworCisgICAgICAgIGxldCBjcmVhdGVPcHRp
b24gPSAodGV4dCwgdmFsdWUpID0+IHsKKyAgICAgICAgICAgIGxldCBvcHRpb25FbGVtZW50ID0g
dGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgib3B0aW9uIikpOworICAgICAgICAgICAgb3B0aW9uRWxlbWVudC50ZXh0Q29udGVudCA9IHRl
eHQ7CisgICAgICAgICAgICBvcHRpb25FbGVtZW50LnZhbHVlID0gdmFsdWU7CisgICAgICAgIH07
CisKKyAgICAgICAgY3JlYXRlT3B0aW9uKFdJLlVJU3RyaW5nKCJDb250YWluaW5nIiksIFdJLlVS
TEJyZWFrcG9pbnQuVHlwZS5UZXh0KTsKKyAgICAgICAgY3JlYXRlT3B0aW9uKFdJLlVJU3RyaW5n
KCJNYXRjaGluZyIpLCBXSS5VUkxCcmVha3BvaW50LlR5cGUuUmVndWxhckV4cHJlc3Npb24pOwor
CisgICAgICAgIHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50LnZhbHVlID0gV0kuVVJMQnJlYWtwb2lu
dC5UeXBlLlRleHQ7CisgICAgICAgIHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4geworICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWRp
dG9yKCk7CisgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmZvY3VzKCk7CisgICAgICAgIH0p
OworCisgICAgICAgIGVkaXRvcldyYXBwZXIuYXBwZW5kKHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50
LCB0aGlzLl9jcmVhdGVFZGl0b3IoKSk7CisgICAgICAgIGNvbnRlbnRFbGVtZW50LmFwcGVuZChs
YWJlbCwgZWRpdG9yV3JhcHBlcik7CisKKyAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudEVs
ZW1lbnQ7CisKKyAgICAgICAgdGhpcy5fcHJlc2VudE92ZXJUYXJnZXRFbGVtZW50KCk7CisgICAg
fQorCisgICAgZGlzbWlzcygpCisgICAgeworICAgICAgICBsZXQgdHlwZSA9IHRoaXMuX3R5cGVT
ZWxlY3RFbGVtZW50LnZhbHVlOworICAgICAgICBsZXQgdXJsID0gdGhpcy5fY29kZU1pcnJvci5n
ZXRWYWx1ZSgpOworICAgICAgICBpZiAodHlwZSAmJiB1cmwpCisgICAgICAgICAgICB0aGlzLl9i
cmVha3BvaW50ID0gbmV3IFdJLlVSTEJyZWFrcG9pbnQodHlwZSwgdXJsKTsKKworICAgICAgICBz
dXBlci5kaXNtaXNzKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2NyZWF0ZUVk
aXRvcigpCisgICAgeworICAgICAgICBsZXQgZWRpdG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlZGl0b3JFbGVtZW50LmNsYXNzTGlzdC5hZGQoImVk
aXRvciIpOworCisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBXSS5Db2RlTWlycm9yRWRpdG9y
LmNyZWF0ZShlZGl0b3JFbGVtZW50LCB7CisgICAgICAgICAgICBsaW5lV3JhcHBpbmc6IGZhbHNl
LAorICAgICAgICAgICAgbWF0Y2hCcmFja2V0czogZmFsc2UsCisgICAgICAgICAgICBzY3JvbGxi
YXJTdHlsZTogbnVsbCwKKyAgICAgICAgICAgIHZhbHVlOiAiIiwKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5hZGRLZXlNYXAoeworICAgICAgICAgICAgIkVudGVyIjog
KCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJFc2MiOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNz
KCk7CisgICAgICAgICAgICB9LAorICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl91cGRhdGVF
ZGl0b3IoKTsKKworICAgICAgICByZXR1cm4gZWRpdG9yRWxlbWVudDsKKyAgICB9CisKKyAgICBf
dXBkYXRlRWRpdG9yKCkKKyAgICB7CisgICAgICAgIGxldCBwbGFjZWhvbGRlcjsKKyAgICAgICAg
bGV0IG1pbWVUeXBlOworICAgICAgICBpZiAodGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQudmFsdWUg
PT09IFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0KSB7CisgICAgICAgICAgICBwbGFjZWhvbGRl
ciA9IFdJLlVJU3RyaW5nKCJUZXh0Iik7CisgICAgICAgICAgICBtaW1lVHlwZSA9ICJ0ZXh0L3Bs
YWluIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gV0kuVUlT
dHJpbmcoIlJlZ3VsYXIgRXhwcmVzc2lvbiIpOworICAgICAgICAgICAgbWltZVR5cGUgPSAidGV4
dC94LXJlZ2V4IjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0
aW9uKCJtb2RlIiwgbWltZVR5cGUpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldE9wdGlv
bigicGxhY2Vob2xkZXIiLCBwbGFjZWhvbGRlcik7CisgICAgfQorCisgICAgX3ByZXNlbnRPdmVy
VGFyZ2V0RWxlbWVudCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RhcmdldEVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHRhcmdldEZyYW1lID0gV0kuUmVj
dC5yZWN0RnJvbUNsaWVudFJlY3QodGhpcy5fdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKSk7CisgICAgICAgIHRoaXMucHJlc2VudCh0YXJnZXRGcmFtZSwgdGhpcy5fcHJlZmVy
cmVkRWRnZXMpOworCisgICAgICAgIC8vIENvZGVNaXJyb3IgbmVlZHMgYSByZWZyZXNoIGFmdGVy
IHRoZSBwb3BvdmVyIGRpc3BsYXlzLCB0byBsYXlvdXQsIG90aGVyd2lzZSBpdCBkb2Vzbid0IGFw
cGVhci4KKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9jb2Rl
TWlycm9yLnJlZnJlc2goKTsKKyAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuZm9jdXMoKTsK
KyAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIH0sIDApOworICAgIH0KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxC
cmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDEx
MDdjMGE3NzZhM2UxMDgzN2U0NzA3ZDBhOWNlOTZiODEwNWNlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcwpAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmJyZWFrcG9pbnQu
dXJsIC5zdWJ0aXRsZSB7CisgICAgZm9udC1mYW1pbHk6IE1lbmxvLCBtb25vc3BhY2U7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxC
cmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZlOTc2
OTU4NTFjZWQ5MDBlNzlkMzE2OTc5NzZkNjU0ZTVhN2I0NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVl
RWxlbWVudC5qcwpAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlVSTEJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IGNsYXNzIFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJ
LkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFz
c05hbWUsIHRpdGxlfSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludCBpbnN0YW5jZW9mIFdJLlVSTEJyZWFrcG9pbnQpOworCisgICAgICAgIGlmICghY2xhc3NO
YW1lKQorICAgICAgICAgICAgY2xhc3NOYW1lID0gV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50Lkdl
bmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOworCisgICAgICAgIGxldCBzdWJ0aXRsZTsKKyAg
ICAgICAgaWYgKCF0aXRsZSkgeworICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiVVJM
Iik7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC50eXBlID09PSBXSS5VUkxCcmVha3BvaW50
LlR5cGUuVGV4dCkKKyAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IGRvdWJsZVF1b3RlZFN0cmlu
ZyhicmVha3BvaW50LnVybCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3Vi
dGl0bGUgPSAiLyIgKyBicmVha3BvaW50LnVybCArICIvIjsKKyAgICAgICAgfQorCisgICAgICAg
IHN1cGVyKFsiYnJlYWtwb2ludCIsICJ1cmwiLCBjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUs
IGJyZWFrcG9pbnQpOworCisgICAgICAgIHRoaXMuc3RhdHVzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW1nIik7CisgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC5hZGQoInN0YXR1cy1p
bWFnZSIsICJyZXNvbHZlZCIpOworCisgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0
ZWx5ID0gdHJ1ZTsKKworICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuVVJM
QnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0
dXMsIHRoaXMpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOworICAgIH0KKworICAg
IC8vIFByb3RlY3RlZAorCisgICAgb25hdHRhY2goKQorICAgIHsKKyAgICAgICAgc3VwZXIub25h
dHRhY2goKTsKKworICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQg
PSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkLmJpbmQodGhpcyk7CisgICAgICAgIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxl
bWVudEZvY3VzZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVs
ZW1lbnRNb3VzZURvd24gPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24uYmluZCh0
aGlzKTsKKworICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7CisgICAgICAgIHRoaXMuc3RhdHVz
LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRG
b2N1c2VkKTsKKyAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOworICAgIH0KKworICAg
IG9uZGV0YWNoKCkKKyAgICB7CisgICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7CisKKyAgICAgICAg
dGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudENsaWNrZWQpOworICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExp
c3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Cisg
ICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsKKworICAgICAgICB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBudWxsOworICAgICAgICB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxsOworICAgICAgICB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7CisgICAgfQorCisgICAgb25kZWxldGUoKQor
ICAgIHsKKyAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0
aGF0IHdpbGwgcmVtb3ZlIHRoaXMKKyAgICAgICAgLy8gQnJlYWtwb2ludFRyZWVFbGVtZW50IHdp
bGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVkIGZyb20KKyAgICAgICAgLy8gd2l0aGluIHRo
ZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCisgICAg
ICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7CisKKyAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG9uZW50
ZXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBvbnNwYWNlKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RvZ2dsZUJyZWFrcG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
cG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpCisgICAgeworICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIGxldCBsYWJl
bCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQgPyBXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQi
KSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKTsKKyAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShsYWJlbCwgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsK
KworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKworICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9
PiB7CisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtwb2lu
dChicmVha3BvaW50KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisg
ICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlz
Ll90b2dnbGVCcmVha3BvaW50KCk7CisgICAgfQorCisgICAgX3N0YXR1c0ltYWdlRWxlbWVudEZv
Y3VzZWQoZXZlbnQpCisgICAgeworICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1
cy4KKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfQorCisgICAgX3N0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIC8vIFByZXZlbnQg
dHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgfQorCisgICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQorICAgIHsKKyAgICAgICAgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2Fi
bGVkOworICAgIH0KKworICAgIF91cGRhdGVTdGF0dXMoKQorICAgIHsKKyAgICAgICAgdGhpcy5z
dGF0dXMuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmRpc2FibGVkKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFBvcG92ZXIuY3NzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFBvcG92ZXIuY3Nz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjAyOTlkMGRmOGY4NzQ3MTdmNTFiYWRh
YzNlNjdiOWY1MmQzNWY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1hIUkJyZWFr
cG9pbnRQb3BvdmVyLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0ucG9wb3ZlciAueGhyLWJyZWFrcG9pbnQtY29udGVudCB7Ci0gICAgcGFkZGluZzogNXB4
OwotICAgIG1hcmdpbjogMnB4OwotfQotCi0ucG9wb3ZlciAueGhyLWJyZWFrcG9pbnQtY29udGVu
dCA+IC5lZGl0b3Itd3JhcHBlciB7Ci0gICAgbWFyZ2luLXRvcDogNHB4OwotICAgIGRpc3BsYXk6
IGZsZXg7Ci0gICAgZmxleC1kaXJlY3Rpb246IHJvdzsKLX0KLQotLnBvcG92ZXIgLnhoci1icmVh
a3BvaW50LWNvbnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9yIHsKLSAgICB3aWR0aDog
MTgwcHg7Ci0gICAgcGFkZGluZzogNHB4IDAgMnB4IDA7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiB0ZXh0ZmllbGQ7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDAsIDAlLCA3OCUpOwotICAg
IGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtY29sb3ItY29kZSk7Ci0KLSAgICAtLWVkaXRv
ci1tYXJnaW4tc3RhcnQ6IDRweDsKLX0KLQotYm9keVtkaXI9bHRyXSAucG9wb3ZlciAueGhyLWJy
ZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3JhcHBlciA+IC5lZGl0b3IgewotICAgIG1hcmdp
bi1sZWZ0OiB2YXIoLS1lZGl0b3ItbWFyZ2luLXN0YXJ0KTsKLX0KLQotYm9keVtkaXI9cnRsXSAu
cG9wb3ZlciAueGhyLWJyZWFrcG9pbnQtY29udGVudCA+IC5lZGl0b3Itd3JhcHBlciA+IC5lZGl0
b3IgewotICAgIG1hcmdpbi1yaWdodDogdmFyKC0tZWRpdG9yLW1hcmdpbi1zdGFydCk7Ci19Ci0K
LS5wb3BvdmVyIC54aHItYnJlYWtwb2ludC1jb250ZW50ID4gLmVkaXRvci13cmFwcGVyID4gLmVk
aXRvciA+IC5Db2RlTWlycm9yIHsKLSAgICB3aWR0aDogY2FsYygxMDAlIC0gMnB4KTsKLSAgICBo
ZWlnaHQ6IGF1dG87Ci19Ci0KLS5wb3BvdmVyIC54aHItYnJlYWtwb2ludC1jb250ZW50ID4gLmVk
aXRvci13cmFwcGVyID4gLmVkaXRvciA+IC5Db2RlTWlycm9yLXNjcm9sbCB7Ci0gICAgd2lkdGg6
IGNhbGMoMTAwJSAtIDJweCk7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KLQotQG1lZGlhIChw
cmVmZXJzLWRhcmstaW50ZXJmYWNlKSB7Ci0gICAgLnBvcG92ZXIgLnhoci1icmVha3BvaW50LWNv
bnRlbnQgPiAuZWRpdG9yLXdyYXBwZXIgPiAuZWRpdG9yIHsKLSAgICAgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiB1bnNldDsKLSAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLXF1
YXRlcm5hcnkpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1hIUkJyZWFrcG9pbnRQb3BvdmVyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFBvcG92ZXIuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDBiYzljZWFjMDdlYzEwMDc0YTNmZTQ5ZjFl
N2JhMTM1M2ExYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2lu
dFBvcG92ZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVdJLlhIUkJyZWFrcG9pbnRQb3BvdmVyID0gY2xhc3MgWEhSQnJlYWtwb2ludFBvcG92ZXIgZXh0
ZW5kcyBXSS5Qb3BvdmVyCi17Ci0gICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCi0gICAgewotICAg
ICAgICBzdXBlcihkZWxlZ2F0ZSk7Ci0KLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IG51bGw7
Ci0KLSAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3Rhcmdl
dEVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9wcmVmZXJyZWRFZGdlcyA9IG51bGw7Ci0K
LSAgICAgICAgdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyID0gdGhpcy5fcHJlc2VudE92ZXJUYXJn
ZXRFbGVtZW50LmJpbmQodGhpcyk7Ci0gICAgfQotCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQg
YnJlYWtwb2ludCgpIHsgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7IH0KLQotICAgIHNob3codGFy
Z2V0RWxlbWVudCwgcHJlZmVycmVkRWRnZXMpCi0gICAgewotICAgICAgICB0aGlzLl90YXJnZXRF
bGVtZW50ID0gdGFyZ2V0RWxlbWVudDsKLSAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBw
cmVmZXJyZWRFZGdlczsKLQotICAgICAgICBsZXQgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgieGhyLWJyZWFrcG9pbnQtY29udGVudCIpOwotCi0gICAgICAgIGxldCBsYWJlbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBsYWJlbC5jbGFzc0xpc3QuYWRkKCJs
YWJlbCIpOwotICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJCcmVhayBv
biByZXF1ZXN0IHdpdGggVVJMOiIpOwotCi0gICAgICAgIGxldCBlZGl0b3JXcmFwcGVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGVkaXRvcldyYXBwZXIuY2xhc3NM
aXN0LmFkZCgiZWRpdG9yLXdyYXBwZXIiKTsKLQotICAgICAgICB0aGlzLl90eXBlU2VsZWN0RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotCi0gICAgICAgIGxldCBj
cmVhdGVPcHRpb24gPSAodGV4dCwgdmFsdWUpID0+IHsKLSAgICAgICAgICAgIGxldCBvcHRpb25F
bGVtZW50ID0gdGhpcy5fdHlwZVNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib3B0aW9uIikpOwotICAgICAgICAgICAgb3B0aW9uRWxlbWVudC50ZXh0Q29u
dGVudCA9IHRleHQ7Ci0gICAgICAgICAgICBvcHRpb25FbGVtZW50LnZhbHVlID0gdmFsdWU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgY3JlYXRlT3B0aW9uKFdJLlVJU3RyaW5nKCJDb250YWluaW5n
IiksIFdJLlhIUkJyZWFrcG9pbnQuVHlwZS5UZXh0KTsKLSAgICAgICAgY3JlYXRlT3B0aW9uKFdJ
LlVJU3RyaW5nKCJNYXRjaGluZyIpLCBXSS5YSFJCcmVha3BvaW50LlR5cGUuUmVndWxhckV4cHJl
c3Npb24pOwotCi0gICAgICAgIHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50LnZhbHVlID0gV0kuWEhS
QnJlYWtwb2ludC5UeXBlLlRleHQ7Ci0gICAgICAgIHRoaXMuX3R5cGVTZWxlY3RFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4gewotICAgICAgICAgICAgdGhpcy5f
dXBkYXRlRWRpdG9yKCk7Ci0gICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmZvY3VzKCk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGVkaXRvcldyYXBwZXIuYXBwZW5kKHRoaXMuX3R5cGVTZWxl
Y3RFbGVtZW50LCB0aGlzLl9jcmVhdGVFZGl0b3IoKSk7Ci0gICAgICAgIGNvbnRlbnRFbGVtZW50
LmFwcGVuZChsYWJlbCwgZWRpdG9yV3JhcHBlcik7Ci0KLSAgICAgICAgdGhpcy5jb250ZW50ID0g
Y29udGVudEVsZW1lbnQ7Ci0KLSAgICAgICAgdGhpcy5fcHJlc2VudE92ZXJUYXJnZXRFbGVtZW50
KCk7Ci0gICAgfQotCi0gICAgZGlzbWlzcygpCi0gICAgewotICAgICAgICBsZXQgdHlwZSA9IHRo
aXMuX3R5cGVTZWxlY3RFbGVtZW50LnZhbHVlOwotICAgICAgICBsZXQgdXJsID0gdGhpcy5fY29k
ZU1pcnJvci5nZXRWYWx1ZSgpOwotICAgICAgICBpZiAodHlwZSAmJiB1cmwpCi0gICAgICAgICAg
ICB0aGlzLl9icmVha3BvaW50ID0gbmV3IFdJLlhIUkJyZWFrcG9pbnQodHlwZSwgdXJsKTsKLQot
ICAgICAgICBzdXBlci5kaXNtaXNzKCk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAg
X2NyZWF0ZUVkaXRvcigpCi0gICAgewotICAgICAgICBsZXQgZWRpdG9yRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBlZGl0b3JFbGVtZW50LmNsYXNzTGlz
dC5hZGQoImVkaXRvciIpOwotCi0gICAgICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBXSS5Db2RlTWly
cm9yRWRpdG9yLmNyZWF0ZShlZGl0b3JFbGVtZW50LCB7Ci0gICAgICAgICAgICBsaW5lV3JhcHBp
bmc6IGZhbHNlLAotICAgICAgICAgICAgbWF0Y2hCcmFja2V0czogZmFsc2UsCi0gICAgICAgICAg
ICBzY3JvbGxiYXJTdHlsZTogbnVsbCwKLSAgICAgICAgICAgIHZhbHVlOiAiIiwKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgdGhpcy5fY29kZU1pcnJvci5hZGRLZXlNYXAoewotICAgICAgICAgICAg
IkVudGVyIjogKCkgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICJFc2MiOiAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5kaXNtaXNzKCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVFZGl0b3IoKTsKLQotICAgICAgICByZXR1cm4gZWRpdG9yRWxlbWVudDsKLSAgICB9
Ci0KLSAgICBfdXBkYXRlRWRpdG9yKCkKLSAgICB7Ci0gICAgICAgIGxldCBwbGFjZWhvbGRlcjsK
LSAgICAgICAgbGV0IG1pbWVUeXBlOwotICAgICAgICBpZiAodGhpcy5fdHlwZVNlbGVjdEVsZW1l
bnQudmFsdWUgPT09IFdJLlhIUkJyZWFrcG9pbnQuVHlwZS5UZXh0KSB7Ci0gICAgICAgICAgICBw
bGFjZWhvbGRlciA9IFdJLlVJU3RyaW5nKCJUZXh0Iik7Ci0gICAgICAgICAgICBtaW1lVHlwZSA9
ICJ0ZXh0L3BsYWluIjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBsYWNlaG9sZGVy
ID0gV0kuVUlTdHJpbmcoIlJlZ3VsYXIgRXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgbWltZVR5
cGUgPSAidGV4dC94LXJlZ2V4IjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2NvZGVNaXJy
b3Iuc2V0T3B0aW9uKCJtb2RlIiwgbWltZVR5cGUpOwotICAgICAgICB0aGlzLl9jb2RlTWlycm9y
LnNldE9wdGlvbigicGxhY2Vob2xkZXIiLCBwbGFjZWhvbGRlcik7Ci0gICAgfQotCi0gICAgX3By
ZXNlbnRPdmVyVGFyZ2V0RWxlbWVudCgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3Rhcmdl
dEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IHRhcmdldEZyYW1l
ID0gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QodGhpcy5fdGFyZ2V0RWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIHRoaXMucHJlc2VudCh0YXJnZXRGcmFtZSwgdGhp
cy5fcHJlZmVycmVkRWRnZXMpOwotCi0gICAgICAgIC8vIENvZGVNaXJyb3IgbmVlZHMgYSByZWZy
ZXNoIGFmdGVyIHRoZSBwb3BvdmVyIGRpc3BsYXlzLCB0byBsYXlvdXQsIG90aGVyd2lzZSBpdCBk
b2Vzbid0IGFwcGVhci4KLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICB0
aGlzLl9jb2RlTWlycm9yLnJlZnJlc2goKTsKLSAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iu
Zm9jdXMoKTsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7Ci0gICAgICAgIH0sIDApOwotICAg
IH0KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9YSFJCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmViYTVmMmYyYzAxODRiYTVjMDdmNzM3ZGYxMDJhMGM2
NWM2MjhkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9YSFJCcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LS5icmVha3BvaW50LnhociAuc3VidGl0bGUgewotICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgbW9u
b3NwYWNlOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Mjc0MjNkNWUzMzdjMTVmMDVkNDRkNmQ0MGJhMmVm
YzRlZmYyYTdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1hIUkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotV0kuWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgWEhSQnJlYWtwb2ludFRyZWVF
bGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50Ci17Ci0gICAgY29uc3RydWN0b3Io
YnJlYWtwb2ludCwge2NsYXNzTmFtZSwgdGl0bGV9ID0ge30pCi0gICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuWEhSQnJlYWtwb2ludCk7Ci0KLSAg
ICAgICAgaWYgKCFjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWUgPSBXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVDbGFzc05hbWU7Ci0KLSAgICAgICAg
bGV0IHN1YnRpdGxlOwotICAgICAgICBpZiAoIXRpdGxlKSB7Ci0gICAgICAgICAgICB0aXRsZSA9
IFdJLlVJU3RyaW5nKCJVUkwiKTsKLSAgICAgICAgICAgIGlmIChicmVha3BvaW50LnR5cGUgPT09
IFdJLlhIUkJyZWFrcG9pbnQuVHlwZS5UZXh0KQotICAgICAgICAgICAgICAgIHN1YnRpdGxlID0g
ZG91YmxlUXVvdGVkU3RyaW5nKGJyZWFrcG9pbnQudXJsKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBzdWJ0aXRsZSA9ICIvIiArIGJyZWFrcG9pbnQudXJsICsgIi8iOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3VwZXIoWyJicmVha3BvaW50IiwgInhociIsIGNsYXNzTmFtZV0s
IHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NM
aXN0LmFkZCgic3RhdHVzLWltYWdlIiwgInJlc29sdmVkIik7Ci0KLSAgICAgICAgdGhpcy50b29s
dGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotCi0gICAgICAgIGJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5YSFJCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVz
KCk7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBvbmF0dGFjaCgpCi0gICAgewot
ICAgICAgICBzdXBlci5vbmF0dGFjaCgpOwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1h
Z2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQuYmluZCh0
aGlzKTsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0gdGhp
cy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9i
b3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVu
dE1vdXNlRG93bi5iaW5kKHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAg
ICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93
bik7Ci0gICAgfQotCi0gICAgb25kZXRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25kZXRh
Y2goKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0gICAgICAgIHRoaXMuc3Rh
dHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVs
ZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOwotCi0g
ICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IG51bGw7Ci0gICAgICAg
IHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gbnVsbDsKLSAgICB9Ci0K
LSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBzZXQgdGhpcyBmbGFnIHNvIHRo
YXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwotICAgICAgICAvLyBCcmVha3Bv
aW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRlbGV0ZWQgZnJvbQotICAg
ICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0c2lkZSBpdCAoZS5nLiBU
ZXh0RWRpdG9yKS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxldGVLZXlib2FyZFNob3J0
Y3V0ID0gdHJ1ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlWEhSQnJl
YWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3Bv
aW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9uc3BhY2UoKQotICAg
IHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCkK
LSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsK
LSAgICAgICAgbGV0IGxhYmVsID0gYnJlYWtwb2ludC5kaXNhYmxlZCA/IFdJLlVJU3RyaW5nKCJF
bmFibGUgQnJlYWtwb2ludCIpIDogV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpOwot
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxhYmVsLCB0aGlzLl90b2dnbGVCcmVha3Bv
aW50LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigp
OwotCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBC
cmVha3BvaW50IiksICgpID0+IHsKLSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICAvLyBQcml2YXRlCi0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZChldmVudCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICB9Ci0KLSAgICBfc3Rh
dHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQg
dHJlZSBvdXRsaW5lIGZvY3VzLgotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAg
ICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1lbnQgc2VsZWN0aW9uLgotICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfdG9nZ2xlQnJlYWtwb2ludCgpCi0gICAg
ewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkID0gIXRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuZGlzYWJsZWQ7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0YXR1cygpCi0gICAg
ewotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgIH0KLX07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjZkNjI4MjVl
YzRkMzIxOTlhM2Q2YjI2YTE2MmRlZDkxZTNiZjY5ZS4uZmEwN2E4ZjY4YjM0NDQ2NzUwZTJhZmVk
NDA0MTI2OGU0YjA5NWQ5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAxLTA3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBl
eHRlbmQgWEhSIGJyZWFrcG9pbnRzIHRvIHdvcmsgd2l0aCBmZXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80MDQzMTAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IEJha2VyLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci91cmwtYnJlYWtwb2ludHMuaHRtbDogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2lu
dHMuaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3VybC1icmVha3BvaW50
cy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIveGhyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0bWw6IERlbGV0ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OiBEZWxl
dGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9yZXNvdXJjZXMvZGF0YUZl
dGNoLmpzb246IEFkZGVkLgorCiAyMDE5LTAxLTA2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhOXSBJbXBvcnQgVTJGIGNvbW1hbmQvcmVzcG9u
c2UgY29udmVydGVycyBmcm9tIENocm9taXVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9kYXRhRmV0Y2guanNvbiBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2RhdGFGZXRjaC5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc4NGM2N2M2NDQwMTY2MDU2MmFjNDJmMDFiYjdkZjc1NmIwZDRiZTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9kYXRh
RmV0Y2guanNvbgpAQCAtMCwwICsxIEBACit7IndlYmtpdCI6dHJ1ZSwgInR5cGUiOiJGZXRjaCJ9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3VybC1icmVh
a3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L3VybC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE4ZjEzMzI5ZDBmYmNm
MmIwMDdhMWYxMjhlMzQ0MWZkZDdkNmY1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvdXJsLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzOCBAQAorVGVzdHMgZm9yIFVSTCBicmVha3BvaW50cy4KKworCis9PSBSdW5uaW5n
IHRlc3Qgc3VpdGU6IFVSTEJyZWFrcG9pbnQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBVUkxCcmVh
a3BvaW50LkJyZWFrT25BbGwuRmV0Y2gKK1NldCBwYXVzZSBvbiBhbGwgcmVxdWVzdHMuCitSZXF1
ZXN0IEZldGNoICJyZXNvdXJjZXMvZGF0YUZldGNoLmpzb24iLi4uCitQQVVTRUQ6CitQQVNTOiBQ
YXVzZSByZWFzb24gc2hvdWxkIGJlIEZldGNoLgorUEFTUzogUGF1c2UgZGF0YSBVUkwgc2hvdWxk
IGJlIGVtcHR5LgorQ0FMTCBTVEFDSzoKKzA6IFtGXSBsb2FkUmVzb3VyY2VGZXRjaAorMTogW1Bd
IEdsb2JhbCBDb2RlCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBVUkxCcmVha3BvaW50LkJyZWFrT25Db250YWluaW5nVGV4dC5GZXRjaAorUEFTUzog
QWRkZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBkYXRhCitQQVNTOiBCcmVha3BvaW50IHNob3VsZCBu
b3QgYmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorUmVxdWVzdCBGZXRjaCAicmVzb3VyY2VzL2RhdGFG
ZXRjaC5qc29uIi4uLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBGZXRj
aC4KK1BBU1M6IFBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3BvaW50IFVSTC4KK0NB
TEwgU1RBQ0s6CiswOiBbRl0gbG9hZFJlc291cmNlRmV0Y2gKKzE6IFtQXSBHbG9iYWwgQ29kZQor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVVJMQnJl
YWtwb2ludC5CcmVha09uTWF0Y2hpbmdSZWd1bGFyRXhwcmVzc2lvbi5GZXRjaAorUEFTUzogQWRk
ZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBkYXRhW0EtWl0qLihqc29ufHR4dHxwbmcpCitQQVNTOiBC
cmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorUmVxdWVzdCBGZXRj
aCAicmVzb3VyY2VzL2RhdGFGZXRjaC5qc29uIi4uLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVh
c29uIHNob3VsZCBiZSBGZXRjaC4KK1BBU1M6IFBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBi
cmVha3BvaW50IFVSTC4KK0NBTEwgU1RBQ0s6CiswOiBbRl0gbG9hZFJlc291cmNlRmV0Y2gKKzE6
IFtQXSBHbG9iYWwgQ29kZQorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogVVJMQnJlYWtwb2ludC5TaG91bGROb3RQYXVzZU9uRGlzYWJsZWRCcmVha3Bv
aW50LkZldGNoCitQQVNTOiBBZGRlZCBicmVha3BvaW50IGZvciBVUkw6IGRhdGEKK1BBU1M6IEJy
ZWFrcG9pbnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHkuCitCcmVha3BvaW50IGRp
c2FibGVkLgorUmVxdWVzdCBGZXRjaCAicmVzb3VyY2VzL2RhdGFGZXRjaC5qc29uIi4uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KKy0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFVSTEJyZWFrcG9pbnQuU2hv
dWxkTm90UGF1c2VPbk5vdENvbnRhaW5pbmdVUkwuRmV0Y2gKK1BBU1M6IEFkZGVkIGJyZWFrcG9p
bnQgZm9yIFVSTDogbm9uZXhpc3RhbnQtdXJsCitQQVNTOiBCcmVha3BvaW50IHNob3VsZCBub3Qg
YmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorUmVxdWVzdCBGZXRjaCAicmVzb3VyY2VzL2RhdGFGZXRj
aC5qc29uIi4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgYnJlYWtwb2ludCB3aXRoIGRp
ZmZlcmVudCBVUkwuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBVUkxCcmVha3BvaW50LlJlbW92ZUJyZWFrcG9pbnQuRmV0Y2gKK1BBU1M6IEFkZGVk
IGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQorUEFTUzogQnJlYWtwb2ludCBzaG91bGQgbm90IGJl
IGRpc2FibGVkIGluaXRpYWxseS4KK0JyZWFrcG9pbnQgcmVtb3ZlZC4KK1JlcXVlc3QgRmV0Y2gg
InJlc291cmNlcy9kYXRhRmV0Y2guanNvbiIuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9y
IHJlbW92ZWQgYnJlYWtwb2ludC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IFVSTEJyZWFrcG9pbnQuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50LkZl
dGNoCitQQVNTOiBBZGRlZCBicmVha3BvaW50IGZvciBVUkw6IGRhdGEKK1BBU1M6IEJyZWFrcG9p
bnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHkuCitCcmVha3BvaW50IGRpc2FibGVk
LgorQnJlYWtwb2ludCByZW1vdmVkLgorUmVxdWVzdCBGZXRjaCAicmVzb3VyY2VzL2RhdGFGZXRj
aC5qc29uIi4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBi
cmVha3BvaW50LgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogVVJMQnJlYWtwb2ludC5CcmVha09uQWxsLlhIUgorU2V0IHBhdXNlIG9uIGFsbCByZXF1
ZXN0cy4KK1JlcXVlc3QgWEhSICJyZXNvdXJjZXMvZGF0YVhIUi5qc29uIi4uLgorUEFVU0VEOgor
UEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBYSFIuCitQQVNTOiBQYXVzZSBkYXRhIFVSTCBz
aG91bGQgYmUgZW1wdHkuCitDQUxMIFNUQUNLOgorMDogW0ZdIGxvYWRSZXNvdXJjZVhIUgorMTog
W1BdIEdsb2JhbCBDb2RlCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBVUkxCcmVha3BvaW50LkJyZWFrT25Db250YWluaW5nVGV4dC5YSFIKK1BBU1M6
IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQorUEFTUzogQnJlYWtwb2ludCBzaG91bGQg
bm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KK1JlcXVlc3QgWEhSICJyZXNvdXJjZXMvZGF0YVhI
Ui5qc29uIi4uLgorUEFVU0VEOgorUEFTUzogUGF1c2UgcmVhc29uIHNob3VsZCBiZSBYSFIuCitQ
QVNTOiBQYXVzZSBkYXRhIFVSTCBzaG91bGQgbWF0Y2ggYnJlYWtwb2ludCBVUkwuCitDQUxMIFNU
QUNLOgorMDogW0ZdIGxvYWRSZXNvdXJjZVhIUgorMTogW1BdIEdsb2JhbCBDb2RlCistLSBSdW5u
aW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBVUkxCcmVha3BvaW50
LkJyZWFrT25NYXRjaGluZ1JlZ3VsYXJFeHByZXNzaW9uLlhIUgorUEFTUzogQWRkZWQgYnJlYWtw
b2ludCBmb3IgVVJMOiBkYXRhW0EtWl0qLihqc29ufHR4dHxwbmcpCitQQVNTOiBCcmVha3BvaW50
IHNob3VsZCBub3QgYmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorUmVxdWVzdCBYSFIgInJlc291cmNl
cy9kYXRhWEhSLmpzb24iLi4uCitQQVVTRUQ6CitQQVNTOiBQYXVzZSByZWFzb24gc2hvdWxkIGJl
IFhIUi4KK1BBU1M6IFBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3BvaW50IFVSTC4K
K0NBTEwgU1RBQ0s6CiswOiBbRl0gbG9hZFJlc291cmNlWEhSCisxOiBbUF0gR2xvYmFsIENvZGUK
Ky0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFVSTEJy
ZWFrcG9pbnQuU2hvdWxkTm90UGF1c2VPbkRpc2FibGVkQnJlYWtwb2ludC5YSFIKK1BBU1M6IEFk
ZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQorUEFTUzogQnJlYWtwb2ludCBzaG91bGQgbm90
IGJlIGRpc2FibGVkIGluaXRpYWxseS4KK0JyZWFrcG9pbnQgZGlzYWJsZWQuCitSZXF1ZXN0IFhI
UiAicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9y
IGRpc2FibGVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBVUkxCcmVha3BvaW50LlNob3VsZE5vdFBhdXNlT25Ob3RDb250YWlu
aW5nVVJMLlhIUgorUEFTUzogQWRkZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBub25leGlzdGFudC11
cmwKK1BBU1M6IEJyZWFrcG9pbnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHkuCitS
ZXF1ZXN0IFhIUiAicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIuLi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UgZm9yIGJyZWFrcG9pbnQgd2l0aCBkaWZmZXJlbnQgVVJMLgorLS0gUnVubmluZyB0ZXN0
IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVVJMQnJlYWtwb2ludC5SZW1vdmVC
cmVha3BvaW50LlhIUgorUEFTUzogQWRkZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBkYXRhCitQQVNT
OiBCcmVha3BvaW50IHNob3VsZCBub3QgYmUgZGlzYWJsZWQgaW5pdGlhbGx5LgorQnJlYWtwb2lu
dCByZW1vdmVkLgorUmVxdWVzdCBYSFIgInJlc291cmNlcy9kYXRhWEhSLmpzb24iLi4uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCistLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBVUkxCcmVha3BvaW50LlJlbW92
ZURpc2FibGVkQnJlYWtwb2ludC5YSFIKK1BBU1M6IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDog
ZGF0YQorUEFTUzogQnJlYWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4K
K0JyZWFrcG9pbnQgZGlzYWJsZWQuCitCcmVha3BvaW50IHJlbW92ZWQuCitSZXF1ZXN0IFhIUiAi
cmVzb3VyY2VzL2RhdGFYSFIuanNvbiIuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJl
bW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci91cmwtYnJlYWtw
b2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvdXJsLWJyZWFr
cG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE2MWM2MzllNDQ5ZTg1Nzc3OTdiNDMyODZlOGEzMDRj
ZmQ3MjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIvdXJsLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTAsMCArMSwyNDMgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2RlYnVnZ2VyL3Jlc291cmNlcy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi93b3JrZXIvcmVzb3VyY2VzL3Jlc291cmNlLXV0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJVUkxCcmVha3BvaW50Iik7CisKKyAg
ICBmdW5jdGlvbiByZXF1ZXN0KHR5cGUpIHsKKyAgICAgICAgbGV0IHVybCA9IGByZXNvdXJjZXMv
ZGF0YSR7dHlwZX0uanNvbmA7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBSZXF1ZXN0ICR7
dHlwZX0gIiR7dXJsfSIuLi5gKTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYGxvYWRSZXNvdXJjZSR7dHlwZX0oIiR7dXJsfSIpYCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVhcmRvd24ocmVzb2x2ZSkgeworICAgICAgICBsZXQgYnJlYWtwb2ludHMgPSBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIudXJsQnJlYWtwb2ludHM7CisgICAgICAgIGZvciAobGV0IGJy
ZWFrcG9pbnQgb2YgYnJlYWtwb2ludHMpCisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKKworICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAg
ICAgcmVzb2x2ZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZEJyZWFrcG9pbnQodHlwZSwg
dXJsKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
CisgICAgICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobWFpbkZyYW1lLCAiTWlzc2luZyBt
YWluIGZyYW1lLiIpOworICAgICAgICAgICAgaWYgKCFtYWluRnJhbWUpCisgICAgICAgICAgICAg
ICAgcmVqZWN0KCk7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLlVSTEJy
ZWFrcG9pbnQodHlwZSwgdXJsKTsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
d2FpdEV2ZW50KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3BvaW50QWRkZWQp
CisgICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKCJBZGRlZCBicmVha3BvaW50IGZvciBVUkw6ICIgKyB1cmwpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoYnJlYWtwb2ludC5kaXNhYmxlZCwgIkJyZWFr
cG9pbnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHkuIik7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZShicmVha3BvaW50KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZm9yIChsZXQgdHlwZSBvZiBbIkZldGNoIiwgIlhIUiJdKSB7
CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6ICJVUkxCcmVh
a3BvaW50LkJyZWFrT25BbGwuIiArIHR5cGUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgZGVidWdnZXIgcGF1c2VzIGZvciBhbGwgcmVxdWVzdHMuIiwKKyAgICAgICAgICAg
IHRlYXJkb3duLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0IHBhdXNlIG9uIGFsbCByZXF1ZXN0cy4iKTsK
KyAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3Bv
aW50LmRpc2FibGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICByZXF1ZXN0KHR5cGUpOwor
CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXREYXRhID0gV0kuZGVidWdnZXJNYW5hZ2VyLmRh
dGFGb3JUYXJnZXQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS50YXJnZXQpOwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFVU0VEOiIpOworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VS
ZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvblt0eXBlXSwgYFBhdXNlIHJlYXNv
biBzaG91bGQgYmUgJHt0eXBlfS5gKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZSh0YXJnZXREYXRhLnBhdXNlRGF0YS5icmVha3BvaW50VVJMLCAiUGF1c2Ug
ZGF0YSBVUkwgc2hvdWxkIGJlIGVtcHR5LiIpOworCisgICAgICAgICAgICAgICAgICAgIGxvZ0Fj
dGl2ZVN0YWNrVHJhY2UoKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdn
ZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAg
LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAg
ICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZTogIlVSTEJyZWFrcG9p
bnQuQnJlYWtPbkNvbnRhaW5pbmdUZXh0LiIgKyB0eXBlLAorICAgICAgICAgICAgZGVzY3JpcHRp
b246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBvbiBhIFVSTCBjb250YWluaW5nIHRleHQu
IiwKKyAgICAgICAgICAgIHRlYXJkb3duLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKKyAgICAgICAgICAgICAgICBsZXQgZXhwZWN0ZWRCcmVha3BvaW50VVJMOworCisgICAg
ICAgICAgICAgICAgYWRkQnJlYWtwb2ludChXSS5VUkxCcmVha3BvaW50LlR5cGUuVGV4dCwgImRh
dGEiKQorICAgICAgICAgICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkQnJlYWtwb2ludFVSTCA9IGJyZWFrcG9pbnQudXJsOworCisgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QodHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkKTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuZGF0YUZvclRhcmdldChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdl
dCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVVTRUQ6Iik7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0YS5w
YXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uW3R5cGVdLCBgUGF1c2Ug
cmVhc29uIHNob3VsZCBiZSAke3R5cGV9LmApOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwsIGV4
cGVjdGVkQnJlYWtwb2ludFVSTCwgIlBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3Bv
aW50IFVSTC4iKTsKKworICAgICAgICAgICAgICAgICAgICBsb2dBY3RpdmVTdGFja1RyYWNlKCk7
CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUo
KTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJl
amVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6ICJVUkxCcmVha3BvaW50LkJyZWFrT25NYXRjaGlu
Z1JlZ3VsYXJFeHByZXNzaW9uLiIgKyB0eXBlLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IGRlYnVnZ2VyIHBhdXNlcyBiYXNlZCBvbiBhIFVSTCBtYXRjaGluZyBhIHJlZ2V4
IHBhdHRlcm4uIiwKKyAgICAgICAgICAgIHRlYXJkb3duLAorICAgICAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBsZXQgZXhwZWN0ZWRCcmVha3BvaW50VVJM
OworICAgICAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlJl
Z3VsYXJFeHByZXNzaW9uLCAiZGF0YVtBLVpdKlwuKGpzb258dHh0fHBuZykiKQorICAgICAgICAg
ICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkQnJlYWtwb2ludFVSTCA9IGJyZWFrcG9pbnQudXJsOworCisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QodHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXSS5kZWJ1Z2dlck1h
bmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkKTsKKyAgICAg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRhcmdl
dChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdldCk7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVVTRUQ6Iik7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0YS5wYXVzZVJlYXNvbiwgV0ku
RGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uW3R5cGVdLCBgUGF1c2UgcmVhc29uIHNob3VsZCBi
ZSAke3R5cGV9LmApOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHRhcmdldERhdGEucGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwsIGV4cGVjdGVkQnJlYWtwb2lu
dFVSTCwgIlBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3BvaW50IFVSTC4iKTsKKwor
ICAgICAgICAgICAgICAgICAgICBsb2dBY3RpdmVTdGFja1RyYWNlKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAg
ICAgICB9KQorICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgICAgIG5hbWU6ICJVUkxCcmVha3BvaW50LlNob3VsZE5vdFBhdXNlT25EaXNhYmxlZEJyZWFr
cG9pbnQuIiArIHR5cGUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZGVi
dWdnZXIgZG9lcyBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIiwKKyAgICAgICAg
ICAgIHRlYXJkb3duLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgcGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbGV0IGxpc3Rl
bmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHBhdXNl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQo
V0kuVVJMQnJlYWtwb2ludC5UeXBlLlRleHQsICJkYXRhIikKKyAgICAgICAgICAgICAgICAudGhl
bigoYnJlYWtwb2ludCkgPT4geworICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2Fi
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFr
cG9pbnQgZGlzYWJsZWQuIik7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Qo
dHlwZSk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1c2VkLCAi
U2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAuY2F0Y2gocmVq
ZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICAgICAgbmFtZTogIlVSTEJyZWFrcG9pbnQuU2hvdWxkTm90UGF1c2VP
bk5vdENvbnRhaW5pbmdVUkwuIiArIHR5cGUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3QgcGF1c2UgZm9yIGJyZWFrcG9pbnQgd2l0aCBkaWZm
ZXJlbnQgVVJMLiIsCisgICAgICAgICAgICB0ZWFyZG93biwKKyAgICAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICBhZGRCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0LCAibm9uZXhp
c3RhbnQtdXJsIikKKyAgICAgICAgICAgICAgICAudGhlbigoYnJlYWtwb2ludCkgPT4geworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdCh0eXBlKTsKKyAgICAgICAgICAgICAgICB9
KQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZShwYXVzZWQsICJTaG91bGQgbm90IHBhdXNlIGZvciBicmVh
a3BvaW50IHdpdGggZGlmZmVyZW50IFVSTC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICAgICAgbmFtZTogIlVSTEJyZWFrcG9pbnQuUmVtb3ZlQnJlYWtwb2ludC4iICsgdHlwZSwKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBkb2VzIG5vdCBwYXVz
ZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIsCisgICAgICAgICAgICB0ZWFyZG93biwKKyAgICAg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNl
ZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBwYXVzZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgICAgICBhZGRCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlw
ZS5UZXh0LCAiZGF0YSIpCisgICAgICAgICAgICAgICAgLnRoZW4oKGJyZWFrcG9pbnQpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJCcmVha3BvaW50IHJlbW92ZWQuIik7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
cXVlc3QodHlwZSk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocGF1
c2VkLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOworICAgICAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC5jYXRj
aChyZWplY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiAiVVJMQnJlYWtwb2ludC5SZW1vdmVEaXNh
YmxlZEJyZWFrcG9pbnQuIiArIHR5cGUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNr
IHRoYXQgYSBkaXNhYmxlZCBicmVha3BvaW50IGNhbiBiZSByZW1vdmVkLiIsCisgICAgICAgICAg
ICB0ZWFyZG93biwKKyAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAg
ICAgICAgICAgbGV0IHBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5l
ciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBwYXVzZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBhZGRCcmVha3BvaW50KFdJ
LlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0LCAiZGF0YSIpCisgICAgICAgICAgICAgICAgLnRoZW4o
KGJyZWFrcG9pbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3Bv
aW50IGRpc2FibGVkLiIpOworCisgICAgICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCByZW1vdmVkLiIpOworCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXF1ZXN0KHR5cGUpOworICAgICAgICAgICAgICAgIH0pCisgICAg
ICAgICAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEZhbHNlKHBhdXNlZCwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlz
YWJsZWQgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
bGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAg
ICAgfSkKKyAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3Rz
IGZvciBVUkwgYnJlYWtwb2ludHMuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2ludHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci94aHItYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRmMjNhODAx
YzYwMmNmNzY5OWZjMWIxYWMyMTA2MmQ4ZmM0NTk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIv
eGhyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAg
QEAKLVRlc3RzIGZvciBYSFIgYnJlYWtwb2ludHMuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBYSFJCcmVha3BvaW50cwotLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25BbGxYTUxIdHRw
UmVxdWVzdHMKLVNldCBwYXVzZSBvbiBhbGwgWE1MSHR0cFJlcXVlc3RzLgotU2VuZGluZyBYTUxI
dHRwUmVxdWVzdC4KLVBBVVNFRDoKLVBBU1M6IFBhdXNlIHJlYXNvbiBzaG91bGQgYmUgWEhSLgot
UEFTUzogUGF1c2UgZGF0YSBVUkwgc2hvdWxkIGJlIGVtcHR5LgotQ0FMTCBTVEFDSzoKLTA6IFtG
XSBsb2FkUmVzb3VyY2VYSFIKLTE6IFtQXSBHbG9iYWwgQ29kZQotLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPblhNTEh0dHBSZXF1ZXN0Q29u
dGFpbmluZ1RleHQKLVBBU1M6IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQotUEFTUzog
QnJlYWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KLVNlbmRpbmcgWE1M
SHR0cFJlcXVlc3QuCi1QQVVTRUQ6Ci1QQVNTOiBQYXVzZSByZWFzb24gc2hvdWxkIGJlIFhIUi4K
LVBBU1M6IFBhdXNlIGRhdGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3BvaW50IFVSTC4KLUNBTEwg
U1RBQ0s6Ci0wOiBbRl0gbG9hZFJlc291cmNlWEhSCi0xOiBbUF0gR2xvYmFsIENvZGUKLS0tIFJ1
bm5pbmcgdGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25YTUxI
dHRwUmVxdWVzdE1hdGNoaW5nUmVndWxhckV4cHJlc3Npb24KLVBBU1M6IEFkZGVkIGJyZWFrcG9p
bnQgZm9yIFVSTDogZGF0YVtBLVpdKi4oanNvbnx0eHR8cG5nKQotUEFTUzogQnJlYWtwb2ludCBz
aG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KLVNlbmRpbmcgWE1MSHR0cFJlcXVlc3Qu
Ci1QQVVTRUQ6Ci1QQVNTOiBQYXVzZSByZWFzb24gc2hvdWxkIGJlIFhIUi4KLVBBU1M6IFBhdXNl
IGRhdGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3BvaW50IFVSTC4KLUNBTEwgU1RBQ0s6Ci0wOiBb
Rl0gbG9hZFJlc291cmNlWEhSCi0xOiBbUF0gR2xvYmFsIENvZGUKLS0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFNob3VsZE5vdFBhdXNlT25EaXNhYmxl
ZEJyZWFrcG9pbnQKLVBBU1M6IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQotUEFTUzog
QnJlYWtwb2ludCBzaG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KLUJyZWFrcG9pbnQg
ZGlzYWJsZWQuCi1TZW5kaW5nIFhNTEh0dHBSZXF1ZXN0LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4g
cGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVh
a3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogU2hvdWxkTm90UGF1c2VPblhNTEh0dHBSZXF1ZXN0Tm90Q29udGFpbmluZ1VSTAotUEFTUzog
QWRkZWQgYnJlYWtwb2ludCBmb3IgVVJMOiBub25leGlzdGFudC11cmwKLVBBU1M6IEJyZWFrcG9p
bnQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbml0aWFsbHkuCi1TZW5kaW5nIFhNTEh0dHBSZXF1
ZXN0LgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91bGQg
bm90IHBhdXNlIGZvciBicmVha3BvaW50IHdpdGggZGlmZmVyZW50IFVSTC4KLS0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJlbW92ZUJyZWFrcG9pbnQK
LVBBU1M6IEFkZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogZGF0YQotUEFTUzogQnJlYWtwb2ludCBz
aG91bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4KLUJyZWFrcG9pbnQgcmVtb3ZlZC4KLVdh
aXQgZm9yIGV2YWx1YXRlIGluIHBhZ2UgdG8gcmV0dXJuLgotUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgotLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgotCi0t
LSBSdW5uaW5nIHRlc3QgY2FzZTogUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50Ci1QQVNTOiBBZGRl
ZCBicmVha3BvaW50IGZvciBVUkw6IGRhdGEKLVBBU1M6IEJyZWFrcG9pbnQgc2hvdWxkIG5vdCBi
ZSBkaXNhYmxlZCBpbml0aWFsbHkuCi1CcmVha3BvaW50IGRpc2FibGVkLgotQnJlYWtwb2ludCBy
ZW1vdmVkLgotV2FpdCBmb3IgZXZhbHVhdGUgaW4gcGFnZSB0byByZXR1cm4uCi1QQVNTOiBTaG91
bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3hoci1icmVha3BvaW50cy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGExMzUwZTI2ZGUwZjY3ZGYwN2Q4
YmUyMjc2NmE4MDE2ZGIyYzUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIveGhyLWJyZWFrcG9p
bnRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
ZGVidWdnZXIvcmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL3dvcmtlci9yZXNvdXJjZXMvcmVzb3VyY2UtdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIlhIUkJyZWFrcG9pbnRzIik7Ci0KLSAgICBm
dW5jdGlvbiB0ZWFyZG93bihyZXNvbHZlKSB7Ci0gICAgICAgIGxldCBicmVha3BvaW50cyA9IFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci54aHJCcmVha3BvaW50czsKLSAgICAgICAgZm9yIChsZXQgYnJl
YWtwb2ludCBvZiBicmVha3BvaW50cykKLSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotCi0gICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYXdhaXRFdmFsdWF0ZUluUGFnZShl
eHByZXNzaW9uKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiV2FpdCBmb3IgZXZhbHVhdGUg
aW4gcGFnZSB0byByZXR1cm4uIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKGV4cHJlc3Npb24sIChlcnJvcikgPT4gewotICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKLSAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKLQotICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiByZWplY3RPblBhdXNlKCkgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKLSAgICAgICAgICAgIC50aGVu
KChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUo
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIlNob3VsZCBub3QgcGF1c2Uu
Iik7Ci0gICAgICAgICAgICAgICAgcmVqZWN0KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkQnJlYWtwb2ludCh0eXBlLCB1cmwpIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAg
ICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluRnJhbWUsICJNaXNzaW5nIG1haW4gZnJhbWUu
Iik7Ci0gICAgICAgICAgICBpZiAoIW1haW5GcmFtZSkKLSAgICAgICAgICAgICAgICByZWplY3Qo
KTsKLQotICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuWEhSQnJlYWtwb2ludCh0
eXBlLCB1cmwpOwotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQo
V0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlhIUkJyZWFrcG9pbnRBZGRlZCkKLSAgICAgICAg
ICAgIC50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkFk
ZGVkIGJyZWFrcG9pbnQgZm9yIFVSTDogIiArIHVybCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RGYWxzZShicmVha3BvaW50LmRpc2FibGVkLCAiQnJlYWtwb2ludCBzaG91
bGQgbm90IGJlIGRpc2FibGVkIGluaXRpYWxseS4iKTsKLSAgICAgICAgICAgICAgICByZXNvbHZl
KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hZGRYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB9KTsKLSAg
ICB9Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJCcmVha09uQWxs
WE1MSHR0cFJlcXVlc3RzIiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVn
Z2VyIHBhdXNlcyBmb3IgYWxsIFhNTEh0dHBSZXF1ZXN0cy4iLAotICAgICAgICB0ZWFyZG93biwK
LSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJTZXQgcGF1c2Ugb24gYWxsIFhNTEh0dHBSZXF1ZXN0cy4iKTsKLSAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBm
YWxzZTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNlbmRpbmcgWE1MSHR0cFJl
cXVlc3QuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBsb2Fk
UmVzb3VyY2VYSFIoInJlc291cmNlcy9kYXRhWEhSLmpzb24iKWApOwotCi0gICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1
c2VkKQotICAgICAgICAgICAgLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGxldCB0YXJn
ZXREYXRhID0gV0kuZGVidWdnZXJNYW5hZ2VyLmRhdGFGb3JUYXJnZXQoV0kuZGVidWdnZXJNYW5h
Z2VyLmFjdGl2ZUNhbGxGcmFtZS50YXJnZXQpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJQQVVTRUQ6Iik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFz
b24uWEhSLCAiUGF1c2UgcmVhc29uIHNob3VsZCBiZSBYSFIuIik7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh0YXJnZXREYXRhLnBhdXNlRGF0YS5icmVha3BvaW50
VVJMLCAiUGF1c2UgZGF0YSBVUkwgc2hvdWxkIGJlIGVtcHR5LiIpOwotCi0gICAgICAgICAgICAg
ICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAudGhl
bihyZXNvbHZlLCByZWplY3QpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJCcmVha09uWE1MSHR0cFJlcXVlc3RDb250YWluaW5n
VGV4dCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dlciBwYXVzZXMg
b24gYSBVUkwgY29udGFpbmluZyB0ZXh0LiIsCi0gICAgICAgIHRlYXJkb3duLAotICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgbGV0IGV4cGVjdGVkQnJlYWtwb2lu
dFVSTDsKLSAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRl
eHQsICJkYXRhIikKLSAgICAgICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0ZWRCcmVha3BvaW50VVJMID0gYnJlYWtwb2ludC51cmw7Ci0KLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2VuZGluZyBYTUxIdHRwUmVxdWVzdC4iKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBsb2FkUmVzb3Vy
Y2VYSFIoInJlc291cmNlcy9kYXRhWEhSLmpzb24iKWApOwotICAgICAgICAgICAgICAgIHJldHVy
biBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHRhcmdldERhdGEgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGF0YUZvclRh
cmdldChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLnRhcmdldCk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBVVNFRDoiKTsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVn
Z2VyTWFuYWdlci5QYXVzZVJlYXNvbi5YSFIsICJQYXVzZSByZWFzb24gc2hvdWxkIGJlIFhIUi4i
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEu
cGF1c2VEYXRhLmJyZWFrcG9pbnRVUkwsIGV4cGVjdGVkQnJlYWtwb2ludFVSTCwgIlBhdXNlIGRh
dGEgVVJMIHNob3VsZCBtYXRjaCBicmVha3BvaW50IFVSTC4iKTsKLQotICAgICAgICAgICAgICAg
IGxvZ0FjdGl2ZVN0YWNrVHJhY2UoKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVzdW1lKCk7Ci0gICAgICAgICAgICB9KQotICAgICAgICAgICAgLnRoZW4o
cmVzb2x2ZSwgcmVqZWN0KTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVz
dENhc2UoewotICAgICAgICBuYW1lOiAiQnJlYWtPblhNTEh0dHBSZXF1ZXN0TWF0Y2hpbmdSZWd1
bGFyRXhwcmVzc2lvbiIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBkZWJ1Z2dl
ciBwYXVzZXMgYmFzZWQgb24gYSBVUkwgbWF0Y2hpbmcgYSByZWdleCBwYXR0ZXJuLiIsCi0gICAg
ICAgIHRlYXJkb3duLAotICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAg
ICAgbGV0IGV4cGVjdGVkQnJlYWtwb2ludFVSTDsKLSAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQo
V0kuWEhSQnJlYWtwb2ludC5UeXBlLlJlZ3VsYXJFeHByZXNzaW9uLCAiZGF0YVtBLVpdKlwuKGpz
b258dHh0fHBuZykiKQotICAgICAgICAgICAgLnRoZW4oKGJyZWFrcG9pbnQpID0+IHsKLSAgICAg
ICAgICAgICAgICBleHBlY3RlZEJyZWFrcG9pbnRVUkwgPSBicmVha3BvaW50LnVybDsKLQotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZW5kaW5nIFhNTEh0dHBSZXF1ZXN0LiIp
OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGxvYWRSZXNv
dXJjZVhIUigicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIpYCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVu
dC5QYXVzZWQpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIC50aGVuKCgpID0+IHsKLSAg
ICAgICAgICAgICAgICBsZXQgdGFyZ2V0RGF0YSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5kYXRhRm9y
VGFyZ2V0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUudGFyZ2V0KTsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFVU0VEOiIpOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVi
dWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLlhIUiwgIlBhdXNlIHJlYXNvbiBzaG91bGQgYmUgWEhS
LiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0
YS5wYXVzZURhdGEuYnJlYWtwb2ludFVSTCwgZXhwZWN0ZWRCcmVha3BvaW50VVJMLCAiUGF1c2Ug
ZGF0YSBVUkwgc2hvdWxkIG1hdGNoIGJyZWFrcG9pbnQgVVJMLiIpOwotCi0gICAgICAgICAgICAg
ICAgbG9nQWN0aXZlU3RhY2tUcmFjZSgpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAudGhl
bihyZXNvbHZlLCByZWplY3QpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJTaG91bGROb3RQYXVzZU9uRGlzYWJsZWRCcmVha3Bv
aW50IiwKLSAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90
IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIsCi0gICAgICAgIHRlYXJkb3duLAotICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgYWRkQnJlYWtwb2ludChX
SS5YSFJCcmVha3BvaW50LlR5cGUuVGV4dCwgImRhdGEiKQotICAgICAgICAgICAgLnRoZW4oKGJy
ZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBkaXNhYmxl
ZC4iKTsKLQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZW5kaW5nIFhNTEh0
dHBSZXF1ZXN0LiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJhY2UoW2F3YWl0
RXZhbHVhdGVJblBhZ2UoYGxvYWRSZXNvdXJjZVhIUigicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIp
YCksIHJlamVjdE9uUGF1c2UoKV0pOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIC50aGVu
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNob3VsZCBub3Qg
cGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7Ci0gICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwotICAgICAg
ICB9Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJT
aG91bGROb3RQYXVzZU9uWE1MSHR0cFJlcXVlc3ROb3RDb250YWluaW5nVVJMIiwKLSAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGRlYnVnZ2VyIGRvZXMgbm90IHBhdXNlIGZvciBicmVh
a3BvaW50IHdpdGggZGlmZmVyZW50IFVSTC4iLAotICAgICAgICB0ZWFyZG93biwKLSAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuWEhS
QnJlYWtwb2ludC5UeXBlLlRleHQsICJub25leGlzdGFudC11cmwiKQotICAgICAgICAgICAgLnRo
ZW4oKGJyZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
U2VuZGluZyBYTUxIdHRwUmVxdWVzdC4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yYWNlKFthd2FpdEV2YWx1YXRlSW5QYWdlKGBsb2FkUmVzb3VyY2VYSFIoInJlc291cmNlcy9k
YXRhWEhSLmpzb24iKWApLCByZWplY3RPblBhdXNlKCldKTsKLSAgICAgICAgICAgIH0pCi0gICAg
ICAgICAgICAudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNz
KCJTaG91bGQgbm90IHBhdXNlIGZvciBicmVha3BvaW50IHdpdGggZGlmZmVyZW50IFVSTC4iKTsK
LSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KQotICAgICAgICAgICAg
LmNhdGNoKHJlamVjdCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKLSAgICAgICAgbmFtZTogIlJlbW92ZUJyZWFrcG9pbnQiLAotICAgICAgICBkZXNjcmlw
dGlvbjogIkNoZWNrIHRoYXQgZGVidWdnZXIgZG9lcyBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJl
YWtwb2ludC4iLAotICAgICAgICB0ZWFyZG93biwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKLSAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuWEhSQnJlYWtwb2ludC5UeXBlLlRl
eHQsICJkYXRhIikKLSAgICAgICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVt
b3ZlZC4iKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJhY2UoW2F3YWl0RXZh
bHVhdGVJblBhZ2UoYGxvYWRSZXNvdXJjZVhIUigicmVzb3VyY2VzL2RhdGFYSFIuanNvbiIpYCks
IHJlamVjdE9uUGF1c2UoKV0pOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIC50aGVuKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNob3VsZCBub3QgcGF1
c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7
Ci0gICAgICAgICAgICB9KQotICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7Ci0gICAgICAgIH0K
LSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTogIlJlbW92
ZURpc2FibGVkQnJlYWtwb2ludCIsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBh
IGRpc2FibGVkIGJyZWFrcG9pbnQgY2FuIGJlIHJlbW92ZWQuIiwKLSAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIGFkZEJyZWFrcG9pbnQoV0kuWEhSQnJlYWtwb2lu
dC5UeXBlLlRleHQsICJkYXRhIikKLSAgICAgICAgICAgIC50aGVuKChicmVha3BvaW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgZGlzYWJsZWQuIik7Ci0KLSAgICAg
ICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlWEhSQnJlYWtwb2ludChicmVh
a3BvaW50KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBy
ZW1vdmVkLiIpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmFjZShbYXdhaXRF
dmFsdWF0ZUluUGFnZShgbG9hZFJlc291cmNlWEhSKCJyZXNvdXJjZXMvZGF0YVhIUi5qc29uIilg
KSwgcmVqZWN0T25QYXVzZSgpXSk7Ci0gICAgICAgICAgICB9KQotICAgICAgICAgICAgLnRoZW4o
KCkgPT4gewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiU2hvdWxkIG5vdCBw
YXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LiIpOwotICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPlRl
c3RzIGZvciBYSFIgYnJlYWtwb2ludHMuPC9wPgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>