<?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>234841</bug_id>
          
          <creation_ts>2022-01-04 05:59:20 -0800</creation_ts>
          <short_desc>AX: Make more tests async to pass in isolated tree mode</short_desc>
          <delta_ts>2022-01-14 04:57:33 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234822</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234950</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1827915</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-04 05:59:20 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827916</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-04 05:59:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/87087797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827917</commentid>
    <comment_count>2</comment_count>
      <attachid>448287</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-04 06:01:10 -0800</bug_when>
    <thetext>Created attachment 448287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827925</commentid>
    <comment_count>3</comment_count>
      <attachid>448290</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-04 06:40:59 -0800</bug_when>
    <thetext>Created attachment 448290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828038</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-04 12:24:55 -0800</bug_when>
    <thetext>In general, we&apos;re trying to only make tests async when necessary. If a test has only static content, it *should* pass in isolated tree mode without the test being made async. The only time a test should need to be async is if the test changes elements dynamically, i.e. via JavaScript. Otherwise we may be masking real isolated tree bugs.

It seems like a lot of the changes to tests in this patch only add:

window.jsTestIsAsync = true;

setTimeout(function() {

    ...test logic moved inside here...

    finishJSTest();
}, 0);

It surprises me that this makes the tests pass in isolated tree mode where they didn&apos;t before. Do you know why this could be?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828192</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-04 23:14:19 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; In general, we&apos;re trying to only make tests async when necessary.

I agree, I&apos;m converting only the ones that are failing.

&gt; If a test
&gt; has only static content, it *should* pass in isolated tree mode without the
&gt; test being made async. The only time a test should need to be async is if
&gt; the test changes elements dynamically, i.e. via JavaScript.

This is no longer the ase since r287533, see my comment in https://bugs.webkit.org/show_bug.cgi?id=234739#c5. It was because of a side effect of triggering a layout while populating the isolated tree.

&gt; Otherwise we may
&gt; be masking real isolated tree bugs.
&gt; 
&gt; It seems like a lot of the changes to tests in this patch only add:
&gt; 
&gt; window.jsTestIsAsync = true;
&gt; 
&gt; setTimeout(function() {
&gt; 
&gt;     ...test logic moved inside here...
&gt; 
&gt;     finishJSTest();
&gt; }, 0);
&gt; 
&gt; It surprises me that this makes the tests pass in isolated tree mode where
&gt; they didn&apos;t before. Do you know why this could be?

Yes, in many cases the ax wrappers haven&apos;t been attached to the isolated object yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828266</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-05 07:10:14 -0800</bug_when>
    <thetext>I&apos;ve analyzed in more detail what happens. Let&apos;s use a simple test as an example, like accessibility/language-attribute.html.

1- AccessibilityController::focusedElement() is called, when getting the root element the axObjectCache creates the isolated tree:
2- AXIsolatedTree::generateSubtree() is called for the root object, that already has one child, the web area.
 2.1-  AXIsolatedTree::createSubtree is called for the root object.
 2.2- AXIsolatedTree::createSubtree is called for the web area, but web area childrenCount is 0 a this point.
 2.3- AXIsolatedTree::generateSubtree() finished with 2 pending children updates
3- AccessibilityController::focusedElement() returns the web area element
4- AccessibilityUIElement::childAtIndex(0) is called on web area element
 4.1- executeOnAXThreadAndWait() is called to get the element first child
 4.2- On the main thread update backing store is called, so AXIsolatedTree::applyPendingChanges() is called and the 2 pending children updates are processed
 4.3- AXIsolatedObject::children() is called on web area element, and returns an empty array, so nullptr is returned as child.
 4.4- AXObjectCache::notificationPostTimerFired is called on the main thread (executeOnAXThreadAndWait iterates the main thread while waiting for the ax thread to complete the task), and that calls AXObjectCache::updateIsolatedTree() that ends up calling AXIsolatedTree::updateChildren() and now is when the rest of the isolated tree is populated, but it&apos;s too late because the ax thread already returned nullptr for the child.

The test fails with:

CONSOLE MESSAGE: TypeError: null is not an object (evaluating &apos;accessibilityObject.childrenCount&apos;)

accessibilityObject is webArea.childAtIndex(0) for which we returned null. 

This is what I tried to fix in bug #232141 by notifying about children changed earlier.

I can try other solutions like processing main thread loop also before going to the ax thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828269</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-05 07:27:19 -0800</bug_when>
    <thetext>So, processing any pending events on main thread loop before going to the ax thread in AccessibilityController::executeOnAXThreadAndWait() worked for me. If you don&apos;t want to make the tests async and it&apos;s not needed for mac we can just close this (and bug #234822) and I&apos;ll workaround it in WTR for atspi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828442</commentid>
    <comment_count>8</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-05 16:00:05 -0800</bug_when>
    <thetext>Thanks Carlos, your investigation here and in https://bugs.webkit.org/show_bug.cgi?id=234739 has been really helpful.

This is definitely a big problem for us in the Mac isolated tree layout tests, both before and after https://commits.webkit.org/r287533 (but especially after :)). It&apos;s good that you caught that.

Andres thinks that this is symptomatic of a deeper issue in the core isolated tree logic, so he has some experiments he&apos;s going to try. We have done some limited testing with isolated tree + Safari internally and found that VoiceOver misses large swaths of content only in isolated tree mode, which may or may not be related to this problem.

For now, we aren&apos;t ready to move forward with this async test patch, or changing AccessibilityController::executeOnAXThreadAndWait. It would be helpful if you could:

1. Post another patch (without obsoleting the current one) with your changes to AccessibilityController::executeOnAXThreadAndWait as mentioned in comment 7
2. Leave this bug open for now while we investigate further

But in the meantime, feel free to workaround in WTR for atspi. If we find a core issue, and a fix for that issue, we can see if these changes aren&apos;t necessary. Otherwise we&apos;ll revisit after some more investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828829</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-06 23:50:53 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #8)
&gt; Thanks Carlos, your investigation here and in
&gt; https://bugs.webkit.org/show_bug.cgi?id=234739 has been really helpful.
&gt; 
&gt; This is definitely a big problem for us in the Mac isolated tree layout
&gt; tests, both before and after https://commits.webkit.org/r287533 (but
&gt; especially after :)). It&apos;s good that you caught that.
&gt; 
&gt; Andres thinks that this is symptomatic of a deeper issue in the core
&gt; isolated tree logic, so he has some experiments he&apos;s going to try. We have
&gt; done some limited testing with isolated tree + Safari internally and found
&gt; that VoiceOver misses large swaths of content only in isolated tree mode,
&gt; which may or may not be related to this problem.

Ok, let me know if I can help somehow.

&gt; For now, we aren&apos;t ready to move forward with this async test patch, or
&gt; changing AccessibilityController::executeOnAXThreadAndWait. It would be
&gt; helpful if you could:
&gt; 
&gt; 1. Post another patch (without obsoleting the current one) with your changes
&gt; to AccessibilityController::executeOnAXThreadAndWait as mentioned in comment
&gt; 7
&gt; 2. Leave this bug open for now while we investigate further

Ok, I&apos;ll do it, but opening a new bug to attach the atspi workaround patch.

&gt; But in the meantime, feel free to workaround in WTR for atspi. If we find a
&gt; core issue, and a fix for that issue, we can see if these changes aren&apos;t
&gt; necessary. Otherwise we&apos;ll revisit after some more investigation.

I&apos;ll leave bug #234822 in stand by too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829210</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-08 02:54:08 -0800</bug_when>
    <thetext>I&apos;ve investigated the issue a bit more. I realized that the initial problem of not getting the child after focusedElement, is because when AXIsolatedTree::create() is called the renderers haven&apos;t been attached yet, that&apos;s why the web area reports 0 children. But then I noticed that renderers were attached right after the tree is initially populated. It ended up being the call to focusedObjectForPage() in AXIsolatedTree::create() that calls Document::updateStyleIfNeeded(). If I move the call to focusedObjectForPage() before the generateSubtree() or explicitly call Document::updateStyleIfNeeded() then when the tree is initially populated the web area has children and the problem of getting the children after focusedElement is fixed.

But unfortunately that didn&apos;t fix the tests. For example with accessibility/image-map1.html I got a valid role for the first link, but null title because the returned child is detached between the call tom role() and title(). This happens because the first layout after the tree is populated causes the children to be recomputed, due to changes in ignored flag. So, I tried by doing Document::updateLayout() instead of Document::updateStyleIfNeeded() in AXIsolatedTree::create(), and it somehow worked, now we get the right child after the ignore flag is recomputed, but then I got the same problem with the second link, this time another childrenChanged caused the returned child to be detached before role() is called. And this is caused the main thread run loop iterations in AccessibilityController::executeOnAXThreadAndWait() while waiting for the ax thread to complete (not the workaround I tried, the ones after calling axRunLoop().dispatch()). So, removing those and using a semaphore as we used to do finally fixed accessibility/image-map1.html, but caused other tests to timeout (I guess the cases in which we call the main thread from the ax thread).

So, I still don&apos;t have a solution...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829441</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-10 06:26:42 -0800</bug_when>
    <thetext>In the end I managed to make most of the test pass by doing the layout in AXIsolatedTree::create and only processing main thread events while waiting for the ax thread when the ax thread is probably blocked waiting for the main thread. See bug #234950. I don&apos;t like the solution of only processing main thread events after a timeout, but at least it seems to work for now. I think the other tests still failing really need to be made async. I&apos;ll check them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448287</attachid>
            <date>2022-01-04 06:01:10 -0800</date>
            <delta_ts>2022-01-04 06:40:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-a11y-tests-async2.diff</filename>
            <type>text/plain</type>
            <size>90604</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTY0MzhiNDgyOTAuLjE3NWM3NzMyMDdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBA
CisyMDIyLTAxLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBBWDogTWFrZSBtb3JlIHRlc3RzIGFzeW5jIHRvIHBhc3MgaW4gaXNvbGF0ZWQg
dHJlZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ4NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3MDg3Nzk3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlh
LWxpc3QtYW5kLWxpc3RpdGVtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtbWVudWJhci1tZW51aXRlbXMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEt
bm9uZS1yb2xlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLW9wdGlvbi1yb2xl
Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLW93bnMuaHRtbDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2FyaWEtcHJlc2VudGF0aW9uYWwtcm9sZS5odG1sOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hcmlhLXJvbGVzLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXNj
cm9sbGJhci1yb2xlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12
YWx1ZS1jaGFuZ2UuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZh
bHVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZh
bHVlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlLW9uLWJ1dHRv
bnMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtdGFiLXJvbGVzLmh0bWw6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWhpZXJhcmNoeS5odG1sOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2FyaWEtdGV4dC1yb2xlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jYW52YXMt
YWNjZXNzaWJpbGl0eW5vZGVvYmplY3QuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nh
bnZhcy1kZXNjcmlwdGlvbi1hbmQtcm9sZS5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
Y3NzLWNvbnRlbnQtYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9kdXBs
aWNhdGUtY2hpbGQtbm9kZXMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hhbmctaW4t
aXNpZ25vcmVkLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6
YXRpb24uaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVu
dHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1l
bGVtZW50cy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMS5odG1sOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1hZ2Utd2l0aC1hbHQtYW5kLW1hcC5odG1sOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25lZC1lbXB0eS5o
dG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNl
Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pbWctYXJpYS1idXR0b24tYWx0LXRhZy5o
dG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1nLWZhbGxzYmFjay10by10aXRsZS5odG1s
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW5wdXQtaW1hZ2UtYWx0Lmh0bWw6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9sYWJlbC1lbGVtZW50LXByZXNzLmh0bWw6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbGFuZ3VhZ2UtYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9saXN0Ym94LWVuYWJsZWQtc3RhdGVzLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9saXN0cy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWVudS1saXN0LWNyYXNoMi5o
dG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbm9jaGlsZHJlbi1lbGVtZW50cy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ub2NoaWxkcmVuLWVsZW1lbnRzLmh0bWw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ub24tbmF0aXZlLWltYWdlLWNyYXNoLmh0bWw6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9wYXJhZ3JhcGgtd2l0aC1saW5lYnJlYWtzLmh0bWw6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9wb3B1cC1idXR0b24tdGl0bGUuaHRtbDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L3ByZXNlbnRhdGlvbmFsLWVsZW1lbnRzLXdpdGgtZm9jdXMuaHRtbDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWw6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0
ZW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L2Fy
aWEtbGlzdC1hbmQtbGlzdGl0ZW0tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTAzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDogTWFrZSBh
IGZldyBtb3JlIHRlc3RzIGFzeW5jIHRvIHBhc3MgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxp
c3RpdGVtLWV4cGVjdGVkLnR4dAppbmRleCBhNzU4YWUzNmM3MzkuLjMwYTZjYmMxZGNlMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVt
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1h
bmQtbGlzdGl0ZW0tZXhwZWN0ZWQudHh0CkBAIC01LDkgKzUsOSBAQCBUaGlzIHRlc3RzIHRoYXQg
dGhlIEFSSUEgcm9sZXMgb2YgbGlzdCBhbmQgbGlzdGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMg
YWNjZXNzaQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLW9iai5jaGlsZEF0SW5kZXgo
MCkucm9sZSA9IEFYUm9sZTogQVhMaXN0Ci1vYmouY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRl
eCgwKS5yb2xlID0gQVhSb2xlOiBBWExpc3RJdGVtCi1vYmouY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgxKS5yb2xlID0gQVhSb2xlOiBBWExpc3RJdGVtCitvYmoucm9sZSA9IEFYUm9sZTog
QVhMaXN0CitvYmouY2hpbGRBdEluZGV4KDApLnJvbGUgPSBBWFJvbGU6IEFYTGlzdEl0ZW0KK29i
ai5jaGlsZEF0SW5kZXgoMSkucm9sZSA9IEFYUm9sZTogQVhMaXN0SXRlbQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1saXN0LWFuZC1saXN0aXRlbS5odG1sCmluZGV4IGRiYWJi
Y2RmNzAwMS4uODk0NzkxYjA0MmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbApAQCAtMSwxMSArMSwxMiBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCi08ZGl2IHJvbGU9Imxpc3QiPgorPGRpdiBpZD0ibGlz
dCIgcm9sZT0ibGlzdCI+CiA8ZGl2IHJvbGU9Imxpc3RpdGVtIiBhcmlhLWxhYmVsPSJpdGVtIDEi
PjxpbWcgc3JjPScjJyB3aWR0aD0xMDAgaGVpZ2h0PTEwMD48L2Rpdj4KIDxkaXYgcm9sZT0ibGlz
dGl0ZW0iIGFyaWEtbGFiZWw9Iml0ZW0gMiI+PGltZyBzcmM9JyMnIHdpZHRoPTEwMCBoZWlnaHQ9
MTAwPjwvZGl2PgogPC9kaXY+CkBAIC0xNSwyMSArMTYsMjEgQEAKIAogPHNjcmlwdD4KIAotICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcm9sZXMgb2YgbGlzdCBhbmQg
bGlzdGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMgYWNjZXNzaWJpbGl0eSByb2xlcy4iKTsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcm9sZXMgb2YgbGlzdCBhbmQgbGlz
dGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMgYWNjZXNzaWJpbGl0eSByb2xlcy4iKTsKIAotICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAK
LSAgICAgICAgICAvLyB0aGlzIHRleHQgZmllbGQgc2hvdWxkIGJlIHJlcXVpcmVkLgotICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAgICAgICAgICB2
YXIgb2JqID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAg
ICAgICBkZWJ1Zygib2JqLmNoaWxkQXRJbmRleCgwKS5yb2xlID0gIiArIG9iai5jaGlsZEF0SW5k
ZXgoMCkucm9sZSk7Ci0gICAgICAgICAgZGVidWcoIm9iai5jaGlsZEF0SW5kZXgoMCkuY2hpbGRB
dEluZGV4KDApLnJvbGUgPSAiICsgb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCku
cm9sZSk7Ci0gICAgICAgICAgZGVidWcoIm9iai5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4
KDEpLnJvbGUgPSAiICsgb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9sZSk7
Ci0gICAgfQorICAgIHZhciBvYmogPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoImxpc3QiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICBkZWJ1Zygib2JqLnJvbGUgPSAiICsgb2JqLnJvbGUpOworICAgICAgICBkZWJ1Zygib2JqLmNo
aWxkQXRJbmRleCgwKS5yb2xlID0gIiArIG9iai5jaGlsZEF0SW5kZXgoMCkucm9sZSk7CisgICAg
ICAgIGRlYnVnKCJvYmouY2hpbGRBdEluZGV4KDEpLnJvbGUgPSAiICsgb2JqLmNoaWxkQXRJbmRl
eCgxKS5yb2xlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwv
c2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtbWVudWJhci1tZW51aXRlbXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1tZW51YmFyLW1lbnVpdGVtcy5odG1sCmluZGV4IDNmOGY2ZDBhYjBiYS4uZTdl
N2E3M2QxMGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbWVu
dWJhci1tZW51aXRlbXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
bWVudWJhci1tZW51aXRlbXMuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlk
PSJib2R5Ij4KQEAgLTMzLDE3ICszMywxNSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgQVJJQSBtZW51IGl0ZW1zIGFyZSBwcm9wZXJseSBleHBvc2VkIGFzIGNoaWxk
cmVuIGZvciBtZW51IGJhcnMiKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRDb250cm9sbGVyKSB7Ci0g
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3Vz
KCk7Ci0gICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKLSAgICB2YXIgbWVudUJhciA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDApOwotICAgIGR1
bXBBY2Nlc3NpYmlsaXR5VHJlZShtZW51QmFyLCBudWxsLCAwLCBmYWxzZSwgdHJ1ZSk7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIG1lbnVCYXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1lbnViYXIiKTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkdW1wQWNjZXNzaWJpbGl0eVRyZWUobWVu
dUJhciwgbnVsbCwgMCwgZmFsc2UsIHRydWUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICB9LCAwKTsKIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW5vbmUtcm9sZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLW5vbmUtcm9sZS5odG1sCmluZGV4IGYyYTY3N2I2MjRkZS4uMDQ5ZmNm
NDI5NGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbm9uZS1y
b2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW5vbmUtcm9sZS5o
dG1sCkBAIC0xLDcgKzEsOCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0xNCwx
OSArMTUsMjEgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRo
YXQgdGhlIGFyaWEgJ25vbmUnIHJvbGUgd29ya3MgYnkgc3VjY2Vzc2Z1bGx5IHJlbW92aW5nIHRo
ZSBlbGVtZW50IGZyb20gdGhlIEFYIHRyZWUuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IHRoZSBhcmlhICdub25lJyByb2xlIHdvcmtzIGJ5IHN1Y2Nlc3NmdWxseSByZW1vdmluZyB0
aGUgZWxlbWVudCBmcm9tIHRoZSBBWCB0cmVlLiIpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKLSAgICAgICAgICBib2R5LmZvY3Vz
KCk7Ci0KLSAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICBkZWJ1ZygiZmlyc3RD
aGlsZC5yb2xlIGlzICIgKyBmaXJzdENoaWxkLnJvbGUpOwotICAgIH0KKyAgICB2YXIgYm9keSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAgYm9keS5mb2N1cygpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmaXJzdENoaWxkID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICBkZWJ1ZygiZmlyc3RDaGlsZC5yb2xlIGlzICIgKyBmaXJzdENoaWxkLnJvbGUpOworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24t
cm9sZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW9wdGlvbi1yb2xlLmh0
bWwKaW5kZXggNWJhOGU2YjdjOTIyLi5hNWI0NGVkZGUwNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24tcm9sZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24tcm9sZS5odG1sCkBAIC0xLDExICsxLDEyIEBACiA8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKLTxkaXYgcm9sZT0ibGlzdGJveCI+Cis8ZGl2IGlk
PSJsaXN0Ym94IiByb2xlPSJsaXN0Ym94Ij4KIDxkaXYgcm9sZT0ib3B0aW9uIj5vcHRpb24gMTwv
ZGl2PgogPGRpdiByb2xlPSJvcHRpb24iIGFyaWEtbGFiZWw9ImxhYmVsIDIiPm9wdGlvbiAyPC9k
aXY+CiA8L2Rpdj4KQEAgLTE1LDI4ICsxNiwzMCBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgYXJpYSAnb3B0aW9uJyByb2xlIHdvcmtzIGFzIGV4
cGVjdGVkLiBUaGF0IGlzLCBpdCBiZWNvbWVzIGEgc3RhdGljIHRleHQgZWxlbWVudCB3aXRoIG5v
IGNoaWxkcmVuLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewotCi0gICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIp
OwotICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLQotICAgICAgICAgIHZhciBsaXN0Qm94ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwotICAg
ICAgICAgIHZhciBmaXJzdENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAg
ICAgdmFyIHNlY29uZENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMSk7Ci0gICAgICAgICAg
ZGVidWcoImZpcnN0Q2hpbGQucm9sZSBpcyAiICsgZmlyc3RDaGlsZC5yb2xlKTsKLSAgICAgICAg
ICBkZWJ1ZygiZmlyc3RDaGlsZC50aXRsZSBpcyAiICsgZmlyc3RDaGlsZC50aXRsZSk7Ci0KLSAg
ICAgICAgICBkZWJ1Zygic2Vjb25kQ2hpbGQucm9sZSBpcyAiICsgc2Vjb25kQ2hpbGQucm9sZSk7
Ci0gICAgICAgICAgaWYgKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAi
YXRrIikKLSAgICAgICAgICAgICAgZGVidWcoInNlY29uZENoaWxkLnRpdGxlIGlzICIgKyBzZWNv
bmRDaGlsZC50aXRsZSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBkZWJ1Zygic2Vj
b25kQ2hpbGQuZGVzY3JpcHRpb24gaXMgIiArIHNlY29uZENoaWxkLmRlc2NyaXB0aW9uKTsKLQot
ICAgICAgICAgIHNob3VsZEJlKCJmaXJzdENoaWxkLmNoaWxkcmVuQ291bnQiLCAiMCIpOwotICAg
ICAgICAgIHNob3VsZEJlKCJzZWNvbmRDaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKLSAgICB9
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhICdvcHRpb24nIHJvbGUgd29y
a3MgYXMgZXhwZWN0ZWQuIFRoYXQgaXMsIGl0IGJlY29tZXMgYSBzdGF0aWMgdGV4dCBlbGVtZW50
IHdpdGggbm8gY2hpbGRyZW4uIik7CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgbGlzdEJv
eCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibGlzdGJv
eCIpOworICAgIHZhciBmaXJzdENoaWxkLCBzZWNvbmRDaGlsZDsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICBmaXJzdENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMCk7
CisgICAgICAgIHNlY29uZENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAg
IGRlYnVnKCJmaXJzdENoaWxkLnJvbGUgaXMgIiArIGZpcnN0Q2hpbGQucm9sZSk7CisgICAgICAg
IGRlYnVnKCJmaXJzdENoaWxkLnRpdGxlIGlzICIgKyBmaXJzdENoaWxkLnRpdGxlKTsKKworICAg
ICAgICBkZWJ1Zygic2Vjb25kQ2hpbGQucm9sZSBpcyAiICsgc2Vjb25kQ2hpbGQucm9sZSk7Cisg
ICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gImF0ayIp
CisgICAgICAgICAgICBkZWJ1Zygic2Vjb25kQ2hpbGQudGl0bGUgaXMgIiArIHNlY29uZENoaWxk
LnRpdGxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVidWcoInNlY29uZENoaWxkLmRl
c2NyaXB0aW9uIGlzICIgKyBzZWNvbmRDaGlsZC5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgc2hv
dWxkQmUoImZpcnN0Q2hpbGQuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIHNob3VsZEJl
KCJzZWNvbmRDaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtb3ducy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLW93bnMuaHRtbAppbmRleCBiNDE0MDFhZmE0MDQuLjM0YjNhZTE1ZWUxYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW93bnMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtb3ducy5odG1sCkBAIC0xLDcgKzEsOCBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0xOSwyMSArMjAsMjIgQEAKIAogPHNjcmlwdD4K
IAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYXJpYS1vd25zIGNvcnJlY3RseSBl
eHBvc2VzIEFYT3ducyBhbmQgY29ycmVjdGx5IHJldHVybnMgdGhlIHJpZ2h0IGVsZW1lbnRzIik7
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGFyaWEtb3ducyBjb3JyZWN0bHkgZXhwb3Nl
cyBBWE93bnMgYW5kIGNvcnJlY3RseSByZXR1cm5zIHRoZSByaWdodCBlbGVtZW50cyIpOwogCi0g
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
IAotICAgICAgICAgIHZhciBncm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIp
OwotICAgICAgICAgIGdyb3VwLmZvY3VzKCk7Ci0gICAgICAgICAgZ3JvdXAgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICBzaG91bGRCZSgiZ3JvdXAu
YXJpYU93bnNFbGVtZW50QXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOwot
ICAgICAgICAgIHNob3VsZEJlKCJncm91cC5hcmlhT3duc0VsZW1lbnRBdEluZGV4KDApLnRpdGxl
IiwgIidBWFRpdGxlOiBCVVRUT04nIik7Ci0gICAgICAgICAgc2hvdWxkQmUoImdyb3VwLmFyaWFP
d25zRWxlbWVudEF0SW5kZXgoMSkucm9sZSIsICInQVhSb2xlOiBBWFJhZGlvQnV0dG9uJyIpOwot
ICAgICAgICAgIHNob3VsZEJlKCJncm91cC5hcmlhT3duc0VsZW1lbnRBdEluZGV4KDEpLnRpdGxl
IiwgIidBWFRpdGxlOiBSQURJTyBCVVRUT04nIik7Ci0gICAgfQorICAgIHZhciBncm91cCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZ3JvdXAiKTsKKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgiZ3JvdXAuYXJpYU93
bnNFbGVtZW50QXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOworICAgICAg
ICBzaG91bGRCZSgiZ3JvdXAuYXJpYU93bnNFbGVtZW50QXRJbmRleCgwKS50aXRsZSIsICInQVhU
aXRsZTogQlVUVE9OJyIpOworICAgICAgICBzaG91bGRCZSgiZ3JvdXAuYXJpYU93bnNFbGVtZW50
QXRJbmRleCgxKS5yb2xlIiwgIidBWFJvbGU6IEFYUmFkaW9CdXR0b24nIik7CisgICAgICAgIHNo
b3VsZEJlKCJncm91cC5hcmlhT3duc0VsZW1lbnRBdEluZGV4KDEpLnRpdGxlIiwgIidBWFRpdGxl
OiBSQURJTyBCVVRUT04nIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOwor
fQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLXByZXNlbnRhdGlvbmFsLXJvbGUuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1wcmVzZW50YXRpb25hbC1yb2xlLmh0bWwKaW5kZXggMjMzMmQ2
ZjIzOGZmLi42ZDlhMmZkZDA0NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS1wcmVzZW50YXRpb25hbC1yb2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9hcmlhLXByZXNlbnRhdGlvbmFsLXJvbGUuaHRtbApAQCAtMSw3ICsxLDggQEAKIDwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIApAQCAtMTQsMTkgKzE1LDIxIEBACiAKIDxzY3JpcHQ+
CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhICdwcmVzZW50YXRp
b24nIHJvbGUgd29ya3MgYnkgc3VjY2Vzc2Z1bGx5IHJlbW92aW5nIHRoZSBlbGVtZW50IGZyb20g
dGhlIEFYIHRyZWUuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhICdw
cmVzZW50YXRpb24nIHJvbGUgd29ya3MgYnkgc3VjY2Vzc2Z1bGx5IHJlbW92aW5nIHRoZSBlbGVt
ZW50IGZyb20gdGhlIEFYIHRyZWUuIik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgICAgdmFyIGJvZHkgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOwotICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLQot
ICAgICAgICAgIHZhciBmaXJzdENoaWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAgIGRlYnVnKCJmaXJzdENoaWxkLnJv
bGUgaXMgIiArIGZpcnN0Q2hpbGQucm9sZSk7Ci0gICAgfQorICAgIHZhciBib2R5ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAgICBib2R5LmZvY3VzKCk7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGRlYnVn
KCJmaXJzdENoaWxkLnJvbGUgaXMgIiArIGZpcnN0Q2hpbGQucm9sZSk7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQK
aW5kZXggZjZhNzNmZTZkODkxLi40ZTA0NDAwN2Q2YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVzLWV4cGVjdGVkLnR4dApAQCAtNzAsNCArNzAsNyBAQCBC
cm9jY29saQogQmVldHMKIFRoaXMgdGVzdCBQQVNTRVMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSBy
b2xlIGlzIEFYUm9sZTogQVhMaXN0CiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtcm9sZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy5o
dG1sCmluZGV4IGU0YTAwNjVhOWZjNy4uMmE4NDg0ZDFiYzU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtcm9sZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtcm9sZXMuaHRtbApAQCAtNywyOSArNywyMSBAQAogICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7CiAgICAgfQogPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KICAKIDxib2R5
PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworZnVuY3Rpb24gdmFsaWRhdGVSb2xlKGFyaWEsIHJlYWwsIHJlc3Vs
dCkgeworICAgIHZhciBhcmlhUm9sZSA9IGFyaWEucm9sZTsKKyAgICB2YXIgcmVhbFJvbGUgPSBy
ZWFsLnJvbGU7CiAKLSAgICBmdW5jdGlvbiB2YWxpZGF0ZVJvbGUoYXJpYSwgcmVhbCwgcmVzdWx0
KSB7Ci0gICAgICAgIGlmICghd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgYXJpYS5mb2N1cygpOwotICAgICAgICB2
YXIgYXJpYVJvbGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5yb2xl
OwotICAgICAgICAKLSAgICAgICAgcmVhbC5mb2N1cygpOwotICAgICAgICB2YXIgcmVhbFJvbGUg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5yb2xlOwotICAgICAgIAot
ICAgICAgICBpZiAoYXJpYVJvbGUgPT0gcmVhbFJvbGUpCi0gICAgICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ID0gIlRoaXMgdGVzdCBQQVNTRVMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSByb2xlIGlz
ICIgKyBhcmlhUm9sZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCA9ICJUaGlzIHRlc3QgRkFJTFMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSBBUklBIHJvbGUgaXMg
IiArIGFyaWFSb2xlICsgIiwgYnV0IHRoZSByZWFsIHJvbGUgaXMgIgotICAgICAgICAgICAgICAg
ICsgcmVhbFJvbGU7Ci0gICAgfQorICAgIGlmIChhcmlhUm9sZSA9PSByZWFsUm9sZSkKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgUEFTU0VTIGluIER1bXBSZW5kZXJUcmVl
LiBUaGUgcm9sZSBpcyAiICsgYXJpYVJvbGU7CisgICAgZWxzZQorICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ID0gIlRoaXMgdGVzdCBGQUlMUyBpbiBEdW1wUmVuZGVyVHJlZS4gVGhlIEFSSUEgcm9s
ZSBpcyAiICsgYXJpYVJvbGUgKyAiLCBidXQgdGhlIHJlYWwgcm9sZSBpcyAiICsgcmVhbFJvbGU7
Cit9CiA8L3NjcmlwdD4KIAogICA8IS0tQ2hlY2tib3gtLT4KQEAgLTE2MCw2ICsxNTIsMzkgQEAK
ICAgICA8L3NjcmlwdD4KICAgPC9kaXY+CiAgIDxici8+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICB2YXIgYXJpYUNoZWNrQm94ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhQ2hlY2tC
b3giKTsKKyAgICB2YXIgcmVhbENoZWNrQm94ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJyZWFsQ2hlY2tCb3giKTsKKyAgICB2YXIgYXJpYUJ1dHRvbiA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiYXJpYUJ1dHRv
biIpOworICAgIHZhciByZWFsQnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJyZWFsQnV0dG9uIik7CisgICAgdmFyIGFyaWFIZWFkaW5nID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhSGVhZGluZyIp
OworICAgIHZhciByZWFsSGVhZGluZyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicmVhbEhlYWRpbmciKTsKKyAgICB2YXIgYXJpYUxpbmsgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImFyaWFMaW5rIik7CisgICAg
dmFyIHJlYWxMaW5rID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJyZWFsTGluayIpOworICAgIHZhciBhcmlhUmFkaW8gPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImFyaWFSYWRpbyIpOworICAgIHZhciByZWFsUmFk
aW8gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJlYWxS
YWRpbyIpOworICAgIHZhciBhcmlhVGV4dEJveCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiYXJpYVRleHRCb3giKTsKKyAgICB2YXIgcmVhbFRleHRCb3gg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJlYWxUZXh0
Qm94Iik7CisgICAgdmFyIGFyaWFJbWFnZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiYXJpYUltYWdlIik7CisgICAgdmFyIHJlYWxJbWFnZSA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicmVhbEltYWdlIik7Cisg
ICAgdmFyIGFyaWFMaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJhcmlhTGlzdCIpOworICAgIHZhciByZWFsTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicmVhbExpc3QiKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICB2YWxpZGF0ZVJvbGUoYXJpYUNoZWNrQm94LCByZWFsQ2hl
Y2tCb3gsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRDaGVja0JveCcpKTsKKyAgICAg
ICAgdmFsaWRhdGVSb2xlKGFyaWFCdXR0b24sIHJlYWxCdXR0b24sIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHRCdXR0b24nKSk7CisgICAgICAgIHZhbGlkYXRlUm9sZShhcmlhSGVhZGlu
ZywgcmVhbEhlYWRpbmcsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRIZWFkaW5nJykp
OworICAgICAgICB2YWxpZGF0ZVJvbGUoYXJpYUxpbmssIHJlYWxMaW5rLCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0TGluaycpKTsKKyAgICAgICAgdmFsaWRhdGVSb2xlKGFyaWFSYWRp
bywgcmVhbFJhZGlvLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0UmFkaW8nKSk7Cisg
ICAgICAgIHZhbGlkYXRlUm9sZShhcmlhVGV4dEJveCwgcmVhbFRleHRCb3gsIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHRUZXh0Qm94JykpOworICAgICAgICB2YWxpZGF0ZVJvbGUoYXJp
YUltYWdlLCByZWFsSW1hZ2UsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRJbWFnZScp
KTsKKyAgICAgICAgdmFsaWRhdGVSb2xlKGFyaWFMaXN0LCByZWFsTGlzdCwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdExpc3QnKSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0sIDApOworfQorPC9zY3JpcHQ+CiAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2Nyb2xsYmFyLXJvbGUuaHRtbAppbmRleCBhNzBkNDZk
ODUyMTYuLjM0YjcyMDFiNzllNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eSBpZD0iYm9keSI+CiAKQEAgLTEzLDEyICsxNCwxMyBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgQVJJQSBzY3JvbGxiYXIgcm9sZSB3b3JrcyBj
b3JyZWN0bHkiKTsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgc2Nyb2xs
YmFyIHJvbGUgd29ya3MgY29ycmVjdGx5Iik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzY3JvbGxlcjEiKS5mb2N1cygpOwotICAgICAgICB2YXIgc2Nyb2xsZXIgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB2YXIgc2Nyb2xsZXIg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNjcm9sbGVy
MSIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCJzY3Jv
bGxlci5yb2xlIiwgIidBWFJvbGU6IEFYU2Nyb2xsQmFyJyIpOwogICAgICAgICBzaG91bGRCZSgi
c2Nyb2xsZXIuaW50VmFsdWUiLCAiNTUiKTsKICAgICAgICAgc2hvdWxkQmUoInNjcm9sbGVyLm9y
aWVudGF0aW9uIiwgIidBWE9yaWVudGF0aW9uOiBBWFZlcnRpY2FsT3JpZW50YXRpb24nIik7CkBA
IC0yNywxNSArMjksMTUgQEAKICAgICAgICAgc2hvdWxkQmUoInNjcm9sbGVyLm9yaWVudGF0aW9u
IiwgIidBWE9yaWVudGF0aW9uOiBBWEhvcml6b250YWxPcmllbnRhdGlvbiciKTsKIAogICAgICAg
ICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uIHNob3VsZCBiZSB2ZXJ0aWNhbCBmb3Igc2Nyb2xsYmFy
cwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsZXIyIikuZm9jdXMoKTsK
LSAgICAgICAgc2Nyb2xsZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICAgICAgc2Nyb2xsZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInNjcm9sbGVyMiIpOwogICAgICAgICBzaG91bGRCZSgic2Nyb2xsZXIucm9s
ZSIsICInQVhSb2xlOiBBWFNjcm9sbEJhciciKTsKICAgICAgICAgc2hvdWxkQmUoInNjcm9sbGVy
LmludFZhbHVlIiwgIjU1Iik7CiAgICAgICAgIHNob3VsZEJlKCJzY3JvbGxlci5vcmllbnRhdGlv
biIsICInQVhPcmllbnRhdGlvbjogQVhWZXJ0aWNhbE9yaWVudGF0aW9uJyIpOwotICAgIH0KKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xp
ZGVyLXZhbHVlLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNs
aWRlci12YWx1ZS1jaGFuZ2UuaHRtbAppbmRleCA0ZWUyOTJjMjc5ZjMuLjAyNTcyNzUwMDVmYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12YWx1ZS1j
aGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZh
bHVlLWNoYW5nZS5odG1sCkBAIC0xLDcgKzEsOCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHki
PgogCkBAIC0xMiwyOSArMTMsMjggQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgaXRzIHBvc3NpYmxlIHRvIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGFu
IGFyaWEgc2xpZGVyIGFuZCBoYXZlIHRoZSB2YWx1ZSB1cGRhdGVkIGNvcnJlY3RseS4iKTsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaXRzIHBvc3NpYmxlIHRvIGluY3JlbWVudCBhbmQg
ZGVjcmVtZW50IGFuIGFyaWEgc2xpZGVyIGFuZCBoYXZlIHRoZSB2YWx1ZSB1cGRhdGVkIGNvcnJl
Y3RseS4iKTsKIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CiAKLSAgICAgICAgICB2YXIgc2xpZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNsaWRlciIpOwotICAgICAgICAgIHNsaWRlci5mb2N1cygpOworICAgIHZhciBzbGlk
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNsaWRl
ciIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlKCJzbGlk
ZXIuaW50VmFsdWUiLCAiNTAiKTsKIAotICAgICAgICAgIHNsaWRlciA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICAgIHNob3VsZEJlKCJzbGlkZXIuaW50
VmFsdWUiLCAiNTAiKTsKKyAgICAgICAgc2xpZGVyLmluY3JlbWVudCgpOworICAgICAgICAvLyBB
cyBvZiBub3csIHRoZXJlJ3Mgbm8gc3BlY2lmaWNhdGlvbiBkZXNpZ25lZCB0byB1cGRhdGUgdGhl
IERPTSBhZnRlciBhbiBBWCBjYWxsLgorICAgICAgICBzaG91bGRCZSgic2xpZGVyLmludFZhbHVl
IiwgIjUwIik7CiAKLSAgICAgICAgICBzbGlkZXIuaW5jcmVtZW50KCk7Ci0gICAgICAgICAgLy8g
QXMgb2Ygbm93LCB0aGVyZSdzIG5vIHNwZWNpZmljYXRpb24gZGVzaWduZWQgdG8gdXBkYXRlIHRo
ZSBET00gYWZ0ZXIgYW4gQVggY2FsbC4KLSAgICAgICAgICBzaG91bGRCZSgic2xpZGVyLmludFZh
bHVlIiwgIjUwIik7Ci0KLSAgICAgICAgICBzbGlkZXIuZGVjcmVtZW50KCk7Ci0gICAgICAgICAg
c2xpZGVyLmRlY3JlbWVudCgpOwotICAgICAgICAgIC8vIEFzIG9mIG5vdywgdGhlcmUncyBubyBz
cGVjaWZpY2F0aW9uIGRlc2lnbmVkIHRvIHVwZGF0ZSB0aGUgRE9NIGFmdGVyIGFuIEFYIGNhbGwu
Ci0gICAgICAgICAgc2hvdWxkQmUoInNsaWRlci5pbnRWYWx1ZSIsICI1MCIpOwotCi0gICAgfQor
ICAgICAgICBzbGlkZXIuZGVjcmVtZW50KCk7CisgICAgICAgIHNsaWRlci5kZWNyZW1lbnQoKTsK
KyAgICAgICAgLy8gQXMgb2Ygbm93LCB0aGVyZSdzIG5vIHNwZWNpZmljYXRpb24gZGVzaWduZWQg
dG8gdXBkYXRlIHRoZSBET00gYWZ0ZXIgYW4gQVggY2FsbC4KKyAgICAgICAgc2hvdWxkQmUoInNs
aWRlci5pbnRWYWx1ZSIsICI1MCIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAw
KTsKK30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12YWx1ZS1leHBlY3RlZC50eHQKaW5kZXgg
NDk1NmJhOWU2YjUxLi5jZGUwNjkxNGUwMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0zLDMgKzMs
NyBAQCBJbiBhY2Nlc3NpYmlsaXR5LCB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBhIHByb2dyZXNz
IGluZGljYXRvcjoKIFgKIAogVGhpcyB0ZXN0IFBBU1NFUyBpbiBEdW1wUmVuZGVyVHJlZS4gVGhl
IHZhbHVlIGlzIDUsIHRoZSBtaW5WYWx1ZSBpcyAwLCBhbmQgdGhlIG1heCB2YWx1ZSBpcyAxMC4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZhbHVlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZhbHVlLmh0bWwKaW5kZXgg
NzAyM2RhNmEwYWE0Li4xYTI5ZGEyZDg5OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtc2xpZGVyLXZhbHVlLmh0bWwKQEAgLTEsMzcgKzEsMzQgQEAKIDxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+CiA8Ym9keT4KKzxkaXY+Cis8cD5JbiBhY2Nlc3NpYmlsaXR5LCB0aGUgZm9s
bG93aW5nIHNob3VsZCBiZSBhIHByb2dyZXNzIGluZGljYXRvcjo8L3A+Cis8cD48c3BhbiB0YWJp
bmRleD0iMCIgcm9sZT0ic2xpZGVyIiBpZD0ic2xpZGVyIiBhcmlhLXZhbHVlbm93PTUgYXJpYS12
YWx1ZW1pbj0wIGFyaWEtdmFsdWVtYXg9MTA+WDwvc3Bhbj48L3A+Cis8c3BhbiBpZD0icmVzdWx0
Ij48L3NwYW4+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2xp
ZGVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzbGlk
ZXIiKTsKKyAgICAgICAgdmFyIHZhbHVlID0gc2xpZGVyLmludFZhbHVlOworICAgICAgICB2YXIg
bWluVmFsdWUgPSBzbGlkZXIubWluVmFsdWU7CisgICAgICAgIHZhciBtYXhWYWx1ZSA9IHNsaWRl
ci5tYXhWYWx1ZTsKIAotICAgIGZ1bmN0aW9uIGNoZWNrVmFsdWUoKSB7Ci0gICAgICAgIGlmICgh
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgdmFyIGFyaWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVy
Iik7Ci0gICAgICAgIGFyaWEuZm9jdXMoKTsKLSAgICAgICAgdmFyIGZvY3VzZWRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIHZhciB2YWx1
ZSA9IGZvY3VzZWRFbGVtZW50LmludFZhbHVlOwotICAgICAgICB2YXIgbWluVmFsdWUgPSBmb2N1
c2VkRWxlbWVudC5taW5WYWx1ZTsKLSAgICAgICAgdmFyIG1heFZhbHVlID0gZm9jdXNlZEVsZW1l
bnQubWF4VmFsdWU7Ci0gICAgICAgCiAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICAgICAgIGlmICh2YWx1ZSA9PSA1ICYmIG1pblZhbHVl
ID09IDAgJiYgbWF4VmFsdWUgPT0gMTApCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0g
IlRoaXMgdGVzdCBQQVNTRVMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSB2YWx1ZSBpcyAiICsgdmFs
dWUgKyAiLCB0aGUgbWluVmFsdWUgaXMgIiAKLSAgICAgICAgICAgICAgICArIG1pblZhbHVlICsg
IiwgYW5kIHRoZSBtYXggdmFsdWUgaXMgIiArIG1heFZhbHVlICsgIi4iOworICAgICAgICAgICAg
cmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgUEFTU0VTIGluIER1bXBSZW5kZXJUcmVlLiBU
aGUgdmFsdWUgaXMgIiArIHZhbHVlICsgIiwgdGhlIG1pblZhbHVlIGlzICIgKyBtaW5WYWx1ZSAr
ICIsIGFuZCB0aGUgbWF4IHZhbHVlIGlzICIgKyBtYXhWYWx1ZSArICIuIjsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgRkFJTFMgaW4gRHVt
cFJlbmRlclRyZWUuIFRoZSB2YWx1ZSwgbWluVmFsdWUsIGFuZC9vciBtYXhWYWx1ZSBvZiB0aGUg
cmFuZ2UgbXVzdCBiZSBpbmNvcnJlY3QuIjsKLSAgICB9Ci08L3NjcmlwdD4KIAotPGRpdj4KLSAg
ICA8cD5JbiBhY2Nlc3NpYmlsaXR5LCB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBhIHByb2dyZXNz
IGluZGljYXRvcjo8L3A+Ci0gICAgPHA+PHNwYW4gdGFiaW5kZXg9IjAiIHJvbGU9InNsaWRlciIg
aWQ9InNsaWRlciIgYXJpYS12YWx1ZW5vdz01IGFyaWEtdmFsdWVtaW49MCBhcmlhLXZhbHVlbWF4
PTEwPlg8L3NwYW4+PC9wPgotICAgIDxzcGFuIGlkPSJyZXN1bHQiPjwvc3Bhbj4KLSAgICA8c2Ny
aXB0PgotICAgICAgICBjaGVja1ZhbHVlKCk7Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvZGl2PgotICAK
LSA8L2JvZHk+CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3Jp
cHQ+Cis8L2Rpdj4KKzwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS10YWItcm9sZS1vbi1idXR0b25zLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFiLXJvbGUtb24tYnV0dG9ucy5odG1sCmluZGV4IDBhNGQzZGQz
MjNiOC4uMGUzODMyOWFjNDMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtdGFiLXJvbGUtb24tYnV0dG9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS10YWItcm9sZS1vbi1idXR0b25zLmh0bWwKQEAgLTEsMTEgKzEsMTIgQEAKIDwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIAotPGRpdiByb2xlPSJ0YWJsaXN0Ij4KKzxkaXYgaWQ9
InRhYmxpc3QiIHJvbGU9InRhYmxpc3QiPgogICAgIDxidXR0b24gaWQ9InRhYiBhIiByb2xlPSJ0
YWIiIGFyaWEtc2VsZWN0ZWQ9InRydWUiPlRhYiBBPC9idXR0b24+CiAgICAgPGJ1dHRvbiBpZD0i
dGFiIGIiIHJvbGU9InRhYiIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPlRhYiBCPC9idXR0b24+CiAg
ICAgPGJ1dHRvbiBpZD0idGFiIGMiIHJvbGU9InRhYiIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPlRh
YiBDPC9idXR0b24+CkBAIC0xNiwyOCArMTcsMjcgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9sZXMgZm9yIHRhYiBhbmQgdGFibGlz
dCB3b3JrIGFzIGV4cGVjdGVkIGZvciBidXR0b25zLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgewotCi0gICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYm9keSIpOwotICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLQotICAgICAg
ICAgIHZhciB0YWJMaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwotICAgICAgICAgIHZhciB0YWIxID0gdGFiTGlzdC5jaGlsZEF0SW5k
ZXgoMCk7Ci0gICAgICAgICAgdmFyIHRhYjIgPSB0YWJMaXN0LmNoaWxkQXRJbmRleCgxKTsKLSAg
ICAgICAgICB2YXIgdGFiUGFuZWwgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMSk7Ci0KLSAgICAgICAgICBkZWJ1ZygidGFiTGlzdC5yb2xlID0g
IiArIHRhYkxpc3Qucm9sZSk7Ci0gICAgICAgICAgZGVidWcoInRhYjEucm9sZSA9ICIgKyB0YWIx
LnJvbGUpOwotICAgICAgICAgIGRlYnVnKCJ0YWIxLnRpdGxlID0gIiArIHRhYjEudGl0bGUpOwot
ICAgICAgICAgIHNob3VsZEJlKCJ0YWIxLmNoaWxkcmVuQ291bnQiLCAiMCIpOwotICAgICAgICAg
IGRlYnVnKCJ0YWIyLnJvbGUgPSAiICsgdGFiMi5yb2xlKTsKLSAgICAgICAgICBkZWJ1ZygidGFi
Mi50aXRsZSA9ICIgKyB0YWIyLnRpdGxlKTsKLSAgICB9CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGF0IHRoZSBhcmlhIHJvbGVzIGZvciB0YWIgYW5kIHRhYmxpc3Qgd29yayBhcyBleHBlY3Rl
ZCBmb3IgYnV0dG9ucy4iKTsKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciB0YWJMaXN0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsaXN0Iik7
CisgICAgdmFyIHRhYjEsIHRhYjI7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICB0YWIyID0gdGFiTGlz
dC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJ0YWJMaXN0LnJvbGUgPSAiICsgdGFi
TGlzdC5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjEucm9sZSA9ICIgKyB0YWIxLnJvbGUpOwor
ICAgICAgICBkZWJ1ZygidGFiMS50aXRsZSA9ICIgKyB0YWIxLnRpdGxlKTsKKyAgICAgICAgc2hv
dWxkQmUoInRhYjEuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIGRlYnVnKCJ0YWIyLnJv
bGUgPSAiICsgdGFiMi5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjIudGl0bGUgPSAiICsgdGFi
Mi50aXRsZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3Nj
cmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYi1yb2xlcy5odG1sCmluZGV4IDEwMWYxN2FhMDM2ZS4uNTA5NzdhZTJkYmFhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFiLXJvbGVzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sCkBAIC0xLDcgKzEs
OCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0yMCwzMCArMjEsMzAgQEAKIAog
PHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9s
ZXMgZm9yIHRhYiwgdGFicGFuZWwgYW5kIHRhYmxpc3Qgd29yayBhcyBleHBlY3RlZCBjb3JyZWN0
bHkuIik7Ci0KLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0KLSAg
ICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAg
ICAgICAgYm9keS5mb2N1cygpOwotCi0gICAgICAgICAgdmFyIHRhYkxpc3QgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAg
dmFyIHRhYjEgPSB0YWJMaXN0LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICB2YXIgdGFiMiA9
IHRhYkxpc3QuY2hpbGRBdEluZGV4KDEpOwotICAgICAgICAgIHZhciB0YWJQYW5lbCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKLQotICAg
ICAgICAgIGRlYnVnKCJ0YWJMaXN0LnJvbGUgPSAiICsgdGFiTGlzdC5yb2xlKTsKLSAgICAgICAg
ICBkZWJ1ZygidGFiMS5yb2xlID0gIiArIHRhYjEucm9sZSk7Ci0gICAgICAgICAgZGVidWcoInRh
YjEudGl0bGUgPSAiICsgdGFiMS50aXRsZSk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRhYjEuY2hp
bGRyZW5Db3VudCIsICIwIik7Ci0gICAgICAgICAgZGVidWcoInRhYjIucm9sZSA9ICIgKyB0YWIy
LnJvbGUpOwotICAgICAgICAgIGRlYnVnKCJ0YWIyLnRpdGxlID0gIiArIHRhYjIudGl0bGUpOwot
ICAgICAgICAgIGRlYnVnKCJ0YWJQYW5lbC5yb2xlID0gIiArIHRhYlBhbmVsLnJvbGUpOwotICAg
ICAgICAgIGRlYnVnKCJ0YWJQYW5lbC5zdWJyb2xlID0gIiArIHRhYlBhbmVsLnN1YnJvbGUpOwot
ICAgIH0KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9sZXMgZm9yIHRh
YiwgdGFicGFuZWwgYW5kIHRhYmxpc3Qgd29yayBhcyBleHBlY3RlZCBjb3JyZWN0bHkuIik7CisK
K2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgdGFiTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGlzdF8xIik7CisgICAgdmFyIHRhYlBhbmVs
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwYW5lbF8x
Iik7CisgICAgdmFyIHRhYjEsIHRhYjI7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICB0YWIyID0gdGFi
TGlzdC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJ0YWJMaXN0LnJvbGUgPSAiICsg
dGFiTGlzdC5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjEucm9sZSA9ICIgKyB0YWIxLnJvbGUp
OworICAgICAgICBkZWJ1ZygidGFiMS50aXRsZSA9ICIgKyB0YWIxLnRpdGxlKTsKKyAgICAgICAg
c2hvdWxkQmUoInRhYjEuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIGRlYnVnKCJ0YWIy
LnJvbGUgPSAiICsgdGFiMi5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjIudGl0bGUgPSAiICsg
dGFiMi50aXRsZSk7CisgICAgICAgIGRlYnVnKCJ0YWJQYW5lbC5yb2xlID0gIiArIHRhYlBhbmVs
LnJvbGUpOworICAgICAgICBkZWJ1ZygidGFiUGFuZWwuc3Vicm9sZSA9ICIgKyB0YWJQYW5lbC5z
dWJyb2xlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2Ny
aXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtdGFibGUtaGllcmFyY2h5Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtdGFibGUtaGllcmFyY2h5Lmh0bWwKaW5kZXggOTNhMWRjM2M0ZjhjLi5hNDUxYTA2MDc1
Y2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1oaWVy
YXJjaHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtaGll
cmFyY2h5Lmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGR1bXBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW4oZWxlbWVudCwgbGV2ZWwpIHsKICAgICAgICAgaWYgKGVsZW1l
bnQuc3RyaW5nVmFsdWUuaW5kZXhPZignRW5kIG9mIHRlc3QnKSA+PSAwKQpAQCAtNDAsMTIgKzQx
LDE2IEBACiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgogPHNjcmlwdD4KLSAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFjY2Vzc2libGUgaGll
cmFyY2h5IGZvciBhbiBBUklBIHRhYmxlLiIpOwotICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7Ci0gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3Vz
KCk7Ci0gICAgICBkdW1wQWNjZXNzaWJpbGl0eUNoaWxkcmVuKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LCAwKTsKLSAgfQorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhl
IGFjY2Vzc2libGUgaGllcmFyY2h5IGZvciBhbiBBUklBIHRhYmxlLiIpOworaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkdW1wQWNjZXNzaWJpbGl0eUNoaWxkcmVu
KGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LCAwKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbCBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbAppbmRleCBiY2NlNWZhMmQ4
YzYuLmY1OWE5ZGU2MTA2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLXRhYmxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJs
ZXMuaHRtbApAQCAtMSw4ICsxLDggQEAKIDxodG1sPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotPC9zY3JpcHQ+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KICAgICAKICAgICA8IS0tIFRoaXMgdGVz
dCBwZXJmb3JtcyBhIG51bWJlciBvZiB0ZXN0cyBvbiBBUklBIHRhYmxlcyB0byBtYWtlIHN1cmUg
dGhleSBjb25mb3JtIGFzIGV4cGVjdGVkIC0tPgpAQCAtNDIsNDYgKzQyLDUyIEBACiAgICAgPC90
YWJsZT4KIAogICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiAgICAgCi0gICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAgICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwogCi0gICAg
ICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAg
ICAgICAgICBib2R5LmZvY3VzKCk7Ci0gICAgICAgICAgICB2YXIgZm9jdXNlZEVsZW1lbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIHZhciB0
YWJsZTEgPSBmb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAgICB2YXIg
dGFibGUyID0gZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOwogCi0gICAgICAgICAgICB2
YXIgZmFpbGVkID0gMDsKLSAgICAgICAgICAgIDwhLS0gbWFrZSBzdXJlIHRoZXkgYXJlIHRhYmxl
cyAtLT4KLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gdGFibGUxLnJvbGUgKyAiXG4i
OwotICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSB0YWJsZTIucm9sZSArICJcbiI7Cisg
ICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAgIGJvZHku
Zm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZm9jdXNl
ZEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAg
ICAgdmFyIHRhYmxlMSA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
dmFyIHRhYmxlMiA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKIAotICAgICAgICAg
ICAgPCEtLSBNYWtlIHN1cmUgd2UgY2FuIHVzZSBjZWxsIGZvciBjb2x1bW4gYW5kIHJvdyBhbmQg
aXQgd29ya3MgLS0+Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDAsMCkucm9sZSArICJcbiI7Ci0gICAgICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ICs9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsMCkucm9sZSArICJcbiI7Ci0g
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsMikucm9sZSArICJcbiI7Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxl
Mi5jZWxsRm9yQ29sdW1uQW5kUm93KDEsMSkucm9sZSArICJcbiI7CisgICAgICAgIHZhciBmYWls
ZWQgPSAwOworICAgICAgICA8IS0tIG1ha2Ugc3VyZSB0aGV5IGFyZSB0YWJsZXMgLS0+CisgICAg
ICAgIHJlc3VsdC5pbm5lclRleHQgKz0gdGFibGUxLnJvbGUgKyAiXG4iOworICAgICAgICByZXN1
bHQuaW5uZXJUZXh0ICs9IHRhYmxlMi5yb2xlICsgIlxuIjsKIAotICAgICAgICAgICAgPCEtLSBu
b3cgbWFrZSBzdXJlIHdlIGNhbiBjYWxsIGFsbCB0aGUgcmVsZXZhbnQgbWV0aG9kcyB3aXRob3V0
IGNyYXNoaW5nIC0tPgotICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRl
cnMoKTsKLSAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCk7Cisg
ICAgICAgIDwhLS0gTWFrZSBzdXJlIHdlIGNhbiB1c2UgY2VsbCBmb3IgY29sdW1uIGFuZCByb3cg
YW5kIGl0IHdvcmtzIC0tPgorICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDAsMCkucm9sZSArICJcbiI7CisgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gdGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwwKS5yb2xlICsgIlxuIjsKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCArPSB0YWJsZTEuY2VsbEZvckNvbHVtbkFuZFJvdygyLDIpLnJv
bGUgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMi5jZWxsRm9yQ29s
dW1uQW5kUm93KDEsMSkucm9sZSArICJcbiI7CiAKLSAgICAgICAgICAgIHRhYmxlMS5hdHRyaWJ1
dGVzT2ZSb3dIZWFkZXJzKCk7Ci0gICAgICAgICAgICB0YWJsZTIuYXR0cmlidXRlc09mUm93SGVh
ZGVycygpOwotICAgIAotICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsK
LSAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1bW5zKCk7CisgICAgICAgIDwhLS0g
bm93IG1ha2Ugc3VyZSB3ZSBjYW4gY2FsbCBhbGwgdGhlIHJlbGV2YW50IG1ldGhvZHMgd2l0aG91
dCBjcmFzaGluZyAtLT4KKyAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMo
KTsKKyAgICAgICAgdGFibGUyLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKTsKIAotICAgICAg
ICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZlJvd3MoKTsKLSAgICAgICAgICAgIHRhYmxlMi5hdHRy
aWJ1dGVzT2ZSb3dzKCk7CisgICAgICAgIHRhYmxlMS5hdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7
CisgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7CiAKLSAgICAgICAgICAg
IHRhYmxlMS5hdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKLSAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1
dGVzT2ZIZWFkZXIoKTsKKyAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsKKyAg
ICAgICAgdGFibGUyLmF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsKIAotICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiVGVzdCBwYXNzZWRcbiI7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4K
KyAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICAgICAgdGFibGUyLmF0dHJp
YnV0ZXNPZlJvd3MoKTsKKworICAgICAgICB0YWJsZTEuYXR0cmlidXRlc09mSGVhZGVyKCk7Cisg
ICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKworICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ICs9ICJUZXN0IHBhc3NlZFxuIjsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fSwgMCk7Cit9Cis8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10ZXh0LXJvbGUuaHRtbCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS10ZXh0LXJvbGUuaHRtbAppbmRleCBlMzlhN2E2M2ZkNmEuLjU4Y2I2
OTA5ZTY0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRleHQt
cm9sZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10ZXh0LXJvbGUu
aHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHkt
aGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KQEAgLTE3LDIz
ICsxNywyNiBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCB5b3UgY2FuIHNldCBhbiBBUklBIHRleHQgcm9sZSBhbmQgdGhhdCBpdCB3aWxsIG5vdCBoYXZl
IGNoaWxkcmVuIHRocm91Z2ggaGl0IHRlc3RpbmciKTsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgeW91IGNhbiBzZXQgYW4gQVJJQSB0ZXh0IHJvbGUgYW5kIHRoYXQgaXQgd2lsbCBub3Qg
aGF2ZSBjaGlsZHJlbiB0aHJvdWdoIGhpdCB0ZXN0aW5nIik7CiAKLSAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0cm9sZSIpLmZvY3VzKCk7Ci0gICAgICAgIHZhciB0ZXh0
cm9sZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHZhciB0
ZXh0cm9sZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
dGV4dHJvbGUiKTsKKyAgICB2YXIgeCwgeTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewog
ICAgICAgICBzaG91bGRCZSgidGV4dHJvbGUucm9sZSIsICJwbGF0Zm9ybVJvbGVGb3JTdGF0aWNU
ZXh0KHRleHRyb2xlKSIpOwogICAgICAgICBzaG91bGRCZSgidGV4dHJvbGUuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IGFsbCBhdCBvbmNlJyIpOwogCiAgICAgICAgIC8vIG5vdyBjaGVjayB0aGUg
aGl0LXRlc3RpbmcKLSAgICAgICAgdmFyIHggPSB0ZXh0cm9sZS5jbGlja1BvaW50WDsKLSAgICAg
ICAgdmFyIHkgPSB0ZXh0cm9sZS5jbGlja1BvaW50WTsKKyAgICAgICAgeCA9IHRleHRyb2xlLmNs
aWNrUG9pbnRYOworICAgICAgICB5ID0gdGV4dHJvbGUuY2xpY2tQb2ludFk7CiAgICAgICAgIHNo
b3VsZEJlKCJ0ZXh0cm9sZS5lbGVtZW50QXRQb2ludCh4LCB5KS5pc0VxdWFsKHRleHRyb2xlKSIs
ICJ0cnVlIik7Ci0gICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30K
IAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvY2FudmFzLWFjY2Vzc2liaWxpdHlub2Rlb2JqZWN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1hY2Nlc3NpYmlsaXR5bm9kZW9iamVjdC5odG1sCmlu
ZGV4IGRjZGJiYjgyZTY0ZC4uZTBmMTMyNTU3MGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2NhbnZhcy1hY2Nlc3NpYmlsaXR5bm9kZW9iamVjdC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWFjY2Vzc2liaWxpdHlub2Rlb2JqZWN0Lmh0
bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRNTD4KIDxodG1sPgogPGJvZHk+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIAogPGRpdiBpZD0i
bXlDb250YWluZXIiIHRhYmluZGV4PSItMSI+CiAgIDxhIGhyZWY9IiMiPkxpbms8L2E+CkBAIC0z
Miw3ICszMyw3IEBACiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdHMgYXJlIGNyZWF0ZWQgZm9yIGVsZW1lbnRzIGluIGEgY2FudmFz
IHN1YnRyZWUuIik7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiAgICAgZnVuY3Rpb24gYXBwZW5kRm9j
dXNhYmxlRGVzY2VuZGFudHMoYXhPYmplY3QsIGF4Rm9jdXNhYmxlTGlzdCkgewogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGF4T2JqZWN0LmNoaWxkcmVuQ291bnQ7IGkrKykgewpAQCAtNDMs
MzEgKzQ0LDI3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIHZhciBjb250YWluZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlDb250YWluZXIiKTsKLSAgICBjb250YWluZXIuZm9j
dXMoKTsKLSAgICB2YXIgYXhDb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKLQotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bXlDYW52YXMiKTsKLSAgICBjYW52YXMuZm9jdXMoKTsKLSAgICB2YXIgYXhDYW52YXMgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLQorICAgIHZhciBheENvbnRhaW5l
ciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibXlDb250
YWluZXIiKTsKKyAgICB2YXIgYXhDYW52YXMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoIm15Q2FudmFzIik7CiAgICAgdmFyIGF4UmVuZGVyT2JqZWN0cyA9
IFtdOwogICAgIHZhciBheE5vZGVPYmplY3RzID0gW107CisgICAgdmFyIGksIGF4UmVuZGVyT2Jq
ZWN0LCBheE5vZGVPYmplY3Q7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
YXBwZW5kRm9jdXNhYmxlRGVzY2VuZGFudHMoYXhDb250YWluZXIsIGF4UmVuZGVyT2JqZWN0cyk7
CisgICAgICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4Q2FudmFzLCBheE5vZGVPYmpl
Y3RzKTsKIAotICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4Q29udGFpbmVyLCBheFJl
bmRlck9iamVjdHMpOwotICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4Q2FudmFzLCBh
eE5vZGVPYmplY3RzKTsKLQotICAgIHNob3VsZEJlKCJheFJlbmRlck9iamVjdHMubGVuZ3RoIiwg
ImF4Tm9kZU9iamVjdHMubGVuZ3RoIik7CisgICAgICAgIHNob3VsZEJlKCJheFJlbmRlck9iamVj
dHMubGVuZ3RoIiwgImF4Tm9kZU9iamVjdHMubGVuZ3RoIik7CiAKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGF4UmVuZGVyT2JqZWN0cy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgYXhSZW5k
ZXJPYmplY3QgPSBheFJlbmRlck9iamVjdHNbaV07Ci0gICAgICAgIHZhciBheE5vZGVPYmplY3Qg
PSBheE5vZGVPYmplY3RzW2ldOwotICAgICAgICBzaG91bGRCZSgiaSA9PSAiICsgaSArICI7IGF4
UmVuZGVyT2JqZWN0LnJvbGUgPT0gYXhOb2RlT2JqZWN0LnJvbGUiLCAidHJ1ZSIpOwotICAgIH0K
KyAgICAgICAgZm9yIChpID0gMDsgaSA8IGF4UmVuZGVyT2JqZWN0cy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgYXhSZW5kZXJPYmplY3QgPSBheFJlbmRlck9iamVjdHNbaV07CisgICAgICAg
ICAgICBheE5vZGVPYmplY3QgPSBheE5vZGVPYmplY3RzW2ldOworICAgICAgICAgICAgc2hvdWxk
QmUoImkgPT0gIiArIGkgKyAiOyBheFJlbmRlck9iamVjdC5yb2xlID09IGF4Tm9kZU9iamVjdC5y
b2xlIiwgInRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
LCAwKTsKIH0KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWRlc2NyaXB0aW9uLWFuZC1yb2xlLmh0bWwgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1kZXNjcmlwdGlvbi1hbmQtcm9sZS5odG1s
CmluZGV4IDg3Y2IxNTlmNDUzNS4uZThkZjg2NTI1MDg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1kZXNjcmlwdGlvbi1hbmQtcm9sZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWRlc2NyaXB0aW9uLWFuZC1yb2xlLmh0bWwK
QEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgSFRNTD4KIDxodG1sPgogPGJvZHk+Ci08c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIAogPHN0eWxlPmNhbnZh
cyB7IGRpc3BsYXk6IGlubGluZTsgYm9yZGVyOiAxcHggc29saWQgIzAwMDsgfTwvc3R5bGU+CkBA
IC0xNCwyNCArMTQsMjYgQEAKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0
IGEgY2FudmFzIHdpdGggYW5kIHdpdGhvdXQgZmFsbGJhY2sgY29udGVudCBlYWNoIGhhcyB0aGUg
cmlnaHQgcm9sZSBhbmQgZGVzY3JpcHRpb24uIikKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyICYm
IHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgIHdpbmRvdy50ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuZm9jdXMoKTsKLSAgICB2YXIgYXhD
b250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB2
YXIgYXhDb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNvbnRhaW5lciIpOworICAgIHZhciBheENhbnZhczEsIGF4Q2FudmFzMjsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgiYXhDb250YWluZXIuY2hp
bGRyZW5Db3VudCIsICIyIik7CiAKLSAgICBzaG91bGRCZSgiYXhDb250YWluZXIuY2hpbGRyZW5D
b3VudCIsICIyIik7CisgICAgICAgIGF4Q2FudmFzMSA9IGF4Q29udGFpbmVyLmNoaWxkQXRJbmRl
eCgwKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwbGF0Zm9ybVZhbHVlRm9yVzND
TmFtZShheENhbnZhczEpIiwgIkNhbnZhcyBsYWJlbCIpOworICAgICAgICBkZWJ1ZygnQ2FudmFz
IDEgcm9sZTogJyArIGF4Q2FudmFzMS5yb2xlKTsKIAotICAgIHZhciBheENhbnZhczEgPSBheENv
bnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwbGF0
Zm9ybVZhbHVlRm9yVzNDTmFtZShheENhbnZhczEpIiwgIkNhbnZhcyBsYWJlbCIpOwotICAgIGRl
YnVnKCdDYW52YXMgMSByb2xlOiAnICsgYXhDYW52YXMxLnJvbGUpOworICAgICAgICBheENhbnZh
czIgPSBheENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoYXhDYW52YXMyKSIsICIiKTsKKyAgICAg
ICAgZGVidWcoJ0NhbnZhcyAyIHJvbGU6ICcgKyBheENhbnZhczIucm9sZSk7CiAKLSAgICB2YXIg
YXhDYW52YXMyID0gYXhDb250YWluZXIuY2hpbGRBdEluZGV4KDEpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoYXhDYW52YXMyKSIsICIiKTsKLSAg
ICBkZWJ1ZygnQ2FudmFzIDIgcm9sZTogJyArIGF4Q2FudmFzMi5yb2xlKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfSwgMCk7CiB9CiAKIDwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Nzcy1jb250ZW50LWF0dHJp
YnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jc3MtY29udGVudC1hdHRyaWJ1
dGUuaHRtbAppbmRleCA2ZDQ0OGY4ODVjNWIuLjQ2MzlkOTEyYjIxYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jc3MtY29udGVudC1hdHRyaWJ1dGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Nzcy1jb250ZW50LWF0dHJpYnV0ZS5odG1sCkBAIC0x
Nyw3ICsxNyw4IEBACiAgICAgfQogPC9zY3JpcHQ+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KIApAQCAtNDAsMTUgKzQxLDE4IEBACiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gdGhlIGNvbnRlbnQgYXR0cmlidXRlIGluIENTUyBpcyB1
c2VkLCB0aGUgY29ycmVjdCB2YWx1ZXMgYXJlIHJldHVybmVkLiIpOworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCB3aGVuIHRoZSBjb250ZW50IGF0dHJpYnV0ZSBpbiBDU1MgaXMgdXNlZCwg
dGhlIGNvcnJlY3QgdmFsdWVzIGFyZSByZXR1cm5lZC4iKTsKIAotICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm9keSIpLmZvY3VzKCk7Ci0gICAgICAgICAgZHVtcEFjY2Vzc2liaWxpdHlDaGlsZHJlbihh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudCwgMCk7Ci0gICAgfQoraWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Cisg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZHVtcEFjY2Vzc2liaWxpdHlDaGls
ZHJlbihhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudCwgMCk7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kdXBsaWNhdGUtY2hp
bGQtbm9kZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHVwbGljYXRlLWNoaWxk
LW5vZGVzLmh0bWwKaW5kZXggODllOTA4NWZhMjJlLi44MTk2NGU5ZjcwYzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHVwbGljYXRlLWNoaWxkLW5vZGVzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kdXBsaWNhdGUtY2hpbGQtbm9kZXMuaHRtbApA
QCAtMSw3ICsxLDggQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogCkBAIC0xMSwxNyArMTIsMjIgQEAKIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJDaGls
ZCBub2RlcyBzaG91bGQgbm90IGJlIGR1cGxpY2F0ZWQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJl
ZS4iKTsKK2Rlc2NyaXB0aW9uKCJDaGlsZCBub2RlcyBzaG91bGQgbm90IGJlIGR1cGxpY2F0ZWQg
aW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4iKTsKIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOwotICAgICAg
ICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Owor
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTsKKyAgICB2YXIgd2Vi
QXJlYTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB3ZWJBcmVhID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAgICAgIGlmICh3ZWJBcmVh
LmNoaWxkcmVuQ291bnQgPiAxKQogICAgICAgICAgICAgc2hvdWxkQmUoIndlYkFyZWEuY2hpbGRB
dEluZGV4KDApLmlzRXF1YWwod2ViQXJlYS5jaGlsZEF0SW5kZXgoMSkpIiwgImZhbHNlIik7Ci0g
ICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KIAogPC9zY3JpcHQ+
CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aGFuZy1pbi1pc2lnbm9yZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGFuZy1p
bi1pc2lnbm9yZWQuaHRtbAppbmRleCAzMTA0OTkzMTk4ZDMuLmYzY2UzM2VlNzdmNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oYW5nLWluLWlzaWdub3JlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGFuZy1pbi1pc2lnbm9yZWQuaHRtbApAQCAt
MSw3ICsxLDggQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIAogPGJvZHkgaWQ9ImJvZHkiPgpAQCAtNzEsMTkgKzcyLDIy
IEBACiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdlIHdp
bGwgbm90IGhhbmcgd2hlbiB1c2luZyBhY2Nlc3NpYmlsaXR5IG9uIHRoaXMgcGFnZS4gVGhlIGlk
ZWEgaXMgdGhhdCB0aGUgZWxlbWVudCB0cmVlIGlzIGRlZXAgZW5vdWdoIHRvIGNhdXNlIGEgaGFu
ZyBqdXN0IGJ5IGFjY2Vzc2luZyBlbGVtZW50cyBpZiBzb21ldGhpbmcgaXMgaW1wbGVtZW50ZWQg
aW5jb3JyZWN0bHkuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdlIHdpbGwgbm90
IGhhbmcgd2hlbiB1c2luZyBhY2Nlc3NpYmlsaXR5IG9uIHRoaXMgcGFnZS4gVGhlIGlkZWEgaXMg
dGhhdCB0aGUgZWxlbWVudCB0cmVlIGlzIGRlZXAgZW5vdWdoIHRvIGNhdXNlIGEgaGFuZyBqdXN0
IGJ5IGFjY2Vzc2luZyBlbGVtZW50cyBpZiBzb21ldGhpbmcgaXMgaW1wbGVtZW50ZWQgaW5jb3Jy
ZWN0bHkuIik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Citp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iiku
Zm9jdXMoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Cisg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIGJvZHkgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgCisKICAgICAgICAgLy8gaWYg
c3VjY2Vzc2Z1bCwgd2Ugd2lsbCBOT1QgaGFuZyBhZnRlciB0aGlzIGNhbGwKICAgICAgICAgYm9k
eS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOwotICAgIH0KKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1iYXN0YXJkaXphdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24u
aHRtbAppbmRleCA2NThhMzhkMGQ3NDQuLjZmZDE2ODI2YzMzOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1iYXN0YXJkaXphdGlvbi5odG1sCkBAIC0xLDUg
KzEsNiBAQAogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIApAQCAtMTAsMjkgKzExLDMyIEBA
CiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhh
dCB0aGUgQVggcGFyZW50IGNoYWluIGhpZXJhcmNoeSB3aXRoIGlmcmFtZXMgaXMgY29ycmVjdCIp
OworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgdGhlIEFYIHBhcmVudCBj
aGFpbiBoaWVyYXJjaHkgd2l0aCBpZnJhbWVzIGlzIGNvcnJlY3QiKTsKIAotICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAg
dmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOwotICAgICAgICBib2R5
LmZvY3VzKCk7Ci0gICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7CisgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Ym9keSIpOworICAgIGJvZHkuZm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICB3aW5kb3cud2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50OwogCi0gICAgICAgIHZhciBncm91cDEgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgwKTsK
LSAgICAgICAgdmFyIGlmcmFtZVNjcm9sbEFyZWEgPSBncm91cDEuY2hpbGRBdEluZGV4KDApOwot
ICAgICAgICB2YXIgaWZyYW1lV2ViQXJlYSA9IGlmcmFtZVNjcm9sbEFyZWEuY2hpbGRBdEluZGV4
KDApOwotICAgICAgICAgICAgCi0gICAgICAgIHZhciBwYXJlbnRJZnJhbWVXZWJBcmVhID0gaWZy
YW1lV2ViQXJlYS5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIHZhciBwYXJlbnRJZnJhbWVTY3Jv
bGxBcmVhID0gcGFyZW50SWZyYW1lV2ViQXJlYS5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIHZh
ciBwYXJlbnRHcm91cDEgPSBwYXJlbnRJZnJhbWVTY3JvbGxBcmVhLnBhcmVudEVsZW1lbnQoKTsK
KyAgICAgICAgd2luZG93Lmdyb3VwMSA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICB3aW5kb3cuaWZyYW1lU2Nyb2xsQXJlYSA9IGdyb3VwMS5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIHdpbmRvdy5pZnJhbWVXZWJBcmVhID0gaWZyYW1lU2Nyb2xsQXJlYS5jaGlsZEF0SW5kZXgo
MCk7CisKKyAgICAgICAgd2luZG93LnBhcmVudElmcmFtZVdlYkFyZWEgPSBpZnJhbWVXZWJBcmVh
LnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgd2luZG93LnBhcmVudElmcmFtZVNjcm9sbEFyZWEg
PSBwYXJlbnRJZnJhbWVXZWJBcmVhLnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgd2luZG93LnBh
cmVudEdyb3VwMSA9IHBhcmVudElmcmFtZVNjcm9sbEFyZWEucGFyZW50RWxlbWVudCgpOwogCiAg
ICAgICAgIHNob3VsZEJlKCJwYXJlbnRJZnJhbWVXZWJBcmVhLmlzRXF1YWwoaWZyYW1lU2Nyb2xs
QXJlYSkiLCAidHJ1ZSIpOwogICAgICAgICBzaG91bGRCZSgicGFyZW50SWZyYW1lU2Nyb2xsQXJl
YS5pc0VxdWFsKGdyb3VwMSkiLCAidHJ1ZSIpOwogICAgICAgICBzaG91bGRCZSgicGFyZW50R3Jv
dXAxLmlzRXF1YWwod2ViQXJlYSkiLCAidHJ1ZSIpOwotICAgIH0KKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVs
ZW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCA3NDUzZDE3NDY3MDIuLmU3YzM1MjUxNzljZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFj
ZXItZWxlbWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNiBAQAogRmlyc3QgU2Vjb25kIEFw
cGxlIFlhaG9vCiBUZXN0IHBhc3NlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9p
Z25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKaW5kZXggZWRiYzg2YTBmOTg5Li4wOGUwOTA4NmUw
N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1l
bGVtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNl
ci1lbGVtZW50cy5odG1sCkBAIC0xLDM4ICsxLDM5IEBACiA8aHRtbD4KLTxzY3JpcHQ+Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
LTwvc2NyaXB0PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+Ci0gCi0gICAgPCEtLSBU
aGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHNwYWNlciBlbGVtZW50cyBhcmUgbm90IHJldHVybmVk
IGFzIGVsZW1lbnRzLiBUaGVyZSBzaG91bGQgYmUgYXQgbW9zdCA0IGVsZW1lbnRzIHJldHVybmVk
IC0tPgotIAotICAgPGI+Rmlyc3Q8L2I+Ci0gICA8Yj5TZWNvbmQ8L2I+Ci0gICA8YSBocmVmPSJo
dHRwOi8vd3d3LmFwcGxlLmNvbSI+QXBwbGU8L2E+Ci0gICA8YSBocmVmPSJodHRwOi8vd3d3Lnlh
aG9vLmNvbSI+WWFob288L2E+CiAKLSAgICAKLSAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2Pgor
PCEtLSBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHNwYWNlciBlbGVtZW50cyBhcmUgbm90IHJl
dHVybmVkIGFzIGVsZW1lbnRzLiBUaGVyZSBzaG91bGQgYmUgYXQgbW9zdCA0IGVsZW1lbnRzIHJl
dHVybmVkIC0tPgorCis8Yj5GaXJzdDwvYj4KKzxiPlNlY29uZDwvYj4KKzxhIGhyZWY9Imh0dHA6
Ly93d3cuYXBwbGUuY29tIj5BcHBsZTwvYT4KKzxhIGhyZWY9Imh0dHA6Ly93d3cueWFob28uY29t
Ij5ZYWhvbzwvYT4KIAotICAgICAKLSAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCi0gICAgICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAgICAgICAgICBib2R5LmZvY3VzKCk7Ci0gICAg
ICAgICAgICB2YXIgY29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApOworPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2
YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAgYm9keS5mb2N1
cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBjb250YWluZXIg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7
CiAKLSAgICAgICAgICAgIC8vIFRoZSBHdGsgYW5kIEVGTCBwb3J0cyBBVHMgZXhwZWN0IHRoZSBi
b2xkIGlubGluZSB0ZXh0IHRvIG5vdCBoYXZlIGFjY2Vzc2libGUgb2JqZWN0cy4KLSAgICAgICAg
ICAgIHZhciBleHBlY3RlZENvdW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1O
YW1lID09ICJhdGsiID8gMiA6IDQ7Ci0gICAgICAgICAgICBpZiAoY29udGFpbmVyLmNoaWxkcmVu
Q291bnQgPT0gZXhwZWN0ZWRDb3VudCkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gIlRlc3QgcGFzc2VkXG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3QgZmFpbGVkXG4iOwot
ICAgICAgICAgICAgfQorICAgICAgICAvLyBUaGUgTGludXggYmFzZWQgcG9ydHMgQVRzIGV4cGVj
dCB0aGUgYm9sZCBpbmxpbmUgdGV4dCB0byBub3QgaGF2ZSBhY2Nlc3NpYmxlIG9iamVjdHMuCisg
ICAgICAgIHZhciBleHBlY3RlZENvdW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZv
cm1OYW1lID09ICJhdGsiID8gMiA6IDQ7CisgICAgICAgIGlmIChjb250YWluZXIuY2hpbGRyZW5D
b3VudCA9PSBleHBlY3RlZENvdW50KSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ICs9ICJUZXN0IHBhc3NlZFxuIjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
clRleHQgKz0gIlRlc3QgZmFpbGVkXG4iOwogICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+CisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDEu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMS5odG1sCmluZGV4IGRj
NTcwYzNjMWVkNi4uMjYxNWUxYzM1OTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2ltYWdlLW1hcDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lt
YWdlLW1hcDEuaHRtbApAQCAtMSwxMSArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08c2NyaXB0
PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci08L3NjcmlwdD4KIDxib2R5IGlkPSJib2R5Ij4KICAgICAKICAgICA8IS0tIFRlc3Qg
aW1hZ2UgbWFwIC0tPgpAQCAtMjIsMjEgKzE5LDI0IEBACiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KICAgICAgCiA8c2NyaXB0PgotICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0
IHlvdSBjYW4gcmVhY2ggdGhlIGxpbmtzIHdpdGhpbiBhbiBpbWFnZSBtYXAuIik7CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gcmVhY2ggdGhlIGxpbmtzIHdpdGhpbiBhbiBp
bWFnZSBtYXAuIik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5mb2N1cygp
OworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgICAgdmFyIGJvZHkgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBr
IDwgMzsgaysrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBib2R5LmNoaWxkQXRJbmRl
eChrKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiTGluayIgKyAoayArIDEpICsgIiByb2xlOiAi
ICsgbGluay5yb2xlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiTGluayIgKyAoayArIDEpICsg
IiB0aXRsZTogIiArIGxpbmsudGl0bGUpOwotICAgICAgICAgICAgICAgIGRlYnVnKCJMaW5rIiAr
IChrICsgMSkgKyAiIGRlc2NyaXB0aW9uOiAiICsgbGluay5kZXNjcmlwdGlvbiArICJcbiIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgfQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
b2R5IikuZm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
Ym9keSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICBm
b3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgeworICAgICAgICAgICAgdmFyIGxpbmsgPSBib2R5
LmNoaWxkQXRJbmRleChrKTsKKyAgICAgICAgICAgIGRlYnVnKCJMaW5rIiArIChrICsgMSkgKyAi
IHJvbGU6ICIgKyBsaW5rLnJvbGUpOworICAgICAgICAgICAgZGVidWcoIkxpbmsiICsgKGsgKyAx
KSArICIgdGl0bGU6ICIgKyBsaW5rLnRpdGxlKTsKKyAgICAgICAgICAgIGRlYnVnKCJMaW5rIiAr
IChrICsgMSkgKyAiIGRlc2NyaXB0aW9uOiAiICsgbGluay5kZXNjcmlwdGlvbiArICJcbiIpOwor
ICAgICAgICB9CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQogPC9zY3Jp
cHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvaW1hZ2Utd2l0aC1hbHQtYW5kLW1hcC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pbWFnZS13aXRoLWFsdC1hbmQtbWFwLmh0bWwKaW5kZXggYWE1YWYyYzhlYWQ4Li41YjAyOGNk
YTViMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2Utd2l0aC1h
bHQtYW5kLW1hcC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2Utd2l0
aC1hbHQtYW5kLW1hcC5odG1sCkBAIC0xNiw3ICsxNiw4IEBACiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAgIDxpbWcgc3JjPSJteWlt
Zy5wbmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB1c2VtYXA9IiNteW1hcCIgYWx0PSJmb28g
YmFyIGJheiIgLz4KQEAgLTI5LDEyICszMCwxNiBAQAogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhlIGhpZXJhcmNoeSBvZiBhbiBpbWFnZSB3aXRoIGFsdCB0ZXh0IGFuZCBhIG1h
cC4iKTsKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoZSBoaWVyYXJjaHkgb2YgYW4gaW1hZ2Ugd2l0aCBhbHQgdGV4dCBhbmQgYSBt
YXAuIik7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJv
ZHkiKS5mb2N1cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGR1bXBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW4oYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQsIDApOwotICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiA8
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25lZC1lbXB0eS5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pbWctYWx0LWF0dHJpYnV0ZS11bmFzc2lnbmVkLWVtcHR5Lmh0bWwK
aW5kZXggNmFhNzRjNGM2ZDNiLi44MjA1YjVkODc5Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25lZC1lbXB0eS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25l
ZC1lbXB0eS5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiAgICAgPGhlYWQ+Ci0gICAgICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8L2hlYWQ+CiAgICAgPGJvZHkgaWQ9ImJvZHkiPgpAQCAtMjAsMjMgKzIwLDI2IEBACiAg
ICAgICAgICAgICAgICAgJ1RoaXMgdGVzdHMgdGhhdCBpbWcgZWxlbWVudHMgd2l0aCBhbiBhbHQg
YXR0cmlidXRlIGFuZCBubyBhc3NpZ25lZCB2YWx1ZSwgb3IgYW4gZW1wdHkgYWx0IHZhbHVlLCBh
cmUgaWdub3JlZC4nLAogICAgICAgICAgICAgKTsKICAgICAgICAgICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW1hZ2VzJykuZm9jdXMoKTsKLSAgICAgICAgICAgICAgICB2YXIgaW1hZ2VzR3Jv
dXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAg
ICAgICAvLyB0aGVyZSBhcmUgNCBpbWFnZXMsIGJ1dCBvbmUgaGFzIGFuIGFsdCBhdHRyaWJ1dGUg
dGhhdCBpcyB1bmFzc2lnbmVkIGFuZCBhbm90aGVyIGhhcyBhbiBlbXB0eSBhbHQsIHNvIGl0IHNo
b3VsZCBiZQotICAgICAgICAgICAgICAgIC8vIGlnbm9yZWQuIGFzIGEgcmVzdWx0LCB0aGUgaW1h
Z2UgY291bnQgaXMgMi4KLSAgICAgICAgICAgICAgICBzaG91bGRCZSgnaW1hZ2VzR3JvdXAuY2hp
bGRyZW5Db3VudCcsICcyJyk7Ci0gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGFsdCB0ZXh0
IGlzIGJlaW5nIHJlYWQgYmVmb3JlIGFuZCBhZnRlcgotICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygKLSAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVmFsdWVGb3JXM0NO
YW1lKGltYWdlc0dyb3VwLmNoaWxkQXRJbmRleCgwKSknLAotICAgICAgICAgICAgICAgICAgICAn
Y2FrZTAnLAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WYWx1ZUZvclczQ05hbWUo
aW1hZ2VzR3JvdXAuY2hpbGRBdEluZGV4KDEpKScsCi0gICAgICAgICAgICAgICAgICAgICdjYWtl
MicsCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgICAgICAgICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImltYWdlcyIpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IHRoZXJlIGFyZSA0IGltYWdlcywgYnV0IG9uZSBoYXMgYW4gYWx0IGF0dHJpYnV0ZSB0aGF0IGlz
IHVuYXNzaWduZWQgYW5kIGFub3RoZXIgaGFzIGFuIGVtcHR5IGFsdCwgc28gaXQgc2hvdWxkIGJl
CisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZWQuIGFzIGEgcmVzdWx0LCB0aGUgaW1hZ2Ug
Y291bnQgaXMgMi4KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2ltYWdlc0dyb3VwLmNo
aWxkcmVuQ291bnQnLCAnMicpOworICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgYWx0
IHRleHQgaXMgYmVpbmcgcmVhZCBiZWZvcmUgYW5kIGFmdGVyCisgICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9y
bVZhbHVlRm9yVzNDTmFtZShpbWFnZXNHcm91cC5jaGlsZEF0SW5kZXgoMCkpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdjYWtlMCcsCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdwbGF0Zm9ybVZhbHVlRm9yVzNDTmFtZShpbWFnZXNHcm91cC5jaGlsZEF0SW5kZXgoMSkp
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdjYWtlMicsCisgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAg
IH0sIDApOwogICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KIAotICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiAgICAgPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWct
YWx0LXRhZy1vbmx5LXdoaXRlc3BhY2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNlLmh0bWwKaW5kZXggNzg5MTA2MTlhYzVjLi43MDEx
NDJkY2ZlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC10
YWctb25seS13aGl0ZXNwYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9p
bWctYWx0LXRhZy1vbmx5LXdoaXRlc3BhY2UuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5IGlkPSJib2R5Ij4KQEAgLTE3LDE4ICsxNywyMCBAQAogCiA8c2NyaXB0PgogCi0gICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBpbWFnZXMgd2l0aCBhbHQgdGFncyB0aGF0IG9u
bHkgaGF2ZSB3aGl0ZSBzcGFjZSBhcmUgaWdub3JlZC4iKTsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgaW1hZ2VzIHdpdGggYWx0IHRhZ3MgdGhhdCBvbmx5IGhhdmUgd2hpdGUgc3BhY2Ug
YXJlIGlnbm9yZWQuIik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJp
bWFnZXMiKS5mb2N1cygpOwotICAgICAgICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImltYWdlcyIpOworICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCJpbWFnZXNHcm91cC5jaGls
ZHJlbkNvdW50IiwgIjEiKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwbGF0Zm9y
bVZhbHVlRm9yVzNDTmFtZShpbWFnZXNHcm91cC5jaGlsZEF0SW5kZXgoMCkpIiwgIiAgIEltYWdl
ICIpOwotICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwv
c2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2ltZy1hcmlhLWJ1dHRvbi1hbHQtdGFnLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2ltZy1hcmlhLWJ1dHRvbi1hbHQtdGFnLmh0bWwKaW5kZXggNGFkM2E1NWM4MmVjLi4w
NDQzODI1Y2Q2YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1nLWFy
aWEtYnV0dG9uLWFsdC10YWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lt
Zy1hcmlhLWJ1dHRvbi1hbHQtdGFnLmh0bWwKQEAgLTEsMzEgKzEsMjggQEAKIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGltZyBpZD0naW1hZ2UnIHNyYz0icmVzb3VyY2Vz
L2Nha2UucG5nIiByb2xlPSJidXR0b24iIGFsdD0iYWx0ZXJuYXRlIiB0aXRsZT0idGl0bGUiPgor
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCiA8
c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGlt
ZyBhY3RpbmcgYXMgYW4gYXJpYSBidXR0b24gc3RpbGwgcmV0dXJucyBpdHMgYWx0IHRhZyBhcyB0
aGUgYWNjZXNzaWJsZSBuYW1lIik7CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgaW1nVUlF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJp
bWFnZSIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoaW1nVUlFbGVtZW50KSIsICJhbHRl
cm5hdGUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiA8L3Njcmlw
dD4KLTxib2R5IGlkPSJib2R5Ij4KLSAKLSAgICA8aW1nIGlkPSdpbWFnZScgc3JjPSJyZXNvdXJj
ZXMvY2FrZS5wbmciIHJvbGU9ImJ1dHRvbiIgYWx0PSJhbHRlcm5hdGUiIHRpdGxlPSJ0aXRsZSI+
Ci0gICAgCi0gICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci0gICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci0gICAgIAotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgaW1nIGFjdGluZyBhcyBhbiBhcmlhIGJ1dHRvbiBzdGls
bCByZXR1cm5zIGl0cyBhbHQgdGFnIGFzIHRoZSBhY2Nlc3NpYmxlIG5hbWUiKTsKLSAKLSAgICAg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKIAotICAgICAgICAg
ICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Ci0g
ICAgICAgICAgICB2YXIgaW1nVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoaW1nVUlFbGVt
ZW50KSIsICJhbHRlcm5hdGUiKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotICAgIAotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWctZmFs
bHNiYWNrLXRvLXRpdGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltZy1mYWxs
c2JhY2stdG8tdGl0bGUuaHRtbAppbmRleCBmMzEzOGM1MDQyZjEuLjhmNjk1NTRhMDc0YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWctZmFsbHNiYWNrLXRvLXRpdGxl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWctZmFsbHNiYWNrLXRvLXRp
dGxlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmls
aXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CkBAIC0x
OSwxMyArMTksMTMgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgaW1hZ2VzIHdpbGwgZmFsbGJhY2sgdG8gdXNpbmcgdGhlIHRpdGxlIGF0dHJpYnV0ZSBp
ZiBubyBvdGhlciBkZXNjcmlwdGl2ZSB0ZXh0IGlzIHByZXNlbnQuIik7CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGltYWdlcyB3aWxsIGZhbGxiYWNrIHRvIHVzaW5nIHRoZSB0aXRsZSBh
dHRyaWJ1dGUgaWYgbm8gb3RoZXIgZGVzY3JpcHRpdmUgdGV4dCBpcyBwcmVzZW50LiIpOwogCi0g
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotCi0gICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZXMiKS5mb2N1cygpOwotICAgICAgICB2YXIgaW1hZ2Vz
R3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKK2lmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CiAKKyAgICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImltYWdlcyIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CiAgICAgICAgIC8vIEZpcnN0IGltYWdlIHNob3VsZCBoYXZlIGEgZGVzY3JpcHRpb24gb2Yg
InRlc3QxIiBiZWNhdXNlIHRoZXJlIGlzIG5vIGFsdCB0YWcgKGl0IHNob3VsZCB1c2UgdGhlIHRp
dGxlKS4KICAgICAgICAgLy8gVGhlIHRpdGxlIHNob3VsZCBOT1QgYmUgaW4gdGhlIGhlbHAgdGV4
dC4KICAgICAgICAgdmFyIGltYWdlMSA9IGltYWdlc0dyb3VwLmNoaWxkQXRJbmRleCgwKS5jaGls
ZEF0SW5kZXgoMCk7CkBAIC01MSw3ICs1MSw5IEBACiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRo
ZSBmaXJzdCBpbWFnZSAod2l0aCBhbiBlbXB0eSBhbHQgdGFnKSBpcyBpZ25vcmVkCiAgICAgICAg
IC8vIGJ5IGNoZWNraW5nIHRoZSBjaGlsZHJlbiBjb3VudCBvZiB0aGUgZ3JvdXAgY29udGFpbmlu
ZyB0aGUgbmF0aXZlIGltYWdlcyA9PSAyLgogICAgICAgICBzaG91bGRCZSgiaW1hZ2VzR3JvdXAu
Y2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQiLCAiMiIpOwotICAgIH0KKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lucHV0LWltYWdlLWFsdC5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pbnB1dC1pbWFnZS1hbHQuaHRtbAppbmRleCBjNmMxOWUyMDU4YTEu
LmJkNmEwZjJlMDNkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbnB1
dC1pbWFnZS1hbHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lucHV0LWlt
YWdlLWFsdC5odG1sCkBAIC0xLDI3ICsxLDI4IEBACiA8aHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5IGlkPSJib2R5Ij4KIAotICAgIDxpbnB1dCB0eXBlPSJpbWFnZSIgYWx0PSJTdWJtaXQi
IHNyYz0icmVzb3VyY2VzL2Nha2UucG5nIiB3aWR0aD0xMDAgaGVpZ2h0PTEwMCBpZD0iaW1hZ2Ux
Ij4KLSAgICAKLSAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLSAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLSAgICAgCi0gICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBtYWtlcyBzdXJlIHRoYXQgYW4gaW5wdXQgaW1hZ2UgcmV0dXJucyBpdHMgYWx0IHRhZyBhcyB0
aGUgYWNjZXNzaWJsZSBuYW1lIik7Cis8aW5wdXQgdHlwZT0iaW1hZ2UiIGFsdD0iU3VibWl0IiBz
cmM9InJlc291cmNlcy9jYWtlLnBuZyIgd2lkdGg9MTAwIGhlaWdodD0xMDAgaWQ9ImltYWdlMSI+
CiAKLSAgICAgICAgICAgIHZhciBpbWFnZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1h
Z2UxIikuZm9jdXMoKTsKLSAgICAgICAgICAgIHZhciBpbWcgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
cGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoaW1nKSIsICJTdWJtaXQiKTsKLSAgICAgICAgfQotICAg
IDwvc2NyaXB0PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLTwvYm9keT4gCisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYW4gaW5wdXQgaW1hZ2UgcmV0dXJucyBpdHMg
YWx0IHRhZyBhcyB0aGUgYWNjZXNzaWJsZSBuYW1lIik7CisgICAgdmFyIGltZyA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiaW1hZ2UxIik7CisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwbGF0
Zm9ybVZhbHVlRm9yVzNDTmFtZShpbWcpIiwgIlN1Ym1pdCIpOworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorCis8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xhYmVsLWVsZW1lbnQtcHJlc3MuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGFiZWwtZWxlbWVudC1wcmVzcy5odG1sCmlu
ZGV4IGI2ZGEwN2Q3ZDU5OS4uMTcyYTU4MWEyNDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2xhYmVsLWVsZW1lbnQtcHJlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2xhYmVsLWVsZW1lbnQtcHJlc3MuaHRtbApAQCAtMTcsMTIgKzE3LDEyIEBA
CiAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iiku
Zm9jdXMoKTsKLSAgICAgICAgdmFyIGJvZHkgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKLSAgICAgICAgdmFyIGxhYmVsID0gYm9keS5jaGlsZEF0SW5kZXgoMCkuY2hp
bGRBdEluZGV4KDApOwotICAgIAotICAgICAgICAvLyBpZiBzdWNjZXNzZnVsLCBwZXJmb3JtRXZl
bnQoKSB3aWxsIGJlIGNhbGxlZCBhbmQgd2UnbGwgc3VjY2Vzc2Z1bGx5IHBhcnNlLiAgICAgICAg
Ci0gICAgICAgIGxhYmVsLnByZXNzKCk7CisgICAgICAgIHZhciBsYWJlbCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibGFiZWxFbGVtZW50Iik7CisKKyAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIGlmIHN1Y2Nlc3Nm
dWwsIHBlcmZvcm1FdmVudCgpIHdpbGwgYmUgY2FsbGVkIGFuZCB3ZSdsbCBzdWNjZXNzZnVsbHkg
cGFyc2UuCisgICAgICAgICAgICBsYWJlbC5wcmVzcygpOworICAgICAgICB9LCAwKTsKICAgICB9
CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9sYW5n
dWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9s
YW5ndWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CmluZGV4IDA3MjAxYzZhMzVlYy4uZjZkYWFk
ZTJhMmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xhbmd1YWdlLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9sYW5n
dWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CkBAIC01LDMgKzUsNyBAQCBlbHZpc2gKIAogYW5k
IG1vcmUgZW5nbGlzaAogUGFzc2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9s
YW5ndWFnZS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGFuZ3Vh
Z2UtYXR0cmlidXRlLmh0bWwKaW5kZXggNTZmZDM2MTNhOGJkLi44NDYyZWJhOThlZTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGFuZ3VhZ2UtYXR0cmlidXRlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUuaHRtbApA
QCAtMSwxMCArMSw3IEBACiA8aHRtbD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQogICAgIC8vIFRoZSBNYWMg
cG9ydCBleHBvc2VzIHN0YXRpYyB0ZXh0IG9iamVjdHMgYXMgYW4gYWNjZXNzaWJsZSBjaGlsZCBv
ZiBhbiBlbGVtZW50IHdpdGggdGV4dC4KLSAgICAvLyBUaGUgQXRrIHBvcnQgZm9sZHMgc3RhdGlj
IHRleHQgb2JqZWN0cyBpbnRvIHRoZSBwYXJlbnQgZWxlbWVudC4KKyAgICAvLyBUaGUgTGludXgg
YmFzZWQgcG9ydHMgZm9sZCBzdGF0aWMgdGV4dCBvYmplY3RzIGludG8gdGhlIHBhcmVudCBlbGVt
ZW50LgogICAgIGZ1bmN0aW9uIGdldFRleHRDaGlsZChhY2Nlc3NpYmlsaXR5T2JqZWN0KSB7CiAg
ICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0LmNoaWxkcmVuQ291bnQpCiAgICAgICAgICAg
ICByZXR1cm4gYWNjZXNzaWJpbGl0eU9iamVjdC5jaGlsZEF0SW5kZXgoMCk7CkBAIC0xMyw0MSAr
MTAsNDUgQEAKICAgICB9CiA8L3NjcmlwdD4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iY29u
dGVudC1sYW5ndWFnZSIgY29udGVudD0iZW4tZ2IiPiAKKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRl
bnQtbGFuZ3VhZ2UiIGNvbnRlbnQ9ImVuLWdiIj4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2li
aWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxib2R5IGlkPSJib2R5Ij4KIAotICAgIDwhLS0g
VGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgdGhlIGNvbnRlbnQgbGFuZ3VhZ2UgZm9yIHZh
cmlvdXMgZWxlbWVudHMgdXNpbmcgdmFyaW91cyB0ZWNobmlxdWVzIC0tPgotCi0gICAgY2hlZXJp
bwotICAgIAotICAgIDxwIGxhbmc9ImRlIj5nZXJtYW5uaXNoPC9wPgotICAgIDxwIGxhbmc9Imph
Ij5lbHZpc2g8L3A+Ci0KLSAgICBhbmQgbW9yZSBlbmdsaXNoCi0KLSAgICA8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgotICAgIAotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJvZHkiKTsKLSAgICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLSAgICAgICAg
ICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7
Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpOwotCi0gICAgICAgICAgICB2YXIgdGV4dDEgPSBnZXRUZXh0Q2hpbGQod2ViQXJlYS5jaGls
ZEF0SW5kZXgoMCkpOwotICAgICAgICAgICAgdmFyIHRleHQyID0gZ2V0VGV4dENoaWxkKHdlYkFy
ZWEuY2hpbGRBdEluZGV4KDEpKTsKLSAgICAgICAgICAgIHZhciB0ZXh0MyA9IGdldFRleHRDaGls
ZCh3ZWJBcmVhLmNoaWxkQXRJbmRleCgyKSk7Ci0gICAgICAgICAgICB2YXIgdGV4dDQgPSBnZXRU
ZXh0Q2hpbGQod2ViQXJlYS5jaGlsZEF0SW5kZXgoMykpOwotCi0gICAgICAgICAgICBpZiAoIHdl
YkFyZWEubGFuZ3VhZ2UgPT0gIkFYTGFuZ3VhZ2U6IGVuLWdiIiAmJiB0ZXh0MS5sYW5ndWFnZSA9
PSAiQVhMYW5ndWFnZTogZW4tZ2IiICYmIAotICAgICAgICAgICAgICAgICB0ZXh0Mi5sYW5ndWFn
ZSA9PSAiQVhMYW5ndWFnZTogZGUiICYmIHRleHQzLmxhbmd1YWdlID09ICJBWExhbmd1YWdlOiBq
YSIgJiYgCi0gICAgICAgICAgICAgICAgIHRleHQ0Lmxhbmd1YWdlID09ICJBWExhbmd1YWdlOiBl
bi1nYiIpIHsKLSAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSAiUGFzc2VkIjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAgICAgICAgIHJlc3VsdC5p
bm5lclRleHQgPSAiRmFpbGVkLiBDb3VsZCBub3QgZmluZCBBWExhbmd1YWdlczogIiArIHdlYkFy
ZWEubGFuZ3VhZ2UgKyAiIC0gIiArIHRleHQxLmxhbmd1YWdlOwotICAgICAgICAgICAgfQorPCEt
LSBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCB0aGUgY29udGVudCBsYW5ndWFnZSBmb3Ig
dmFyaW91cyBlbGVtZW50cyB1c2luZyB2YXJpb3VzIHRlY2huaXF1ZXMgLS0+CisKK2NoZWVyaW8K
KworPHAgbGFuZz0iZGUiPmdlcm1hbm5pc2g8L3A+Cis8cCBsYW5nPSJqYSI+ZWx2aXNoPC9wPgor
CithbmQgbW9yZSBlbmdsaXNoCisKKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgYm9k
eSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAgYm9keS5mb2N1cygpOwor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgdmFyIHRleHQxID0g
Z2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDApKTsKKyAgICAgICAgdmFyIHRleHQy
ID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpKTsKKyAgICAgICAgdmFyIHRl
eHQzID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDIpKTsKKyAgICAgICAgdmFy
IHRleHQ0ID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDMpKTsKKworICAgICAg
ICBpZiAod2ViQXJlYS5sYW5ndWFnZSA9PSAiQVhMYW5ndWFnZTogZW4tZ2IiICYmIHRleHQxLmxh
bmd1YWdlID09ICJBWExhbmd1YWdlOiBlbi1nYiIgJiYgdGV4dDIubGFuZ3VhZ2UgPT0gIkFYTGFu
Z3VhZ2U6IGRlIiAmJiB0ZXh0My5sYW5ndWFnZSA9PSAiQVhMYW5ndWFnZTogamEiICYmIHRleHQ0
Lmxhbmd1YWdlID09ICJBWExhbmd1YWdlOiBlbi1nYiIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAiUGFzc2VkIjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5p
bm5lclRleHQgPSAiRmFpbGVkLiBDb3VsZCBub3QgZmluZCBBWExhbmd1YWdlczogIiArIHdlYkFy
ZWEubGFuZ3VhZ2UgKyAiIC0gIiArIHRleHQxLmxhbmd1YWdlOwogICAgICAgICB9Ci0gICAgPC9z
Y3JpcHQ+CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2xpc3Rib3gtZW5hYmxlZC1zdGF0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bGlzdGJveC1lbmFibGVkLXN0YXRlcy5odG1sCmluZGV4IGQxZTAxOGVhMWRlZC4uOGYwODJiMDVj
MGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Rib3gtZW5hYmxl
ZC1zdGF0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Rib3gtZW5h
YmxlZC1zdGF0ZXMuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiAK
IDxib2R5IGlkPSJib2R5Ij4KQEAgLTIwLDIyICsyMSwyMyBAQAogPHAgaWQ9ImNvbnNvbGUiPjwv
cD4KIAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJu
b3REUlQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0g
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RFbGVtZW50IikuZm9jdXMoKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm90RFJUIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOwogCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdEVsZW1lbnQi
KS5mb2N1cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJl
VHJ1ZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuaXNFbmFibGVkJyk7
CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQuY2hpbGRBdEluZGV4KDApLmlzRW5hYmxlZCcpOwogICAgICAgICBzaG91bGRCZVRydWUo
J2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxKS5p
c0VuYWJsZWQnKTsKICAgICAgICAgc2hvdWxkQmVGYWxzZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpLmlzRW5hYmxlZCcpOwogICAgICAgICBz
aG91bGRCZUZhbHNlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGls
ZEF0SW5kZXgoMykuaXNFbmFibGVkJyk7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgnYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDQpLmlzRW5hYmxlZCcp
OwotICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiA8L3Njcmlw
dD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9saXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0cy5odG1sCmluZGV4
IDFjODk1MWQzZDY1Yy4uZjQ3NDcwZTAzOWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2xpc3RzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0
cy5odG1sCkBAIC0xLDkgKzEsOSBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KLTxzY3JpcHQ+
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLTwvc2NyaXB0PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAgICAgCiAg
ICAgPHVsPgpAQCAtMjYsMjcgKzI2LDM0IEBACiAgICAgPC9kbD4KIAogICAgIDxCUj48QlI+PEJS
PjxCUj4KLSAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PiAgICAKKyAgICA8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgoraWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKIAotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIGJvZHlFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAgICBib2R5RWxlbWVudC5mb2N1cygpOwogCi0gICAgICAg
ICAgICB2YXIgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOwot
ICAgICAgICAgICAgYm9keUVsZW1lbnQuZm9jdXMoKTsKLSAgICAgICAgICAgIGJvZHkgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5p
bm5lclRleHQgKz0gYm9keS5hdHRyaWJ1dGVzT2ZDaGlsZHJlbigpICsgIlxuXG4iOyAKKyAgICBz
ZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwogCi0gICAgICAgICAgICB2YXIgb2xMaXN0ID0g
Ym9keS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IG9s
TGlzdC5hdHRyaWJ1dGVzT2ZDaGlsZHJlbigpICsgIlxuXG4iOyAKKyAgICAgICAgdmFyIGJvZHkg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSBib2R5LmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkgKyAiXG5cbiI7CiAKLSAg
ICAgICAgICAgIHZhciB1bExpc3QgPSBib2R5LmNoaWxkQXRJbmRleCgxKTsKLSAgICAgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gdWxMaXN0LmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkgKyAiXG5c
biI7IAorICAgICAgICB2YXIgb2xMaXN0ID0gYm9keS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gb2xMaXN0LmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkgKyAiXG5c
biI7CiAKLSAgICAgICAgICAgIHZhciBkbExpc3QgPSBib2R5LmNoaWxkQXRJbmRleCgyKTsKLSAg
ICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gZGxMaXN0LmF0dHJpYnV0ZXNPZkNoaWxkcmVu
KCkgKyAiXG5cbiI7IAotICAgICAgICAgICAgCi0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KKyAg
ICAgICAgdmFyIHVsTGlzdCA9IGJvZHkuY2hpbGRBdEluZGV4KDEpOworICAgICAgICByZXN1bHQu
aW5uZXJUZXh0ICs9IHVsTGlzdC5hdHRyaWJ1dGVzT2ZDaGlsZHJlbigpICsgIlxuXG4iOworCisg
ICAgICAgIHZhciBkbExpc3QgPSBib2R5LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSBkbExpc3QuYXR0cmlidXRlc09mQ2hpbGRyZW4oKSArICJcblxuIjsKKwor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tZW51LWxp
c3QtY3Jhc2gyLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21lbnUtbGlzdC1jcmFz
aDIuaHRtbAppbmRleCAwYTRjYjBmMjE2ZmMuLjQwZDhmMjRiOGM3NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tZW51LWxpc3QtY3Jhc2gyLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tZW51LWxpc3QtY3Jhc2gyLmh0bWwKQEAgLTEsNiArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIApAQCAtMjEsMjggKzIyLDMxIEBAIFRFU1QKIAog
PHNjcmlwdD4KIAotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IHRoZXJlJ3Mgbm8gY3Jhc2ggaWYgd2UgaGlkZSBtZW51IGxpc3QgYW5kIHRoZW4g
dHJ5IHRvIGFjY2VzcyBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uLiIpOworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCB0aGVyZSdzIG5vIGNyYXNoIGlmIHdlIGhpZGUgbWVudSBsaXN0IGFu
ZCB0aGVuIHRyeSB0byBhY2Nlc3MgYWNjZXNzaWJpbGl0eSBpbmZvcm1hdGlvbi4iKTsKIAotICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgdmFyIG1lbnVs
aXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lbnVsaXN0Iik7Ci0gICAgICAgIG1lbnVs
aXN0LmZvY3VzKCk7Ci0gICAgICAgIG1lbnVsaXN0LnNlbGVjdGVkSW5kZXggPSAxOworaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKIAotICAgICAgICB2YXIgYWNjZXNzaWJsZU1lbnVsaXN0ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgdmFyIG1lbnVsaXN0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm1lbnVsaXN0Iik7CisgICAgbWVudWxpc3QuZm9jdXMoKTsKKyAgICBt
ZW51bGlzdC5zZWxlY3RlZEluZGV4ID0gMTsKKworICAgIHZhciBhY2Nlc3NpYmxlTWVudWxpc3Qg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1lbnVsaXN0
Iik7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgZGVidWcoIlJvbGUgYmVm
b3JlIHJlbW92YWw6ICIgKyBhY2Nlc3NpYmxlTWVudWxpc3Qucm9sZSk7CiAKICAgICAgICAgbWVu
dWxpc3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgZ2MoKTsKIAotICAgICAgICAv
LyBEb24ndCBjcmFzaCEKLSAgICAgICAgZGVidWcoIlJvbGUgYWZ0ZXIgcmVtb3ZhbDogIiArIGFj
Y2Vzc2libGVNZW51bGlzdC5yb2xlKTsKLSAgICB9CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAvLyBEb24ndCBjcmFzaCEKKyAgICAgICAgICAgIGRlYnVnKCJS
b2xlIGFmdGVyIHJlbW92YWw6ICIgKyBhY2Nlc3NpYmxlTWVudWxpc3Qucm9sZSk7CisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfSwgMCk7CiB9CiAKLXJ1
blRlc3QoKTsKIDwvc2NyaXB0PgogCiA8L2JvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxlbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub2NoaWxkcmVuLWVsZW1lbnRzLWV4cGVjdGVkLnR4dApp
bmRleCA3YzY3ZDEzNjE5NGUuLjRhMDZlYjk4M2VlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9ub2NoaWxkcmVuLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxlbWVudHMtZXhwZWN0ZWQudHh0CkBA
IC0xLDMgKzEsNyBAQAogCiBpbnNpZGUKIFBBU1MKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L25vY2hpbGRyZW4tZWxlbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbm9jaGlsZHJlbi1lbGVtZW50cy5odG1sCmluZGV4IDdkNGM2Mjg0ZDNhYi4uOGUwOGQyOWJj
ZDg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxl
bWVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxl
bWVudHMuaHRtbApAQCAtMSw0NSArMSw0OCBAQAogPGh0bWw+Ci08c2NyaXB0PgotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci08L3Nj
cmlwdD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgogPGJvZHkgaWQ9J2JvZHknPgotICAgIAotICAgIAotICAgIDwh
LS0gVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0aGVzZSB0eXBlcyBvZiBlbGVtZW50cyBETyBO
T1QgaGF2ZSBjaGlsZHJlbi4gCi0gICAgICAgICBUaGUgdGVzdCB3aWxsIHBhc3MgaWYgYXR0cmli
dXRlc09mQ2hpbGRyZW4oKSByZXR1cm5zIG5pbCAtLT4KIAotICAgIDxpbnB1dCB0eXBlPSJmaWxl
Ij4KLSAgICA8ZGl2IHJvbGU9ImJ1dHRvbiI+PGI+PGk+aW5zaWRlPC9pPjwvYj48L2Rpdj4KIAot
ICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8IS0tIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
YXQgdGhlc2UgdHlwZXMgb2YgZWxlbWVudHMgRE8gTk9UIGhhdmUgY2hpbGRyZW4uCisgICAgIFRo
ZSB0ZXN0IHdpbGwgcGFzcyBpZiBhdHRyaWJ1dGVzT2ZDaGlsZHJlbigpIHJldHVybnMgbmlsIC0t
PgogCi0gICAgIAotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0Iik7Cis8aW5wdXQgdHlwZT0iZmlsZSI+Cis8ZGl2IHJvbGU9ImJ1dHRv
biI+PGI+PGk+aW5zaWRlPC9pPjwvYj48L2Rpdj4KIAotICAgICAgICAgICAgLy8gcmFkaW8gYnV0
dG9uIDEKLSAgICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJv
ZHkiKTsKLSAgICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLSAgICAgICAgICAgIHZhciBmb2N1c2Vk
RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworPGRpdiBp
ZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgICAgLy8gdGhpcyBpbnB1dD1maWxlIGlzIGluc2lk
ZSBvZiBhIGdyb3VwLCBzbyB3ZSBuZWVkIHRvIGdvIHR3byBsZXZlbHMKLSAgICAgICAgICAgIHZh
ciBlbGVtZW50MSA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICAg
IGVsZW1lbnQxID0gZWxlbWVudDEuY2hpbGRBdEluZGV4KDApOworICAgIC8vIHJhZGlvIGJ1dHRv
biAxCisgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAg
IGJvZHkuZm9jdXMoKTsKIAotICAgICAgICAgICAgdmFyIGVsZW1lbnQyID0gZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDEpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBmb2N1c2VkRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OwogCi0gICAgICAgICAgICB2YXIgZWxlbWVudDFDaGlsZHJlbiA9IGVsZW1lbnQxLmF0dHJp
YnV0ZXNPZkNoaWxkcmVuKCk7Ci0gICAgICAgICAgICB2YXIgZWxlbWVudDJDaGlsZHJlbiA9IGVs
ZW1lbnQyLmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CisgICAgICAgIC8vIHRoaXMgaW5wdXQ9Zmls
ZSBpcyBpbnNpZGUgb2YgYSBncm91cCwgc28gd2UgbmVlZCB0byBnbyB0d28gbGV2ZWxzCisgICAg
ICAgIHZhciBlbGVtZW50MSA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAg
ICAgZWxlbWVudDEgPSBlbGVtZW50MS5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgICAgIGlm
IChlbGVtZW50MUNoaWxkcmVuICE9ICIiIHx8IGVsZW1lbnQyQ2hpbGRyZW4gIT0gIiIpIHsKLSAg
ICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIkZBSUxcbiIgKyBlbGVtZW50MUNoaWxk
cmVuICsgIlxuIiArIGVsZW1lbnQyQ2hpbGRyZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlBBU1MiOwotICAg
ICAgICAgICB9ICAgICAgICAgICAKKyAgICAgICAgdmFyIGVsZW1lbnQyID0gZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDEpOworCisgICAgICAgIHZhciBlbGVtZW50MUNoaWxkcmVuID0gZWxl
bWVudDEuYXR0cmlidXRlc09mQ2hpbGRyZW4oKTsKKyAgICAgICAgdmFyIGVsZW1lbnQyQ2hpbGRy
ZW4gPSBlbGVtZW50Mi5hdHRyaWJ1dGVzT2ZDaGlsZHJlbigpOworCisgICAgICAgIGlmIChlbGVt
ZW50MUNoaWxkcmVuICE9ICIiIHx8IGVsZW1lbnQyQ2hpbGRyZW4gIT0gIiIpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgKz0gIkZBSUxc
biIgKyBlbGVtZW50MUNoaWxkcmVuICsgIlxuIiArIGVsZW1lbnQyQ2hpbGRyZW47CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJUZXh0ICs9ICJQQVNTIjsKICAgICAgICAgfQotICAgIDwvc2NyaXB0PgorICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tbmF0aXZlLWltYWdl
LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vbi1uYXRpdmUtaW1hZ2Ut
Y3Jhc2guaHRtbAppbmRleCA4YmE4MzVmMDA1ZWQuLmJhZDRmZmE4OGU0ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tbmF0aXZlLWltYWdlLWNyYXNoLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24tbmF0aXZlLWltYWdlLWNyYXNoLmh0bWwK
QEAgLTEsMTEgKzEsMTIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIAotPGRpdiByb2xl
PSJpbWciIGFyaWEtbGFiZWw9IkFTQ0lJIGFydCBvZiBhIGhlbGljb3B0ZXIiIHRpdGxlPSJJbmNv
cnJlY3QgdGV4dCBlcXVpdmFsZW50LiBXaGVuIGF2YWlsYWJsZSwgbm9kZSBzaG91bGQgdXNlIGFy
aWEtbGFiZWwgaW5zdGVhZCBvZiB0aXRsZS4iPgorPGRpdiBpZD0iaW1hZ2UiIHJvbGU9ImltZyIg
YXJpYS1sYWJlbD0iQVNDSUkgYXJ0IG9mIGEgaGVsaWNvcHRlciIgdGl0bGU9IkluY29ycmVjdCB0
ZXh0IGVxdWl2YWxlbnQuIFdoZW4gYXZhaWxhYmxlLCBub2RlIHNob3VsZCB1c2UgYXJpYS1sYWJl
bCBpbnN0ZWFkIG9mIHRpdGxlLiI+CiAgICAgIDxkaXYgY2xhc3M9ImFzY2lpIj4KICAgPT09PT09
PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgX19fXVtfX19fXwpAQCAtMjIsMjAgKzIzLDIw
IEBACiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm9u
IG5hdGl2ZSBpbWFnZSAob25lIGNyZWF0ZWQgdGhyb3VnaCBBUklBKSBkb2VzIG5vdCBjYXVzZSBh
biBhc3NlcnQuIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoIGluIGRlYnVnIGJ1aWxk
cyIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIG5vbiBuYXRpdmUgaW1hZ2UgKG9u
ZSBjcmVhdGVkIHRocm91Z2ggQVJJQSkgZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0LiBUZXN0IHBh
c3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBpbiBkZWJ1ZyBidWlsZHMiKTsKIAotICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAg
ICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAgICAg
ICAgYm9keS5mb2N1cygpOwotICAgICAgICAgIHZhciBpbWFnZSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICB2YXIgdyA9
IGltYWdlLndpZHRoOwotICAgICAgICAgIHZhciBoID0gaW1hZ2UuaGVpZ2h0OwotICAgICAgICAg
IAotICAgIH0KKyAgICB2YXIgaW1hZ2UgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImltYWdlIik7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHcgPSBpbWFnZS53aWR0aDsKKyAgICAgICAgdmFyIGggPSBpbWFnZS5oZWlnaHQ7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3NjcmlwdD4KIAot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJh
Z3JhcGgtd2l0aC1saW5lYnJlYWtzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Bh
cmFncmFwaC13aXRoLWxpbmVicmVha3MuaHRtbAppbmRleCA2YWI3MWY2ODY2MGYuLjk5NTIwYzhi
NmE4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJhZ3JhcGgtd2l0
aC1saW5lYnJlYWtzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJhZ3Jh
cGgtd2l0aC1saW5lYnJlYWtzLmh0bWwKQEAgLTIxLDIyICsyMSwyNCBAQAogCiBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmVicmVha3MgZXhwbGljaXRseSBzZXQgYnkgdGhl
IGF1dGhvciBhcmUgcHJvcGVybHkgZXhwb3NlZCB0byBBVHMuIik7CiAKLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CitpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwogCiAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOwotICAgIHZhciB3ZWJBcmVh
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICB2YXIgYnJv
a2VuUGFyYWdyYXBoID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgZGVidWcoIlJvbGUg
b2YgdGhlIHBhcmFncmFwaCB3aXRoIGJyZWFrIGxpbmVzOiAiICsgYnJva2VuUGFyYWdyYXBoLnJv
bGUpOwotICAgIGRlYnVnKCJWYWx1ZSBvZiB0aGUgcGFyYWdyYXBoIHdpdGggYnJlYWsgbGluZXM6
ICIgKyBicm9rZW5QYXJhZ3JhcGguc3RyaW5nVmFsdWUpOwotICAgIGRlYnVnKCI8YnI+Iik7Ci0K
LSAgICB2YXIgd3JhcHBlZFBhcmFncmFwaCA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpOwotICAg
IGRlYnVnKCJSb2xlIG9mIHRoZSBwYXJhZ3JhcGggd2l0aCB3cmFwcGVkIGxpbmVzOiAiICsgd3Jh
cHBlZFBhcmFncmFwaC5yb2xlKTsKLSAgICBkZWJ1ZygiVmFsdWUgb2YgdGhlIHBhcmFncmFwaCB3
aXRoIHdyYXBwZWQgbGluZXM6ICIgKyB3cmFwcGVkUGFyYWdyYXBoLnN0cmluZ1ZhbHVlKTsKLSAg
ICBkZWJ1ZygiPGJyPiIpOwotICB9CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KworICAgICAgICB2YXIgYnJva2VuUGFyYWdyYXBoID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7
CisgICAgICAgIGRlYnVnKCJSb2xlIG9mIHRoZSBwYXJhZ3JhcGggd2l0aCBicmVhayBsaW5lczog
IiArIGJyb2tlblBhcmFncmFwaC5yb2xlKTsKKyAgICAgICAgZGVidWcoIlZhbHVlIG9mIHRoZSBw
YXJhZ3JhcGggd2l0aCBicmVhayBsaW5lczogIiArIGJyb2tlblBhcmFncmFwaC5zdHJpbmdWYWx1
ZSk7CisgICAgICAgIGRlYnVnKCI8YnI+Iik7CisKKyAgICAgICAgdmFyIHdyYXBwZWRQYXJhZ3Jh
cGggPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgxKTsKKyAgICAgICAgZGVidWcoIlJvbGUgb2YgdGhl
IHBhcmFncmFwaCB3aXRoIHdyYXBwZWQgbGluZXM6ICIgKyB3cmFwcGVkUGFyYWdyYXBoLnJvbGUp
OworICAgICAgICBkZWJ1ZygiVmFsdWUgb2YgdGhlIHBhcmFncmFwaCB3aXRoIHdyYXBwZWQgbGlu
ZXM6ICIgKyB3cmFwcGVkUGFyYWdyYXBoLnN0cmluZ1ZhbHVlKTsKKyAgICAgICAgZGVidWcoIjxi
cj4iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7CiB9CiA8L3NjcmlwdD4K
IDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcG9wdXAtYnV0
dG9uLXRpdGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BvcHVwLWJ1dHRvbi10
aXRsZS5odG1sCmluZGV4IDRhNGFiMzBlMzVlNy4uMjQxNzAwNzM4MmQwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BvcHVwLWJ1dHRvbi10aXRsZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcG9wdXAtYnV0dG9uLXRpdGxlLmh0bWwKQEAgLTEsNyAr
MSw4IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKQEAgLTEyLDE4ICsxMywyMCBAQAog
CiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIHBvcHVwIGJ1
dHRvbiB3aWxsIHJldHVybiB0aGUgdGV4dCB1bmRlciB0aGUgZWxlbWVudCBmb3IgaXRzIHRpdGxl
LiIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIHBvcHVwIGJ1dHRvbiB3aWxsIHJl
dHVybiB0aGUgdGV4dCB1bmRlciB0aGUgZWxlbWVudCBmb3IgaXRzIHRpdGxlLiIpOwogCi0gICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGluayIpLmZvY3VzKCk7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CitpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisg
ICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImxpbmsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAvLyBU
aGUgZWxlbWVudCBzaG91bGQgbm90IGJlIGlnbm9yZWQgKGl0IHNob3VsZCBiZSBhIGdyb3VwKQog
ICAgICAgICBzaG91bGRCZSgiZWxlbWVudC50aXRsZSIsICInQVhUaXRsZTogQ2xpY2sgbWUnIik7
Ci0gICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KIAogPC9zY3Jp
cHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvcHJlc2VudGF0aW9uYWwtZWxlbWVudHMtd2l0aC1mb2N1cy5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9wcmVzZW50YXRpb25hbC1lbGVtZW50cy13aXRoLWZvY3VzLmh0bWwKaW5k
ZXggMzUyMzBlMjkyNGU2Li4yYWRkNGNmMjAwOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcHJlc2VudGF0aW9uYWwtZWxlbWVudHMtd2l0aC1mb2N1cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcHJlc2VudGF0aW9uYWwtZWxlbWVudHMtd2l0aC1m
b2N1cy5odG1sCkBAIC0xLDcgKzEsOCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBA
IC0xNywxOCArMTgsMjAgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgdGhlIEFSSUEgcHJlc2VudGF0aW9uIHJvbGUgaXMgaWdub3JlZCB3aGVuIGFuIGVs
ZW1lbnQgY2FuIHNldCBmb2N1cy4iKTsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhl
IEFSSUEgcHJlc2VudGF0aW9uIHJvbGUgaXMgaWdub3JlZCB3aGVuIGFuIGVsZW1lbnQgY2FuIHNl
dCBmb2N1cy4iKTsKIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
K2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Jv
dXAiKS5mb2N1cygpOwotCi0gICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgYWxsIGZvdXIgaW1hZ2Vz
IGFyZSBhY2Nlc3NpYmxlLgotICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZHJlbkNvdW50IiwgIjQiKTsKLSAgICB9CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIikuZm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAvLyBWZXJpZnkgdGhhdCBhbGwgZm91ciBpbWFnZXMgYXJlIGFj
Y2Vzc2libGUuCisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZHJlbkNvdW50IiwgIjQiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWwK
aW5kZXggOTYzNDM4ZTdhOWMxLi41MWU5NTM5ZTVlMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvc2VsZWN0LWVsZW1lbnQtYXQtaW5kZXguaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWwKQEAgLTEsNyAr
MSw4IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKQEAgLTE3LDE4ICsxOCwxOSBAQAog
CiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY2hlY2tzIHdoZXRoZXIg
c2V0dGluZyBzZWxlY3Rpb24gYXQgdGhlIGdpdmVuIGluZGV4IHdvcmtzIGNvcnJlY3RseSIpOwor
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY2hlY2tzIHdoZXRoZXIgc2V0dGluZyBzZWxlY3Rpb24g
YXQgdGhlIGdpdmVuIGluZGV4IHdvcmtzIGNvcnJlY3RseSIpOwogCi0gICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZ3JvdXAiKS5mb2N1cygpOwotICAgICAgICB2YXIgc2VsZWN0RWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAorICAgIHZh
ciBzZWxlY3RFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJncm91cCIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNo
b3VsZEJlKCJzZWxlY3RFbGVtZW50LnNlbGVjdGVkQ2hpbGRyZW5Db3VudCIsICIwIik7CiAKLSAg
ICAgICAgdmFyIG9wdGlvbjEgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAg
ICAgdmFyIG9wdGlvbjIgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKLSAgICAgICAg
dmFyIG9wdGlvbjMgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKLSAgICAgICAgdmFy
IG9wdGlvbjQgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgzKTsKKyAgICAgICAgd2luZG93
Lm9wdGlvbjEgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgd2luZG93
Lm9wdGlvbjIgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKKyAgICAgICAgd2luZG93
Lm9wdGlvbjMgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgyKTsKKyAgICAgICAgd2luZG93
Lm9wdGlvbjQgPSBzZWxlY3RFbGVtZW50LmNoaWxkQXRJbmRleCgzKTsKIAogICAgICAgICBzZWxl
Y3RFbGVtZW50LnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4KDApOwogICAgICAgICBzaG91bGRCZSgi
c2VsZWN0RWxlbWVudC5zZWxlY3RlZENoaWxkcmVuQ291bnQiLCAiMSIpOwpAQCAtNjksMTAgKzcx
LDExIEBACiAgICAgICAgIHNlbGVjdEVsZW1lbnQucmVtb3ZlU2VsZWN0aW9uQXRJbmRleCgwKTsK
ICAgICAgICAgc2hvdWxkQmVGYWxzZSgib3B0aW9uMS5pc1NlbGVjdGVkIik7CiAgICAgICAgIHNo
b3VsZEJlKCJzZWxlY3RFbGVtZW50LnNlbGVjdGVkQ2hpbGRyZW5Db3VudCIsICIwIik7CisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOwogfQogCiA8L3NjcmlwdD4KIAotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvbGlzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0CmluZGV4IDVmODY2MmMxNDA5NS4uODM5MjE3ZTE3ZWZj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9saXN0
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC0yNjMsNCArMjYzLDcgQEAgQVhQbGF0Zm9ybUF0dHJp
YnV0ZXM6IHRhZzpkZCwgdG9vbGtpdDpXZWJLaXRHdGsKIC0tLS0tLS0tLS0tLQogCiAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxp
c3RpdGVtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0tZXhwZWN0ZWQudHh0CmluZGV4IDk0Zjk3MTcxYjcz
Ni4uODk4MWI3NTM1Mzc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVt
LWV4cGVjdGVkLnR4dApAQCAtNSw5ICs1LDkgQEAgVGhpcyB0ZXN0cyB0aGF0IHRoZSBBUklBIHJv
bGVzIG9mIGxpc3QgYW5kIGxpc3RpdGVtIG1hcCBjb3JyZWN0bHkgdG8gTWFjIGFjY2Vzc2kKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1vYmouY2hpbGRBdEluZGV4KDApLnJvbGUgPSBB
WFJvbGU6IEFYTGlzdAotb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkucm9sZSA9
IEFYUm9sZTogQVhHcm91cAotb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9s
ZSA9IEFYUm9sZTogQVhHcm91cAorb2JqLnJvbGUgPSBBWFJvbGU6IEFYTGlzdAorb2JqLmNoaWxk
QXRJbmRleCgwKS5yb2xlID0gQVhSb2xlOiBBWEdyb3VwCitvYmouY2hpbGRBdEluZGV4KDEpLnJv
bGUgPSBBWFJvbGU6IEFYR3JvdXAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vz
c2liaWxpdHkvYXJpYS1saXN0LWFuZC1saXN0aXRlbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVtLWV4cGVj
dGVkLnR4dAppbmRleCA1NTdjM2JkMmVkZWMuLjllMWUwYzJlZGFmZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkvYXJpYS1saXN0LWFuZC1saXN0aXRl
bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxp
dHkvYXJpYS1saXN0LWFuZC1saXN0aXRlbS1leHBlY3RlZC50eHQKQEAgLTUsOSArNSw5IEBAIFRo
aXMgdGVzdHMgdGhhdCB0aGUgQVJJQSByb2xlcyBvZiBsaXN0IGFuZCBsaXN0aXRlbSBtYXAgY29y
cmVjdGx5IHRvIE1hYyBhY2Nlc3NpCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotb2Jq
LmNoaWxkQXRJbmRleCgwKS5yb2xlID0gQVhSb2xlOiBBWExpc3QKLW9iai5jaGlsZEF0SW5kZXgo
MCkuY2hpbGRBdEluZGV4KDApLnJvbGUgPSBBWFJvbGU6IEFYVGFiCi1vYmouY2hpbGRBdEluZGV4
KDApLmNoaWxkQXRJbmRleCgxKS5yb2xlID0gQVhSb2xlOiBBWFRhYgorb2JqLnJvbGUgPSBBWFJv
bGU6IEFYTGlzdAorb2JqLmNoaWxkQXRJbmRleCgwKS5yb2xlID0gQVhSb2xlOiBBWFRhYgorb2Jq
LmNoaWxkQXRJbmRleCgxKS5yb2xlID0gQVhSb2xlOiBBWFRhYgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448290</attachid>
            <date>2022-01-04 06:40:59 -0800</date>
            <delta_ts>2022-01-04 08:27:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-a11y-tests-async2.diff</filename>
            <type>text/plain</type>
            <size>92702</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTY0MzhiNDgyOTAuLjE3NWM3NzMyMDdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBA
CisyMDIyLTAxLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBBWDogTWFrZSBtb3JlIHRlc3RzIGFzeW5jIHRvIHBhc3MgaW4gaXNvbGF0ZWQg
dHJlZSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ4NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3MDg3Nzk3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlh
LWxpc3QtYW5kLWxpc3RpdGVtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtbWVudWJhci1tZW51aXRlbXMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEt
bm9uZS1yb2xlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLW9wdGlvbi1yb2xl
Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLW93bnMuaHRtbDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2FyaWEtcHJlc2VudGF0aW9uYWwtcm9sZS5odG1sOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hcmlhLXJvbGVzLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXNj
cm9sbGJhci1yb2xlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12
YWx1ZS1jaGFuZ2UuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZh
bHVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZh
bHVlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlLW9uLWJ1dHRv
bnMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtdGFiLXJvbGVzLmh0bWw6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWhpZXJhcmNoeS5odG1sOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2FyaWEtdGV4dC1yb2xlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jYW52YXMt
YWNjZXNzaWJpbGl0eW5vZGVvYmplY3QuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nh
bnZhcy1kZXNjcmlwdGlvbi1hbmQtcm9sZS5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
Y3NzLWNvbnRlbnQtYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9kdXBs
aWNhdGUtY2hpbGQtbm9kZXMuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2hhbmctaW4t
aXNpZ25vcmVkLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6
YXRpb24uaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFjZXItZWxlbWVu
dHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1l
bGVtZW50cy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMS5odG1sOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1hZ2Utd2l0aC1hbHQtYW5kLW1hcC5odG1sOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25lZC1lbXB0eS5o
dG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNl
Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pbWctYXJpYS1idXR0b24tYWx0LXRhZy5o
dG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW1nLWZhbGxzYmFjay10by10aXRsZS5odG1s
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW5wdXQtaW1hZ2UtYWx0Lmh0bWw6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9sYWJlbC1lbGVtZW50LXByZXNzLmh0bWw6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbGFuZ3VhZ2UtYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9saXN0Ym94LWVuYWJsZWQtc3RhdGVzLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9saXN0cy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWVudS1saXN0LWNyYXNoMi5o
dG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbm9jaGlsZHJlbi1lbGVtZW50cy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ub2NoaWxkcmVuLWVsZW1lbnRzLmh0bWw6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ub24tbmF0aXZlLWltYWdlLWNyYXNoLmh0bWw6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9wYXJhZ3JhcGgtd2l0aC1saW5lYnJlYWtzLmh0bWw6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9wb3B1cC1idXR0b24tdGl0bGUuaHRtbDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L3ByZXNlbnRhdGlvbmFsLWVsZW1lbnRzLXdpdGgtZm9jdXMuaHRtbDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWw6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0
ZW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L2Fy
aWEtbGlzdC1hbmQtbGlzdGl0ZW0tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTAzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDogTWFrZSBh
IGZldyBtb3JlIHRlc3RzIGFzeW5jIHRvIHBhc3MgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxp
c3RpdGVtLWV4cGVjdGVkLnR4dAppbmRleCBhNzU4YWUzNmM3MzkuLjMwYTZjYmMxZGNlMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVt
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1h
bmQtbGlzdGl0ZW0tZXhwZWN0ZWQudHh0CkBAIC01LDkgKzUsOSBAQCBUaGlzIHRlc3RzIHRoYXQg
dGhlIEFSSUEgcm9sZXMgb2YgbGlzdCBhbmQgbGlzdGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMg
YWNjZXNzaQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLW9iai5jaGlsZEF0SW5kZXgo
MCkucm9sZSA9IEFYUm9sZTogQVhMaXN0Ci1vYmouY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRl
eCgwKS5yb2xlID0gQVhSb2xlOiBBWExpc3RJdGVtCi1vYmouY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgxKS5yb2xlID0gQVhSb2xlOiBBWExpc3RJdGVtCitvYmoucm9sZSA9IEFYUm9sZTog
QVhMaXN0CitvYmouY2hpbGRBdEluZGV4KDApLnJvbGUgPSBBWFJvbGU6IEFYTGlzdEl0ZW0KK29i
ai5jaGlsZEF0SW5kZXgoMSkucm9sZSA9IEFYUm9sZTogQVhMaXN0SXRlbQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1saXN0LWFuZC1saXN0aXRlbS5odG1sCmluZGV4IGRiYWJi
Y2RmNzAwMS4uODk0NzkxYjA0MmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRtbApAQCAtMSwxMSArMSwxMiBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCi08ZGl2IHJvbGU9Imxpc3QiPgorPGRpdiBpZD0ibGlz
dCIgcm9sZT0ibGlzdCI+CiA8ZGl2IHJvbGU9Imxpc3RpdGVtIiBhcmlhLWxhYmVsPSJpdGVtIDEi
PjxpbWcgc3JjPScjJyB3aWR0aD0xMDAgaGVpZ2h0PTEwMD48L2Rpdj4KIDxkaXYgcm9sZT0ibGlz
dGl0ZW0iIGFyaWEtbGFiZWw9Iml0ZW0gMiI+PGltZyBzcmM9JyMnIHdpZHRoPTEwMCBoZWlnaHQ9
MTAwPjwvZGl2PgogPC9kaXY+CkBAIC0xNSwyMSArMTYsMjEgQEAKIAogPHNjcmlwdD4KIAotICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcm9sZXMgb2YgbGlzdCBhbmQg
bGlzdGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMgYWNjZXNzaWJpbGl0eSByb2xlcy4iKTsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcm9sZXMgb2YgbGlzdCBhbmQgbGlz
dGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMgYWNjZXNzaWJpbGl0eSByb2xlcy4iKTsKIAotICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAK
LSAgICAgICAgICAvLyB0aGlzIHRleHQgZmllbGQgc2hvdWxkIGJlIHJlcXVpcmVkLgotICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAgICAgICAgICB2
YXIgb2JqID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAg
ICAgICBkZWJ1Zygib2JqLmNoaWxkQXRJbmRleCgwKS5yb2xlID0gIiArIG9iai5jaGlsZEF0SW5k
ZXgoMCkucm9sZSk7Ci0gICAgICAgICAgZGVidWcoIm9iai5jaGlsZEF0SW5kZXgoMCkuY2hpbGRB
dEluZGV4KDApLnJvbGUgPSAiICsgb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCku
cm9sZSk7Ci0gICAgICAgICAgZGVidWcoIm9iai5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4
KDEpLnJvbGUgPSAiICsgb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9sZSk7
Ci0gICAgfQorICAgIHZhciBvYmogPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoImxpc3QiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICBkZWJ1Zygib2JqLnJvbGUgPSAiICsgb2JqLnJvbGUpOworICAgICAgICBkZWJ1Zygib2JqLmNo
aWxkQXRJbmRleCgwKS5yb2xlID0gIiArIG9iai5jaGlsZEF0SW5kZXgoMCkucm9sZSk7CisgICAg
ICAgIGRlYnVnKCJvYmouY2hpbGRBdEluZGV4KDEpLnJvbGUgPSAiICsgb2JqLmNoaWxkQXRJbmRl
eCgxKS5yb2xlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwv
c2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtbWVudWJhci1tZW51aXRlbXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1tZW51YmFyLW1lbnVpdGVtcy5odG1sCmluZGV4IDNmOGY2ZDBhYjBiYS4uZTdl
N2E3M2QxMGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbWVu
dWJhci1tZW51aXRlbXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
bWVudWJhci1tZW51aXRlbXMuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlk
PSJib2R5Ij4KQEAgLTMzLDE3ICszMywxNSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgQVJJQSBtZW51IGl0ZW1zIGFyZSBwcm9wZXJseSBleHBvc2VkIGFzIGNoaWxk
cmVuIGZvciBtZW51IGJhcnMiKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRDb250cm9sbGVyKSB7Ci0g
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3Vz
KCk7Ci0gICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKLSAgICB2YXIgbWVudUJhciA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDApOwotICAgIGR1
bXBBY2Nlc3NpYmlsaXR5VHJlZShtZW51QmFyLCBudWxsLCAwLCBmYWxzZSwgdHJ1ZSk7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIG1lbnVCYXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1lbnViYXIiKTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkdW1wQWNjZXNzaWJpbGl0eVRyZWUobWVu
dUJhciwgbnVsbCwgMCwgZmFsc2UsIHRydWUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICB9LCAwKTsKIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW5vbmUtcm9sZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLW5vbmUtcm9sZS5odG1sCmluZGV4IGYyYTY3N2I2MjRkZS4uMDQ5ZmNm
NDI5NGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbm9uZS1y
b2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW5vbmUtcm9sZS5o
dG1sCkBAIC0xLDcgKzEsOCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0xNCwx
OSArMTUsMjEgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRo
YXQgdGhlIGFyaWEgJ25vbmUnIHJvbGUgd29ya3MgYnkgc3VjY2Vzc2Z1bGx5IHJlbW92aW5nIHRo
ZSBlbGVtZW50IGZyb20gdGhlIEFYIHRyZWUuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IHRoZSBhcmlhICdub25lJyByb2xlIHdvcmtzIGJ5IHN1Y2Nlc3NmdWxseSByZW1vdmluZyB0
aGUgZWxlbWVudCBmcm9tIHRoZSBBWCB0cmVlLiIpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKLSAgICAgICAgICBib2R5LmZvY3Vz
KCk7Ci0KLSAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICBkZWJ1ZygiZmlyc3RD
aGlsZC5yb2xlIGlzICIgKyBmaXJzdENoaWxkLnJvbGUpOwotICAgIH0KKyAgICB2YXIgYm9keSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAgYm9keS5mb2N1cygpOworICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmaXJzdENoaWxkID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICBkZWJ1ZygiZmlyc3RDaGlsZC5yb2xlIGlzICIgKyBmaXJzdENoaWxkLnJvbGUpOworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24t
cm9sZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW9wdGlvbi1yb2xlLmh0
bWwKaW5kZXggNWJhOGU2YjdjOTIyLi5hNWI0NGVkZGUwNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24tcm9sZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24tcm9sZS5odG1sCkBAIC0xLDExICsxLDEyIEBACiA8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAKLTxkaXYgcm9sZT0ibGlzdGJveCI+Cis8ZGl2IGlk
PSJsaXN0Ym94IiByb2xlPSJsaXN0Ym94Ij4KIDxkaXYgcm9sZT0ib3B0aW9uIj5vcHRpb24gMTwv
ZGl2PgogPGRpdiByb2xlPSJvcHRpb24iIGFyaWEtbGFiZWw9ImxhYmVsIDIiPm9wdGlvbiAyPC9k
aXY+CiA8L2Rpdj4KQEAgLTE1LDI4ICsxNiwzMCBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgYXJpYSAnb3B0aW9uJyByb2xlIHdvcmtzIGFzIGV4
cGVjdGVkLiBUaGF0IGlzLCBpdCBiZWNvbWVzIGEgc3RhdGljIHRleHQgZWxlbWVudCB3aXRoIG5v
IGNoaWxkcmVuLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewotCi0gICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIp
OwotICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLQotICAgICAgICAgIHZhciBsaXN0Qm94ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwotICAg
ICAgICAgIHZhciBmaXJzdENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAg
ICAgdmFyIHNlY29uZENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMSk7Ci0gICAgICAgICAg
ZGVidWcoImZpcnN0Q2hpbGQucm9sZSBpcyAiICsgZmlyc3RDaGlsZC5yb2xlKTsKLSAgICAgICAg
ICBkZWJ1ZygiZmlyc3RDaGlsZC50aXRsZSBpcyAiICsgZmlyc3RDaGlsZC50aXRsZSk7Ci0KLSAg
ICAgICAgICBkZWJ1Zygic2Vjb25kQ2hpbGQucm9sZSBpcyAiICsgc2Vjb25kQ2hpbGQucm9sZSk7
Ci0gICAgICAgICAgaWYgKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAi
YXRrIikKLSAgICAgICAgICAgICAgZGVidWcoInNlY29uZENoaWxkLnRpdGxlIGlzICIgKyBzZWNv
bmRDaGlsZC50aXRsZSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBkZWJ1Zygic2Vj
b25kQ2hpbGQuZGVzY3JpcHRpb24gaXMgIiArIHNlY29uZENoaWxkLmRlc2NyaXB0aW9uKTsKLQot
ICAgICAgICAgIHNob3VsZEJlKCJmaXJzdENoaWxkLmNoaWxkcmVuQ291bnQiLCAiMCIpOwotICAg
ICAgICAgIHNob3VsZEJlKCJzZWNvbmRDaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKLSAgICB9
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhICdvcHRpb24nIHJvbGUgd29y
a3MgYXMgZXhwZWN0ZWQuIFRoYXQgaXMsIGl0IGJlY29tZXMgYSBzdGF0aWMgdGV4dCBlbGVtZW50
IHdpdGggbm8gY2hpbGRyZW4uIik7CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgbGlzdEJv
eCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibGlzdGJv
eCIpOworICAgIHZhciBmaXJzdENoaWxkLCBzZWNvbmRDaGlsZDsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICBmaXJzdENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMCk7
CisgICAgICAgIHNlY29uZENoaWxkID0gbGlzdEJveC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAg
IGRlYnVnKCJmaXJzdENoaWxkLnJvbGUgaXMgIiArIGZpcnN0Q2hpbGQucm9sZSk7CisgICAgICAg
IGRlYnVnKCJmaXJzdENoaWxkLnRpdGxlIGlzICIgKyBmaXJzdENoaWxkLnRpdGxlKTsKKworICAg
ICAgICBkZWJ1Zygic2Vjb25kQ2hpbGQucm9sZSBpcyAiICsgc2Vjb25kQ2hpbGQucm9sZSk7Cisg
ICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gImF0ayIp
CisgICAgICAgICAgICBkZWJ1Zygic2Vjb25kQ2hpbGQudGl0bGUgaXMgIiArIHNlY29uZENoaWxk
LnRpdGxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVidWcoInNlY29uZENoaWxkLmRl
c2NyaXB0aW9uIGlzICIgKyBzZWNvbmRDaGlsZC5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgc2hv
dWxkQmUoImZpcnN0Q2hpbGQuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIHNob3VsZEJl
KCJzZWNvbmRDaGlsZC5jaGlsZHJlbkNvdW50IiwgIjAiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtb3ducy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLW93bnMuaHRtbAppbmRleCBiNDE0MDFhZmE0MDQuLjM0YjNhZTE1ZWUxYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW93bnMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtb3ducy5odG1sCkBAIC0xLDcgKzEsOCBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0xOSwyMSArMjAsMjIgQEAKIAogPHNjcmlwdD4K
IAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYXJpYS1vd25zIGNvcnJlY3RseSBl
eHBvc2VzIEFYT3ducyBhbmQgY29ycmVjdGx5IHJldHVybnMgdGhlIHJpZ2h0IGVsZW1lbnRzIik7
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGFyaWEtb3ducyBjb3JyZWN0bHkgZXhwb3Nl
cyBBWE93bnMgYW5kIGNvcnJlY3RseSByZXR1cm5zIHRoZSByaWdodCBlbGVtZW50cyIpOwogCi0g
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
IAotICAgICAgICAgIHZhciBncm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncm91cCIp
OwotICAgICAgICAgIGdyb3VwLmZvY3VzKCk7Ci0gICAgICAgICAgZ3JvdXAgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICBzaG91bGRCZSgiZ3JvdXAu
YXJpYU93bnNFbGVtZW50QXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOwot
ICAgICAgICAgIHNob3VsZEJlKCJncm91cC5hcmlhT3duc0VsZW1lbnRBdEluZGV4KDApLnRpdGxl
IiwgIidBWFRpdGxlOiBCVVRUT04nIik7Ci0gICAgICAgICAgc2hvdWxkQmUoImdyb3VwLmFyaWFP
d25zRWxlbWVudEF0SW5kZXgoMSkucm9sZSIsICInQVhSb2xlOiBBWFJhZGlvQnV0dG9uJyIpOwot
ICAgICAgICAgIHNob3VsZEJlKCJncm91cC5hcmlhT3duc0VsZW1lbnRBdEluZGV4KDEpLnRpdGxl
IiwgIidBWFRpdGxlOiBSQURJTyBCVVRUT04nIik7Ci0gICAgfQorICAgIHZhciBncm91cCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZ3JvdXAiKTsKKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgiZ3JvdXAuYXJpYU93
bnNFbGVtZW50QXRJbmRleCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOworICAgICAg
ICBzaG91bGRCZSgiZ3JvdXAuYXJpYU93bnNFbGVtZW50QXRJbmRleCgwKS50aXRsZSIsICInQVhU
aXRsZTogQlVUVE9OJyIpOworICAgICAgICBzaG91bGRCZSgiZ3JvdXAuYXJpYU93bnNFbGVtZW50
QXRJbmRleCgxKS5yb2xlIiwgIidBWFJvbGU6IEFYUmFkaW9CdXR0b24nIik7CisgICAgICAgIHNo
b3VsZEJlKCJncm91cC5hcmlhT3duc0VsZW1lbnRBdEluZGV4KDEpLnRpdGxlIiwgIidBWFRpdGxl
OiBSQURJTyBCVVRUT04nIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOwor
fQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLXByZXNlbnRhdGlvbmFsLXJvbGUuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1wcmVzZW50YXRpb25hbC1yb2xlLmh0bWwKaW5kZXggMjMzMmQ2
ZjIzOGZmLi42ZDlhMmZkZDA0NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS1wcmVzZW50YXRpb25hbC1yb2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9hcmlhLXByZXNlbnRhdGlvbmFsLXJvbGUuaHRtbApAQCAtMSw3ICsxLDggQEAKIDwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIApAQCAtMTQsMTkgKzE1LDIxIEBACiAKIDxzY3JpcHQ+
CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhICdwcmVzZW50YXRp
b24nIHJvbGUgd29ya3MgYnkgc3VjY2Vzc2Z1bGx5IHJlbW92aW5nIHRoZSBlbGVtZW50IGZyb20g
dGhlIEFYIHRyZWUuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhICdw
cmVzZW50YXRpb24nIHJvbGUgd29ya3MgYnkgc3VjY2Vzc2Z1bGx5IHJlbW92aW5nIHRoZSBlbGVt
ZW50IGZyb20gdGhlIEFYIHRyZWUuIik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgICAgdmFyIGJvZHkgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOwotICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLQot
ICAgICAgICAgIHZhciBmaXJzdENoaWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAgIGRlYnVnKCJmaXJzdENoaWxkLnJv
bGUgaXMgIiArIGZpcnN0Q2hpbGQucm9sZSk7Ci0gICAgfQorICAgIHZhciBib2R5ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAgICBib2R5LmZvY3VzKCk7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGRlYnVn
KCJmaXJzdENoaWxkLnJvbGUgaXMgIiArIGZpcnN0Q2hpbGQucm9sZSk7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQK
aW5kZXggZjZhNzNmZTZkODkxLi40ZTA0NDAwN2Q2YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVzLWV4cGVjdGVkLnR4dApAQCAtNzAsNCArNzAsNyBAQCBC
cm9jY29saQogQmVldHMKIFRoaXMgdGVzdCBQQVNTRVMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSBy
b2xlIGlzIEFYUm9sZTogQVhMaXN0CiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtcm9sZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy5o
dG1sCmluZGV4IGU0YTAwNjVhOWZjNy4uMmE4NDg0ZDFiYzU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtcm9sZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtcm9sZXMuaHRtbApAQCAtNywyOSArNywyMSBAQAogICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7CiAgICAgfQogPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KICAKIDxib2R5
PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworZnVuY3Rpb24gdmFsaWRhdGVSb2xlKGFyaWEsIHJlYWwsIHJlc3Vs
dCkgeworICAgIHZhciBhcmlhUm9sZSA9IGFyaWEucm9sZTsKKyAgICB2YXIgcmVhbFJvbGUgPSBy
ZWFsLnJvbGU7CiAKLSAgICBmdW5jdGlvbiB2YWxpZGF0ZVJvbGUoYXJpYSwgcmVhbCwgcmVzdWx0
KSB7Ci0gICAgICAgIGlmICghd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgYXJpYS5mb2N1cygpOwotICAgICAgICB2
YXIgYXJpYVJvbGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5yb2xl
OwotICAgICAgICAKLSAgICAgICAgcmVhbC5mb2N1cygpOwotICAgICAgICB2YXIgcmVhbFJvbGUg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5yb2xlOwotICAgICAgIAot
ICAgICAgICBpZiAoYXJpYVJvbGUgPT0gcmVhbFJvbGUpCi0gICAgICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ID0gIlRoaXMgdGVzdCBQQVNTRVMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSByb2xlIGlz
ICIgKyBhcmlhUm9sZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCA9ICJUaGlzIHRlc3QgRkFJTFMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSBBUklBIHJvbGUgaXMg
IiArIGFyaWFSb2xlICsgIiwgYnV0IHRoZSByZWFsIHJvbGUgaXMgIgotICAgICAgICAgICAgICAg
ICsgcmVhbFJvbGU7Ci0gICAgfQorICAgIGlmIChhcmlhUm9sZSA9PSByZWFsUm9sZSkKKyAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgUEFTU0VTIGluIER1bXBSZW5kZXJUcmVl
LiBUaGUgcm9sZSBpcyAiICsgYXJpYVJvbGU7CisgICAgZWxzZQorICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ID0gIlRoaXMgdGVzdCBGQUlMUyBpbiBEdW1wUmVuZGVyVHJlZS4gVGhlIEFSSUEgcm9s
ZSBpcyAiICsgYXJpYVJvbGUgKyAiLCBidXQgdGhlIHJlYWwgcm9sZSBpcyAiICsgcmVhbFJvbGU7
Cit9CiA8L3NjcmlwdD4KIAogICA8IS0tQ2hlY2tib3gtLT4KQEAgLTE2MCw2ICsxNTIsMzkgQEAK
ICAgICA8L3NjcmlwdD4KICAgPC9kaXY+CiAgIDxici8+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICB2YXIgYXJpYUNoZWNrQm94ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhQ2hlY2tC
b3giKTsKKyAgICB2YXIgcmVhbENoZWNrQm94ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJyZWFsQ2hlY2tCb3giKTsKKyAgICB2YXIgYXJpYUJ1dHRvbiA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiYXJpYUJ1dHRv
biIpOworICAgIHZhciByZWFsQnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJyZWFsQnV0dG9uIik7CisgICAgdmFyIGFyaWFIZWFkaW5nID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhSGVhZGluZyIp
OworICAgIHZhciByZWFsSGVhZGluZyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicmVhbEhlYWRpbmciKTsKKyAgICB2YXIgYXJpYUxpbmsgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImFyaWFMaW5rIik7CisgICAg
dmFyIHJlYWxMaW5rID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJyZWFsTGluayIpOworICAgIHZhciBhcmlhUmFkaW8gPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImFyaWFSYWRpbyIpOworICAgIHZhciByZWFsUmFk
aW8gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJlYWxS
YWRpbyIpOworICAgIHZhciBhcmlhVGV4dEJveCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiYXJpYVRleHRCb3giKTsKKyAgICB2YXIgcmVhbFRleHRCb3gg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJlYWxUZXh0
Qm94Iik7CisgICAgdmFyIGFyaWFJbWFnZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiYXJpYUltYWdlIik7CisgICAgdmFyIHJlYWxJbWFnZSA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicmVhbEltYWdlIik7Cisg
ICAgdmFyIGFyaWFMaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJhcmlhTGlzdCIpOworICAgIHZhciByZWFsTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicmVhbExpc3QiKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICB2YWxpZGF0ZVJvbGUoYXJpYUNoZWNrQm94LCByZWFsQ2hl
Y2tCb3gsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRDaGVja0JveCcpKTsKKyAgICAg
ICAgdmFsaWRhdGVSb2xlKGFyaWFCdXR0b24sIHJlYWxCdXR0b24sIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHRCdXR0b24nKSk7CisgICAgICAgIHZhbGlkYXRlUm9sZShhcmlhSGVhZGlu
ZywgcmVhbEhlYWRpbmcsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRIZWFkaW5nJykp
OworICAgICAgICB2YWxpZGF0ZVJvbGUoYXJpYUxpbmssIHJlYWxMaW5rLCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0TGluaycpKTsKKyAgICAgICAgdmFsaWRhdGVSb2xlKGFyaWFSYWRp
bywgcmVhbFJhZGlvLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0UmFkaW8nKSk7Cisg
ICAgICAgIHZhbGlkYXRlUm9sZShhcmlhVGV4dEJveCwgcmVhbFRleHRCb3gsIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHRUZXh0Qm94JykpOworICAgICAgICB2YWxpZGF0ZVJvbGUoYXJp
YUltYWdlLCByZWFsSW1hZ2UsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRJbWFnZScp
KTsKKyAgICAgICAgdmFsaWRhdGVSb2xlKGFyaWFMaXN0LCByZWFsTGlzdCwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdExpc3QnKSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0sIDApOworfQorPC9zY3JpcHQ+CiAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2Nyb2xsYmFyLXJvbGUuaHRtbAppbmRleCBhNzBkNDZk
ODUyMTYuLjM0YjcyMDFiNzllNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eSBpZD0iYm9keSI+CiAKQEAgLTEzLDEyICsxNCwxMyBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgQVJJQSBzY3JvbGxiYXIgcm9sZSB3b3JrcyBj
b3JyZWN0bHkiKTsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgc2Nyb2xs
YmFyIHJvbGUgd29ya3MgY29ycmVjdGx5Iik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzY3JvbGxlcjEiKS5mb2N1cygpOwotICAgICAgICB2YXIgc2Nyb2xsZXIgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB2YXIgc2Nyb2xsZXIg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNjcm9sbGVy
MSIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCJzY3Jv
bGxlci5yb2xlIiwgIidBWFJvbGU6IEFYU2Nyb2xsQmFyJyIpOwogICAgICAgICBzaG91bGRCZSgi
c2Nyb2xsZXIuaW50VmFsdWUiLCAiNTUiKTsKICAgICAgICAgc2hvdWxkQmUoInNjcm9sbGVyLm9y
aWVudGF0aW9uIiwgIidBWE9yaWVudGF0aW9uOiBBWFZlcnRpY2FsT3JpZW50YXRpb24nIik7CkBA
IC0yNywxNSArMjksMTUgQEAKICAgICAgICAgc2hvdWxkQmUoInNjcm9sbGVyLm9yaWVudGF0aW9u
IiwgIidBWE9yaWVudGF0aW9uOiBBWEhvcml6b250YWxPcmllbnRhdGlvbiciKTsKIAogICAgICAg
ICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uIHNob3VsZCBiZSB2ZXJ0aWNhbCBmb3Igc2Nyb2xsYmFy
cwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsZXIyIikuZm9jdXMoKTsK
LSAgICAgICAgc2Nyb2xsZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICAgICAgc2Nyb2xsZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInNjcm9sbGVyMiIpOwogICAgICAgICBzaG91bGRCZSgic2Nyb2xsZXIucm9s
ZSIsICInQVhSb2xlOiBBWFNjcm9sbEJhciciKTsKICAgICAgICAgc2hvdWxkQmUoInNjcm9sbGVy
LmludFZhbHVlIiwgIjU1Iik7CiAgICAgICAgIHNob3VsZEJlKCJzY3JvbGxlci5vcmllbnRhdGlv
biIsICInQVhPcmllbnRhdGlvbjogQVhWZXJ0aWNhbE9yaWVudGF0aW9uJyIpOwotICAgIH0KKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xp
ZGVyLXZhbHVlLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNs
aWRlci12YWx1ZS1jaGFuZ2UuaHRtbAppbmRleCA0ZWUyOTJjMjc5ZjMuLjAyNTcyNzUwMDVmYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12YWx1ZS1j
aGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZh
bHVlLWNoYW5nZS5odG1sCkBAIC0xLDcgKzEsOCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHki
PgogCkBAIC0xMiwyOSArMTMsMjggQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgaXRzIHBvc3NpYmxlIHRvIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGFu
IGFyaWEgc2xpZGVyIGFuZCBoYXZlIHRoZSB2YWx1ZSB1cGRhdGVkIGNvcnJlY3RseS4iKTsKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaXRzIHBvc3NpYmxlIHRvIGluY3JlbWVudCBhbmQg
ZGVjcmVtZW50IGFuIGFyaWEgc2xpZGVyIGFuZCBoYXZlIHRoZSB2YWx1ZSB1cGRhdGVkIGNvcnJl
Y3RseS4iKTsKIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CiAKLSAgICAgICAgICB2YXIgc2xpZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNsaWRlciIpOwotICAgICAgICAgIHNsaWRlci5mb2N1cygpOworICAgIHZhciBzbGlk
ZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNsaWRl
ciIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlKCJzbGlk
ZXIuaW50VmFsdWUiLCAiNTAiKTsKIAotICAgICAgICAgIHNsaWRlciA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICAgIHNob3VsZEJlKCJzbGlkZXIuaW50
VmFsdWUiLCAiNTAiKTsKKyAgICAgICAgc2xpZGVyLmluY3JlbWVudCgpOworICAgICAgICAvLyBB
cyBvZiBub3csIHRoZXJlJ3Mgbm8gc3BlY2lmaWNhdGlvbiBkZXNpZ25lZCB0byB1cGRhdGUgdGhl
IERPTSBhZnRlciBhbiBBWCBjYWxsLgorICAgICAgICBzaG91bGRCZSgic2xpZGVyLmludFZhbHVl
IiwgIjUwIik7CiAKLSAgICAgICAgICBzbGlkZXIuaW5jcmVtZW50KCk7Ci0gICAgICAgICAgLy8g
QXMgb2Ygbm93LCB0aGVyZSdzIG5vIHNwZWNpZmljYXRpb24gZGVzaWduZWQgdG8gdXBkYXRlIHRo
ZSBET00gYWZ0ZXIgYW4gQVggY2FsbC4KLSAgICAgICAgICBzaG91bGRCZSgic2xpZGVyLmludFZh
bHVlIiwgIjUwIik7Ci0KLSAgICAgICAgICBzbGlkZXIuZGVjcmVtZW50KCk7Ci0gICAgICAgICAg
c2xpZGVyLmRlY3JlbWVudCgpOwotICAgICAgICAgIC8vIEFzIG9mIG5vdywgdGhlcmUncyBubyBz
cGVjaWZpY2F0aW9uIGRlc2lnbmVkIHRvIHVwZGF0ZSB0aGUgRE9NIGFmdGVyIGFuIEFYIGNhbGwu
Ci0gICAgICAgICAgc2hvdWxkQmUoInNsaWRlci5pbnRWYWx1ZSIsICI1MCIpOwotCi0gICAgfQor
ICAgICAgICBzbGlkZXIuZGVjcmVtZW50KCk7CisgICAgICAgIHNsaWRlci5kZWNyZW1lbnQoKTsK
KyAgICAgICAgLy8gQXMgb2Ygbm93LCB0aGVyZSdzIG5vIHNwZWNpZmljYXRpb24gZGVzaWduZWQg
dG8gdXBkYXRlIHRoZSBET00gYWZ0ZXIgYW4gQVggY2FsbC4KKyAgICAgICAgc2hvdWxkQmUoInNs
aWRlci5pbnRWYWx1ZSIsICI1MCIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAw
KTsKK30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12YWx1ZS1leHBlY3RlZC50eHQKaW5kZXgg
NDk1NmJhOWU2YjUxLi5jZGUwNjkxNGUwMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0zLDMgKzMs
NyBAQCBJbiBhY2Nlc3NpYmlsaXR5LCB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBhIHByb2dyZXNz
IGluZGljYXRvcjoKIFgKIAogVGhpcyB0ZXN0IFBBU1NFUyBpbiBEdW1wUmVuZGVyVHJlZS4gVGhl
IHZhbHVlIGlzIDUsIHRoZSBtaW5WYWx1ZSBpcyAwLCBhbmQgdGhlIG1heCB2YWx1ZSBpcyAxMC4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZhbHVlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtc2xpZGVyLXZhbHVlLmh0bWwKaW5kZXgg
NzAyM2RhNmEwYWE0Li4xYTI5ZGEyZDg5OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1zbGlkZXItdmFsdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtc2xpZGVyLXZhbHVlLmh0bWwKQEAgLTEsMzcgKzEsMzQgQEAKIDxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+CiA8Ym9keT4KKzxkaXY+Cis8cD5JbiBhY2Nlc3NpYmlsaXR5LCB0aGUgZm9s
bG93aW5nIHNob3VsZCBiZSBhIHByb2dyZXNzIGluZGljYXRvcjo8L3A+Cis8cD48c3BhbiB0YWJp
bmRleD0iMCIgcm9sZT0ic2xpZGVyIiBpZD0ic2xpZGVyIiBhcmlhLXZhbHVlbm93PTUgYXJpYS12
YWx1ZW1pbj0wIGFyaWEtdmFsdWVtYXg9MTA+WDwvc3Bhbj48L3A+Cis8c3BhbiBpZD0icmVzdWx0
Ij48L3NwYW4+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2xp
ZGVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzbGlk
ZXIiKTsKKyAgICAgICAgdmFyIHZhbHVlID0gc2xpZGVyLmludFZhbHVlOworICAgICAgICB2YXIg
bWluVmFsdWUgPSBzbGlkZXIubWluVmFsdWU7CisgICAgICAgIHZhciBtYXhWYWx1ZSA9IHNsaWRl
ci5tYXhWYWx1ZTsKIAotICAgIGZ1bmN0aW9uIGNoZWNrVmFsdWUoKSB7Ci0gICAgICAgIGlmICgh
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgdmFyIGFyaWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVy
Iik7Ci0gICAgICAgIGFyaWEuZm9jdXMoKTsKLSAgICAgICAgdmFyIGZvY3VzZWRFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIHZhciB2YWx1
ZSA9IGZvY3VzZWRFbGVtZW50LmludFZhbHVlOwotICAgICAgICB2YXIgbWluVmFsdWUgPSBmb2N1
c2VkRWxlbWVudC5taW5WYWx1ZTsKLSAgICAgICAgdmFyIG1heFZhbHVlID0gZm9jdXNlZEVsZW1l
bnQubWF4VmFsdWU7Ci0gICAgICAgCiAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICAgICAgIGlmICh2YWx1ZSA9PSA1ICYmIG1pblZhbHVl
ID09IDAgJiYgbWF4VmFsdWUgPT0gMTApCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0g
IlRoaXMgdGVzdCBQQVNTRVMgaW4gRHVtcFJlbmRlclRyZWUuIFRoZSB2YWx1ZSBpcyAiICsgdmFs
dWUgKyAiLCB0aGUgbWluVmFsdWUgaXMgIiAKLSAgICAgICAgICAgICAgICArIG1pblZhbHVlICsg
IiwgYW5kIHRoZSBtYXggdmFsdWUgaXMgIiArIG1heFZhbHVlICsgIi4iOworICAgICAgICAgICAg
cmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgUEFTU0VTIGluIER1bXBSZW5kZXJUcmVlLiBU
aGUgdmFsdWUgaXMgIiArIHZhbHVlICsgIiwgdGhlIG1pblZhbHVlIGlzICIgKyBtaW5WYWx1ZSAr
ICIsIGFuZCB0aGUgbWF4IHZhbHVlIGlzICIgKyBtYXhWYWx1ZSArICIuIjsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgRkFJTFMgaW4gRHVt
cFJlbmRlclRyZWUuIFRoZSB2YWx1ZSwgbWluVmFsdWUsIGFuZC9vciBtYXhWYWx1ZSBvZiB0aGUg
cmFuZ2UgbXVzdCBiZSBpbmNvcnJlY3QuIjsKLSAgICB9Ci08L3NjcmlwdD4KIAotPGRpdj4KLSAg
ICA8cD5JbiBhY2Nlc3NpYmlsaXR5LCB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBhIHByb2dyZXNz
IGluZGljYXRvcjo8L3A+Ci0gICAgPHA+PHNwYW4gdGFiaW5kZXg9IjAiIHJvbGU9InNsaWRlciIg
aWQ9InNsaWRlciIgYXJpYS12YWx1ZW5vdz01IGFyaWEtdmFsdWVtaW49MCBhcmlhLXZhbHVlbWF4
PTEwPlg8L3NwYW4+PC9wPgotICAgIDxzcGFuIGlkPSJyZXN1bHQiPjwvc3Bhbj4KLSAgICA8c2Ny
aXB0PgotICAgICAgICBjaGVja1ZhbHVlKCk7Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvZGl2PgotICAK
LSA8L2JvZHk+CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3Jp
cHQ+Cis8L2Rpdj4KKzwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS10YWItcm9sZS1vbi1idXR0b25zLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFiLXJvbGUtb24tYnV0dG9ucy5odG1sCmluZGV4IDBhNGQzZGQz
MjNiOC4uMGUzODMyOWFjNDMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtdGFiLXJvbGUtb24tYnV0dG9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS10YWItcm9sZS1vbi1idXR0b25zLmh0bWwKQEAgLTEsMTEgKzEsMTIgQEAKIDwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIAotPGRpdiByb2xlPSJ0YWJsaXN0Ij4KKzxkaXYgaWQ9
InRhYmxpc3QiIHJvbGU9InRhYmxpc3QiPgogICAgIDxidXR0b24gaWQ9InRhYiBhIiByb2xlPSJ0
YWIiIGFyaWEtc2VsZWN0ZWQ9InRydWUiPlRhYiBBPC9idXR0b24+CiAgICAgPGJ1dHRvbiBpZD0i
dGFiIGIiIHJvbGU9InRhYiIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPlRhYiBCPC9idXR0b24+CiAg
ICAgPGJ1dHRvbiBpZD0idGFiIGMiIHJvbGU9InRhYiIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiPlRh
YiBDPC9idXR0b24+CkBAIC0xNiwyOCArMTcsMjcgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9sZXMgZm9yIHRhYiBhbmQgdGFibGlz
dCB3b3JrIGFzIGV4cGVjdGVkIGZvciBidXR0b25zLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgewotCi0gICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYm9keSIpOwotICAgICAgICAgIGJvZHkuZm9jdXMoKTsKLQotICAgICAg
ICAgIHZhciB0YWJMaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
Y2hpbGRBdEluZGV4KDApOwotICAgICAgICAgIHZhciB0YWIxID0gdGFiTGlzdC5jaGlsZEF0SW5k
ZXgoMCk7Ci0gICAgICAgICAgdmFyIHRhYjIgPSB0YWJMaXN0LmNoaWxkQXRJbmRleCgxKTsKLSAg
ICAgICAgICB2YXIgdGFiUGFuZWwgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudC5jaGlsZEF0SW5kZXgoMSk7Ci0KLSAgICAgICAgICBkZWJ1ZygidGFiTGlzdC5yb2xlID0g
IiArIHRhYkxpc3Qucm9sZSk7Ci0gICAgICAgICAgZGVidWcoInRhYjEucm9sZSA9ICIgKyB0YWIx
LnJvbGUpOwotICAgICAgICAgIGRlYnVnKCJ0YWIxLnRpdGxlID0gIiArIHRhYjEudGl0bGUpOwot
ICAgICAgICAgIHNob3VsZEJlKCJ0YWIxLmNoaWxkcmVuQ291bnQiLCAiMCIpOwotICAgICAgICAg
IGRlYnVnKCJ0YWIyLnJvbGUgPSAiICsgdGFiMi5yb2xlKTsKLSAgICAgICAgICBkZWJ1ZygidGFi
Mi50aXRsZSA9ICIgKyB0YWIyLnRpdGxlKTsKLSAgICB9CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGF0IHRoZSBhcmlhIHJvbGVzIGZvciB0YWIgYW5kIHRhYmxpc3Qgd29yayBhcyBleHBlY3Rl
ZCBmb3IgYnV0dG9ucy4iKTsKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciB0YWJMaXN0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsaXN0Iik7
CisgICAgdmFyIHRhYjEsIHRhYjI7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICB0YWIyID0gdGFiTGlz
dC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJ0YWJMaXN0LnJvbGUgPSAiICsgdGFi
TGlzdC5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjEucm9sZSA9ICIgKyB0YWIxLnJvbGUpOwor
ICAgICAgICBkZWJ1ZygidGFiMS50aXRsZSA9ICIgKyB0YWIxLnRpdGxlKTsKKyAgICAgICAgc2hv
dWxkQmUoInRhYjEuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIGRlYnVnKCJ0YWIyLnJv
bGUgPSAiICsgdGFiMi5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjIudGl0bGUgPSAiICsgdGFi
Mi50aXRsZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3Nj
cmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYi1yb2xlcy5odG1sCmluZGV4IDEwMWYxN2FhMDM2ZS4uNTA5NzdhZTJkYmFhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFiLXJvbGVzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sCkBAIC0xLDcgKzEs
OCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0yMCwzMCArMjEsMzAgQEAKIAog
PHNjcmlwdD4KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9s
ZXMgZm9yIHRhYiwgdGFicGFuZWwgYW5kIHRhYmxpc3Qgd29yayBhcyBleHBlY3RlZCBjb3JyZWN0
bHkuIik7Ci0KLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0KLSAg
ICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAg
ICAgICAgYm9keS5mb2N1cygpOwotCi0gICAgICAgICAgdmFyIHRhYkxpc3QgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAg
dmFyIHRhYjEgPSB0YWJMaXN0LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICB2YXIgdGFiMiA9
IHRhYkxpc3QuY2hpbGRBdEluZGV4KDEpOwotICAgICAgICAgIHZhciB0YWJQYW5lbCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgxKTsKLQotICAg
ICAgICAgIGRlYnVnKCJ0YWJMaXN0LnJvbGUgPSAiICsgdGFiTGlzdC5yb2xlKTsKLSAgICAgICAg
ICBkZWJ1ZygidGFiMS5yb2xlID0gIiArIHRhYjEucm9sZSk7Ci0gICAgICAgICAgZGVidWcoInRh
YjEudGl0bGUgPSAiICsgdGFiMS50aXRsZSk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRhYjEuY2hp
bGRyZW5Db3VudCIsICIwIik7Ci0gICAgICAgICAgZGVidWcoInRhYjIucm9sZSA9ICIgKyB0YWIy
LnJvbGUpOwotICAgICAgICAgIGRlYnVnKCJ0YWIyLnRpdGxlID0gIiArIHRhYjIudGl0bGUpOwot
ICAgICAgICAgIGRlYnVnKCJ0YWJQYW5lbC5yb2xlID0gIiArIHRhYlBhbmVsLnJvbGUpOwotICAg
ICAgICAgIGRlYnVnKCJ0YWJQYW5lbC5zdWJyb2xlID0gIiArIHRhYlBhbmVsLnN1YnJvbGUpOwot
ICAgIH0KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9sZXMgZm9yIHRh
YiwgdGFicGFuZWwgYW5kIHRhYmxpc3Qgd29yayBhcyBleHBlY3RlZCBjb3JyZWN0bHkuIik7CisK
K2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgdGFiTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGlzdF8xIik7CisgICAgdmFyIHRhYlBhbmVs
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwYW5lbF8x
Iik7CisgICAgdmFyIHRhYjEsIHRhYjI7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICB0YWIyID0gdGFi
TGlzdC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJ0YWJMaXN0LnJvbGUgPSAiICsg
dGFiTGlzdC5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjEucm9sZSA9ICIgKyB0YWIxLnJvbGUp
OworICAgICAgICBkZWJ1ZygidGFiMS50aXRsZSA9ICIgKyB0YWIxLnRpdGxlKTsKKyAgICAgICAg
c2hvdWxkQmUoInRhYjEuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIGRlYnVnKCJ0YWIy
LnJvbGUgPSAiICsgdGFiMi5yb2xlKTsKKyAgICAgICAgZGVidWcoInRhYjIudGl0bGUgPSAiICsg
dGFiMi50aXRsZSk7CisgICAgICAgIGRlYnVnKCJ0YWJQYW5lbC5yb2xlID0gIiArIHRhYlBhbmVs
LnJvbGUpOworICAgICAgICBkZWJ1ZygidGFiUGFuZWwuc3Vicm9sZSA9ICIgKyB0YWJQYW5lbC5z
dWJyb2xlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2Ny
aXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtdGFibGUtaGllcmFyY2h5Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtdGFibGUtaGllcmFyY2h5Lmh0bWwKaW5kZXggOTNhMWRjM2M0ZjhjLi5hNDUxYTA2MDc1
Y2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1oaWVy
YXJjaHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtaGll
cmFyY2h5Lmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGR1bXBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW4oZWxlbWVudCwgbGV2ZWwpIHsKICAgICAgICAgaWYgKGVsZW1l
bnQuc3RyaW5nVmFsdWUuaW5kZXhPZignRW5kIG9mIHRlc3QnKSA+PSAwKQpAQCAtNDAsMTIgKzQx
LDE2IEBACiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgogPHNjcmlwdD4KLSAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFjY2Vzc2libGUgaGll
cmFyY2h5IGZvciBhbiBBUklBIHRhYmxlLiIpOwotICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7Ci0gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3Vz
KCk7Ci0gICAgICBkdW1wQWNjZXNzaWJpbGl0eUNoaWxkcmVuKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LCAwKTsKLSAgfQorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhl
IGFjY2Vzc2libGUgaGllcmFyY2h5IGZvciBhbiBBUklBIHRhYmxlLiIpOworaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkdW1wQWNjZXNzaWJpbGl0eUNoaWxkcmVu
KGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LCAwKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHQK
aW5kZXggNGFhNGFiZjgxMjcxLi45NjFhMjcyNzI2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQudHh0CkBAIC0xNyw0ICsxNyw3IEBA
IEFYUm9sZTogQVhDb2x1bW5IZWFkZXIKIEFYUm9sZTogQVhSb3dIZWFkZXIKIEFYUm9sZTogQVhD
ZWxsCiBUZXN0IHBhc3NlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10
YWJsZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMuaHRtbApp
bmRleCBiY2NlNWZhMmQ4YzYuLmY1OWE5ZGU2MTA2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS10YWJsZXMuaHRtbApAQCAtMSw4ICsxLDggQEAKIDxodG1sPgotPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotPC9zY3JpcHQ+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KICAgICAKICAg
ICA8IS0tIFRoaXMgdGVzdCBwZXJmb3JtcyBhIG51bWJlciBvZiB0ZXN0cyBvbiBBUklBIHRhYmxl
cyB0byBtYWtlIHN1cmUgdGhleSBjb25mb3JtIGFzIGV4cGVjdGVkIC0tPgpAQCAtNDIsNDYgKzQy
LDUyIEBACiAgICAgPC90YWJsZT4KIAogICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAgICAgCi0gICAgPHNjcmlwdD4KLSAgICAgICAgaWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworPHNjcmlwdD4KK2lmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpOwogCi0gICAgICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJib2R5Iik7Ci0gICAgICAgICAgICBib2R5LmZvY3VzKCk7Ci0gICAgICAgICAgICB2YXIgZm9j
dXNlZEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAg
ICAgICAgICAgIHZhciB0YWJsZTEgPSBmb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7Ci0g
ICAgICAgICAgICB2YXIgdGFibGUyID0gZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOwog
Ci0gICAgICAgICAgICB2YXIgZmFpbGVkID0gMDsKLSAgICAgICAgICAgIDwhLS0gbWFrZSBzdXJl
IHRoZXkgYXJlIHRhYmxlcyAtLT4KLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gdGFi
bGUxLnJvbGUgKyAiXG4iOwotICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSB0YWJsZTIu
cm9sZSArICJcbiI7CisgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9k
eSIpOworICAgIGJvZHkuZm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgZm9jdXNlZEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKKyAgICAgICAgdmFyIHRhYmxlMSA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRl
eCgwKTsKKyAgICAgICAgdmFyIHRhYmxlMiA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgx
KTsKIAotICAgICAgICAgICAgPCEtLSBNYWtlIHN1cmUgd2UgY2FuIHVzZSBjZWxsIGZvciBjb2x1
bW4gYW5kIHJvdyBhbmQgaXQgd29ya3MgLS0+Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ICs9IHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsMCkucm9sZSArICJcbiI7Ci0gICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsMCku
cm9sZSArICJcbiI7Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDIsMikucm9sZSArICJcbiI7Ci0gICAgICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ICs9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDEsMSkucm9sZSArICJcbiI7Cisg
ICAgICAgIHZhciBmYWlsZWQgPSAwOworICAgICAgICA8IS0tIG1ha2Ugc3VyZSB0aGV5IGFyZSB0
YWJsZXMgLS0+CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gdGFibGUxLnJvbGUgKyAiXG4i
OworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRhYmxlMi5yb2xlICsgIlxuIjsKIAotICAg
ICAgICAgICAgPCEtLSBub3cgbWFrZSBzdXJlIHdlIGNhbiBjYWxsIGFsbCB0aGUgcmVsZXZhbnQg
bWV0aG9kcyB3aXRob3V0IGNyYXNoaW5nIC0tPgotICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0
ZXNPZkNvbHVtbkhlYWRlcnMoKTsKLSAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1
bW5IZWFkZXJzKCk7CisgICAgICAgIDwhLS0gTWFrZSBzdXJlIHdlIGNhbiB1c2UgY2VsbCBmb3Ig
Y29sdW1uIGFuZCByb3cgYW5kIGl0IHdvcmtzIC0tPgorICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ICs9IHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsMCkucm9sZSArICJcbiI7CisgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gdGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwwKS5yb2xl
ICsgIlxuIjsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSB0YWJsZTEuY2VsbEZvckNvbHVt
bkFuZFJvdygyLDIpLnJvbGUgKyAiXG4iOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHRh
YmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDEsMSkucm9sZSArICJcbiI7CiAKLSAgICAgICAgICAg
IHRhYmxlMS5hdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7Ci0gICAgICAgICAgICB0YWJsZTIuYXR0
cmlidXRlc09mUm93SGVhZGVycygpOwotICAgIAotICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0
ZXNPZkNvbHVtbnMoKTsKLSAgICAgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZDb2x1bW5zKCk7
CisgICAgICAgIDwhLS0gbm93IG1ha2Ugc3VyZSB3ZSBjYW4gY2FsbCBhbGwgdGhlIHJlbGV2YW50
IG1ldGhvZHMgd2l0aG91dCBjcmFzaGluZyAtLT4KKyAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNP
ZkNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgdGFibGUyLmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRl
cnMoKTsKIAotICAgICAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZlJvd3MoKTsKLSAgICAgICAg
ICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZSb3dzKCk7CisgICAgICAgIHRhYmxlMS5hdHRyaWJ1dGVz
T2ZSb3dIZWFkZXJzKCk7CisgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCk7
CiAKLSAgICAgICAgICAgIHRhYmxlMS5hdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKLSAgICAgICAgICAg
IHRhYmxlMi5hdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKyAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNP
ZkNvbHVtbnMoKTsKKyAgICAgICAgdGFibGUyLmF0dHJpYnV0ZXNPZkNvbHVtbnMoKTsKIAotICAg
ICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdCBwYXNzZWRcbiI7Ci0gICAgICAgIH0K
LSAgICA8L3NjcmlwdD4KKyAgICAgICAgdGFibGUxLmF0dHJpYnV0ZXNPZlJvd3MoKTsKKyAgICAg
ICAgdGFibGUyLmF0dHJpYnV0ZXNPZlJvd3MoKTsKKworICAgICAgICB0YWJsZTEuYXR0cmlidXRl
c09mSGVhZGVyKCk7CisgICAgICAgIHRhYmxlMi5hdHRyaWJ1dGVzT2ZIZWFkZXIoKTsKKworICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJUZXN0IHBhc3NlZFxuIjsKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10ZXh0LXJvbGUuaHRtbCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10ZXh0LXJvbGUuaHRtbAppbmRleCBlMzlh
N2E2M2ZkNmEuLjU4Y2I2OTA5ZTY0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLXRleHQtcm9sZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXJpYS10ZXh0LXJvbGUuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJi
b2R5Ij4KQEAgLTE3LDIzICsxNywyNiBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCB5b3UgY2FuIHNldCBhbiBBUklBIHRleHQgcm9sZSBhbmQgdGhhdCBp
dCB3aWxsIG5vdCBoYXZlIGNoaWxkcmVuIHRocm91Z2ggaGl0IHRlc3RpbmciKTsKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoYXQgeW91IGNhbiBzZXQgYW4gQVJJQSB0ZXh0IHJvbGUgYW5kIHRo
YXQgaXQgd2lsbCBub3QgaGF2ZSBjaGlsZHJlbiB0aHJvdWdoIGhpdCB0ZXN0aW5nIik7CiAKLSAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwog
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0cm9sZSIpLmZvY3VzKCk7Ci0g
ICAgICAgIHZhciB0ZXh0cm9sZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgIHZhciB0ZXh0cm9sZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dHJvbGUiKTsKKyAgICB2YXIgeCwgeTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZSgidGV4dHJvbGUucm9sZSIsICJwbGF0Zm9y
bVJvbGVGb3JTdGF0aWNUZXh0KHRleHRyb2xlKSIpOwogICAgICAgICBzaG91bGRCZSgidGV4dHJv
bGUuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGFsbCBhdCBvbmNlJyIpOwogCiAgICAgICAgIC8v
IG5vdyBjaGVjayB0aGUgaGl0LXRlc3RpbmcKLSAgICAgICAgdmFyIHggPSB0ZXh0cm9sZS5jbGlj
a1BvaW50WDsKLSAgICAgICAgdmFyIHkgPSB0ZXh0cm9sZS5jbGlja1BvaW50WTsKKyAgICAgICAg
eCA9IHRleHRyb2xlLmNsaWNrUG9pbnRYOworICAgICAgICB5ID0gdGV4dHJvbGUuY2xpY2tQb2lu
dFk7CiAgICAgICAgIHNob3VsZEJlKCJ0ZXh0cm9sZS5lbGVtZW50QXRQb2ludCh4LCB5KS5pc0Vx
dWFsKHRleHRyb2xlKSIsICJ0cnVlIik7Ci0gICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9LCAwKTsKK30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWFjY2Vzc2liaWxpdHlub2Rlb2JqZWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1hY2Nlc3NpYmlsaXR5bm9k
ZW9iamVjdC5odG1sCmluZGV4IGRjZGJiYjgyZTY0ZC4uZTBmMTMyNTU3MGY0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1hY2Nlc3NpYmlsaXR5bm9kZW9iamVj
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWFjY2Vzc2liaWxp
dHlub2Rlb2JqZWN0Lmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRNTD4KIDxodG1s
PgogPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Njcmlw
dD4KIAogPGRpdiBpZD0ibXlDb250YWluZXIiIHRhYmluZGV4PSItMSI+CiAgIDxhIGhyZWY9IiMi
Pkxpbms8L2E+CkBAIC0zMiw3ICszMyw3IEBACiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdHMgYXJlIGNyZWF0ZWQgZm9yIGVsZW1l
bnRzIGluIGEgY2FudmFzIHN1YnRyZWUuIik7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cudGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiAgICAgZnVu
Y3Rpb24gYXBwZW5kRm9jdXNhYmxlRGVzY2VuZGFudHMoYXhPYmplY3QsIGF4Rm9jdXNhYmxlTGlz
dCkgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF4T2JqZWN0LmNoaWxkcmVuQ291bnQ7
IGkrKykgewpAQCAtNDMsMzEgKzQ0LDI3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIHZh
ciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlDb250YWluZXIiKTsKLSAg
ICBjb250YWluZXIuZm9jdXMoKTsKLSAgICB2YXIgYXhDb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLQotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibXlDYW52YXMiKTsKLSAgICBjYW52YXMuZm9jdXMoKTsKLSAgICB2YXIg
YXhDYW52YXMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLQorICAg
IHZhciBheENvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgibXlDb250YWluZXIiKTsKKyAgICB2YXIgYXhDYW52YXMgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm15Q2FudmFzIik7CiAgICAgdmFyIGF4
UmVuZGVyT2JqZWN0cyA9IFtdOwogICAgIHZhciBheE5vZGVPYmplY3RzID0gW107CisgICAgdmFy
IGksIGF4UmVuZGVyT2JqZWN0LCBheE5vZGVPYmplY3Q7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgYXBwZW5kRm9jdXNhYmxlRGVzY2VuZGFudHMoYXhDb250YWluZXIsIGF4
UmVuZGVyT2JqZWN0cyk7CisgICAgICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4Q2Fu
dmFzLCBheE5vZGVPYmplY3RzKTsKIAotICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4
Q29udGFpbmVyLCBheFJlbmRlck9iamVjdHMpOwotICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRh
bnRzKGF4Q2FudmFzLCBheE5vZGVPYmplY3RzKTsKLQotICAgIHNob3VsZEJlKCJheFJlbmRlck9i
amVjdHMubGVuZ3RoIiwgImF4Tm9kZU9iamVjdHMubGVuZ3RoIik7CisgICAgICAgIHNob3VsZEJl
KCJheFJlbmRlck9iamVjdHMubGVuZ3RoIiwgImF4Tm9kZU9iamVjdHMubGVuZ3RoIik7CiAKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGF4UmVuZGVyT2JqZWN0cy5sZW5ndGg7IGkrKykgewotICAg
ICAgICB2YXIgYXhSZW5kZXJPYmplY3QgPSBheFJlbmRlck9iamVjdHNbaV07Ci0gICAgICAgIHZh
ciBheE5vZGVPYmplY3QgPSBheE5vZGVPYmplY3RzW2ldOwotICAgICAgICBzaG91bGRCZSgiaSA9
PSAiICsgaSArICI7IGF4UmVuZGVyT2JqZWN0LnJvbGUgPT0gYXhOb2RlT2JqZWN0LnJvbGUiLCAi
dHJ1ZSIpOwotICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGF4UmVuZGVyT2JqZWN0cy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYXhSZW5kZXJPYmplY3QgPSBheFJlbmRlck9iamVj
dHNbaV07CisgICAgICAgICAgICBheE5vZGVPYmplY3QgPSBheE5vZGVPYmplY3RzW2ldOworICAg
ICAgICAgICAgc2hvdWxkQmUoImkgPT0gIiArIGkgKyAiOyBheFJlbmRlck9iamVjdC5yb2xlID09
IGF4Tm9kZU9iamVjdC5yb2xlIiwgInRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9LCAwKTsKIH0KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWRlc2NyaXB0aW9uLWFu
ZC1yb2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1kZXNjcmlwdGlv
bi1hbmQtcm9sZS5odG1sCmluZGV4IDg3Y2IxNTlmNDUzNS4uZThkZjg2NTI1MDg2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1kZXNjcmlwdGlvbi1hbmQtcm9s
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWRlc2NyaXB0aW9u
LWFuZC1yb2xlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgSFRNTD4KIDxodG1sPgog
PGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4K
IAogPHN0eWxlPmNhbnZhcyB7IGRpc3BsYXk6IGlubGluZTsgYm9yZGVyOiAxcHggc29saWQgIzAw
MDsgfTwvc3R5bGU+CkBAIC0xNCwyNCArMTQsMjYgQEAKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
bWFrZXMgc3VyZSB0aGF0IGEgY2FudmFzIHdpdGggYW5kIHdpdGhvdXQgZmFsbGJhY2sgY29udGVu
dCBlYWNoIGhhcyB0aGUgcmlnaHQgcm9sZSBhbmQgZGVzY3JpcHRpb24uIikKIAogaWYgKHdpbmRv
dy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgIHdp
bmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CiAKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuZm9jdXMo
KTsKLSAgICB2YXIgYXhDb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKKyAgICB2YXIgYXhDb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOworICAgIHZhciBheENhbnZhczEsIGF4
Q2FudmFzMjsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgi
YXhDb250YWluZXIuY2hpbGRyZW5Db3VudCIsICIyIik7CiAKLSAgICBzaG91bGRCZSgiYXhDb250
YWluZXIuY2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgIGF4Q2FudmFzMSA9IGF4Q29udGFp
bmVyLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwbGF0
Zm9ybVZhbHVlRm9yVzNDTmFtZShheENhbnZhczEpIiwgIkNhbnZhcyBsYWJlbCIpOworICAgICAg
ICBkZWJ1ZygnQ2FudmFzIDEgcm9sZTogJyArIGF4Q2FudmFzMS5yb2xlKTsKIAotICAgIHZhciBh
eENhbnZhczEgPSBheENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJwbGF0Zm9ybVZhbHVlRm9yVzNDTmFtZShheENhbnZhczEpIiwgIkNhbnZhcyBs
YWJlbCIpOwotICAgIGRlYnVnKCdDYW52YXMgMSByb2xlOiAnICsgYXhDYW52YXMxLnJvbGUpOwor
ICAgICAgICBheENhbnZhczIgPSBheENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoYXhDYW52YXMy
KSIsICIiKTsKKyAgICAgICAgZGVidWcoJ0NhbnZhcyAyIHJvbGU6ICcgKyBheENhbnZhczIucm9s
ZSk7CiAKLSAgICB2YXIgYXhDYW52YXMyID0gYXhDb250YWluZXIuY2hpbGRBdEluZGV4KDEpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoYXhDYW52
YXMyKSIsICIiKTsKLSAgICBkZWJ1ZygnQ2FudmFzIDIgcm9sZTogJyArIGF4Q2FudmFzMi5yb2xl
KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7CiB9CiAKIDwvc2NyaXB0Pgog
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Nz
cy1jb250ZW50LWF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jc3Mt
Y29udGVudC1hdHRyaWJ1dGUuaHRtbAppbmRleCA2ZDQ0OGY4ODVjNWIuLjQ2MzlkOTEyYjIxYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jc3MtY29udGVudC1hdHRyaWJ1
dGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Nzcy1jb250ZW50LWF0dHJp
YnV0ZS5odG1sCkBAIC0xNyw3ICsxNyw4IEBACiAgICAgfQogPC9zY3JpcHQ+CiA8aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KIApAQCAtNDAsMTUgKzQxLDE4IEBACiAKIDxzY3JpcHQ+CiAK
LSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdoZW4gdGhlIGNvbnRlbnQgYXR0cmli
dXRlIGluIENTUyBpcyB1c2VkLCB0aGUgY29ycmVjdCB2YWx1ZXMgYXJlIHJldHVybmVkLiIpOwor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3aGVuIHRoZSBjb250ZW50IGF0dHJpYnV0ZSBp
biBDU1MgaXMgdXNlZCwgdGhlIGNvcnJlY3QgdmFsdWVzIGFyZSByZXR1cm5lZC4iKTsKIAotICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Ci0gICAgICAgICAgZHVtcEFjY2Vzc2li
aWxpdHlDaGlsZHJlbihhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudCwgMCk7
Ci0gICAgfQoraWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9k
eSIpLmZvY3VzKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZHVtcEFj
Y2Vzc2liaWxpdHlDaGlsZHJlbihhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dCwgMCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQogCiA8L3Njcmlw
dD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9kdXBsaWNhdGUtY2hpbGQtbm9kZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
ZHVwbGljYXRlLWNoaWxkLW5vZGVzLmh0bWwKaW5kZXggODllOTA4NWZhMjJlLi44MTk2NGU5Zjcw
YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHVwbGljYXRlLWNoaWxk
LW5vZGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kdXBsaWNhdGUtY2hp
bGQtbm9kZXMuaHRtbApAQCAtMSw3ICsxLDggQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vz
c2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogCkBAIC0xMSwx
NyArMTIsMjIgQEAKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCiA8c2NyaXB0PgotICAgIGRl
c2NyaXB0aW9uKCJDaGlsZCBub2RlcyBzaG91bGQgbm90IGJlIGR1cGxpY2F0ZWQgaW4gdGhlIGFj
Y2Vzc2liaWxpdHkgdHJlZS4iKTsKK2Rlc2NyaXB0aW9uKCJDaGlsZCBub2RlcyBzaG91bGQgbm90
IGJlIGR1cGxpY2F0ZWQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4iKTsKIAotICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5m
b2N1cygpOwotICAgICAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGRvY3VtZW50LmJvZHkuZm9jdXMo
KTsKKyAgICB2YXIgd2ViQXJlYTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAg
ICAgIGlmICh3ZWJBcmVhLmNoaWxkcmVuQ291bnQgPiAxKQogICAgICAgICAgICAgc2hvdWxkQmUo
IndlYkFyZWEuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwod2ViQXJlYS5jaGlsZEF0SW5kZXgoMSkp
IiwgImZhbHNlIik7Ci0gICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsK
K30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaGFuZy1pbi1pc2lnbm9yZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaGFuZy1pbi1pc2lnbm9yZWQuaHRtbAppbmRleCAzMTA0OTkzMTk4ZDMuLmYzY2Uz
M2VlNzdmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9oYW5nLWluLWlz
aWdub3JlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaGFuZy1pbi1pc2ln
bm9yZWQuaHRtbApAQCAtMSw3ICsxLDggQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2li
aWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIAogPGJvZHkgaWQ9ImJvZHkiPgpA
QCAtNzEsMTkgKzcyLDIyIEBACiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IHdlIHdpbGwgbm90IGhhbmcgd2hlbiB1c2luZyBhY2Nlc3NpYmlsaXR5IG9uIHRo
aXMgcGFnZS4gVGhlIGlkZWEgaXMgdGhhdCB0aGUgZWxlbWVudCB0cmVlIGlzIGRlZXAgZW5vdWdo
IHRvIGNhdXNlIGEgaGFuZyBqdXN0IGJ5IGFjY2Vzc2luZyBlbGVtZW50cyBpZiBzb21ldGhpbmcg
aXMgaW1wbGVtZW50ZWQgaW5jb3JyZWN0bHkuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IHdlIHdpbGwgbm90IGhhbmcgd2hlbiB1c2luZyBhY2Nlc3NpYmlsaXR5IG9uIHRoaXMgcGFn
ZS4gVGhlIGlkZWEgaXMgdGhhdCB0aGUgZWxlbWVudCB0cmVlIGlzIGRlZXAgZW5vdWdoIHRvIGNh
dXNlIGEgaGFuZyBqdXN0IGJ5IGFjY2Vzc2luZyBlbGVtZW50cyBpZiBzb21ldGhpbmcgaXMgaW1w
bGVtZW50ZWQgaW5jb3JyZWN0bHkuIik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9k
eSIpLmZvY3VzKCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIGJv
ZHkgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgCisK
ICAgICAgICAgLy8gaWYgc3VjY2Vzc2Z1bCwgd2Ugd2lsbCBOT1QgaGFuZyBhZnRlciB0aGlzIGNh
bGwKICAgICAgICAgYm9keS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOwotICAgIH0K
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFt
ZS1iYXN0YXJkaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUt
YmFzdGFyZGl6YXRpb24uaHRtbAppbmRleCA2NThhMzhkMGQ3NDQuLjZmZDE2ODI2YzMzOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1iYXN0YXJkaXphdGlv
bi5odG1sCkBAIC0xLDUgKzEsNiBAQAogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIApAQCAt
MTAsMjkgKzExLDMyIEBACiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IG1ha2VzIHN1cmUgdGhhdCB0aGUgQVggcGFyZW50IGNoYWluIGhpZXJhcmNoeSB3aXRoIGlmcmFt
ZXMgaXMgY29ycmVjdCIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQg
dGhlIEFYIHBhcmVudCBjaGFpbiBoaWVyYXJjaHkgd2l0aCBpZnJhbWVzIGlzIGNvcnJlY3QiKTsK
IAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CiAKLSAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIp
OwotICAgICAgICBib2R5LmZvY3VzKCk7Ci0gICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAgIGJvZHkuZm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICB3aW5kb3cud2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogCi0gICAgICAgIHZhciBncm91cDEgPSB3ZWJBcmVhLmNo
aWxkQXRJbmRleCgwKTsKLSAgICAgICAgdmFyIGlmcmFtZVNjcm9sbEFyZWEgPSBncm91cDEuY2hp
bGRBdEluZGV4KDApOwotICAgICAgICB2YXIgaWZyYW1lV2ViQXJlYSA9IGlmcmFtZVNjcm9sbEFy
ZWEuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAgICAgCi0gICAgICAgIHZhciBwYXJlbnRJZnJh
bWVXZWJBcmVhID0gaWZyYW1lV2ViQXJlYS5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIHZhciBw
YXJlbnRJZnJhbWVTY3JvbGxBcmVhID0gcGFyZW50SWZyYW1lV2ViQXJlYS5wYXJlbnRFbGVtZW50
KCk7Ci0gICAgICAgIHZhciBwYXJlbnRHcm91cDEgPSBwYXJlbnRJZnJhbWVTY3JvbGxBcmVhLnBh
cmVudEVsZW1lbnQoKTsKKyAgICAgICAgd2luZG93Lmdyb3VwMSA9IHdlYkFyZWEuY2hpbGRBdElu
ZGV4KDApOworICAgICAgICB3aW5kb3cuaWZyYW1lU2Nyb2xsQXJlYSA9IGdyb3VwMS5jaGlsZEF0
SW5kZXgoMCk7CisgICAgICAgIHdpbmRvdy5pZnJhbWVXZWJBcmVhID0gaWZyYW1lU2Nyb2xsQXJl
YS5jaGlsZEF0SW5kZXgoMCk7CisKKyAgICAgICAgd2luZG93LnBhcmVudElmcmFtZVdlYkFyZWEg
PSBpZnJhbWVXZWJBcmVhLnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgd2luZG93LnBhcmVudElm
cmFtZVNjcm9sbEFyZWEgPSBwYXJlbnRJZnJhbWVXZWJBcmVhLnBhcmVudEVsZW1lbnQoKTsKKyAg
ICAgICAgd2luZG93LnBhcmVudEdyb3VwMSA9IHBhcmVudElmcmFtZVNjcm9sbEFyZWEucGFyZW50
RWxlbWVudCgpOwogCiAgICAgICAgIHNob3VsZEJlKCJwYXJlbnRJZnJhbWVXZWJBcmVhLmlzRXF1
YWwoaWZyYW1lU2Nyb2xsQXJlYSkiLCAidHJ1ZSIpOwogICAgICAgICBzaG91bGRCZSgicGFyZW50
SWZyYW1lU2Nyb2xsQXJlYS5pc0VxdWFsKGdyb3VwMSkiLCAidHJ1ZSIpOwogICAgICAgICBzaG91
bGRCZSgicGFyZW50R3JvdXAxLmlzRXF1YWwod2ViQXJlYSkiLCAidHJ1ZSIpOwotICAgIH0KKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1z
cGFjZXItZWxlbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9p
Z25vcmUtc3BhY2VyLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCA3NDUzZDE3NDY3MDIuLmU3
YzM1MjUxNzljZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZ25vcmUt
c3BhY2VyLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2lnbm9yZS1zcGFjZXItZWxlbWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNiBAQAog
Rmlyc3QgU2Vjb25kIEFwcGxlIFlhaG9vCiBUZXN0IHBhc3NlZAorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKaW5kZXggZWRiYzg2YTBm
OTg5Li4wOGUwOTA4NmUwN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sCkBAIC0xLDM4ICsxLDM5IEBACiA8aHRtbD4K
LTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLTwvc2NyaXB0PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+
Ci0gCi0gICAgPCEtLSBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHNwYWNlciBlbGVtZW50cyBh
cmUgbm90IHJldHVybmVkIGFzIGVsZW1lbnRzLiBUaGVyZSBzaG91bGQgYmUgYXQgbW9zdCA0IGVs
ZW1lbnRzIHJldHVybmVkIC0tPgotIAotICAgPGI+Rmlyc3Q8L2I+Ci0gICA8Yj5TZWNvbmQ8L2I+
Ci0gICA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbSI+QXBwbGU8L2E+Ci0gICA8YSBocmVm
PSJodHRwOi8vd3d3LnlhaG9vLmNvbSI+WWFob288L2E+CiAKLSAgICAKLSAgICA8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPCEtLSBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHNwYWNlciBlbGVt
ZW50cyBhcmUgbm90IHJldHVybmVkIGFzIGVsZW1lbnRzLiBUaGVyZSBzaG91bGQgYmUgYXQgbW9z
dCA0IGVsZW1lbnRzIHJldHVybmVkIC0tPgorCis8Yj5GaXJzdDwvYj4KKzxiPlNlY29uZDwvYj4K
KzxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tIj5BcHBsZTwvYT4KKzxhIGhyZWY9Imh0dHA6
Ly93d3cueWFob28uY29tIj5ZYWhvbzwvYT4KIAotICAgICAKLSAgICA8c2NyaXB0PgotICAgICAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICB2YXIg
cmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworPGRpdiBpZD0icmVz
dWx0Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCi0gICAgICAgICAgICB2YXIg
Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAgICAgICAgICBib2R5
LmZvY3VzKCk7Ci0gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworPHNjcmlwdD4KK2lmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7
CisgICAgYm9keS5mb2N1cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgICAgIC8vIFRoZSBHdGsgYW5kIEVGTCBwb3J0cyBB
VHMgZXhwZWN0IHRoZSBib2xkIGlubGluZSB0ZXh0IHRvIG5vdCBoYXZlIGFjY2Vzc2libGUgb2Jq
ZWN0cy4KLSAgICAgICAgICAgIHZhciBleHBlY3RlZENvdW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIucGxhdGZvcm1OYW1lID09ICJhdGsiID8gMiA6IDQ7Ci0gICAgICAgICAgICBpZiAoY29u
dGFpbmVyLmNoaWxkcmVuQ291bnQgPT0gZXhwZWN0ZWRDb3VudCkgewotICAgICAgICAgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3QgcGFzc2VkXG4iOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRl
c3QgZmFpbGVkXG4iOwotICAgICAgICAgICAgfQorICAgICAgICAvLyBUaGUgTGludXggYmFzZWQg
cG9ydHMgQVRzIGV4cGVjdCB0aGUgYm9sZCBpbmxpbmUgdGV4dCB0byBub3QgaGF2ZSBhY2Nlc3Np
YmxlIG9iamVjdHMuCisgICAgICAgIHZhciBleHBlY3RlZENvdW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIucGxhdGZvcm1OYW1lID09ICJhdGsiID8gMiA6IDQ7CisgICAgICAgIGlmIChjb250
YWluZXIuY2hpbGRyZW5Db3VudCA9PSBleHBlY3RlZENvdW50KSB7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ICs9ICJUZXN0IHBhc3NlZFxu
IjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lclRleHQgKz0gIlRlc3QgZmFpbGVkXG4iOwogICAgICAgICB9Ci0gICAg
PC9zY3JpcHQ+CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2ltYWdlLW1hcDEuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFw
MS5odG1sCmluZGV4IGRjNTcwYzNjMWVkNi4uMjYxNWUxYzM1OTQwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDEuaHRtbApAQCAtMSwxMSArMSw4IEBACiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci08L3NjcmlwdD4KIDxib2R5IGlkPSJib2R5Ij4KICAgICAK
ICAgICA8IS0tIFRlc3QgaW1hZ2UgbWFwIC0tPgpAQCAtMjIsMjEgKzE5LDI0IEBACiA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KICAgICAgCiA8c2NyaXB0PgotICAgICAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gcmVhY2ggdGhlIGxpbmtzIHdpdGhpbiBhbiBpbWFnZSBt
YXAuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gcmVhY2ggdGhlIGxp
bmtzIHdpdGhpbiBhbiBpbWFnZSBtYXAuIik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImJvZHkiKS5mb2N1cygpOworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgICAgdmFyIGJvZHkg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgMzsgaysrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBi
b2R5LmNoaWxkQXRJbmRleChrKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiTGluayIgKyAoayAr
IDEpICsgIiByb2xlOiAiICsgbGluay5yb2xlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiTGlu
ayIgKyAoayArIDEpICsgIiB0aXRsZTogIiArIGxpbmsudGl0bGUpOwotICAgICAgICAgICAgICAg
IGRlYnVnKCJMaW5rIiArIChrICsgMSkgKyAiIGRlc2NyaXB0aW9uOiAiICsgbGluay5kZXNjcmlw
dGlvbiArICJcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQorICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICB2YXIgYm9keSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDM7IGsrKykgeworICAgICAgICAgICAg
dmFyIGxpbmsgPSBib2R5LmNoaWxkQXRJbmRleChrKTsKKyAgICAgICAgICAgIGRlYnVnKCJMaW5r
IiArIChrICsgMSkgKyAiIHJvbGU6ICIgKyBsaW5rLnJvbGUpOworICAgICAgICAgICAgZGVidWco
IkxpbmsiICsgKGsgKyAxKSArICIgdGl0bGU6ICIgKyBsaW5rLnRpdGxlKTsKKyAgICAgICAgICAg
IGRlYnVnKCJMaW5rIiArIChrICsgMSkgKyAiIGRlc2NyaXB0aW9uOiAiICsgbGluay5kZXNjcmlw
dGlvbiArICJcbiIpOworICAgICAgICB9CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0s
IDApOworfQogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaW1hZ2Utd2l0aC1hbHQtYW5kLW1hcC5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pbWFnZS13aXRoLWFsdC1hbmQtbWFwLmh0bWwKaW5kZXggYWE1YWYy
YzhlYWQ4Li41YjAyOGNkYTViMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvaW1hZ2Utd2l0aC1hbHQtYW5kLW1hcC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW1hZ2Utd2l0aC1hbHQtYW5kLW1hcC5odG1sCkBAIC0xNiw3ICsxNiw4IEBACiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9keSI+CiAg
IDxpbWcgc3JjPSJteWltZy5wbmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB1c2VtYXA9IiNt
eW1hcCIgYWx0PSJmb28gYmFyIGJheiIgLz4KQEAgLTI5LDEyICszMCwxNiBAQAogPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGhpZXJhcmNoeSBvZiBhbiBpbWFnZSB3aXRoIGFs
dCB0ZXh0IGFuZCBhIG1hcC4iKTsKLSAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBoaWVyYXJjaHkgb2YgYW4gaW1hZ2Ugd2l0aCBh
bHQgdGV4dCBhbmQgYSBtYXAuIik7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJvZHkiKS5mb2N1cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CiAgICAgICAgIGR1bXBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQsIDApOwotICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfSwgMCk7Cit9CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25lZC1lbXB0eS5o
dG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWctYWx0LWF0dHJpYnV0ZS11bmFzc2ln
bmVkLWVtcHR5Lmh0bWwKaW5kZXggNmFhNzRjNGM2ZDNiLi44MjA1YjVkODc5Y2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRyaWJ1dGUtdW5hc3NpZ25l
ZC1lbXB0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW1nLWFsdC1hdHRy
aWJ1dGUtdW5hc3NpZ25lZC1lbXB0eS5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFET0NUWVBFIGh0
bWwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiAgICAgPGhlYWQ+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHkgaWQ9ImJvZHkiPgpAQCAtMjAs
MjMgKzIwLDI2IEBACiAgICAgICAgICAgICAgICAgJ1RoaXMgdGVzdHMgdGhhdCBpbWcgZWxlbWVu
dHMgd2l0aCBhbiBhbHQgYXR0cmlidXRlIGFuZCBubyBhc3NpZ25lZCB2YWx1ZSwgb3IgYW4gZW1w
dHkgYWx0IHZhbHVlLCBhcmUgaWdub3JlZC4nLAogICAgICAgICAgICAgKTsKICAgICAgICAgICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2VzJykuZm9jdXMoKTsKLSAgICAgICAgICAgICAg
ICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKLSAgICAgICAgICAgICAgICAvLyB0aGVyZSBhcmUgNCBpbWFnZXMsIGJ1dCBvbmUgaGFzIGFu
IGFsdCBhdHRyaWJ1dGUgdGhhdCBpcyB1bmFzc2lnbmVkIGFuZCBhbm90aGVyIGhhcyBhbiBlbXB0
eSBhbHQsIHNvIGl0IHNob3VsZCBiZQotICAgICAgICAgICAgICAgIC8vIGlnbm9yZWQuIGFzIGEg
cmVzdWx0LCB0aGUgaW1hZ2UgY291bnQgaXMgMi4KLSAgICAgICAgICAgICAgICBzaG91bGRCZSgn
aW1hZ2VzR3JvdXAuY2hpbGRyZW5Db3VudCcsICcyJyk7Ci0gICAgICAgICAgICAgICAgLy8gbWFr
ZSBzdXJlIGFsdCB0ZXh0IGlzIGJlaW5nIHJlYWQgYmVmb3JlIGFuZCBhZnRlcgotICAgICAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygKLSAgICAgICAgICAgICAgICAgICAgJ3BsYXRm
b3JtVmFsdWVGb3JXM0NOYW1lKGltYWdlc0dyb3VwLmNoaWxkQXRJbmRleCgwKSknLAotICAgICAg
ICAgICAgICAgICAgICAnY2FrZTAnLAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1W
YWx1ZUZvclczQ05hbWUoaW1hZ2VzR3JvdXAuY2hpbGRBdEluZGV4KDEpKScsCi0gICAgICAgICAg
ICAgICAgICAgICdjYWtlMicsCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgICAgICAgICB2YXIgaW1hZ2Vz
R3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlt
YWdlcyIpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIHRoZXJlIGFyZSA0IGltYWdlcywgYnV0IG9uZSBoYXMgYW4gYWx0IGF0
dHJpYnV0ZSB0aGF0IGlzIHVuYXNzaWduZWQgYW5kIGFub3RoZXIgaGFzIGFuIGVtcHR5IGFsdCwg
c28gaXQgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZWQuIGFzIGEgcmVz
dWx0LCB0aGUgaW1hZ2UgY291bnQgaXMgMi4KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
J2ltYWdlc0dyb3VwLmNoaWxkcmVuQ291bnQnLCAnMicpOworICAgICAgICAgICAgICAgICAgICAv
LyBtYWtlIHN1cmUgYWx0IHRleHQgaXMgYmVpbmcgcmVhZCBiZWZvcmUgYW5kIGFmdGVyCisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdwbGF0Zm9ybVZhbHVlRm9yVzNDTmFtZShpbWFnZXNHcm91cC5jaGlsZEF0SW5kZXgo
MCkpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdjYWtlMCcsCisgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZhbHVlRm9yVzNDTmFtZShpbWFnZXNHcm91cC5j
aGlsZEF0SW5kZXgoMSkpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdjYWtlMicsCisgICAg
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgICAgIH0sIDApOwogICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4K
IAotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9pbWctYWx0LXRhZy1vbmx5LXdoaXRlc3BhY2UuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNlLmh0bWwKaW5kZXggNzg5
MTA2MTlhYzVjLi43MDExNDJkY2ZlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pbWctYWx0LXRhZy1vbmx5LXdoaXRlc3BhY2UuaHRtbApAQCAtMSw3ICsx
LDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KQEAgLTE3LDE4ICsxNywyMCBAQAogCiA8
c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBpbWFnZXMgd2l0aCBh
bHQgdGFncyB0aGF0IG9ubHkgaGF2ZSB3aGl0ZSBzcGFjZSBhcmUgaWdub3JlZC4iKTsKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaW1hZ2VzIHdpdGggYWx0IHRhZ3MgdGhhdCBvbmx5IGhh
dmUgd2hpdGUgc3BhY2UgYXJlIGlnbm9yZWQuIik7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbWFnZXMiKS5mb2N1cygpOwotICAgICAgICB2YXIgaW1hZ2VzR3JvdXAg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB2YXIgaW1hZ2Vz
R3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlt
YWdlcyIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCJp
bWFnZXNHcm91cC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJwbGF0Zm9ybVZhbHVlRm9yVzNDTmFtZShpbWFnZXNHcm91cC5jaGlsZEF0SW5kZXgo
MCkpIiwgIiAgIEltYWdlICIpOwotICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fSwgMCk7Cit9CiAKIDwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltZy1hcmlhLWJ1dHRvbi1hbHQtdGFnLmh0bWwgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ltZy1hcmlhLWJ1dHRvbi1hbHQtdGFnLmh0bWwKaW5kZXgg
NGFkM2E1NWM4MmVjLi4wNDQzODI1Y2Q2YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaW1nLWFyaWEtYnV0dG9uLWFsdC10YWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2ltZy1hcmlhLWJ1dHRvbi1hbHQtdGFnLmh0bWwKQEAgLTEsMzEgKzEsMjgg
QEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGltZyBpZD0naW1hZ2Un
IHNyYz0icmVzb3VyY2VzL2Nha2UucG5nIiByb2xlPSJidXR0b24iIGFsdD0iYWx0ZXJuYXRlIiB0
aXRsZT0idGl0bGUiPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCBhIGltZyBhY3RpbmcgYXMgYW4gYXJpYSBidXR0b24gc3RpbGwgcmV0dXJucyBp
dHMgYWx0IHRhZyBhcyB0aGUgYWNjZXNzaWJsZSBuYW1lIik7CisKK2lmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICB2YXIgaW1nVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJpbWFnZSIpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoaW1nVUlF
bGVtZW50KSIsICJhbHRlcm5hdGUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwg
MCk7Cit9CiA8L3NjcmlwdD4KLTxib2R5IGlkPSJib2R5Ij4KLSAKLSAgICA8aW1nIGlkPSdpbWFn
ZScgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIHJvbGU9ImJ1dHRvbiIgYWx0PSJhbHRlcm5hdGUi
IHRpdGxlPSJ0aXRsZSI+Ci0gICAgCi0gICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci0gICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgIAotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgaW1nIGFjdGluZyBhcyBhbiBh
cmlhIGJ1dHRvbiBzdGlsbCByZXR1cm5zIGl0cyBhbHQgdGFnIGFzIHRoZSBhY2Nlc3NpYmxlIG5h
bWUiKTsKLSAKLSAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KTsKIAotICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9k
eSIpLmZvY3VzKCk7Ci0gICAgICAgICAgICB2YXIgaW1nVUlFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgw
KTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclcz
Q05hbWUoaW1nVUlFbGVtZW50KSIsICJhbHRlcm5hdGUiKTsKLSAgICAgICAgfQotICAgIDwvc2Ny
aXB0PgotICAgIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pbWctZmFsbHNiYWNrLXRvLXRpdGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2ltZy1mYWxsc2JhY2stdG8tdGl0bGUuaHRtbAppbmRleCBmMzEzOGM1MDQyZjEuLjhm
Njk1NTRhMDc0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWctZmFs
bHNiYWNrLXRvLXRpdGxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbWct
ZmFsbHNiYWNrLXRvLXRpdGxlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBp
ZD0iYm9keSI+CkBAIC0xOSwxMyArMTksMTMgQEAKIAogPHNjcmlwdD4KIAotICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoYXQgaW1hZ2VzIHdpbGwgZmFsbGJhY2sgdG8gdXNpbmcgdGhlIHRp
dGxlIGF0dHJpYnV0ZSBpZiBubyBvdGhlciBkZXNjcmlwdGl2ZSB0ZXh0IGlzIHByZXNlbnQuIik7
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGltYWdlcyB3aWxsIGZhbGxiYWNrIHRvIHVz
aW5nIHRoZSB0aXRsZSBhdHRyaWJ1dGUgaWYgbm8gb3RoZXIgZGVzY3JpcHRpdmUgdGV4dCBpcyBw
cmVzZW50LiIpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewot
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZXMiKS5mb2N1cygpOwotICAg
ICAgICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CiAKKyAgICB2YXIgaW1hZ2VzR3JvdXAgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImltYWdlcyIpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIEZpcnN0IGltYWdlIHNob3VsZCBoYXZlIGEg
ZGVzY3JpcHRpb24gb2YgInRlc3QxIiBiZWNhdXNlIHRoZXJlIGlzIG5vIGFsdCB0YWcgKGl0IHNo
b3VsZCB1c2UgdGhlIHRpdGxlKS4KICAgICAgICAgLy8gVGhlIHRpdGxlIHNob3VsZCBOT1QgYmUg
aW4gdGhlIGhlbHAgdGV4dC4KICAgICAgICAgdmFyIGltYWdlMSA9IGltYWdlc0dyb3VwLmNoaWxk
QXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CkBAIC01MSw3ICs1MSw5IEBACiAgICAgICAgIC8v
IFZlcmlmeSB0aGF0IHRoZSBmaXJzdCBpbWFnZSAod2l0aCBhbiBlbXB0eSBhbHQgdGFnKSBpcyBp
Z25vcmVkCiAgICAgICAgIC8vIGJ5IGNoZWNraW5nIHRoZSBjaGlsZHJlbiBjb3VudCBvZiB0aGUg
Z3JvdXAgY29udGFpbmluZyB0aGUgbmF0aXZlIGltYWdlcyA9PSAyLgogICAgICAgICBzaG91bGRC
ZSgiaW1hZ2VzR3JvdXAuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQiLCAiMiIpOwotICAg
IH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0Pgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lucHV0LWltYWdlLWFsdC5o
dG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbnB1dC1pbWFnZS1hbHQuaHRtbAppbmRl
eCBjNmMxOWUyMDU4YTEuLmJkNmEwZjJlMDNkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9pbnB1dC1pbWFnZS1hbHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lucHV0LWltYWdlLWFsdC5odG1sCkBAIC0xLDI3ICsxLDI4IEBACiA8aHRtbD4KIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5IGlkPSJib2R5Ij4KIAotICAgIDxpbnB1dCB0eXBlPSJpbWFn
ZSIgYWx0PSJTdWJtaXQiIHNyYz0icmVzb3VyY2VzL2Nha2UucG5nIiB3aWR0aD0xMDAgaGVpZ2h0
PTEwMCBpZD0iaW1hZ2UxIj4KLSAgICAKLSAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLSAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICAgCi0gICAgPHNjcmlwdD4KLSAgICAgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYW4gaW5wdXQgaW1hZ2UgcmV0dXJucyBp
dHMgYWx0IHRhZyBhcyB0aGUgYWNjZXNzaWJsZSBuYW1lIik7Cis8aW5wdXQgdHlwZT0iaW1hZ2Ui
IGFsdD0iU3VibWl0IiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgd2lkdGg9MTAwIGhlaWdodD0x
MDAgaWQ9ImltYWdlMSI+CiAKLSAgICAgICAgICAgIHZhciBpbWFnZTEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaW1hZ2UxIikuZm9jdXMoKTsKLSAgICAgICAgICAgIHZhciBpbWcgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygicGxhdGZvcm1WYWx1ZUZvclczQ05hbWUoaW1nKSIsICJTdWJtaXQiKTsK
LSAgICAgICAgfQotICAgIDwvc2NyaXB0PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLTwvYm9keT4g
CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYW4gaW5wdXQgaW1h
Z2UgcmV0dXJucyBpdHMgYWx0IHRhZyBhcyB0aGUgYWNjZXNzaWJsZSBuYW1lIik7CisgICAgdmFy
IGltZyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiaW1h
Z2UxIik7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJwbGF0Zm9ybVZhbHVlRm9yVzNDTmFtZShpbWcpIiwgIlN1Ym1pdCIpOworICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorCis8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xhYmVsLWVs
ZW1lbnQtcHJlc3MuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGFiZWwtZWxlbWVu
dC1wcmVzcy5odG1sCmluZGV4IGI2ZGEwN2Q3ZDU5OS4uMTcyYTU4MWEyNDI0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xhYmVsLWVsZW1lbnQtcHJlc3MuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xhYmVsLWVsZW1lbnQtcHJlc3MuaHRtbApAQCAt
MTcsMTIgKzE3LDEyIEBACiAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKICAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAgICAgICAgdmFyIGJvZHkgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgdmFyIGxhYmVsID0gYm9keS5jaGls
ZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOwotICAgIAotICAgICAgICAvLyBpZiBzdWNjZXNz
ZnVsLCBwZXJmb3JtRXZlbnQoKSB3aWxsIGJlIGNhbGxlZCBhbmQgd2UnbGwgc3VjY2Vzc2Z1bGx5
IHBhcnNlLiAgICAgICAgCi0gICAgICAgIGxhYmVsLnByZXNzKCk7CisgICAgICAgIHZhciBsYWJl
bCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibGFiZWxF
bGVtZW50Iik7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IC8vIGlmIHN1Y2Nlc3NmdWwsIHBlcmZvcm1FdmVudCgpIHdpbGwgYmUgY2FsbGVkIGFuZCB3ZSds
bCBzdWNjZXNzZnVsbHkgcGFyc2UuCisgICAgICAgICAgICBsYWJlbC5wcmVzcygpOworICAgICAg
ICB9LCAwKTsKICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CmluZGV4IDA3MjAx
YzZhMzVlYy4uZjZkYWFkZTJhMmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2xhbmd1YWdlLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CkBAIC01LDMgKzUsNyBA
QCBlbHZpc2gKIAogYW5kIG1vcmUgZW5nbGlzaAogUGFzc2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9sYW5ndWFnZS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbGFuZ3VhZ2UtYXR0cmlidXRlLmh0bWwKaW5kZXggNTZmZDM2MTNhOGJkLi44NDYy
ZWJhOThlZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGFuZ3VhZ2Ut
YXR0cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9sYW5ndWFnZS1h
dHRyaWJ1dGUuaHRtbApAQCAtMSwxMCArMSw3IEBACiA8aHRtbD4KIDxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQog
ICAgIC8vIFRoZSBNYWMgcG9ydCBleHBvc2VzIHN0YXRpYyB0ZXh0IG9iamVjdHMgYXMgYW4gYWNj
ZXNzaWJsZSBjaGlsZCBvZiBhbiBlbGVtZW50IHdpdGggdGV4dC4KLSAgICAvLyBUaGUgQXRrIHBv
cnQgZm9sZHMgc3RhdGljIHRleHQgb2JqZWN0cyBpbnRvIHRoZSBwYXJlbnQgZWxlbWVudC4KKyAg
ICAvLyBUaGUgTGludXggYmFzZWQgcG9ydHMgZm9sZCBzdGF0aWMgdGV4dCBvYmplY3RzIGludG8g
dGhlIHBhcmVudCBlbGVtZW50LgogICAgIGZ1bmN0aW9uIGdldFRleHRDaGlsZChhY2Nlc3NpYmls
aXR5T2JqZWN0KSB7CiAgICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0LmNoaWxkcmVuQ291
bnQpCiAgICAgICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eU9iamVjdC5jaGlsZEF0SW5kZXgo
MCk7CkBAIC0xMyw0MSArMTAsNDUgQEAKICAgICB9CiA8L3NjcmlwdD4KIDxoZWFkPgotPG1ldGEg
aHR0cC1lcXVpdj0iY29udGVudC1sYW5ndWFnZSIgY29udGVudD0iZW4tZ2IiPiAKKzxtZXRhIGh0
dHAtZXF1aXY9ImNvbnRlbnQtbGFuZ3VhZ2UiIGNvbnRlbnQ9ImVuLWdiIj4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxib2R5IGlkPSJib2R5
Ij4KIAotICAgIDwhLS0gVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBnZXQgdGhlIGNvbnRlbnQg
bGFuZ3VhZ2UgZm9yIHZhcmlvdXMgZWxlbWVudHMgdXNpbmcgdmFyaW91cyB0ZWNobmlxdWVzIC0t
PgotCi0gICAgY2hlZXJpbwotICAgIAotICAgIDxwIGxhbmc9ImRlIj5nZXJtYW5uaXNoPC9wPgot
ICAgIDxwIGxhbmc9ImphIj5lbHZpc2g8L3A+Ci0KLSAgICBhbmQgbW9yZSBlbmdsaXNoCi0KLSAg
ICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotICAgIAotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKLSAgICAgICAgICAgIGJvZHkuZm9j
dXMoKTsKLSAgICAgICAgICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpOwotCi0gICAgICAgICAgICB2YXIgdGV4dDEgPSBnZXRUZXh0Q2hp
bGQod2ViQXJlYS5jaGlsZEF0SW5kZXgoMCkpOwotICAgICAgICAgICAgdmFyIHRleHQyID0gZ2V0
VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpKTsKLSAgICAgICAgICAgIHZhciB0ZXh0
MyA9IGdldFRleHRDaGlsZCh3ZWJBcmVhLmNoaWxkQXRJbmRleCgyKSk7Ci0gICAgICAgICAgICB2
YXIgdGV4dDQgPSBnZXRUZXh0Q2hpbGQod2ViQXJlYS5jaGlsZEF0SW5kZXgoMykpOwotCi0gICAg
ICAgICAgICBpZiAoIHdlYkFyZWEubGFuZ3VhZ2UgPT0gIkFYTGFuZ3VhZ2U6IGVuLWdiIiAmJiB0
ZXh0MS5sYW5ndWFnZSA9PSAiQVhMYW5ndWFnZTogZW4tZ2IiICYmIAotICAgICAgICAgICAgICAg
ICB0ZXh0Mi5sYW5ndWFnZSA9PSAiQVhMYW5ndWFnZTogZGUiICYmIHRleHQzLmxhbmd1YWdlID09
ICJBWExhbmd1YWdlOiBqYSIgJiYgCi0gICAgICAgICAgICAgICAgIHRleHQ0Lmxhbmd1YWdlID09
ICJBWExhbmd1YWdlOiBlbi1nYiIpIHsKLSAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
PSAiUGFzc2VkIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeyAKLSAgICAgICAg
ICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSAiRmFpbGVkLiBDb3VsZCBub3QgZmluZCBBWExhbmd1
YWdlczogIiArIHdlYkFyZWEubGFuZ3VhZ2UgKyAiIC0gIiArIHRleHQxLmxhbmd1YWdlOwotICAg
ICAgICAgICAgfQorPCEtLSBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIGdldCB0aGUgY29udGVu
dCBsYW5ndWFnZSBmb3IgdmFyaW91cyBlbGVtZW50cyB1c2luZyB2YXJpb3VzIHRlY2huaXF1ZXMg
LS0+CisKK2NoZWVyaW8KKworPHAgbGFuZz0iZGUiPmdlcm1hbm5pc2g8L3A+Cis8cCBsYW5nPSJq
YSI+ZWx2aXNoPC9wPgorCithbmQgbW9yZSBlbmdsaXNoCisKKzxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAg
Ym9keS5mb2N1cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB3
ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAg
ICAgdmFyIHRleHQxID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDApKTsKKyAg
ICAgICAgdmFyIHRleHQyID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpKTsK
KyAgICAgICAgdmFyIHRleHQzID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4KDIp
KTsKKyAgICAgICAgdmFyIHRleHQ0ID0gZ2V0VGV4dENoaWxkKHdlYkFyZWEuY2hpbGRBdEluZGV4
KDMpKTsKKworICAgICAgICBpZiAod2ViQXJlYS5sYW5ndWFnZSA9PSAiQVhMYW5ndWFnZTogZW4t
Z2IiICYmIHRleHQxLmxhbmd1YWdlID09ICJBWExhbmd1YWdlOiBlbi1nYiIgJiYgdGV4dDIubGFu
Z3VhZ2UgPT0gIkFYTGFuZ3VhZ2U6IGRlIiAmJiB0ZXh0My5sYW5ndWFnZSA9PSAiQVhMYW5ndWFn
ZTogamEiICYmIHRleHQ0Lmxhbmd1YWdlID09ICJBWExhbmd1YWdlOiBlbi1nYiIpIHsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAiUGFz
c2VkIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAiRmFpbGVkLiBDb3VsZCBub3QgZmluZCBBWExhbmd1
YWdlczogIiArIHdlYkFyZWEubGFuZ3VhZ2UgKyAiIC0gIiArIHRleHQxLmxhbmd1YWdlOwogICAg
ICAgICB9Ci0gICAgPC9zY3JpcHQ+CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDAp
OworfQorPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2xpc3Rib3gtZW5hYmxlZC1zdGF0ZXMuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbGlzdGJveC1lbmFibGVkLXN0YXRlcy5odG1sCmluZGV4IGQxZTAxOGVh
MWRlZC4uOGYwODJiMDVjMGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2xpc3Rib3gtZW5hYmxlZC1zdGF0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2xpc3Rib3gtZW5hYmxlZC1zdGF0ZXMuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDxodG1sPgog
PGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiAKIDxib2R5IGlkPSJib2R5Ij4KQEAgLTIwLDIyICsyMSwyMyBAQAogPHAg
aWQ9ImNvbnNvbGUiPjwvcD4KIAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJub3REUlQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RFbGVt
ZW50IikuZm9jdXMoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm90RFJUIikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNlbGVjdEVsZW1lbnQiKS5mb2N1cygpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuaXNFbmFibGVkJyk7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgnYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmlzRW5hYmxlZCcpOwogICAgICAg
ICBzaG91bGRCZVRydWUoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNo
aWxkQXRJbmRleCgxKS5pc0VuYWJsZWQnKTsKICAgICAgICAgc2hvdWxkQmVGYWxzZSgnYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDIpLmlzRW5hYmxl
ZCcpOwogICAgICAgICBzaG91bGRCZUZhbHNlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMykuaXNFbmFibGVkJyk7CiAgICAgICAgIHNob3VsZEJl
VHJ1ZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4
KDQpLmlzRW5hYmxlZCcpOwotICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwg
MCk7Cit9CiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9saXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2xpc3RzLWV4cGVjdGVkLnR4dAppbmRleCBmZTE2NjdiYmFiM2YuLjE4MzliNWE3M2M1
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0cy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0cy1leHBlY3RlZC50eHQKQEAg
LTQyNiw0ICs0MjYsNyBAQCBBWEVsZW1lbnRCdXN5OiAwCiAtLS0tLS0tLS0tLS0KIAogCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9saXN0cy5odG1sCmluZGV4IDFjODk1MWQzZDY1Yy4uZjQ3NDcwZTAzOWQ1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3RzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0cy5odG1sCkBAIC0xLDkgKzEsOSBAQAogPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLTwvc2NyaXB0PgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
CiA8Ym9keSBpZD0iYm9keSI+CiAgICAgCiAgICAgPHVsPgpAQCAtMjYsMjcgKzI2LDM0IEBACiAg
ICAgPC9kbD4KIAogICAgIDxCUj48QlI+PEJSPjxCUj4KLSAgICA8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PiAgICAKKyAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgIDxzY3JpcHQ+Ci0g
ICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
IHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFy
IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAgICBib2R5
RWxlbWVudC5mb2N1cygpOwogCi0gICAgICAgICAgICB2YXIgYm9keUVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOwotICAgICAgICAgICAgYm9keUVsZW1lbnQuZm9jdXMo
KTsKLSAgICAgICAgICAgIGJvZHkgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gYm9keS5hdHRyaWJ1dGVzT2ZD
aGlsZHJlbigpICsgIlxuXG4iOyAKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgewor
ICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwog
Ci0gICAgICAgICAgICB2YXIgb2xMaXN0ID0gYm9keS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IG9sTGlzdC5hdHRyaWJ1dGVzT2ZDaGlsZHJlbigpICsg
IlxuXG4iOyAKKyAgICAgICAgdmFyIGJvZHkgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSBib2R5LmF0dHJpYnV0ZXNP
ZkNoaWxkcmVuKCkgKyAiXG5cbiI7CiAKLSAgICAgICAgICAgIHZhciB1bExpc3QgPSBib2R5LmNo
aWxkQXRJbmRleCgxKTsKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gdWxMaXN0LmF0
dHJpYnV0ZXNPZkNoaWxkcmVuKCkgKyAiXG5cbiI7IAorICAgICAgICB2YXIgb2xMaXN0ID0gYm9k
eS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gb2xMaXN0LmF0
dHJpYnV0ZXNPZkNoaWxkcmVuKCkgKyAiXG5cbiI7CiAKLSAgICAgICAgICAgIHZhciBkbExpc3Qg
PSBib2R5LmNoaWxkQXRJbmRleCgyKTsKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0g
ZGxMaXN0LmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkgKyAiXG5cbiI7IAotICAgICAgICAgICAgCi0g
ICAgICAgIH0KLSAgICA8L3NjcmlwdD4KKyAgICAgICAgdmFyIHVsTGlzdCA9IGJvZHkuY2hpbGRB
dEluZGV4KDEpOworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IHVsTGlzdC5hdHRyaWJ1dGVz
T2ZDaGlsZHJlbigpICsgIlxuXG4iOworCisgICAgICAgIHZhciBkbExpc3QgPSBib2R5LmNoaWxk
QXRJbmRleCgyKTsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSBkbExpc3QuYXR0cmlidXRl
c09mQ2hpbGRyZW4oKSArICJcblxuIjsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
LCAwKTsKK30KKzwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tZW51LWxpc3QtY3Jhc2gyLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21lbnUtbGlzdC1jcmFzaDIuaHRtbAppbmRleCAwYTRjYjBmMjE2ZmMuLjQw
ZDhmMjRiOGM3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tZW51LWxp
c3QtY3Jhc2gyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tZW51LWxpc3Qt
Y3Jhc2gyLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIApA
QCAtMjEsMjggKzIyLDMxIEBAIFRFU1QKIAogPHNjcmlwdD4KIAotZnVuY3Rpb24gcnVuVGVzdCgp
IHsKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZXJlJ3Mgbm8gY3Jhc2ggaWYg
d2UgaGlkZSBtZW51IGxpc3QgYW5kIHRoZW4gdHJ5IHRvIGFjY2VzcyBhY2Nlc3NpYmlsaXR5IGlu
Zm9ybWF0aW9uLiIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGVyZSdzIG5vIGNy
YXNoIGlmIHdlIGhpZGUgbWVudSBsaXN0IGFuZCB0aGVuIHRyeSB0byBhY2Nlc3MgYWNjZXNzaWJp
bGl0eSBpbmZvcm1hdGlvbi4iKTsKIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKLSAgICAgICAgdmFyIG1lbnVsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im1lbnVsaXN0Iik7Ci0gICAgICAgIG1lbnVsaXN0LmZvY3VzKCk7Ci0gICAgICAgIG1lbnVsaXN0
LnNlbGVjdGVkSW5kZXggPSAxOworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICB2YXIgYWNjZXNz
aWJsZU1lbnVsaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Cisg
ICAgdmFyIG1lbnVsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lbnVsaXN0Iik7Cisg
ICAgbWVudWxpc3QuZm9jdXMoKTsKKyAgICBtZW51bGlzdC5zZWxlY3RlZEluZGV4ID0gMTsKKwor
ICAgIHZhciBhY2Nlc3NpYmxlTWVudWxpc3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoIm1lbnVsaXN0Iik7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKICAgICAgICAgZGVidWcoIlJvbGUgYmVmb3JlIHJlbW92YWw6ICIgKyBhY2Nlc3NpYmxlTWVu
dWxpc3Qucm9sZSk7CiAKICAgICAgICAgbWVudWxpc3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICAgZ2MoKTsKIAotICAgICAgICAvLyBEb24ndCBjcmFzaCEKLSAgICAgICAgZGVidWco
IlJvbGUgYWZ0ZXIgcmVtb3ZhbDogIiArIGFjY2Vzc2libGVNZW51bGlzdC5yb2xlKTsKLSAgICB9
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvLyBEb24ndCBj
cmFzaCEKKyAgICAgICAgICAgIGRlYnVnKCJSb2xlIGFmdGVyIHJlbW92YWw6ICIgKyBhY2Nlc3Np
YmxlTWVudWxpc3Qucm9sZSk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fSwgMCk7CisgICAgfSwgMCk7CiB9CiAKLXJ1blRlc3QoKTsKIDwvc2NyaXB0PgogCiA8L2JvZHk+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4t
ZWxlbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub2NoaWxk
cmVuLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAppbmRleCA3YzY3ZDEzNjE5NGUuLjRhMDZlYjk4M2Vl
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub2NoaWxkcmVuLWVsZW1l
bnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRy
ZW4tZWxlbWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNyBAQAogCiBpbnNpZGUKIFBBU1MK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxlbWVudHMuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm9jaGlsZHJlbi1lbGVtZW50cy5odG1sCmlu
ZGV4IDdkNGM2Mjg0ZDNhYi4uOGUwOGQyOWJjZDg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxlbWVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L25vY2hpbGRyZW4tZWxlbWVudHMuaHRtbApAQCAtMSw0NSArMSw0OCBAQAog
PGh0bWw+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci08L3NjcmlwdD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgogPGJvZHkgaWQ9
J2JvZHknPgotICAgIAotICAgIAotICAgIDwhLS0gVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0
aGVzZSB0eXBlcyBvZiBlbGVtZW50cyBETyBOT1QgaGF2ZSBjaGlsZHJlbi4gCi0gICAgICAgICBU
aGUgdGVzdCB3aWxsIHBhc3MgaWYgYXR0cmlidXRlc09mQ2hpbGRyZW4oKSByZXR1cm5zIG5pbCAt
LT4KIAotICAgIDxpbnB1dCB0eXBlPSJmaWxlIj4KLSAgICA8ZGl2IHJvbGU9ImJ1dHRvbiI+PGI+
PGk+aW5zaWRlPC9pPjwvYj48L2Rpdj4KIAotICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8
IS0tIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgdGhlc2UgdHlwZXMgb2YgZWxlbWVudHMgRE8g
Tk9UIGhhdmUgY2hpbGRyZW4uCisgICAgIFRoZSB0ZXN0IHdpbGwgcGFzcyBpZiBhdHRyaWJ1dGVz
T2ZDaGlsZHJlbigpIHJldHVybnMgbmlsIC0tPgogCi0gICAgIAotICAgIDxzY3JpcHQ+Ci0gICAg
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHZh
ciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Cis8aW5wdXQgdHlw
ZT0iZmlsZSI+Cis8ZGl2IHJvbGU9ImJ1dHRvbiI+PGI+PGk+aW5zaWRlPC9pPjwvYj48L2Rpdj4K
IAotICAgICAgICAgICAgLy8gcmFkaW8gYnV0dG9uIDEKLSAgICAgICAgICAgIHZhciBib2R5ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKLSAgICAgICAgICAgIGJvZHkuZm9jdXMo
KTsKLSAgICAgICAgICAgIHZhciBmb2N1c2VkRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OworPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgICAg
Ly8gdGhpcyBpbnB1dD1maWxlIGlzIGluc2lkZSBvZiBhIGdyb3VwLCBzbyB3ZSBuZWVkIHRvIGdv
IHR3byBsZXZlbHMKLSAgICAgICAgICAgIHZhciBlbGVtZW50MSA9IGZvY3VzZWRFbGVtZW50LmNo
aWxkQXRJbmRleCgwKTsKLSAgICAgICAgICAgIGVsZW1lbnQxID0gZWxlbWVudDEuY2hpbGRBdElu
ZGV4KDApOworICAgIC8vIHJhZGlvIGJ1dHRvbiAxCisgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYm9keSIpOworICAgIGJvZHkuZm9jdXMoKTsKIAotICAgICAgICAgICAg
dmFyIGVsZW1lbnQyID0gZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmb2N1c2VkRWxlbWVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogCi0gICAgICAgICAgICB2YXIgZWxlbWVu
dDFDaGlsZHJlbiA9IGVsZW1lbnQxLmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7Ci0gICAgICAgICAg
ICB2YXIgZWxlbWVudDJDaGlsZHJlbiA9IGVsZW1lbnQyLmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7
CisgICAgICAgIC8vIHRoaXMgaW5wdXQ9ZmlsZSBpcyBpbnNpZGUgb2YgYSBncm91cCwgc28gd2Ug
bmVlZCB0byBnbyB0d28gbGV2ZWxzCisgICAgICAgIHZhciBlbGVtZW50MSA9IGZvY3VzZWRFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgZWxlbWVudDEgPSBlbGVtZW50MS5jaGlsZEF0
SW5kZXgoMCk7CiAKLSAgICAgICAgICAgIGlmIChlbGVtZW50MUNoaWxkcmVuICE9ICIiIHx8IGVs
ZW1lbnQyQ2hpbGRyZW4gIT0gIiIpIHsKLSAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
Kz0gIkZBSUxcbiIgKyBlbGVtZW50MUNoaWxkcmVuICsgIlxuIiArIGVsZW1lbnQyQ2hpbGRyZW47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgIHJlc3Vs
dC5pbm5lclRleHQgKz0gIlBBU1MiOwotICAgICAgICAgICB9ICAgICAgICAgICAKKyAgICAgICAg
dmFyIGVsZW1lbnQyID0gZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOworCisgICAgICAg
IHZhciBlbGVtZW50MUNoaWxkcmVuID0gZWxlbWVudDEuYXR0cmlidXRlc09mQ2hpbGRyZW4oKTsK
KyAgICAgICAgdmFyIGVsZW1lbnQyQ2hpbGRyZW4gPSBlbGVtZW50Mi5hdHRyaWJ1dGVzT2ZDaGls
ZHJlbigpOworCisgICAgICAgIGlmIChlbGVtZW50MUNoaWxkcmVuICE9ICIiIHx8IGVsZW1lbnQy
Q2hpbGRyZW4gIT0gIiIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lclRleHQgKz0gIkZBSUxcbiIgKyBlbGVtZW50MUNoaWxkcmVuICsgIlxuIiAr
IGVsZW1lbnQyQ2hpbGRyZW47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ICs9ICJQQVNTIjsKICAgICAgICAg
fQotICAgIDwvc2NyaXB0PgorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30K
Kzwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9ub24tbmF0aXZlLWltYWdlLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L25vbi1uYXRpdmUtaW1hZ2UtY3Jhc2guaHRtbAppbmRleCA4YmE4MzVmMDA1ZWQu
LmJhZDRmZmE4OGU0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub24t
bmF0aXZlLWltYWdlLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9u
b24tbmF0aXZlLWltYWdlLWNyYXNoLmh0bWwKQEAgLTEsMTEgKzEsMTIgQEAKIDwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5IGlkPSJib2R5Ij4KIAotPGRpdiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkFTQ0lJIGFydCBv
ZiBhIGhlbGljb3B0ZXIiIHRpdGxlPSJJbmNvcnJlY3QgdGV4dCBlcXVpdmFsZW50LiBXaGVuIGF2
YWlsYWJsZSwgbm9kZSBzaG91bGQgdXNlIGFyaWEtbGFiZWwgaW5zdGVhZCBvZiB0aXRsZS4iPgor
PGRpdiBpZD0iaW1hZ2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQVNDSUkgYXJ0IG9mIGEgaGVs
aWNvcHRlciIgdGl0bGU9IkluY29ycmVjdCB0ZXh0IGVxdWl2YWxlbnQuIFdoZW4gYXZhaWxhYmxl
LCBub2RlIHNob3VsZCB1c2UgYXJpYS1sYWJlbCBpbnN0ZWFkIG9mIHRpdGxlLiI+CiAgICAgIDxk
aXYgY2xhc3M9ImFzY2lpIj4KICAgPT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAg
X19fXVtfX19fXwpAQCAtMjIsMjAgKzIzLDIwIEBACiAKIDxzY3JpcHQ+CiAKLSAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm9uIG5hdGl2ZSBpbWFnZSAob25lIGNyZWF0ZWQgdGhy
b3VnaCBBUklBKSBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnQuIFRlc3QgcGFzc2VzIGlmIGl0IGRv
ZXMgbm90IGNyYXNoIGluIGRlYnVnIGJ1aWxkcyIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhhdCBhIG5vbiBuYXRpdmUgaW1hZ2UgKG9uZSBjcmVhdGVkIHRocm91Z2ggQVJJQSkgZG9lcyBu
b3QgY2F1c2UgYW4gYXNzZXJ0LiBUZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBpbiBk
ZWJ1ZyBidWlsZHMiKTsKIAotICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJib2R5Iik7Ci0gICAgICAgICAgYm9keS5mb2N1cygpOwotICAgICAgICAgIHZh
ciBpbWFnZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKTsKLSAgICAgICAgICB2YXIgdyA9IGltYWdlLndpZHRoOwotICAgICAgICAgIHZhciBo
ID0gaW1hZ2UuaGVpZ2h0OwotICAgICAgICAgIAotICAgIH0KKyAgICB2YXIgaW1hZ2UgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImltYWdlIik7CisgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHcgPSBpbWFnZS53aWR0aDsKKyAg
ICAgICAgdmFyIGggPSBpbWFnZS5oZWlnaHQ7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0sIDApOworfQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJhZ3JhcGgtd2l0aC1saW5lYnJlYWtzLmh0bWwgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmFncmFwaC13aXRoLWxpbmVicmVha3MuaHRtbApp
bmRleCA2YWI3MWY2ODY2MGYuLjk5NTIwYzhiNmE4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9wYXJhZ3JhcGgtd2l0aC1saW5lYnJlYWtzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJhZ3JhcGgtd2l0aC1saW5lYnJlYWtzLmh0bWwKQEAgLTIx
LDIyICsyMSwyNCBAQAogCiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxpbmVi
cmVha3MgZXhwbGljaXRseSBzZXQgYnkgdGhlIGF1dGhvciBhcmUgcHJvcGVybHkgZXhwb3NlZCB0
byBBVHMuIik7CiAKLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiAgICAgZG9jdW1lbnQuYm9k
eS5mb2N1cygpOwotICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7Ci0KLSAgICB2YXIgYnJva2VuUGFyYWdyYXBoID0gd2ViQXJlYS5jaGlsZEF0
SW5kZXgoMCk7Ci0gICAgZGVidWcoIlJvbGUgb2YgdGhlIHBhcmFncmFwaCB3aXRoIGJyZWFrIGxp
bmVzOiAiICsgYnJva2VuUGFyYWdyYXBoLnJvbGUpOwotICAgIGRlYnVnKCJWYWx1ZSBvZiB0aGUg
cGFyYWdyYXBoIHdpdGggYnJlYWsgbGluZXM6ICIgKyBicm9rZW5QYXJhZ3JhcGguc3RyaW5nVmFs
dWUpOwotICAgIGRlYnVnKCI8YnI+Iik7Ci0KLSAgICB2YXIgd3JhcHBlZFBhcmFncmFwaCA9IHdl
YkFyZWEuY2hpbGRBdEluZGV4KDEpOwotICAgIGRlYnVnKCJSb2xlIG9mIHRoZSBwYXJhZ3JhcGgg
d2l0aCB3cmFwcGVkIGxpbmVzOiAiICsgd3JhcHBlZFBhcmFncmFwaC5yb2xlKTsKLSAgICBkZWJ1
ZygiVmFsdWUgb2YgdGhlIHBhcmFncmFwaCB3aXRoIHdyYXBwZWQgbGluZXM6ICIgKyB3cmFwcGVk
UGFyYWdyYXBoLnN0cmluZ1ZhbHVlKTsKLSAgICBkZWJ1ZygiPGJyPiIpOwotICB9CisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICB2YXIgYnJva2VuUGFyYWdyYXBo
ID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIGRlYnVnKCJSb2xlIG9mIHRoZSBw
YXJhZ3JhcGggd2l0aCBicmVhayBsaW5lczogIiArIGJyb2tlblBhcmFncmFwaC5yb2xlKTsKKyAg
ICAgICAgZGVidWcoIlZhbHVlIG9mIHRoZSBwYXJhZ3JhcGggd2l0aCBicmVhayBsaW5lczogIiAr
IGJyb2tlblBhcmFncmFwaC5zdHJpbmdWYWx1ZSk7CisgICAgICAgIGRlYnVnKCI8YnI+Iik7CisK
KyAgICAgICAgdmFyIHdyYXBwZWRQYXJhZ3JhcGggPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgxKTsK
KyAgICAgICAgZGVidWcoIlJvbGUgb2YgdGhlIHBhcmFncmFwaCB3aXRoIHdyYXBwZWQgbGluZXM6
ICIgKyB3cmFwcGVkUGFyYWdyYXBoLnJvbGUpOworICAgICAgICBkZWJ1ZygiVmFsdWUgb2YgdGhl
IHBhcmFncmFwaCB3aXRoIHdyYXBwZWQgbGluZXM6ICIgKyB3cmFwcGVkUGFyYWdyYXBoLnN0cmlu
Z1ZhbHVlKTsKKyAgICAgICAgZGVidWcoIjxicj4iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfSwgMCk7CiB9CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvcG9wdXAtYnV0dG9uLXRpdGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3BvcHVwLWJ1dHRvbi10aXRsZS5odG1sCmluZGV4IDRhNGFiMzBlMzVlNy4u
MjQxNzAwNzM4MmQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BvcHVw
LWJ1dHRvbi10aXRsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcG9wdXAt
YnV0dG9uLXRpdGxlLmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9h
Y2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9k
eSI+CiAKQEAgLTEyLDE4ICsxMywyMCBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIHBvcHVwIGJ1dHRvbiB3aWxsIHJldHVybiB0aGUgdGV4dCB1bmRl
ciB0aGUgZWxlbWVudCBmb3IgaXRzIHRpdGxlLiIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhhdCBhIHBvcHVwIGJ1dHRvbiB3aWxsIHJldHVybiB0aGUgdGV4dCB1bmRlciB0aGUgZWxlbWVu
dCBmb3IgaXRzIHRpdGxlLiIpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGluayIpLmZvY3VzKCk7
Ci0gICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCisgICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImxpbmsiKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewogICAgICAgICAvLyBUaGUgZWxlbWVudCBzaG91bGQgbm90IGJlIGlnbm9y
ZWQgKGl0IHNob3VsZCBiZSBhIGdyb3VwKQogICAgICAgICBzaG91bGRCZSgiZWxlbWVudC50aXRs
ZSIsICInQVhUaXRsZTogQ2xpY2sgbWUnIik7Ci0gICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICB9LCAwKTsKK30KIAogPC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcHJlc2VudGF0aW9uYWwtZWxlbWVudHMtd2l0
aC1mb2N1cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wcmVzZW50YXRpb25hbC1l
bGVtZW50cy13aXRoLWZvY3VzLmh0bWwKaW5kZXggMzUyMzBlMjkyNGU2Li4yYWRkNGNmMjAwOTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcHJlc2VudGF0aW9uYWwtZWxl
bWVudHMtd2l0aC1mb2N1cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcHJl
c2VudGF0aW9uYWwtZWxlbWVudHMtd2l0aC1mb2N1cy5odG1sCkBAIC0xLDcgKzEsOCBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgaWQ9ImJvZHkiPgogCkBAIC0xNywxOCArMTgsMjAgQEAKIAogPHNjcmlwdD4K
IAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcHJlc2VudGF0aW9u
IHJvbGUgaXMgaWdub3JlZCB3aGVuIGFuIGVsZW1lbnQgY2FuIHNldCBmb2N1cy4iKTsKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcHJlc2VudGF0aW9uIHJvbGUgaXMgaWdu
b3JlZCB3aGVuIGFuIGVsZW1lbnQgY2FuIHNldCBmb2N1cy4iKTsKIAotICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5mb2N1cygpOwotCi0gICAgICAgICAgLy8g
VmVyaWZ5IHRoYXQgYWxsIGZvdXIgaW1hZ2VzIGFyZSBhY2Nlc3NpYmxlLgotICAgICAgICAgIHNo
b3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZHJlbkNv
dW50IiwgIjQiKTsKLSAgICB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3VwIiku
Zm9jdXMoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBWZXJpZnkg
dGhhdCBhbGwgZm91ciBpbWFnZXMgYXJlIGFjY2Vzc2libGUuCisgICAgICAgIHNob3VsZEJlKCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZHJlbkNvdW50IiwgIjQi
KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9CiAKIDwvc2NyaXB0Pgog
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Nl
bGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Nl
bGVjdC1lbGVtZW50LWF0LWluZGV4Lmh0bWwKaW5kZXggOTYzNDM4ZTdhOWMxLi41MWU5NTM5ZTVl
MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc2VsZWN0LWVsZW1lbnQt
YXQtaW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVt
ZW50LWF0LWluZGV4Lmh0bWwKQEAgLTEsNyArMSw4IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9h
Y2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBpZD0iYm9k
eSI+CiAKQEAgLTE3LDE4ICsxOCwxOSBAQAogCiA8c2NyaXB0PgogCi0gICAgZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgY2hlY2tzIHdoZXRoZXIgc2V0dGluZyBzZWxlY3Rpb24gYXQgdGhlIGdpdmVu
IGluZGV4IHdvcmtzIGNvcnJlY3RseSIpOworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY2hlY2tz
IHdoZXRoZXIgc2V0dGluZyBzZWxlY3Rpb24gYXQgdGhlIGdpdmVuIGluZGV4IHdvcmtzIGNvcnJl
Y3RseSIpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JvdXAiKS5mb2N1cygpOwotICAgICAgICB2
YXIgc2VsZWN0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
OworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKIAorICAgIHZhciBzZWxlY3RFbGVtZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJncm91cCIpOworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCJzZWxlY3RFbGVtZW50LnNlbGVjdGVk
Q2hpbGRyZW5Db3VudCIsICIwIik7CiAKLSAgICAgICAgdmFyIG9wdGlvbjEgPSBzZWxlY3RFbGVt
ZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgdmFyIG9wdGlvbjIgPSBzZWxlY3RFbGVtZW50
LmNoaWxkQXRJbmRleCgxKTsKLSAgICAgICAgdmFyIG9wdGlvbjMgPSBzZWxlY3RFbGVtZW50LmNo
aWxkQXRJbmRleCgyKTsKLSAgICAgICAgdmFyIG9wdGlvbjQgPSBzZWxlY3RFbGVtZW50LmNoaWxk
QXRJbmRleCgzKTsKKyAgICAgICAgd2luZG93Lm9wdGlvbjEgPSBzZWxlY3RFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKKyAgICAgICAgd2luZG93Lm9wdGlvbjIgPSBzZWxlY3RFbGVtZW50LmNoaWxk
QXRJbmRleCgxKTsKKyAgICAgICAgd2luZG93Lm9wdGlvbjMgPSBzZWxlY3RFbGVtZW50LmNoaWxk
QXRJbmRleCgyKTsKKyAgICAgICAgd2luZG93Lm9wdGlvbjQgPSBzZWxlY3RFbGVtZW50LmNoaWxk
QXRJbmRleCgzKTsKIAogICAgICAgICBzZWxlY3RFbGVtZW50LnNldFNlbGVjdGVkQ2hpbGRBdElu
ZGV4KDApOwogICAgICAgICBzaG91bGRCZSgic2VsZWN0RWxlbWVudC5zZWxlY3RlZENoaWxkcmVu
Q291bnQiLCAiMSIpOwpAQCAtNjksMTAgKzcxLDExIEBACiAgICAgICAgIHNlbGVjdEVsZW1lbnQu
cmVtb3ZlU2VsZWN0aW9uQXRJbmRleCgwKTsKICAgICAgICAgc2hvdWxkQmVGYWxzZSgib3B0aW9u
MS5pc1NlbGVjdGVkIik7CiAgICAgICAgIHNob3VsZEJlKCJzZWxlY3RFbGVtZW50LnNlbGVjdGVk
Q2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDAp
OwogfQogCiA8L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0CmluZGV4
IDVmODY2MmMxNDA5NS4uODM5MjE3ZTE3ZWZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9saXN0cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC0yNjMs
NCArMjYzLDcgQEAgQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IHRhZzpkZCwgdG9vbGtpdDpXZWJLaXRH
dGsKIC0tLS0tLS0tLS0tLQogCiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0tZXhw
ZWN0ZWQudHh0CmluZGV4IDk0Zjk3MTcxYjczNi4uODk4MWI3NTM1Mzc1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpc3QtYW5kLWxpc3Rp
dGVtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9hcmlhLWxpc3QtYW5kLWxpc3RpdGVtLWV4cGVjdGVkLnR4dApAQCAtNSw5ICs1LDkgQEAg
VGhpcyB0ZXN0cyB0aGF0IHRoZSBBUklBIHJvbGVzIG9mIGxpc3QgYW5kIGxpc3RpdGVtIG1hcCBj
b3JyZWN0bHkgdG8gTWFjIGFjY2Vzc2kKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1v
YmouY2hpbGRBdEluZGV4KDApLnJvbGUgPSBBWFJvbGU6IEFYTGlzdAotb2JqLmNoaWxkQXRJbmRl
eCgwKS5jaGlsZEF0SW5kZXgoMCkucm9sZSA9IEFYUm9sZTogQVhHcm91cAotb2JqLmNoaWxkQXRJ
bmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9sZSA9IEFYUm9sZTogQVhHcm91cAorb2JqLnJvbGUg
PSBBWFJvbGU6IEFYTGlzdAorb2JqLmNoaWxkQXRJbmRleCgwKS5yb2xlID0gQVhSb2xlOiBBWEdy
b3VwCitvYmouY2hpbGRBdEluZGV4KDEpLnJvbGUgPSBBWFJvbGU6IEFYR3JvdXAKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZXMt
ZXhwZWN0ZWQudHh0CmluZGV4IDA2N2MwMTE2ODBkYS4uNTRmMTdkMWVlY2E3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJp
YS10YWJsZXMtZXhwZWN0ZWQudHh0CkBAIC0xNyw0ICsxNyw3IEBAIEFYUm9sZTogQVhDZWxsCiBB
WFJvbGU6IEFYQ2VsbAogQVhSb2xlOiBBWENlbGwKIFRlc3QgcGFzc2VkCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDYyMDNhZTUzM2FhNC4uMzRiYmRiN2M0NTVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9saXN0cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC00
NjUsNCArNDY1LDcgQEAgQVhFbGVtZW50QnVzeTogMAogLS0tLS0tLS0tLS0tCiAKIAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlz
dGl0ZW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxp
dHkvYXJpYS1saXN0LWFuZC1saXN0aXRlbS1leHBlY3RlZC50eHQKaW5kZXggNTU3YzNiZDJlZGVj
Li45ZTFlMGMyZWRhZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9hY2Nl
c3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0t
ZXhwZWN0ZWQudHh0CkBAIC01LDkgKzUsOSBAQCBUaGlzIHRlc3RzIHRoYXQgdGhlIEFSSUEgcm9s
ZXMgb2YgbGlzdCBhbmQgbGlzdGl0ZW0gbWFwIGNvcnJlY3RseSB0byBNYWMgYWNjZXNzaQogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLW9iai5jaGlsZEF0SW5kZXgoMCkucm9sZSA9IEFY
Um9sZTogQVhMaXN0Ci1vYmouY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5yb2xlID0g
QVhSb2xlOiBBWFRhYgotb2JqLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSkucm9sZSA9
IEFYUm9sZTogQVhUYWIKK29iai5yb2xlID0gQVhSb2xlOiBBWExpc3QKK29iai5jaGlsZEF0SW5k
ZXgoMCkucm9sZSA9IEFYUm9sZTogQVhUYWIKK29iai5jaGlsZEF0SW5kZXgoMSkucm9sZSA9IEFY
Um9sZTogQVhUYWIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkv
YXJpYS1yb2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vYWNjZXNz
aWJpbGl0eS9hcmlhLXJvbGVzLWV4cGVjdGVkLnR4dAppbmRleCA2ODE4MGY3NzI4MTUuLjMwNTdj
Y2ZkNjRmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxp
dHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2FjY2Vzc2liaWxpdHkvYXJpYS1yb2xlcy1leHBlY3RlZC50eHQKQEAgLTcwLDQgKzcwLDcgQEAg
QnJvY2NvbGkKIEJlZXRzCiBUaGlzIHRlc3QgUEFTU0VTIGluIER1bXBSZW5kZXJUcmVlLiBUaGUg
cm9sZSBpcyBBWFJvbGU6IEFYTGlzdAogCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKIAo=
</data>
<flag name="review"
          id="474131"
          type_id="1"
          status="?"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="474143"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>