<?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>99547</bug_id>
          
          <creation_ts>2012-10-16 23:27:44 -0700</creation_ts>
          <short_desc>AX: Notification should be sent when accessibilityIsIgnored changes</short_desc>
          <delta_ts>2012-10-26 14:58:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100440</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>abarth</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jdiggs</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>743895</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-16 23:27:44 -0700</bug_when>
    <thetext>There are several dynamic changes that can happen to an element that can cause it to become ignored or unignored for accessibility, including:

* Gaining/losing an ARIA role
* Gaining/losing a title or aria-label
* Gaining/losing inner text / content
* Becoming visible or invisible/hidden

On some platforms like Chromium, a &quot;children changed&quot; notification should be fired on its parent element when this happens, causing it to recompute its number of (unignored) children and notify the platform immediately.

On Mac, the &quot;children changed&quot; notification isn&apos;t needed, but this potentially affects live regions. There are probably similar cases where live regions aren&apos;t announcing everything they should because a notification isn&apos;t being generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743932</commentid>
    <comment_count>1</comment_count>
      <attachid>169102</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-17 00:12:00 -0700</bug_when>
    <thetext>Created attachment 169102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744127</commentid>
    <comment_count>2</comment_count>
      <attachid>169102</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 04:05:45 -0700</bug_when>
    <thetext>Comment on attachment 169102
Patch

Attachment 169102 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14388574

New failing tests:
fast/dom/Window/orphaned-frame-access.html
fast/storage/storage-detached-iframe.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745021</commentid>
    <comment_count>3</comment_count>
      <attachid>169102</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-17 23:55:32 -0700</bug_when>
    <thetext>Comment on attachment 169102
Patch

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

My main concern is what kind of performance implication will there be by recalculating axIsIgnored(). Is it basically the same due to our live region calculations or are there other impacts

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:331
&gt; +    newObj-&gt;setLastKnownIsIgnored(newObj-&gt;accessibilityIsIgnored());

Naming might be more clear if it was

cachedIsIgnoredValue() or

isIgnoredCachedValue() or

can this calculation be done when the element is created or init&apos;d()

there&apos;s a number of other element creation routines in this file that I see you haven&apos;t touched.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:720
&gt; +        recomputeIsIgnored(obj);

does this method have to be in AXObjectCache, or can it be a method in AXObject?
Maybe there could be just one &quot;update&quot; method, and inside of that would be updateAXRole() and updateIsIgnored()

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:738
&gt; +    else if (attrName == aria_labelAttr || attrName == aria_labeledbyAttr)

aria-labeledby can also be spelled aria-labelledby, so we should probably take care of that case here too

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:747
&gt; +        childrenChanged(element-&gt;parentNode());

it looks like we need not call this on parentNode() anymore since the childrenChanged method looks at the element itself now to recompute isIgnored values

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:751
&gt; +    recomputeIsIgnored(get(element));

is it necessary to call this on every aria-attribute change? it seems like we can limit it to the relevant ones

&gt; Source/WebCore/accessibility/AXObjectCache.h:111
&gt; +    void recomputeIsIgnored(AccessibilityObject*);

it looks like this version could be private

&gt; Source/WebCore/accessibility/AXObjectCache.h:249
&gt; +inline void AXObjectCache::handleAttributeChanged(const QualifiedName&amp; attrName, Element* element) { }

probably want to remove the argument names here

&gt; Source/WebCore/accessibility/AccessibilityObject.h:685
&gt; +    void setLastKnownIsIgnored(bool);

i think we can put the implementations here in the header

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:133
&gt; +    table-&gt;recalcSectionsIfNeeded();

what&apos;s going on with this change?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1032
&gt; +        document()-&gt;axObjectCache()-&gt;recomputeIsIgnored(this);

so were these two cases where childrenChanged() should have been called but wasn&apos;t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745349</commentid>
    <comment_count>4</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-18 10:11:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 169102 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169102&amp;action=review
&gt; 
&gt; My main concern is what kind of performance implication will there be by recalculating axIsIgnored(). Is it basically the same due to our live region calculations or are there other impacts

That&apos;s true, and I&apos;d like to call it much less often. Right now it&apos;s quite hot - when a screen reader queries a single object, axIsIgnored gets called several times under the hood - and it calls several other expensive functions.

However, when a node actually changes, it&apos;s important to recalculate it, and we&apos;re not always doing that now.

Let me investigate the total number of times it&apos;s being called - maybe I can count the number of times it&apos;s called across all layout tests.

&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:331
&gt; &gt; +    newObj-&gt;setLastKnownIsIgnored(newObj-&gt;accessibilityIsIgnored());
&gt; 
&gt; can this calculation be done when the element is created or init&apos;d()

It&apos;s problematic to call it from within init(), because the wrapper hasn&apos;t been created yet, and that messes things up. That&apos;s why I do it in AXObjectCache.

&gt; there&apos;s a number of other element creation routines in this file that I see you haven&apos;t touched.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:720
&gt; &gt; +        recomputeIsIgnored(obj);
&gt; 
&gt; does this method have to be in AXObjectCache, or can it be a method in AXObject?
&gt; Maybe there could be just one &quot;update&quot; method, and inside of that would be updateAXRole() and updateIsIgnored()
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:738
&gt; &gt; +    else if (attrName == aria_labelAttr || attrName == aria_labeledbyAttr)
&gt; 
&gt; aria-labeledby can also be spelled aria-labelledby, so we should probably take care of that case here too
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:747
&gt; &gt; +        childrenChanged(element-&gt;parentNode());
&gt; 
&gt; it looks like we need not call this on parentNode() anymore since the childrenChanged method looks at the element itself now to recompute isIgnored values

Good point. I think I want a elementChanged method that calls childrenChanged on the parent if needed.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:133
&gt; &gt; +    table-&gt;recalcSectionsIfNeeded();
&gt; 
&gt; what&apos;s going on with this change?

Calling accessibilityIsIgnored immediately after every AccessibilityObject is created exposed a previously undiscovered bug. This was crashing in table-&gt;firstBody() because the table sections hadn&apos;t been initialized yet.

&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:1032
&gt; &gt; +        document()-&gt;axObjectCache()-&gt;recomputeIsIgnored(this);
&gt; 
&gt; so were these two cases where childrenChanged() should have been called but wasn&apos;t?

Yes, these are specifically related to this logic in axIsIgnored:

    if (m_renderer-&gt;isBlockFlow() &amp;&amp; m_renderer-&gt;childrenInline() &amp;&amp; !canSetFocusAttribute())
        return !toRenderBlock(m_renderer)-&gt;firstLineBox() &amp;&amp; !mouseButtonListener();

In essence, this is making a render block ignored if it doesn&apos;t have any children. So a div with no child elements and no inner text is ignored. But then if you add inner text, it&apos;s now unignored, but no notification was firing. (Same in reverse if you set the inner text to blank.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745725</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-18 16:35:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 169102 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169102&amp;action=review
&gt; &gt; 
&gt; &gt; My main concern is what kind of performance implication will there be by recalculating axIsIgnored(). Is it basically the same due to our live region calculations or are there other impacts
&gt; 
&gt; That&apos;s true, and I&apos;d like to call it much less often. Right now it&apos;s quite hot - when a screen reader queries a single object, axIsIgnored gets called several times under the hood - and it calls several other expensive functions.
&gt; 
&gt; However, when a node actually changes, it&apos;s important to recalculate it, and we&apos;re not always doing that now.

I have actually thought that maybe we should cache accessibilityIsIgnored if we can cover all the cases that it will change.

&gt; 
&gt; Let me investigate the total number of times it&apos;s being called - maybe I can count the number of times it&apos;s called across all layout tests.
&gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:331
&gt; &gt; &gt; +    newObj-&gt;setLastKnownIsIgnored(newObj-&gt;accessibilityIsIgnored());
&gt; &gt; 
&gt; &gt; can this calculation be done when the element is created or init&apos;d()
&gt; 
&gt; It&apos;s problematic to call it from within init(), because the wrapper hasn&apos;t been created yet, and that messes things up. That&apos;s why I do it in AXObjectCache.
&gt; 
&gt; &gt; there&apos;s a number of other element creation routines in this file that I see you haven&apos;t touched.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:720
&gt; &gt; &gt; +        recomputeIsIgnored(obj);
&gt; &gt; 
&gt; &gt; does this method have to be in AXObjectCache, or can it be a method in AXObject?
&gt; &gt; Maybe there could be just one &quot;update&quot; method, and inside of that would be updateAXRole() and updateIsIgnored()
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:738
&gt; &gt; &gt; +    else if (attrName == aria_labelAttr || attrName == aria_labeledbyAttr)
&gt; &gt; 
&gt; &gt; aria-labeledby can also be spelled aria-labelledby, so we should probably take care of that case here too
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:747
&gt; &gt; &gt; +        childrenChanged(element-&gt;parentNode());
&gt; &gt; 
&gt; &gt; it looks like we need not call this on parentNode() anymore since the childrenChanged method looks at the element itself now to recompute isIgnored values
&gt; 
&gt; Good point. I think I want a elementChanged method that calls childrenChanged on the parent if needed.
&gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:133
&gt; &gt; &gt; +    table-&gt;recalcSectionsIfNeeded();
&gt; &gt; 
&gt; &gt; what&apos;s going on with this change?
&gt; 
&gt; Calling accessibilityIsIgnored immediately after every AccessibilityObject is created exposed a previously undiscovered bug. This was crashing in table-&gt;firstBody() because the table sections hadn&apos;t been initialized yet.
&gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:1032
&gt; &gt; &gt; +        document()-&gt;axObjectCache()-&gt;recomputeIsIgnored(this);
&gt; &gt; 
&gt; &gt; so were these two cases where childrenChanged() should have been called but wasn&apos;t?
&gt; 
&gt; Yes, these are specifically related to this logic in axIsIgnored:
&gt; 
&gt;     if (m_renderer-&gt;isBlockFlow() &amp;&amp; m_renderer-&gt;childrenInline() &amp;&amp; !canSetFocusAttribute())
&gt;         return !toRenderBlock(m_renderer)-&gt;firstLineBox() &amp;&amp; !mouseButtonListener();
&gt; 
&gt; In essence, this is making a render block ignored if it doesn&apos;t have any children. So a div with no child elements and no inner text is ignored. But then if you add inner text, it&apos;s now unignored, but no notification was firing. (Same in reverse if you set the inner text to blank.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747893</commentid>
    <comment_count>6</comment_count>
      <attachid>169987</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-22 14:32:04 -0700</bug_when>
    <thetext>Created attachment 169987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748373</commentid>
    <comment_count>7</comment_count>
      <attachid>170082</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-23 01:35:20 -0700</bug_when>
    <thetext>Created attachment 170082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748375</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 01:37:26 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748381</commentid>
    <comment_count>9</comment_count>
      <attachid>169102</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-23 01:50:32 -0700</bug_when>
    <thetext>Comment on attachment 169102
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:331
&gt;&gt;&gt;&gt; +    newObj-&gt;setLastKnownIsIgnored(newObj-&gt;accessibilityIsIgnored());
&gt;&gt;&gt; 
&gt;&gt;&gt; Naming might be more clear if it was
&gt;&gt;&gt; 
&gt;&gt;&gt; cachedIsIgnoredValue() or
&gt;&gt;&gt; 
&gt;&gt;&gt; isIgnoredCachedValue() or
&gt;&gt;&gt; 
&gt;&gt;&gt; can this calculation be done when the element is created or init&apos;d()
&gt;&gt;&gt; 
&gt;&gt;&gt; there&apos;s a number of other element creation routines in this file that I see you haven&apos;t touched.
&gt;&gt; 
&gt;&gt; It&apos;s problematic to call it from within init(), because the wrapper hasn&apos;t been created yet, and that messes things up. That&apos;s why I do it in AXObjectCache.
&gt; 
&gt; 

OK, I renamed it cachedIsIgnoredValue().

I tried computing it on init, but found:
1. This causes accessibilityIsIgnored to be called quite a bit more often - with no benefit.
2. It causes more AccessibilityObjects to get created (since accessibilityIsIgnored walks up the parent chain) and breaks some non-accessibility tests because the extra AccessibilityObjects hold references to objects that the test is trying to destroy.

So, I think it&apos;s best to just cache accessibilityIsIgnored the first time it&apos;s requested. To do this I made it a ternary.

What do you think of reusing the AccessibilityObjectInclusion enum here?

&gt;&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:720
&gt;&gt;&gt; +        recomputeIsIgnored(obj);
&gt;&gt; 
&gt;&gt; does this method have to be in AXObjectCache, or can it be a method in AXObject?
&gt;&gt; Maybe there could be just one &quot;update&quot; method, and inside of that would be updateAXRole() and updateIsIgnored()
&gt; 
&gt; Good point. I think I want a elementChanged method that calls childrenChanged on the parent if needed.

OK, I added a notifyIfIgnoredValueChanged to AccessibilityObject.h, and made AXObjectCache::recomputeIsIgnored a 1-liner. (I still think it&apos;s better to have it in AXObjectCache so that RenderBlock.cpp only deals with AXObjectCache and doesn&apos;t need to deal with AccessibilityObjects.)

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:738
&gt;&gt; +    else if (attrName == aria_labelAttr || attrName == aria_labeledbyAttr)
&gt; 
&gt; aria-labeledby can also be spelled aria-labelledby, so we should probably take care of that case here too

Good idea, done.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:747
&gt;&gt; +        childrenChanged(element-&gt;parentNode());
&gt; 
&gt; it looks like we need not call this on parentNode() anymore since the childrenChanged method looks at the element itself now to recompute isIgnored values

I really thing calling it on parentNode is correct; when a node is created or destroyed we call childrenChanged on the parent, so if a node is hidden or shown I think the same thing should happen.

Yes, it&apos;s true that childrenChanged would get called on the parent indirectly, but the total pattern of notifications would be inconsistent.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:751
&gt;&gt; +    recomputeIsIgnored(get(element));
&gt; 
&gt; is it necessary to call this on every aria-attribute change? it seems like we can limit it to the relevant ones

You&apos;re right, only a handful can change accessibilityIsIgnored. I tightened it up.

I really want some sort of notification when any ARIA attribute changes, so I went ahead and added an additional notification as a catch-all for any other ARIA attribute changing, along with a couple of tests for that.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.h:111
&gt;&gt; +    void recomputeIsIgnored(AccessibilityObject*);
&gt; 
&gt; it looks like this version could be private

Done

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.h:249
&gt;&gt; +inline void AXObjectCache::handleAttributeChanged(const QualifiedName&amp; attrName, Element* element) { }
&gt; 
&gt; probably want to remove the argument names here

Done

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.h:685
&gt;&gt; +    void setLastKnownIsIgnored(bool);
&gt; 
&gt; i think we can put the implementations here in the header

They ended up nontrivial after the last changes, so probably better to leave them in the source file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748536</commentid>
    <comment_count>10</comment_count>
      <attachid>170082</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 05:36:22 -0700</bug_when>
    <thetext>Comment on attachment 170082
Patch

Attachment 170082 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14486922

New failing tests:
fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html
fast/forms/date-multiple-fields/date-multiple-fields-ax-value-changed-notification.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748694</commentid>
    <comment_count>11</comment_count>
      <attachid>170082</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-23 09:06:13 -0700</bug_when>
    <thetext>Comment on attachment 170082
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:552
&gt; +    postNotification(obj, obj-&gt;document(), AXObjectCache::AXTitleOrDescriptionChanged, true);

I think the name of this notification should be something more like AXAccessibleNameChanged, instead of title or description which are essential Mac concepts.

Also it seems like the method name &quot;contentChanged&quot; should match the name of the notification being posted (maybe the notification is AXContentChanged)

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2681
&gt; +                childObject-&gt;setCachedIsIgnoredValue(isIgnored);

i&apos;m worried that there are now hard to follow rules about when to set the cached ignored value. I see it being called in 4 places, all relatively different (FocusedUIElementForPage, addHiddenChildren, notifyParentOnChange, AXRenderObject::addChildren).

I feel like it will be easy to add some method that forgets to call this method which will cause problems

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2720
&gt; +    for (RefPtr&lt;AccessibilityObject&gt; obj = firstChild(); obj; obj = obj-&gt;nextSibling()) {

i don&apos;t like how this reduplicates the addChild() logic again in render object, after it was moved out into NodeObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748807</commentid>
    <comment_count>12</comment_count>
      <attachid>170197</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-23 11:07:51 -0700</bug_when>
    <thetext>Created attachment 170197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748816</commentid>
    <comment_count>13</comment_count>
      <attachid>170082</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-23 11:21:57 -0700</bug_when>
    <thetext>Comment on attachment 170082
Patch

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

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:552
&gt;&gt; +    postNotification(obj, obj-&gt;document(), AXObjectCache::AXTitleOrDescriptionChanged, true);
&gt; 
&gt; I think the name of this notification should be something more like AXAccessibleNameChanged, instead of title or description which are essential Mac concepts.
&gt; 
&gt; Also it seems like the method name &quot;contentChanged&quot; should match the name of the notification being posted (maybe the notification is AXContentChanged)

Sounds good. I switched them to AXTextChanged and textChanged(), respectively - that sound good? (I think &quot;accessible&quot; is implied in both cases.)

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2681
&gt;&gt; +                childObject-&gt;setCachedIsIgnoredValue(isIgnored);
&gt; 
&gt; i&apos;m worried that there are now hard to follow rules about when to set the cached ignored value. I see it being called in 4 places, all relatively different (FocusedUIElementForPage, addHiddenChildren, notifyParentOnChange, AXRenderObject::addChildren).
&gt; 
&gt; I feel like it will be easy to add some method that forgets to call this method which will cause problems

Well, the worst thing that will happen if this is done incorrectly is that a node will change
and it won&apos;t send a notification. We&apos;ll have to add more tests over time to catch this.

I agree it&apos;d be cleaner to just call it once on initialization and then whenever we think
it might have changed. Doing this broke just two tests, let me explain why in more detail:

1. accessibilityIsIgnored walks up the parent chain, creating AccessibilityObjects as it goes
2. When an AccessibilityScrollView is created for an iframe, it holds a reference to the ScrollView,
   so the ScrollView isn&apos;t actually deleted right away when other references to it go away.
3. These two tests are trying to check for things that happen when an iframe is deleted. The test
   breaks because removing all references to the iframe doesn&apos;t cause it to be deleted with the
   AccessibilityScrollView still around.

Let me see if I can make AccessibilityScrollView hold a weak reference to the ScrollView. If not,
maybe I can add a method to accessibilityController to disable accessibility for those tests.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2720
&gt;&gt; +    for (RefPtr&lt;AccessibilityObject&gt; obj = firstChild(); obj; obj = obj-&gt;nextSibling()) {
&gt; 
&gt; i don&apos;t like how this reduplicates the addChild() logic again in render object, after it was moved out into NodeObject

Oops, I wasn&apos;t paying attention when merging. I meant to change the code in AccessibilityNodeObject. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748920</commentid>
    <comment_count>14</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-23 13:37:09 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2681
&gt; &gt;&gt; +                childObject-&gt;setCachedIsIgnoredValue(isIgnored);
&gt; &gt; 
&gt; &gt; i&apos;m worried that there are now hard to follow rules about when to set the cached ignored value. I see it being called in 4 places, all relatively different (FocusedUIElementForPage, addHiddenChildren, notifyParentOnChange, AXRenderObject::addChildren).

I made AccessibilityScrollView hold a weak reference to the ScrollView, then I was able to initialize m_cachedIsIgnoredValue just once when an object is created, and all tests pass. How does that look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748921</commentid>
    <comment_count>15</comment_count>
      <attachid>170221</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-23 13:37:19 -0700</bug_when>
    <thetext>Created attachment 170221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750111</commentid>
    <comment_count>16</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-24 15:21:51 -0700</bug_when>
    <thetext>Chris, I think I addressed your concerns - how does this look now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750113</commentid>
    <comment_count>17</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-24 15:22:13 -0700</bug_when>
    <thetext>How does this latest patch look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750208</commentid>
    <comment_count>18</comment_count>
      <attachid>170221</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-24 16:46:34 -0700</bug_when>
    <thetext>Comment on attachment 170221
Patch

is detach() already called on AXScrollView somewhere in ScrollView?

AXOtherAriaAttributeChanged is a weird name because it doesn&apos;t really tell you what it includes or what it doesn&apos;t. Maybe I&apos;d like it better if it was just AriaAttributeChanged and it fired for any aria attribute... Or maybe there&apos;s a better name we can choose

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750217</commentid>
    <comment_count>19</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-24 16:55:30 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; AXOtherAriaAttributeChanged is a weird name because it doesn&apos;t really tell you what it includes or what it doesn&apos;t. Maybe I&apos;d like it better if it was just AriaAttributeChanged and it fired for any aria attribute... Or maybe there&apos;s a better name we can choose

Hmm, I don&apos;t really want duplicate notifications - i.e. AriaAttribute changed and ValueChanged fired for the same change.

Should I just add a separate notification for every possible Aria attribute now? It&apos;d be a bit tedious but it&apos;d be very clear, and it&apos;d make it easy to do the platform mapping or handle special cases in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750220</commentid>
    <comment_count>20</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-24 16:57:13 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; AXOtherAriaAttributeChanged is a weird name because it doesn&apos;t really tell you what it includes or what it doesn&apos;t. Maybe I&apos;d like it better if it was just AriaAttributeChanged and it fired for any aria attribute... Or maybe there&apos;s a better name we can choose
&gt; 
&gt; Hmm, I don&apos;t really want duplicate notifications - i.e. AriaAttribute changed and ValueChanged fired for the same change.
&gt; 
&gt; Should I just add a separate notification for every possible Aria attribute now? It&apos;d be a bit tedious but it&apos;d be very clear, and it&apos;d make it easy to do the platform mapping or handle special cases in the future.

No I don&apos;t think that&apos;s a good solution either. Maybe just remove the word Other.

Any idea about these scroll view question?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750222</commentid>
    <comment_count>21</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-24 16:59:45 -0700</bug_when>
    <thetext>&gt; No I don&apos;t think that&apos;s a good solution either. Maybe just remove the word Other.

OK.

&gt; Any idea about these scroll view question?

I thought I addressed them? What didn&apos;t I answer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750224</commentid>
    <comment_count>22</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-24 17:02:53 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; No I don&apos;t think that&apos;s a good solution either. Maybe just remove the word Other.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; Any idea about these scroll view question?
&gt; 
&gt; I thought I addressed them? What didn&apos;t I answer?

this one

is detach() already called on AXScrollView somewhere in ScrollView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750416</commentid>
    <comment_count>23</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-24 23:27:13 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; is detach() already called on AXScrollView somewhere in ScrollView?

Sorry I missed this. Yes, it&apos;s already called, though it&apos;s maybe not obvious:

An AccessibilityScrollView is actually only created for a FrameView, which is a subclass of ScrollView (see AXObjectCache::getOrCreate(Widget*)). The FrameView destructor already calls AXObjectCache::remove(Widget*), which calls detach() on the object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751081</commentid>
    <comment_count>24</comment_count>
      <attachid>170704</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-25 11:57:00 -0700</bug_when>
    <thetext>Created attachment 170704
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751115</commentid>
    <comment_count>25</comment_count>
      <attachid>170704</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 12:31:39 -0700</bug_when>
    <thetext>Comment on attachment 170704
Patch for landing

Clearing flags on attachment: 170704

Committed r132514: &lt;http://trac.webkit.org/changeset/132514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751116</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 12:31:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751387</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 18:02:18 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 100440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752388</commentid>
    <comment_count>28</comment_count>
      <attachid>171004</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-10-26 14:16:55 -0700</bug_when>
    <thetext>Created attachment 171004
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752457</commentid>
    <comment_count>29</comment_count>
      <attachid>171004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 14:58:13 -0700</bug_when>
    <thetext>Comment on attachment 171004
Patch for landing

Clearing flags on attachment: 171004

Committed r132699: &lt;http://trac.webkit.org/changeset/132699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752458</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 14:58:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169102</attachid>
            <date>2012-10-17 00:12:00 -0700</date>
            <delta_ts>2012-10-23 01:50:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99547-20121017001048.patch</filename>
            <type>text/plain</type>
            <size>28219</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y5ODQ5YWUzYWVkM2Zh
MGQ3YjYxYjJjMzViODE0NTU3MjFkYjQ2Zi4uYzA1OTMzNzA0NzI4MDdjNWY3MjY2NTI2NmZjMDZk
ODU5MmU4NWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEwLTE2ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoQVhPYmplY3RDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0S25vd25Jc0lnbm9yZWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRM
YXN0S25vd25Jc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6ZGVsZXRlTGluZUJveFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAyMDEyLTEwLTE2ICBYaWFuemh1IFdhbmcgIDx3YW5neGlh
bnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBBbmRyb2lkOiBOZWVkIGEg
d2F5IHRvIGdldCBhcHByb3ByaWF0ZSBmb250IGZvciBzb21lIHNwZWNpZmljIGNoYXJhY3RlcnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCA4ZTMyZWI1MDEwMTMzZjllZTg3M2U3OTU4Y2U0YjNiNmM3YmVhMGVmLi43NGM2NGNjNTQ3OWQ3
MTNjMzBmYTQ1OTllYzBkMWQ0ODc0Y2E3ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTMyNyw2ICszMjcsOSBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogICAgIG1f
bm9kZU9iamVjdE1hcHBpbmcuc2V0KG5vZGUsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKICAgICBt
X29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOwogICAgIGF0dGFjaFdy
YXBwZXIobmV3T2JqLmdldCgpKTsKKworICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVk
KG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKKwogICAgIHJldHVybiBuZXdPYmou
Z2V0KCk7CiB9CiAKQEAgLTM0NSw2ICszNDgsOSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIG1fcmVu
ZGVyT2JqZWN0TWFwcGluZy5zZXQocmVuZGVyZXIsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKICAg
ICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOwogICAgIGF0dGFj
aFdyYXBwZXIobmV3T2JqLmdldCgpKTsKKworICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25v
cmVkKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKKwogICAgIHJldHVybiBuZXdP
YmouZ2V0KCk7CiB9CiAgICAgCkBAIC01NDIsMTQgKzU0OCwyMyBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBub2RlKQogCiB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKiBub2RlKQogewotICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXQobm9kZSkpCi0gICAgICAgIG9iai0+Y2hpbGRyZW5D
aGFuZ2VkKCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChub2RlKSk7CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0g
ICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdldChyZW5kZXJlcikpCi0gICAgICAg
IG9iai0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJl
cikpOworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmopCit7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybjsKKworICAg
IG9iai0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAob2JqLT5sYXN0S25vd25Jc0lnbm9y
ZWQoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgY2hpbGRyZW5D
aGFuZ2VkKG9iai0+cGFyZW50T2JqZWN0KCkpOwogfQogICAgIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZChUaW1lcjxBWE9iamVjdENhY2hlPiopCkBAIC03
MDAsOCArNzE1LDU3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFu
dENoYW5nZWQoTm9kZSogbm9kZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9s
ZUNoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ID0gZ2V0T3JDcmVhdGUobm9kZSkpCisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IGdldE9yQ3JlYXRlKG5vZGUpKSB7CiAgICAgICAgIG9iai0+dXBkYXRlQWNjZXNzaWJpbGl0eVJv
bGUoKTsKKyAgICAgICAgcmVjb21wdXRlSXNJZ25vcmVkKG9iaik7CisgICAgfQorfQorCit2b2lk
IEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKGF0dHJOYW1lID09IHJv
bGVBdHRyKQorICAgICAgICBoYW5kbGVBcmlhUm9sZUNoYW5nZWQoZWxlbWVudCk7CisgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gYWx0QXR0ciB8fCBhdHRyTmFtZSA9PSB0aXRsZUF0dHIpCisgICAg
ICAgIGNvbnRlbnRDaGFuZ2VkKGVsZW1lbnQpOworCisgICAgaWYgKCFhdHRyTmFtZS5sb2NhbE5h
bWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikKKyAgICAgICAgaGFu
ZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV92YWx1ZW5vd0F0dHIpCisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVu
dCwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOworICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IGFyaWFfbGFiZWxBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFfbGFiZWxlZGJ5QXR0
cikKKyAgICAgICAgY29udGVudENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9jaGVja2VkQXR0cikKKyAgICAgICAgY2hlY2tlZFN0YXRlQ2hhbmdlZChlbGVt
ZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NlbGVjdGVkQXR0cikKKyAgICAg
ICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCisgICAgICAgIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5n
ZShlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2hpZGRlbkF0dHIpCisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChlbGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCisgICAgICAgIHBvc3ROb3RpZmljYXRp
b24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCwgdHJ1ZSk7
CisKKyAgICByZWNvbXB1dGVJc0lnbm9yZWQoZ2V0KGVsZW1lbnQpKTsKK30KKwordm9pZCBBWE9i
amVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sK
KyAgICByZWNvbXB1dGVJc0lnbm9yZWQoZ2V0KHJlbmRlcmVyKSk7Cit9CisKK3ZvaWQgQVhPYmpl
Y3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sK
KyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc0lnbm9yZWQgPSBv
YmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKKyAgICBpZiAob2JqLT5sYXN0S25vd25Jc0ln
bm9yZWQoKSAhPSBpc0lnbm9yZWQpIHsKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKG9iai0+cGFy
ZW50T2JqZWN0KCkpOworICAgICAgICBvYmotPnNldExhc3RLbm93bklzSWdub3JlZChpc0lnbm9y
ZWQpOworICAgIH0KIH0KIAogVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQ
b3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggOGYw
Zjc2NTY3OTlkMzEwNzllYTYxODIzZmY1NmY1MTEwZTJjMjdlNy4uYmM2ZTdmMTZjNGVjNzliMjBk
OGU5YWIwZTlkYTEyNjYyYzMzMGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXR0
YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoTm9kZSopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopOworICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAgICB2b2lkIGNo
ZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5n
ZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0
Kik7CkBAIC0xMDUsNiArMTA2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUFyaWFFeHBh
bmRlZENoYW5nZShOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVTY3JvbGxiYXJVcGRhdGUoU2Nyb2xs
VmlldyopOwogCisgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW50Kik7CisgICAgdm9pZCByZWNvbXB1dGVJc0lnbm9yZWQo
UmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCByZWNvbXB1dGVJc0lnbm9yZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCopOworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgIHN0YXRpYyB2b2lkIGVu
YWJsZUFjY2Vzc2liaWxpdHkoKSB7IGdBY2Nlc3NpYmlsaXR5RW5hYmxlZCA9IHRydWU7IH0KICAg
ICAvLyBFbmhhbmNlZCB1c2VyIGludGVyZmFjZSBhY2Nlc3NpYmlsaXR5IGNhbiBiZSB0b2dnbGVk
IGJ5IHRoZSBhc3Npc3RpdmUgdGVjaG5vbG9neS4KQEAgLTIyOSw2ICsyMzQsNyBAQCBpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSop
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9i
amVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKE5v
ZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nl
c3NpYmlsaXR5T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50
Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNv
bnRlbnRDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0
ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKikgeyB9CkBAIC0yNDAsNiArMjQ2LDkgQEAg
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKE5vZGUq
KSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZChO
b2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVt
ZW50Q2hhbmdlZChOb2RlKiwgTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
aGFuZGxlU2Nyb2xsYmFyVXBkYXRlKFNjcm9sbFZpZXcqKSB7IH0KK2lubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUsIEVsZW1lbnQqIGVsZW1lbnQpIHsgfQoraW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCopIHsgfQoraW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9k
ZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VOb3RpZmlj
YXRpb24oTm9kZSosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3Qg
U3RyaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBiOWJkOWE5ODcyNzNhYWMxNGJmNWVmMjQwMGQ1MzI5
MjFjNTYwZjlhLi43NjVjODU2NmJkNDQxYzJjYzg4NTMxY2JkMDZmNmY5MmQyY2U5NWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTE3NzEsNiArMTc3MSwxNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNj
cm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvaW50KSBjb25zdAogICAg
IH0KIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0S25vd25Jc0lnbm9yZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xhc3RLbm93bklzSWdub3JlZDsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0S25vd25Jc0lnbm9yZWQoYm9vbCBpc0lnbm9yZWQpCit7
CisgICAgbV9sYXN0S25vd25Jc0lnbm9yZWQgPSBpc0lnbm9yZWQ7Cit9CisKIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYVByZXNzZWRJc1ByZXNlbnQoKSBjb25zdAogewogICAgIHJldHVy
biAhZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIpLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggYmU2
MjExNjgxMzkwMDdiMDc5ZGIzNGI0MTFlN2M1ZjgwMzQ1NDQyMi4uYmVmNWFkZGMxN2UzNDk0YzU3
NDA4MzExOWNlZWU4MTQ5YTExODE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTY4MSw2ICs2ODEsOSBAQCBwdWJsaWM6
CiAgICAgLy8gU2Nyb2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNv
b3JkaW5hdGVzIG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKKyAgICBib29sIGxhc3RL
bm93bklzSWdub3JlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFzdEtub3duSXNJZ25vcmVkKGJv
b2wpOworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpAQCAtNzE5LDYgKzcy
Miw3IEBAIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGls
ZHJlbjsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hpbGRyZW47CiAgICAgQWNjZXNzaWJpbGl0
eVJvbGUgbV9yb2xlOworICAgIGJvb2wgbV9sYXN0S25vd25Jc0lnbm9yZWQ7CiAgICAgCiAgICAg
Ly8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Nyb2xsYWJsZUFy
ZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9s
bGFibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA1MzVk
ZTU3NTM3N2JiZDljOGRmNTQ0NzIyZmFiYjdhNzI3ZDk3OTc2Li5lNTU3ZDc5ZjY2ODRkYWY1NWFl
ZWZjMzUyYTQ1NTdjMjJlN2EyNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTExMzMsNyAr
MTEzMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGVjaXNpb24g
PT0gSWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgIC8vIElm
IHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJlbnQgdGhhdCBjYW5ub3QgaGF2ZSBjaGlsZHJl
biwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgogICAgIGlmIChpc0Rlc2NlbmRhbnRPZkJhcnJl
blBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCkBAIC0xMTY3LDggKzExNjcsOCBA
QCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdAogICAgIC8vIE5PVEU6IEJScyBhbHdheXMgaGF2ZSB0ZXh0IGJveGVzIG5vdywgc28g
dGhlIHRleHQgYm94IGNoZWNrIGhlcmUgY2FuIGJlIHJlbW92ZWQKICAgICBpZiAobV9yZW5kZXJl
ci0+aXNUZXh0KCkpIHsKICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMg
YW5kIE1lbnVCdXR0b25zIGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRl
bSwgc28gaXQncyBpZ25vcmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgaWYgKHBh
cmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9s
ZQotICAgICAgICAgICAgfHwgcGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gTWVudUJ1dHRvblJvbGUpCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBpZiAocGFyZW50ICYmIChw
YXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUl0ZW1Sb2xlIHx8IHBhcmVudC0+YXJp
YVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9uUm9sZSkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChtX3Jl
bmRlcmVyKTsKICAgICAgICAgaWYgKG1fcmVuZGVyZXItPmlzQlIoKSB8fCAhcmVuZGVyVGV4dC0+
Zmlyc3RUZXh0Qm94KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggYjFkMTU1ZDQyYjI2ZDc4MGQ4M2QxMzhjZTUyYzkw
NTg0ZDcxOGUwYy4uYTZkYWIyNTQ2OWE2MTQ3MDY0YTJlYTYwMDVkY2Q0MjY1MzVkYTUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcApAQCAtMTMwLDYgKzEzMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFU
YWJsZSgpIGNvbnN0CiAgICAgCiAgICAgLy8gZ28gdGhyb3VnaCB0aGUgY2VsbCdzIGFuZCBjaGVj
ayBmb3IgdGVsbC10YWxlIHNpZ25zIG9mICJkYXRhIiB0YWJsZSBzdGF0dXMKICAgICAvLyBjZWxs
cyBoYXZlIGJvcmRlcnMsIG9yIHVzZSBhdHRyaWJ1dGVzIGxpa2UgaGVhZGVycywgYWJiciwgc2Nv
cGUgb3IgYXhpcworICAgIHRhYmxlLT5yZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAgICAgUmVu
ZGVyVGFibGVTZWN0aW9uKiBmaXJzdEJvZHkgPSB0YWJsZS0+Zmlyc3RCb2R5KCk7CiAgICAgaWYg
KCFmaXJzdEJvZHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCA3Y2JhNTFmMGRmOGMyMDRlZTY5NTc0NTkwNTg1NjdmNmJhMTFhNDc3Li43NDhhOTYwOGQ5
NjBhMjI3OTAyNDdhMGQ0ZGY5M2U0NmY2MWIxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC03MjEsMzIgKzcyMSw4IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIAogICAgIGludmFsaWRhdGVOb2RlTGlzdENhY2hlc0luQW5j
ZXN0b3JzKCZhdHRyaWJ1dGUubmFtZSgpLCB0aGlzKTsKIAotICAgIGlmICghQVhPYmplY3RDYWNo
ZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyaWJ1dGUubmFtZSgpOwotICAgIGlmIChhdHRy
TmFtZSA9PSBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKSB7Ci0gICAgICAgIC8vIGFueSBjaGFu
Z2UgdG8gYXJpYS1hY3RpdmVkZXNjZW5kYW50IGF0dHJpYnV0ZSB0cmlnZ2VycyBhY2Nlc3NpYmls
aXR5IGZvY3VzIGNoYW5nZSwgYnV0IGRvY3VtZW50IGZvY3VzIHJlbWFpbnMgaW50YWN0Ci0gICAg
ICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQWN0aXZlRGVzY2VuZGFudENo
YW5nZWQodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSByb2xlQXR0cikgewotICAg
ICAgICAvLyB0aGUgcm9sZSBhdHRyaWJ1dGUgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSwgYW5kIHRo
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IG11c3QgcGljayB1cCB0aGVzZSBjaGFuZ2VzCi0gICAgICAg
IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYVJvbGVDaGFuZ2VkKHRoaXMp
OwotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV92YWx1ZW5vd0F0dHIpIHsKLSAgICAg
ICAgLy8gSWYgdGhlIHZhbHVlbm93IGF0dHJpYnV0ZSBjaGFuZ2VzLCBBWCBjbGllbnRzIG5lZWQg
dG8gYmUgbm90aWZpZWQuCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9z
dE5vdGlmaWNhdGlvbih0aGlzLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7
Ci0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2xhYmVsQXR0ciB8fCBhdHRyTmFtZSA9
PSBhcmlhX2xhYmVsZWRieUF0dHIgfHwgYXR0ck5hbWUgPT0gYWx0QXR0ciB8fCBhdHRyTmFtZSA9
PSB0aXRsZUF0dHIpIHsKLSAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudCBj
aGFuZ2VzIGR1ZSB0byBhbiBhdHRyaWJ1dGUgY2hhbmdlLCBub3RpZnkgYWNjZXNzaWJpbGl0eS4K
LSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jb250ZW50Q2hhbmdlZCh0aGlz
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY2hlY2tlZEF0dHIpCi0gICAgICAg
IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tlZFN0YXRlQ2hhbmdlZCh0aGlzKTsK
LSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NlbGVjdGVkQXR0cikKLSAgICAgICAgZG9j
dW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5zZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCh0aGlzKTsK
LSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2V4cGFuZGVkQXR0cikKLSAgICAgICAgZG9j
dW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UodGhpcyk7
Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9oaWRkZW5BdHRyKQotICAgICAgICBkb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKLSAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSBhcmlhX2ludmFsaWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgQVhPYmplY3RDYWNoZTo6QVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCwgdHJ1ZSk7CisgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpCisgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUubmFtZSgpLCB0aGlzKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDUwZGJlZmRhZWRmZjA2
ZTBiOGI3YzhmNDU4ZTg5ODE5ZTAxNGNiZWYuLjlhNWUxN2VjNzIyZjgyMTdiNDhiYWFjYTJlZTE1
ZjBjOWY2NjIwOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJs
b2NrLmgiCiAKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ29sdW1uSW5m
by5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtMTAx
Myw2ICsxMDE0LDggQEAgdm9pZCBSZW5kZXJCbG9jazo6ZGVsZXRlTGluZUJveFRyZWUoKQogICAg
ICAgICB9CiAgICAgfQogICAgIG1fbGluZUJveGVzLmRlbGV0ZUxpbmVCb3hUcmVlKHJlbmRlckFy
ZW5hKCkpOworICAgIGlmIChVTkxJS0VMWShBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yZWNvbXB1dGVJ
c0lnbm9yZWQodGhpcyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVS
b290SW5saW5lQm94KCkgCkBAIC0xMDI0LDYgKzEwMjcsMTAgQEAgUm9vdElubGluZUJveCogUmVu
ZGVyQmxvY2s6OmNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKQogewogICAgIFJvb3RJbmxp
bmVCb3gqIHJvb3RCb3ggPSBjcmVhdGVSb290SW5saW5lQm94KCk7CiAgICAgbV9saW5lQm94ZXMu
YXBwZW5kTGluZUJveChyb290Qm94KTsKKworICAgIGlmIChVTkxJS0VMWShBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSAmJiBtX2xpbmVCb3hlcy5maXJzdExpbmVCb3goKSA9
PSByb290Qm94KQorICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlY29tcHV0
ZUlzSWdub3JlZCh0aGlzKTsKKwogICAgIHJldHVybiByb290Qm94OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDdmZWUwNTQ0Mjc4MGFkODI3ZjYy
NDE3NWU3M2RmMGU2MGU0NmEyMTMuLjZkMjU1MmY2NTNlOWZiMDM2NTVhMWM5MmI1ZDZiMWQ0Mjg1
MDk5MWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0x
ODIyLDcgKzE4MjIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICAgICAgICAg
IGRvY3VtZW50KCktPnNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKICNlbmRpZgogICAg
ICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5jaGlsZHJlbkNoYW5nZWQodGhpcyk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQocGFyZW50KCkpOwogCiAgICAgICAgICAg
ICAvLyBLZWVwIGxheWVyIGhpZXJhcmNoeSB2aXNpYmlsaXR5IGJpdHMgdXAgdG8gZGF0ZSBpZiB2
aXNpYmlsaXR5IGNoYW5nZXMuCiAgICAgICAgICAgICBpZiAobV9zdHlsZS0+dmlzaWJpbGl0eSgp
ICE9IG5ld1N0eWxlLT52aXNpYmlsaXR5KCkpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwODdlZTM3YWRjZDQyZjFjZTU4
N2Y1NTU2NDEwM2QwYmM3NTg4ZGRkLi4yZDc5MThmYzk1YWExZDI0MmFkZDM3Mzg4NGMzODQ4YjM0
NTg2Njc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTAtMTYgIERvbWluaWMgTWF6em9u
aSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IE5vdGlmaWNhdGlvbiBzaG91
bGQgYmUgc2VudCB3aGVuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY2hhbmdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk1NDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyB0ZXN0IHRoYXQg
dGVzdHMgdGhhdCBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3RpZmljYXRpb24gaXMgZmlyZWQgb24g
dGhlIHBhcmVudAorICAgICAgICBvYmplY3Qgd2hlbiBhbiBvYmplY3QgdGhhdCB3YXMgcHJldmlv
dXNseSBpZ25vcmVkIGJlY29tZXMgdW5pZ25vcmVkLgorICAgICAgICBNb2RpZmllcyBhbm90aGVy
IHRlc3QgdGhhdCB3YXMgdG9vIGJyaXR0bGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0
LWNyYXNoZXMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1j
aGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTE2ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBBbmRyb2lkOiBOZWVkIGEgd2F5IHRvIGdldCBhcHByb3ByaWF0ZSBmb250IGZvciBzb21lIHNw
ZWNpZmljIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51
LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQKaW5kZXggODlmYTQyNDYyZDVhZGUwMzIyMDg4N2M1
ODFmMDdkMGE3YTg2Y2JlNy4uYzk2MmVhM2YxYTMxM2YyM2NhZTIwZDg3YWYwYWIwMzI5N2I5YTJh
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVz
LWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQg
YWRkaW5nIGEgc2VsZWN0ZWQgb3B0aW9uIHRvIGEgbWVudSBsaXN0IHZpYSBhbiB1bnVzdWFsIHJv
dXRlIChkb2N1bWVudC53cml0ZSBmcm9tIGFuIGV4dGVybmFsIHNjcmlwdCkgZG9lc24ndCB0cmln
Z2VyIGEgY3Jhc2ggd2hlbiBkaWRVcGRhdGVBY3RpdmVPcHRpb24gaXMgY2FsbGVkIGJlZm9yZSB0
aGUgY2hpbGRyZW4gYXJlIHVwZGF0ZWQuCiAKLVBBU1MgYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVu
Q291bnQgaXMgMQotUEFTUyBhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCBpcyAyCi1QQVNT
IGFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1MgYWNjZXNzaWJsZU1lbnVs
aXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1MgYWNjZXNzaWJsZU1l
bnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IGlzIDIKK1BBU1MgYWNjZXNzaWJs
ZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IGlzIDEKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNy
YXNoZXMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
YWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLmh0bWwKaW5kZXggNzUxMDMzOGZmYzUyZGE4YThjNThh
YjFhMWQxOTlhYjk3ZjNhNjE1YS4uYWVjYjRlNWEwZDBlNzVlMmI0YzhmMGM5ZDc4MTMwZjdjOWRk
YTY1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1s
CkBAIC0xOSwxOSArMTksMTggQEAKICAgICAgICAgbWVudWxpc3QuZm9jdXMoKTsKICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewogICAgICAgICAgICAgd2luZG93LmFjY2Vzc2libGVNZW51bGlzdCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICAgICAgd2luZG93LmFjY2Vzc2libGVQ
b3B1cCA9IGFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5D
b3VudCIsICIxIik7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
ZGF0YTp0ZXh0L2phdmFzY3JpcHQsZG9jdW1lbnQud3JpdGUoJzxvcHRpb24gc2VsZWN0ZWQ+Micp
OyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKLSAgICAgICAgICAgIHNob3VsZEJl
KCJhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50Iiwg
IjIiKTsKICAgICA8L3NjcmlwdD4KICAgICA8c2NyaXB0PgogICAgICAgICBtZW51bGlzdC5yZW1v
dmVDaGlsZChtZW51bGlzdC5zZWxlY3RlZE9wdGlvbnNbMF0pOwogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAgICAg
ICAgc2hvdWxkQmUoImFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxk
cmVuQ291bnQiLCAiMSIpOwogICAgIDwvc2NyaXB0PgogPC9zZWxlY3Q+CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1j
aGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZp
Y2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjRiOTExZTkwMTE2MmQ3NWZiYzU1MzNk
ODAyMGUwMWMwYzg0ZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRp
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQg
YSBjaGFuZ2UgdG8gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBmaXJlcyBhIGNoaWxkcmVuIGNoYW5n
ZWQgbm90aWZpY2F0aW9uIG9uIHRoZSBwYXJlbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykg
IT0gbnVsbCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Jykg
IT0gbnVsbCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURp
dkNvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2ludmlzaWJsZURpdicpICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCdlbXB0eURpdkNvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2VtcHR5RGl2JykgIT0gbnVsbCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQ
QVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGUnKSAhPSBudWxsIGlzIGZh
bHNlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVy
JykgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91
dExhYmVsJykgIT0gbnVsbCBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK0dvdCBub3RpZmljYXRpb24gb24gaGlkZGVuRGl2Q29udGFp
bmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykuY2hp
bGRyZW5Db3VudCBpcyAxCitHb3Qgbm90aWZpY2F0aW9uIG9uIGludmlzaWJsZURpdkNvbnRhaW5l
cgorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpLmNo
aWxkcmVuQ291bnQgaXMgMQorR290IG5vdGlmaWNhdGlvbiBvbiBlbXB0eURpdkNvbnRhaW5lcgor
UEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykuY2hpbGRyZW5D
b3VudCBpcyAxCitHb3Qgbm90aWZpY2F0aW9uIG9uIGRpdldpdGhvdXRSb2xlQ29udGFpbmVyCitQ
QVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKS5jaGls
ZHJlbkNvdW50IGlzIDEKK0dvdCBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dExhYmVsQ29udGFp
bmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVy
JykuY2hpbGRyZW5Db3VudCBpcyAxCitBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNz
ZnVsbHkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdl
LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYTlhNjc3NjRlNjViNjcxMTJh
OTIwMzEzNmE0M2U0ZDQ3MTU2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlm
aWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+
CisKKyAgPGRpdiBpZD0iaGlkZGVuRGl2Q29udGFpbmVyIiBhcmlhLWxhYmVsPSJoaWRkZW5EaXZD
b250YWluZXIiPgorICAgIDxkaXYgaWQ9ImhpZGRlbkRpdiIgaGlkZGVuPgorICAgICAgPGRpdj4K
KyAgICAgICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2
PgorICA8L2Rpdj4KKworICA8ZGl2IGlkPSJpbnZpc2libGVEaXZDb250YWluZXIiIGFyaWEtbGFi
ZWw9ImludmlzaWJsZURpdkNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iaW52aXNpYmxlRGl2IiBz
dHlsZT0idmlzaWJpbGl0eTogaGlkZGVuIj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+
QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAg
PGRpdiBpZD0iZW1wdHlEaXZDb250YWluZXIiIGFyaWEtbGFiZWw9ImVtcHR5RGl2Q29udGFpbmVy
Ij4KKyAgICA8ZGl2IGlkPSJlbXB0eURpdiI+PC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9
ImRpdldpdGhvdXRSb2xlQ29udGFpbmVyIiBhcmlhLWxhYmVsPSJkaXZXaXRob3V0Um9sZUNvbnRh
aW5lciI+CisgICAgPGRpdiBpZD0iZGl2V2l0aG91dFJvbGUiPgorICAgICAgPGRpdj4KKyAgICAg
ICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8
L2Rpdj4KKworICA8ZGl2IGlkPSJkaXZXaXRob3V0TGFiZWxDb250YWluZXIiIGFyaWEtbGFiZWw9
ImRpdldpdGhvdXRMYWJlbENvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZGl2V2l0aG91dExhYmVs
Ij4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0dG9uPC9idXR0b24+CisgICAgICA8
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBh
IGNoYW5nZSB0byBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGZpcmVzIGEgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudC4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZnVuY3Rp
b24gYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOworICAgIH0KKworICAgIHdp
bmRvdy5zdWNjZXNzQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGdvdFN1Y2Nlc3NmdWxOb3RpZmlj
YXRpb24oKSB7CisgICAgICAgIHN1Y2Nlc3NDb3VudCsrOworICAgICAgICBpZiAoc3VjY2Vzc0Nv
dW50ICE9IDUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVidWcoJ0FsbCBub3Rp
ZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4nKTsKKyAgICAgICAgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5l
cigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5l
cicpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigp
OworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVy
JykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuaGlk
ZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicpICE9IG51bGwi
KTsKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpLmFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1
ZygnR290IG5vdGlmaWNhdGlvbiBvbiBoaWRkZW5EaXZDb250YWluZXInKTsKKyAgICAgICAgc2hv
dWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykuY2hpbGRy
ZW5Db3VudCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAg
ICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZGVuRGl2JykuaGlkZGVuID0g
ZmFsc2U7CisKKyAgICBzaG91bGRCZVRydWUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNp
YmxlRGl2Q29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2JykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVF
bGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFpbmVyJykuYWRkTm90aWZpY2F0aW9uTGlzdGVu
ZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3Qgbm90aWZpY2F0
aW9uIG9uIGludmlzaWJsZURpdkNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50Iiwg
IjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXYnKS5zdHlsZS52aXNpYmlsaXR5
ID0gJ3Zpc2libGUnOworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2VtcHR5RGl2Q29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vz
c2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXYnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1
bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290IG5vdGlmaWNhdGlvbiBv
biBlbXB0eURpdkNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAg
ICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZW1wdHlEaXYnKS5pbm5lclRleHQgPSAnTm90IGVtcHR5IGFueW1vcmUu
JzsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlEaXYnKS5vZmZzZXRMZWZ0Owor
CisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xl
Q29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnZGl2V2l0aG91dFJvbGUnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVy
KGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290IG5vdGlmaWNhdGlv
biBvbiBkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQi
LCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlJykuc2V0QXR0cmlidXRl
KCdyb2xlJywgJ2hlYWRpbmcnKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxk
QmVGYWxzZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWwnKSAhPSBudWxs
Iik7CisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXIn
KS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAg
ICAgZGVidWcoJ0dvdCBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJyk7
CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJl
bENvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVs
Tm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rp
dldpdGhvdXRMYWJlbCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdMYWJlbCcpOworCisg
ICAgZGVidWcoJycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169987</attachid>
            <date>2012-10-22 14:32:04 -0700</date>
            <delta_ts>2012-10-23 01:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99547-20121022143332.patch</filename>
            <type>text/plain</type>
            <size>49803</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y5ODQ5YWUzYWVkM2Zh
MGQ3YjYxYjJjMzViODE0NTU3MjFkYjQ2Zi4uY2Q3YTc3NjJmMWZhNTEwYjFmMTJlYjJlOGJiODRi
N2Q1MTRjYmVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEwLTIyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIEFsc28gbW92ZXMgaGFuZGxpbmcgb2YgYXR0cmli
dXRlIGNoYW5nZXMgdG8gQVhPYmplY3RDYWNoZSwgYW5kIHNlbmRzCisgICAgICAgIG5vdGlmaWNh
dGlvbnMgZm9yIHNvbWUgYXR0cmlidXRlIGNoYW5nZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2ls
ZW50LiBPbgorICAgICAgICBDaHJvbWl1bSwgYWxsIGNoYW5nZXMgdG8gYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QncyBhdHRyaWJ1dGVzIHNob3VsZAorICAgICAgICByZXN1bHQgaW4gc29tZSBub3Rp
ZmljYXRpb24uCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKKyAgICAgICAgICAg
ICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUt
Y2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RpdGxlLW9yLWRlc2NyaXB0aW9uLWNoYW5nZS1ub3RpZmlj
YXRpb24uaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoQVhPYmplY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y29udGVudENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhY2hlZElzSWdub3JlZFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6c2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlP
YmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6Omlz
RGF0YVRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0Q2Fj
aGVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVsZXRl
TGluZUJveFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFuZEFw
cGVuZFJvb3RJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEyLTEwLTE2ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBBbmRyb2lkOiBOZWVkIGEgd2F5IHRvIGdldCBhcHByb3ByaWF0ZSBm
b250IGZvciBzb21lIHNwZWNpZmljIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDY3Y2M0MTMyZTBlMTJhNjgyMTE2MDFmOWM4MTc0ZGE0MWNkMWI5OGIuLjRlODQ2NTAw
Y2RhZjg5N2MyN2NmMTUxYzk0MDFkNWJjNzgyMWNhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMjIgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6
b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IE5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2Vu
dCB3aGVuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY2hhbmdlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk1NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBhY2Nlc3NpYmlsaXR5IG5vdGlm
aWNhdGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bi5oOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKwogMjAxMi0xMC0x
NiAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gQW5kcm9pZDogTmVlZCBhIHdheSB0byBnZXQgYXBwcm9wcmlhdGUgZm9udCBmb3Ig
c29tZSBzcGVjaWZpYyBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggOGUzMmViNTAxMDEzM2Y5ZWU4NzNlNzk1OGNlNGIz
YjZjN2JlYTBlZi4uNDcwZTJjODBlMzVlMTViMGExYTBlZDU1OGFiMjdlMTViNmMzYzBjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC02
MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaWYgRU5BQkxF
KFZJREVPKQogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCkBAIC0xNTcsNiArMTU4
LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVu
dEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKICAgICBpZiAob2JqLT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCiAgICAgICAgIG9iaiA9IG9iai0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAK
KyAgICBvYmotPnNldENhY2hlZElzSWdub3JlZFZhbHVlKG9iai0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKTsKKwogICAgIHJldHVybiBvYmo7CiB9CiAKQEAgLTMyNyw2ICszMzAsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQog
ICAgIG1fbm9kZU9iamVjdE1hcHBpbmcuc2V0KG5vZGUsIG5ld09iai0+YXhPYmplY3RJRCgpKTsK
ICAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOwogICAgIGF0
dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsKKyAgICAKICAgICByZXR1cm4gbmV3T2JqLmdldCgp
OwogfQogCkBAIC0zNDUsNiArMzQ5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RD
YWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBtX3JlbmRlck9i
amVjdE1hcHBpbmcuc2V0KHJlbmRlcmVyLCBuZXdPYmotPmF4T2JqZWN0SUQoKSk7CiAgICAgbV9v
YmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgCiAgICAgcmV0dXJuIG5ld09iai5nZXQoKTsKIH0KICAg
ICAKQEAgLTUyMywxNCArNTI4LDI0IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlQVhJRChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6Y29udGVu
dENoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0ID0gZ2V0T3JDcmVhdGUobm9kZSkpCi0gICAgICAgIG9iamVjdC0+Y29udGVudENoYW5nZWQo
KTsgCisgICAgY29udGVudENoYW5nZWQoZ2V0T3JDcmVhdGUobm9kZSkpOwogfQogCiB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0g
ICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGdldE9yQ3JlYXRlKHJlbmRlcmVy
KSkKLSAgICAgICAgb2JqZWN0LT5jb250ZW50Q2hhbmdlZCgpOyAKKyAgICBjb250ZW50Q2hhbmdl
ZChnZXRPckNyZWF0ZShyZW5kZXJlcikpOworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNvbnRl
bnRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sKKyAgICBpZiAoIW9iaikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBwYXJlbnRBbHJlYWR5RXhpc3RzID0gb2JqLT5wYXJl
bnRPYmplY3RJZkV4aXN0cygpOworICAgIG9iai0+Y29udGVudENoYW5nZWQoKTsKKyAgICBwb3N0
Tm90aWZpY2F0aW9uKG9iaiwgb2JqLT5kb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWFRpdGxl
T3JEZXNjcmlwdGlvbkNoYW5nZWQsIHRydWUpOworICAgIGlmIChwYXJlbnRBbHJlYWR5RXhpc3Rz
KQorICAgICAgICBvYmotPm5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpOwogfQogCiB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBub2Rl
KQpAQCAtNTQyLDE0ICs1NTcsMjMgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVDYWNoZUFm
dGVyTm9kZUlzQXR0YWNoZWQoTm9kZSogbm9kZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqID0gZ2V0KG5vZGUpKQotICAgICAgICBvYmotPmNoaWxkcmVuQ2hhbmdlZCgpOworICAgIGNo
aWxkcmVuQ2hhbmdlZChnZXQobm9kZSkpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxk
cmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBnZXQocmVuZGVyZXIpKQotICAgICAgICBvYmotPmNoaWxkcmVuQ2hh
bmdlZCgpOworICAgIGNoaWxkcmVuQ2hhbmdlZChnZXQocmVuZGVyZXIpKTsKK30KKwordm9pZCBB
WE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQor
eworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm47CisKKyAgICBvYmotPmNoaWxkcmVuQ2hh
bmdlZCgpOworCisgICAgaWYgKG9iai0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSAmJiBvYmotPmNh
Y2hlZElzSWdub3JlZFZhbHVlKCkgIT0gb2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChvYmotPnBhcmVudE9iamVjdCgpKTsKIH0KICAgICAKIHZv
aWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQoVGltZXI8QVhPYmpl
Y3RDYWNoZT4qKQpAQCAtNzAwLDggKzcyNCw1NSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRs
ZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKE5vZGUqIG5vZGUpCiAKIHZvaWQgQVhPYmplY3RDYWNo
ZTo6aGFuZGxlQXJpYVJvbGVDaGFuZ2VkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9iaiA9IGdldE9yQ3JlYXRlKG5vZGUpKQorICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBnZXRPckNyZWF0ZShub2RlKSkgewogICAgICAgICBvYmotPnVwZGF0
ZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgICAgIG9iai0+bm90aWZ5SWZJZ25vcmVkVmFsdWVD
aGFuZ2VkKCk7CisgICAgfQorfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgaWYgKGF0dHJOYW1lID09IHJvbGVBdHRyKQorICAgICAgICBoYW5kbGVBcmlhUm9s
ZUNoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYWx0QXR0ciB8fCBh
dHRyTmFtZSA9PSB0aXRsZUF0dHIpCisgICAgICAgIGNvbnRlbnRDaGFuZ2VkKGVsZW1lbnQpOwor
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGZvckF0dHIgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShs
YWJlbFRhZykpCisgICAgICAgIGxhYmVsQ2hhbmdlZChlbGVtZW50KTsKKworICAgIGlmICghYXR0
ck5hbWUubG9jYWxOYW1lKCkuc3RyaW5nKCkuc3RhcnRzV2l0aCgiYXJpYS0iKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGF0dHJOYW1lID09IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIp
CisgICAgICAgIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKGVsZW1lbnQpOworICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IGFyaWFfdmFsdWVub3dBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFf
dmFsdWV0ZXh0QXR0cikKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVj
dENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
YXJpYV9sYWJlbEF0dHIgfHwgYXR0ck5hbWUgPT0gYXJpYV9sYWJlbGVkYnlBdHRyIHx8IGF0dHJO
YW1lID09IGFyaWFfbGFiZWxsZWRieUF0dHIpCisgICAgICAgIGNvbnRlbnRDaGFuZ2VkKGVsZW1l
bnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY2hlY2tlZEF0dHIpCisgICAgICAg
IGNoZWNrZWRTdGF0ZUNoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
YXJpYV9zZWxlY3RlZEF0dHIpCisgICAgICAgIHNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKGVsZW1l
bnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfZXhwYW5kZWRBdHRyKQorICAgICAg
ICBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9oaWRkZW5BdHRyKQorICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZWxlbWVudC0+
cGFyZW50Tm9kZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2ludmFsaWRBdHRy
KQorICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYSW52
YWxpZFN0YXR1c0NoYW5nZWQsIHRydWUpOworICAgIGVsc2UKKyAgICAgICAgcG9zdE5vdGlmaWNh
dGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQs
IHRydWUpOworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZChFbGVtZW50KiBl
bGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKGxhYmVsVGFnKSk7Cisg
ICAgSFRNTEVsZW1lbnQqIGNvcnJlc3BvbmRpbmdDb250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTExh
YmVsRWxlbWVudCo+KGVsZW1lbnQpLT5jb250cm9sKCk7CisgICAgY29udGVudENoYW5nZWQoY29y
cmVzcG9uZGluZ0NvbnRyb2wpOworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlz
SWdub3JlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmogPSBnZXQocmVuZGVyZXIpKQorICAgICAgICBvYmotPm5vdGlmeUlmSWdub3Jl
ZFZhbHVlQ2hhbmdlZCgpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlz
aWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJE
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRl
eCA4ZjBmNzY1Njc5OWQzMTA3OWVhNjE4MjNmZjU2ZjUxMTBlMmMyN2U3Li5iYjA1MmI3OWY4MTY0
NjhiNzU0ODkxOTZkYWQ2ZmJkMTcwZjI1MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAgICB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0Kik7
CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZv
aWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVu
Q2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChSZW5kZXJP
YmplY3QqKTsKQEAgLTEwNSw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVBcmlh
RXhwYW5kZWRDaGFuZ2UoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Nyb2xsYmFyVXBkYXRlKFNj
cm9sbFZpZXcqKTsKIAorICAgIHZvaWQgaGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudCopOworICAgIHZvaWQgcmVjb21wdXRlSXNJZ25v
cmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpOworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQog
ICAgIHN0YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxpdHkoKSB7IGdBY2Nlc3NpYmlsaXR5RW5h
YmxlZCA9IHRydWU7IH0KICAgICAvLyBFbmhhbmNlZCB1c2VyIGludGVyZmFjZSBhY2Nlc3NpYmls
aXR5IGNhbiBiZSB0b2dnbGVkIGJ5IHRoZSBhc3Npc3RpdmUgdGVjaG5vbG9neS4KQEAgLTE1Miw2
ICsxNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFYUm93Q29sbGFwc2VkLAogICAgICAgICBBWFJv
d0V4cGFuZGVkLAogICAgICAgICBBWEludmFsaWRTdGF0dXNDaGFuZ2VkLAorICAgICAgICBBWFRp
dGxlT3JEZXNjcmlwdGlvbkNoYW5nZWQsCisgICAgICAgIEFYT3RoZXJBcmlhQXR0cmlidXRlQ2hh
bmdlZAogICAgIH07CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oUmVuZGVyT2JqZWN0Kiwg
QVhOb3RpZmljYXRpb24sIGJvb2wgcG9zdFRvRWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNo
cm9ub3VzbHkpOwpAQCAtMTgwLDYgKzE4Niw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24p
OwogICAgIHZvaWQgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiwgQVhMb2FkaW5nRXZlbnQpOworICAgIHZvaWQgY29udGVudENoYW5nZWQo
QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZvaWQgbGFiZWxDaGFuZ2VkKEVsZW1lbnQqKTsK
IAogICAgIC8vIFRoaXMgaXMgYSB3ZWFrIHJlZmVyZW5jZSBjYWNoZSBmb3Iga25vd2luZyBpZiBO
b2RlcyB1c2VkIGJ5IFRleHRNYXJrZXJzIGFyZSB2YWxpZC4KICAgICB2b2lkIHNldE5vZGVJblVz
ZShOb2RlKiBuKSB7IG1fdGV4dE1hcmtlck5vZGVzLmFkZChuKTsgfQpAQCAtMjI5LDggKzIzNywx
MCBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxp
dHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoZWNrZWRTdGF0ZUNo
YW5nZWQoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFu
Z2VkKFJlbmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRy
ZW5DaGFuZ2VkKE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVu
Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpjb250ZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxp
dHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2
ZW50Tm90aWZpY2F0aW9uKEZyYW1lKiwgQVhMb2FkaW5nRXZlbnQpIHsgfQpAQCAtMjQwLDYgKzI1
MCw4IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5n
ZShOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNo
YW5nZWQoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNl
ZFVJRWxlbWVudENoYW5nZWQoTm9kZSosIE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZVNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3KikgeyB9CitpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBFbGVtZW50KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJ
c0lnbm9yZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRDaGFuZ2Us
IHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCos
IEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
YjliZDlhOTg3MjczYWFjMTRiZjVlZjI0MDBkNTMyOTIxYzU2MGY5YS4uOTExZDVkNjdkMmQ3NDUy
YmY1MDE0ODY2ZDcxZjQ2OGIzZGY1MDQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC03Miw2ICs3Miw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlPYmplY3QoKQogICAgIDogbV9pZCgwKQog
ICAgICwgbV9oYXZlQ2hpbGRyZW4oZmFsc2UpCiAgICAgLCBtX3JvbGUoVW5rbm93blJvbGUpCisg
ICAgLCBtX2NhY2hlZElzSWdub3JlZFZhbHVlKERlZmF1bHRCZWhhdmlvcikKICNpZiBQTEFURk9S
TShHVEspCiAgICAgLCBtX3dyYXBwZXIoMCkKICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAt
MTc3MSw2ICsxNzcyLDI4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9i
YWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9pbnQpIGNvbnN0CiAgICAgfQogfQogCiti
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhY2hlZElzSWdub3JlZFZhbHVlKCkKK3sKKyAgICBp
ZiAobV9jYWNoZWRJc0lnbm9yZWRWYWx1ZSA9PSBEZWZhdWx0QmVoYXZpb3IpCisgICAgICAgIG1f
Y2FjaGVkSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgPyBJZ25vcmVP
YmplY3QgOiBJbmNsdWRlT2JqZWN0OworCisgICAgcmV0dXJuIG1fY2FjaGVkSXNJZ25vcmVkVmFs
dWUgPT0gSWdub3JlT2JqZWN0OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldENh
Y2hlZElzSWdub3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVkKQoreworICAgIG1fY2FjaGVkSXNJZ25v
cmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgp
Cit7CisgICAgYm9vbCBpc0lnbm9yZWQgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CisgICAg
aWYgKGNhY2hlZElzSWdub3JlZFZhbHVlKCkgIT0gaXNJZ25vcmVkKSB7CisgICAgICAgIGF4T2Jq
ZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHBhcmVudE9iamVjdCgpKTsKKyAgICAgICAgc2V0
Q2FjaGVkSXNJZ25vcmVkVmFsdWUoaXNJZ25vcmVkKTsKKyAgICB9Cit9CisKIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYVByZXNzZWRJc1ByZXNlbnQoKSBjb25zdAogewogICAgIHJldHVy
biAhZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIpLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggYmU2
MjExNjgxMzkwMDdiMDc5ZGIzNGI0MTFlN2M1ZjgwMzQ1NDQyMi4uMjU1MjEzYWI0MzM5ZmJhODM1
N2NhNzkwNDFmMzY2N2FlY2UzMTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTY4MSw2ICs2ODEsMTIgQEAgcHVibGlj
OgogICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBj
b29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCisgICAgYm9vbCBjYWNo
ZWRJc0lnbm9yZWRWYWx1ZSgpOworICAgIHZvaWQgc2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoYm9v
bCk7CisKKyAgICAvLyBGaXJlcyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRo
ZSBwYXJlbnQgaWYgdGhlIGlzSWdub3JlZCB2YWx1ZSBjaGFuZ2VkLgorICAgIHZvaWQgbm90aWZ5
SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CisKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkg
Y29uc3Q7CkBAIC03MTksNiArNzI1LDcgQEAgcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJl
bjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbiBtX2NhY2hlZElzSWdub3JlZFZhbHVlOwogICAgIAogICAgIC8vIElmIHRoaXMg
b2JqZWN0IGl0c2VsZiBzY3JvbGxzLCByZXR1cm4gaXRzIFNjcm9sbGFibGVBcmVhLgogICAgIHZp
cnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29u
c3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNTM1ZGU1NzUzNzdiYmQ5
YzhkZjU0NDcyMmZhYmI3YTcyN2Q5Nzk3Ni4uZDg1ZGUwMmUwY2VmZmMyZmZhZmQyNDFjNmY0ZGRk
ZWM2OThjYmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMTY3LDggKzExNjcsOCBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogICAgIC8vIE5PVEU6IEJScyBhbHdheXMgaGF2ZSB0ZXh0IGJveGVzIG5vdywgc28gdGhl
IHRleHQgYm94IGNoZWNrIGhlcmUgY2FuIGJlIHJlbW92ZWQKICAgICBpZiAobV9yZW5kZXJlci0+
aXNUZXh0KCkpIHsKICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5k
IE1lbnVCdXR0b25zIGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwg
c28gaXQncyBpZ25vcmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgaWYgKHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9sZQot
ICAgICAgICAgICAgfHwgcGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRl
KCkgPT0gTWVudUJ1dHRvblJvbGUpCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBpZiAocGFyZW50ICYmIChwYXJl
bnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUl0ZW1Sb2xlIHx8IHBhcmVudC0+YXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9uUm9sZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChtX3JlbmRl
cmVyKTsKICAgICAgICAgaWYgKG1fcmVuZGVyZXItPmlzQlIoKSB8fCAhcmVuZGVyVGV4dC0+Zmly
c3RUZXh0Qm94KCkpCkBAIC0yNzM1LDcgKzI3MzUsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAgLy8gVGhpcyBjYW4gcHJldmVudCBhcmlh
LWhpZGRlbiBjaGFuZ2VzIGZyb20gd29ya2luZyBjb3JyZWN0bHkuIEhlbmNlLCB3aGVuZXZlciBh
IHBhcmVudCBpcyBnZXR0aW5nIGNoaWxkcmVuLCBlbnN1cmUgZGF0YSBpcyBub3Qgc3RhbGUuCiAg
ICAgICAgIG9iai0+Y2xlYXJDaGlsZHJlbigpOwogCi0gICAgICAgIGlmIChvYmotPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSkgeworICAgICAgICBib29sIGlzSWdub3JlZCA9IG9iai0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpOworICAgICAgICBvYmotPnNldENhY2hlZElzSWdub3JlZFZhbHVl
KGlzSWdub3JlZCk7CisgICAgICAgIGlmIChpc0lnbm9yZWQpIHsKICAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IG9iai0+Y2hpbGRyZW4oKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNpemUoKTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBiMWQxNTVkNDJi
MjZkNzgwZDgzZDEzOGNlNTJjOTA1ODRkNzE4ZTBjLi5hNmRhYjI1NDY5YTYxNDcwNjRhMmVhNjAw
NWRjZDQyNjUzNWRhNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0xMzAsNiArMTMwLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICAKICAgICAvLyBnbyB0aHJvdWdo
IHRoZSBjZWxsJ3MgYW5kIGNoZWNrIGZvciB0ZWxsLXRhbGUgc2lnbnMgb2YgImRhdGEiIHRhYmxl
IHN0YXR1cwogICAgIC8vIGNlbGxzIGhhdmUgYm9yZGVycywgb3IgdXNlIGF0dHJpYnV0ZXMgbGlr
ZSBoZWFkZXJzLCBhYmJyLCBzY29wZSBvciBheGlzCisgICAgdGFibGUtPnJlY2FsY1NlY3Rpb25z
SWZOZWVkZWQoKTsKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9keSA9IHRhYmxlLT5m
aXJzdEJvZHkoKTsKICAgICBpZiAoIWZpcnN0Qm9keSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVj
dENhY2hlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1
bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwCmluZGV4IGE5NWUwNDQxOGNjZDQ5OGQyODZkYzg3
YTgwOGFiYjMzMTAyZTBhNzAuLjlhMzk4MzUxYzk5NDY2MzRhYjhmOGRmNjdlYTgzNmY0ZjdkZGYx
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhP
YmplY3RDYWNoZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2Nocm9taXVtL0FYT2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHAKQEAgLTg2LDE5ICs4NiwyMSBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmosIEFYTm90aWZpYwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgog
ICAgIGNhc2UgQVhDaGlsZHJlbkNoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRD
aGFuZ2VkOgorICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKICAgICBjYXNlIEFYTGF5
b3V0Q29tcGxldGU6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhM
b2FkQ29tcGxldGU6CiAgICAgY2FzZSBBWE1lbnVMaXN0SXRlbVNlbGVjdGVkOgogICAgIGNhc2Ug
QVhNZW51TGlzdFZhbHVlQ2hhbmdlZDoKKyAgICBjYXNlIEFYT3RoZXJBcmlhQXR0cmlidXRlQ2hh
bmdlZDoKICAgICBjYXNlIEFYUm93Q29sbGFwc2VkOgogICAgIGNhc2UgQVhSb3dDb3VudENoYW5n
ZWQ6CiAgICAgY2FzZSBBWFJvd0V4cGFuZGVkOgogICAgIGNhc2UgQVhTY3JvbGxlZFRvQW5jaG9y
OgogICAgIGNhc2UgQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZDoKICAgICBjYXNlIEFYU2VsZWN0
ZWRUZXh0Q2hhbmdlZDoKKyAgICBjYXNlIEFYVGl0bGVPckRlc2NyaXB0aW9uQ2hhbmdlZDoKICAg
ICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2NiYTUx
ZjBkZjhjMjA0ZWU2OTU3NDU5MDU4NTY3ZjZiYTExYTQ3Ny4uNzQ4YTk2MDhkOTYwYTIyNzkwMjQ3
YTBkNGRmOTNlNDZmNjFiMTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzIxLDMyICs3
MjEsOCBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUpCiAKICAgICBpbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNJbkFuY2VzdG9ycygmYXR0
cmlidXRlLm5hbWUoKSwgdGhpcyk7CiAKLSAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lID0gYXR0cmlidXRlLm5hbWUoKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYXJp
YV9hY3RpdmVkZXNjZW5kYW50QXR0cikgewotICAgICAgICAvLyBhbnkgY2hhbmdlIHRvIGFyaWEt
YWN0aXZlZGVzY2VuZGFudCBhdHRyaWJ1dGUgdHJpZ2dlcnMgYWNjZXNzaWJpbGl0eSBmb2N1cyBj
aGFuZ2UsIGJ1dCBkb2N1bWVudCBmb2N1cyByZW1haW5zIGludGFjdAotICAgICAgICBkb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKHRoaXMp
OwotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gcm9sZUF0dHIpIHsKLSAgICAgICAgLy8gdGhl
IHJvbGUgYXR0cmlidXRlIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUsIGFuZCB0aGUgQWNjZXNzaWJp
bGl0eU9iamVjdCBtdXN0IHBpY2sgdXAgdGhlc2UgY2hhbmdlcwotICAgICAgICBkb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCh0aGlzKTsKLSAgICB9IGVs
c2UgaWYgKGF0dHJOYW1lID09IGFyaWFfdmFsdWVub3dBdHRyKSB7Ci0gICAgICAgIC8vIElmIHRo
ZSB2YWx1ZW5vdyBhdHRyaWJ1dGUgY2hhbmdlcywgQVggY2xpZW50cyBuZWVkIHRvIGJlIG5vdGlm
aWVkLgotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRp
b24odGhpcywgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwotICAgIH0gZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9sYWJlbEF0dHIgfHwgYXR0ck5hbWUgPT0gYXJpYV9sYWJl
bGVkYnlBdHRyIHx8IGF0dHJOYW1lID09IGFsdEF0dHIgfHwgYXR0ck5hbWUgPT0gdGl0bGVBdHRy
KSB7Ci0gICAgICAgIC8vIElmIHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgY2hhbmdlcyBkdWUg
dG8gYW4gYXR0cmlidXRlIGNoYW5nZSwgbm90aWZ5IGFjY2Vzc2liaWxpdHkuCi0gICAgICAgIGRv
Y3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y29udGVudENoYW5nZWQodGhpcyk7Ci0gICAgfSBl
bHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NoZWNrZWRBdHRyKQotICAgICAgICBkb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPmNoZWNrZWRTdGF0ZUNoYW5nZWQodGhpcyk7Ci0gICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gYXJpYV9zZWxlY3RlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQodGhpcyk7Ci0gICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKHRoaXMpOwotICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IGFyaWFfaGlkZGVuQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQodGhpcyk7Ci0gICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9pbnZhbGlkQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6OkFYSW52YWxpZFN0YXR1
c0NoYW5nZWQsIHRydWUpOworICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQorICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0cmlidXRlLm5hbWUoKSwgdGhpcyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1MGRiZWZkYWVkZmYwNmUwYjhiN2M4ZjQ1
OGU4OTgxOWUwMTRjYmVmLi45YTVlMTdlYzcyMmY4MjE3YjQ4YmFhY2EyZWUxNWYwYzlmNjYyMDhj
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI0LDYgKzI0
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCisj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNvbHVtbkluZm8uaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTEwMTMsNiArMTAxNCw4
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUxpbmVCb3hUcmVlKCkKICAgICAgICAgfQogICAg
IH0KICAgICBtX2xpbmVCb3hlcy5kZWxldGVMaW5lQm94VHJlZShyZW5kZXJBcmVuYSgpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkpCisg
ICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cmVjb21wdXRlSXNJZ25vcmVkKHRo
aXMpOwogfQogCiBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlUm9vdElubGluZUJv
eCgpIApAQCAtMTAyNCw2ICsxMDI3LDEwIEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpj
cmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKIHsKICAgICBSb290SW5saW5lQm94KiByb290
Qm94ID0gY3JlYXRlUm9vdElubGluZUJveCgpOwogICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVC
b3gocm9vdEJveCk7CisKKyAgICBpZiAoVU5MSUtFTFkoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJp
bGl0eUVuYWJsZWQoKSkgJiYgbV9saW5lQm94ZXMuZmlyc3RMaW5lQm94KCkgPT0gcm9vdEJveCkK
KyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yZWNvbXB1dGVJc0lnbm9yZWQo
dGhpcyk7CisKICAgICByZXR1cm4gcm9vdEJveDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3ZmVlMDU0NDI3ODBhZDgyN2Y2MjQxNzVlNzNkZjBl
NjBlNDZhMjEzLi42ZDI1NTJmNjUzZTlmYjAzNjU1YTFjOTJiNWQ2YjFkNDI4NTA5OTFlIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTgyMiw3ICsxODIy
LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgICAgICAgICBkb2N1bWVudCgp
LT5zZXRBbm5vdGF0ZWRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlm
ICh2aXNpYmlsaXR5Q2hhbmdlZCAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRy
ZW5DaGFuZ2VkKHRoaXMpOworICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHBhcmVudCgpKTsKIAogICAgICAgICAgICAgLy8gS2VlcCBs
YXllciBoaWVyYXJjaHkgdmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRhdGUgaWYgdmlzaWJpbGl0eSBj
aGFuZ2VzLgogICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBuZXdTdHls
ZS0+dmlzaWJpbGl0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgKaW5kZXggZGU2OGQzN2Iw
NDM4ZDUyMDY3MTcxYmQ2YTRmMWE0ZTZmNTczYWI0MS4uYzcwMjUzNDMxY2UxZmZlOWU5ODQ3NTc5
ODA5OTRjODMwYjE4MDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaApAQCAtNTQsMTEgKzU0
LDggQEAgZW51bSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIHsKICAgICBXZWJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uUm93Q29sbGFwc2VkLAogICAgIFdlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25Sb3dFeHBhbmRlZCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSW52
YWxpZFN0YXR1c0NoYW5nZWQsCi0KLSAgICAvLyBGSVhNRTogbm93IHRoYXQgd2UncmUgdXNpbmcg
QXNzZXJ0TWF0Y2hpbmdFbnVtcywgd2UgZG9uJ3QgbmVlZCBhCi0gICAgLy8gY2F0Y2gtYWxsICJp
bnZhbGlkIiBub3RpZmljYXRpb24gZW51bS4gUmVtb3ZlIHRoaXMgb25jZSBpdCdzIGJlZW4KLSAg
ICAvLyByZW1vdmVkIGZyb20gQ2hyb21pdW0uCi0gICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkludmFsaWQsCisgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblRpdGxlT3JEZXNj
cmlwdGlvbkNoYW5nZWQsCisgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbk90aGVyQXJp
YUF0dHJpYnV0ZUNoYW5nZWQKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA5
NWU4YjYwN2QyMjhmOGJlODVjZGNlOWEzMWIxODkzNzExM2Q1MmJmLi5iYTU3Nzc0MzIxMGIwZGUz
NWJiZGU4ODFkZDAwOGI1NmIzZGNiNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtMTUzLDYgKzE1Myw4IEBAIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblJvd0Nv
dW50Q2hhbmdlZCwgQVhPYmplCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25Sb3dDb2xsYXBzZWQsIEFYT2JqZWN0Q2FjaGU6OkFYUm93Q29s
bGFwc2VkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvblJvd0V4cGFuZGVkLCBBWE9iamVjdENhY2hlOjpBWFJvd0V4cGFuZGVkKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbklu
dmFsaWRTdGF0dXNDaGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2Vk
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvblRpdGxlT3JEZXNjcmlwdGlvbkNoYW5nZWQsIEFYT2JqZWN0Q2FjaGU6OkFYVGl0bGVPckRl
c2NyaXB0aW9uQ2hhbmdlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkLCBBWE9iamVjdENh
Y2hlOjpBWE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlVW5rbm93biwgVW5rbm93blJvbGUpOwogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUJ1dHRvbiwgQnV0
dG9uUm9sZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYmE5MzdhODU0NWJkZGFhMDliMWU0NzQ2ZDM2ZmFkYWRkMDlmZWJhNi4uNjI2YTcwZTYz
ZGM2MjJhOGQ4Nzg3ZjY5OWM0ZjlmNjc5NDY4MGRmNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTIyICBE
b21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3Rp
ZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFk
ZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6
OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKToKKwogMjAxMi0xMC0xNiAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6
IEFkZCB0aGUgY2hyb21pdW0gQVBJIGZvciBSVENEYXRhQ2hhbm5lbApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGM3YWI0NzVlN2ZlNzllZjE4
ZDUyODgyZTM1NzI2YTQ1OTY1NmQ3ZTkuLjQzYjRiY2Q3YjEwZmEzNDc4ZmMwYzk2Y2M0ZTZlY2Ex
MDI3ZGMxNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAKQEAgLTcwMiw2ICs3MDIsMTIgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cG9zdEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb24oY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2IKICAgICBj
YXNlIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25JbnZhbGlkU3RhdHVzQ2hhbmdlZDoKICAg
ICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblRpdGxlT3JEZXNj
cmlwdGlvbkNoYW5nZWQ6CisgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiVGl0bGVPckRlc2Ny
aXB0aW9uQ2hhbmdlZCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbk90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQ6CisgICAgICAgIG5vdGlmaWNh
dGlvbk5hbWUgPSAiT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZCI7CisgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiVW5rbm93bk5vdGlmaWNh
dGlvbiI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA4N2VlMzdhZGNkNDJmMWNlNTg3ZjU1NTY0
MTAzZDBiYzc1ODhkZGQuLjI1ZmQzZDQ2YTJmNGVlZTRiOGFiYmZlYTk0MjNhNjY3MjVlZjQ4ZDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0xMC0yMiAgRG9taW5pYyBNYXp6b25pICA8ZG1h
enpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDogTm90aWZpY2F0aW9uIHNob3VsZCBiZSBz
ZW50IHdoZW4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTU0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMyBuZXcgdGVzdCB0byBlbnN1cmU6
CisgICAgICAgIDEuIEEgImNoaWxkcmVuIGNoYW5nZWQiIG5vdGlmaWNhdGlvbiBpcyBmaXJlZCBv
biB0aGUgcGFyZW50IG9iamVjdCB3aGVuIGFuCisgICAgICAgICAgIG9iamVjdCB0aGF0IHdhcyBw
cmV2aW91c2x5IGlnbm9yZWQgYmVjb21lcyB1bmlnbm9yZWQuCisgICAgICAgIDIuIEEgbm90aWZp
Y2F0aW9uIGlzIHNlbnQgd2hlbiBhbiBlbGVtZW50J3MgdGl0bGUgb3IgbGFiZWwgY2hhbmdlcy4K
KyAgICAgICAgMy4gQSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFub3RoZXIgQVJJQSBhdHRy
aWJ1dGUgY2hhbmdlcy4KKworICAgICAgICBNb2RpZmllcyBhZGQtdG8tbWVudS1saXN0LWNyYXNo
ZXMgYmVjYXVzZSBpdCB3YXMgdG9vIGJyaXR0bGU7IGl0IHdhcworICAgICAgICAgICAgcmVmZXJl
bmNpbmcgYSBzdGFsZSBvYmplY3QgcmF0aGVyIHRoYW4gcmV0cmlldmluZyBpdHMgbGF0ZXN0IGhh
bmRsZS4KKyAgICAgICAgTW9kaWZpZXMgYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24g
dG8gbGlzdGVuIG9uIHRoZSBjb3JyZWN0CisgICAgICAgICAgICBvYmplY3Qgb24gYWxsIHBsYXRm
b3Jtcy4KKyAgICAgICAgU2ltcGxpZmllcyBub3RpZmljYXRpb24tbGlzdGVuZXJzIHNvIGl0IGRv
ZXNuJ3QgZ2VuZXJhdGUgYWRkaXRpb25hbAorICAgICAgICAgICAgbm90aWZpY2F0aW9ucyB0aGF0
IGFyZSBpbmNvbnNpc3RlbnQgYmV0d2VlbiBwbGF0Zm9ybXMgbm93LgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJp
YnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0
ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRpb24tY2hhbmdlLW5v
dGlmaWNhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRpb24tY2hhbmdlLW5vdGlmaWNhdGlv
bi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0xNiAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQW5kcm9pZDogTmVlZCBhIHdheSB0
byBnZXQgYXBwcm9wcmlhdGUgZm9udCBmb3Igc29tZSBzcGVjaWZpYyBjaGFyYWN0ZXJzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5v
dGlmaWNhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94
LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCmluZGV4IDRmNmM2MGVjOWJmOTI0ZDZjOTIxNmEzNGU5
NGJmMmJkY2RhYmFlMmMuLmY3OTkxMTIyODQyY2EyMGNmMWVmY2FmZjI2NjVlMzA3NTBjYmEwNzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5k
cy1ub3RpZmljYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
Y2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKQEAgLTcsMTUgKzcsMTMgQEAKICAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoYXQgY2hlY2tpbmcgb2YgYW4gYXJpYSBjaGVja2JveCBzZW5kcyBhIG5v
dGlmaWNhdGlvbi4iKTsKLSAgICAgICAgd2luZG93LnJvb3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5yb290RWxlbWVudDsKLSAgICAgICAgd2luZG93LmJvZHkgPSByb290LmNoaWxkQXRJbmRl
eCgwKTsKIAotICAgICAgICB2YXIgYWNjZXNzaWJsZUNoZWNrYm94ID0gYm9keS5jaGlsZEF0SW5k
ZXgoMCk7CisgICAgICAgIHZhciBhY2Nlc3NpYmxlQ2hlY2tib3ggPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNoZWNrYm94MSIpOwogICAgICAgICB2YXIg
bm90aWZpY2F0aW9uQ291bnQgPSAwOwogCiAgICAgICAgIGZ1bmN0aW9uIGxpc3RlbmVyKG5vdGlm
aWNhdGlvbikgewotICAgICAgICBpZiAobm90aWZpY2F0aW9uID09ICJDaGVja2VkU3RhdGVDaGFu
Z2VkIikKLSAgICAgICAgICAgIG5vdGlmaWNhdGlvbkNvdW50Kys7CisgICAgICAgICAgICBpZiAo
bm90aWZpY2F0aW9uID09ICJDaGVja2VkU3RhdGVDaGFuZ2VkIikKKyAgICAgICAgICAgICAgICBu
b3RpZmljYXRpb25Db3VudCsrOwogCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmlubmVyVGV4dCArPSAiR290IG5vdGlmaWNhdGlvbjogIiArIG5vdGlmaWNh
dGlvbiArICJcbiI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm90
aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3Rp
ZmljYXRpb24tbGlzdGVuZXJzLmh0bWwKaW5kZXggM2RkODg4ODQ0ZDBjNGE2MGZjOTRlOWMyMmRm
ZjYyZDI2YmFhZWI2My4uNjI2YzVlYjhmZWRjZmJhOTFjOGFiMGEwYTZjY2ExNjAyNTg2ODI3YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVu
ZXJzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlz
dGVuZXJzLmh0bWwKQEAgLTcsNyArNyw3IEBACiAKIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgog
Ci08c2VsZWN0IGlkPSJzZWxlY3QiIHZhbHVlPSJTZWxlY3QiPjxvcHRpb24+QTxvcHRpb24+Qjwv
c2VsZWN0PgorPHNlbGVjdCBpZD0ic2VsZWN0IiB2YWx1ZT0iU2VsZWN0Ij48L3NlbGVjdD4KIAog
PGRpdiBpZD0ic2xpZGVyIiB0YWJpbmRleD0iMCIgcm9sZT0ic2xpZGVyIiBhcmlhLXZhbHVlbm93
PSI1Ij5TbGlkZXI8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVu
dS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0CmluZGV4IDg5ZmE0MjQ2MmQ1YWRlMDMyMjA4ODdj
NTgxZjA3ZDBhN2E4NmNiZTcuLmM5NjJlYTNmMWEzMTNmMjNjYWUyMGQ4N2FmMGFiMDMyOTdiOWEy
YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hl
cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0
IGFkZGluZyBhIHNlbGVjdGVkIG9wdGlvbiB0byBhIG1lbnUgbGlzdCB2aWEgYW4gdW51c3VhbCBy
b3V0ZSAoZG9jdW1lbnQud3JpdGUgZnJvbSBhbiBleHRlcm5hbCBzY3JpcHQpIGRvZXNuJ3QgdHJp
Z2dlciBhIGNyYXNoIHdoZW4gZGlkVXBkYXRlQWN0aXZlT3B0aW9uIGlzIGNhbGxlZCBiZWZvcmUg
dGhlIGNoaWxkcmVuIGFyZSB1cGRhdGVkLgogCi1QQVNTIGFjY2Vzc2libGVQb3B1cC5jaGlsZHJl
bkNvdW50IGlzIDEKLVBBU1MgYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQgaXMgMgotUEFT
UyBhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCBpcyAxCitQQVNTIGFjY2Vzc2libGVNZW51
bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCBpcyAxCitQQVNTIGFjY2Vzc2libGVN
ZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCBpcyAyCitQQVNTIGFjY2Vzc2li
bGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCBpcyAxCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1j
cmFzaGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sCmluZGV4IDc1MTAzMzhmZmM1MmRhOGE4YzU4
YWIxYTFkMTk5YWI5N2YzYTYxNWEuLmFlY2I0ZTVhMGQwZTc1ZTJiNGM4ZjBjOWQ3ODEzMGY3Yzlk
ZGE2NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMuaHRt
bApAQCAtMTksMTkgKzE5LDE4IEBACiAgICAgICAgIG1lbnVsaXN0LmZvY3VzKCk7CiAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKICAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxlTWVudWxpc3QgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxl
UG9wdXAgPSBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAgICAg
c2hvdWxkQmUoImFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVu
Q291bnQiLCAiMSIpOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGRvY3VtZW50LndyaXRlKCc8b3B0aW9uIHNlbGVjdGVkPjIn
KTsiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
ciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgICAgICBzaG91bGRC
ZSgiYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQiLCAiMiIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCIs
ICIyIik7CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KICAgICAgICAgbWVudWxpc3QucmVt
b3ZlQ2hpbGQobWVudWxpc3Quc2VsZWN0ZWRPcHRpb25zWzBdKTsKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGls
ZHJlbkNvdW50IiwgIjEiKTsKICAgICA8L3NjcmlwdD4KIDwvc2VsZWN0PgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQt
Y2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlm
aWNhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRiZGM2ZGI1N2E5YTRjMzFlNmYwYzMx
ODM4ZWVlNDRhOGQ3MDM3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IGEgY2hhbmdlIHRvIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgZmlyZXMgYSBjaGlsZHJlbiBjaGFu
Z2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicp
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicp
ICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVE
aXZDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdpbnZpc2libGVEaXYnKSAhPSBudWxsIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50
QnlJZCgnZW1wdHlEaXZDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdlbXB0eURpdicpICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQor
UEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlJykgIT0gbnVsbCBpcyBm
YWxzZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5l
cicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhv
dXRMYWJlbCcpICE9IG51bGwgaXMgZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitHb3QgQ2hpbGRyZW5DaGFuZ2VkIG5vdGlmaWNhdGlvbiBv
biBoaWRkZW5EaXZDb250YWluZXIKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5E
aXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90
aWZpY2F0aW9uIG9uIGludmlzaWJsZURpdkNvbnRhaW5lcgorUEFTUyBhY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQgaXMgMQorR290IENo
aWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb24gb24gZW1wdHlEaXZDb250YWluZXIKK1BBU1MgYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQgaXMg
MQorR290IENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dFJvbGVDb250
YWluZXIKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5l
cicpLmNoaWxkcmVuQ291bnQgaXMgMQorR290IENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb24g
b24gZGl2V2l0aG91dExhYmVsQ29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgn
ZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJykuY2hpbGRyZW5Db3VudCBpcyAxCitBbGwgbm90aWZp
Y2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMt
bm90aWZpY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYwNjU5NzBiNmRmZjk0YWNkMjZkNThlNmZkMzNkMDNkZmRlMzVlNTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWln
bm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisKKyAgPGRpdiBpZD0iaGlkZGVuRGl2Q29udGFpbmVy
IiBhcmlhLWxhYmVsPSJoaWRkZW5EaXZDb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImhpZGRlbkRp
diIgaGlkZGVuPgorICAgICAgPGRpdj4KKyAgICAgICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4K
KyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGlkPSJpbnZpc2li
bGVEaXZDb250YWluZXIiIGFyaWEtbGFiZWw9ImludmlzaWJsZURpdkNvbnRhaW5lciI+CisgICAg
PGRpdiBpZD0iaW52aXNpYmxlRGl2IiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuIj4KKyAgICAg
IDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAgPGRpdiBpZD0iZW1wdHlEaXZDb250YWluZXIiIGFyaWEt
bGFiZWw9ImVtcHR5RGl2Q29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJlbXB0eURpdiI+PC9kaXY+
CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImRpdldpdGhvdXRSb2xlQ29udGFpbmVyIiBhcmlhLWxh
YmVsPSJkaXZXaXRob3V0Um9sZUNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZGl2V2l0aG91dFJv
bGUiPgorICAgICAgPGRpdj4KKyAgICAgICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4KKyAgICAg
IDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGlkPSJkaXZXaXRob3V0TGFi
ZWxDb250YWluZXIiIGFyaWEtbGFiZWw9ImRpdldpdGhvdXRMYWJlbENvbnRhaW5lciI+CisgICAg
PGRpdiBpZD0iZGl2V2l0aG91dExhYmVsIj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+
QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKzwv
ZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
IGZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudC4iKTsK
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCisgICAgZnVuY3Rpb24gYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKSB7Cisg
ICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoaWQpOworICAgIH0KKworICAgIHdpbmRvdy5zdWNjZXNzQ291bnQgPSAwOworICAgIGZ1bmN0
aW9uIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKSB7CisgICAgICAgIHN1Y2Nlc3NDb3VudCsr
OworICAgICAgICBpZiAoc3VjY2Vzc0NvdW50ICE9IDUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgZGVidWcoJ0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4n
KTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5y
ZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7
CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5yZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsK
KyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXIn
KS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJykuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQor
CisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRh
aW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2hpZGRlbkRpdicpICE9IG51bGwiKTsKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hp
ZGRlbkRpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlm
aWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlm
aWNhdGlvbiBvbiBoaWRkZW5EaXZDb250YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vz
c2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCIsICIx
Iik7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZGVuRGl2JykuaGlkZGVuID0gZmFsc2U7CisKKyAg
ICBzaG91bGRCZVRydWUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFp
bmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnaW52aXNpYmxlRGl2JykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgn
aW52aXNpYmxlRGl2Q29udGFpbmVyJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24o
bm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcg
bm90aWZpY2F0aW9uIG9uIGludmlzaWJsZURpdkNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRC
ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKS5jaGlsZHJl
bkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAg
IH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXYnKS5zdHlsZS52
aXNpYmlsaXR5ID0gJ3Zpc2libGUnOworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFs
c2UoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXYnKSAhPSBudWxsIik7CisgICAgYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBu
b3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBlbXB0eURpdkNvbnRhaW5lcicpOworICAg
ICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicp
LmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9u
KCk7CisgICAgfSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlEaXYnKS5p
bm5lclRleHQgPSAnTm90IGVtcHR5IGFueW1vcmUuJzsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZW1wdHlEaXYnKS5vZmZzZXRMZWZ0OworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykgIT0gbnVsbCIpOworICAg
IHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGUnKSAh
PSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRh
aW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgewor
ICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBk
aXZXaXRob3V0Um9sZUNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIp
OworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlJykuc2V0QXR0cmlidXRlKCdyb2xl
JywgJ2hlYWRpbmcnKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWwnKSAhPSBudWxsIik7Cisg
ICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVi
dWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dExh
YmVsQ29udGFpbmVyJyk7CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2RpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAg
ICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcs
ICdMYWJlbCcpOworCisgICAgZGVidWcoJycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3Rp
ZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmQ2ZTk2MjQwOTRjNDE4ODYxNjQ3ZjU2MTRjNDA1
OGY3NjY1NjNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZp
Y2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IGEgY2hhbmdlIHRvIGFueSBBUklBIGF0dHJpYnV0ZSwgbm90IGp1c3QgYSBzdGF0ZSwgc2Vu
ZHMgYSBub3RpZmljYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorR290IE90aGVy
QXJpYUF0dHJpYnV0ZUNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtYnVzeQorR290IE90aGVy
QXJpYUF0dHJpYnV0ZUNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtZGlzYWJsZWQKK0dvdCBP
dGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBhcmlhLXJlYWRvbmx5CitH
b3QgT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZCBub3RpZmljYXRpb24gb24gYXJpYS1yZXF1aXJl
ZAorQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEt
YXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdl
LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExYjgwMTdlZjUwZTUyZDZkZmVi
Njc0YTVmOTdiZjgwNmZjN2U2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1z
ZW5kcy1ub3RpZmljYXRpb24uaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgSFRNTD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNv
bnRhaW5lciI+CisgIDxidXR0b24gaWQ9ImFyaWEtYnVzeSIgYXJpYS1idXN5PSJmYWxzZSI+QnVz
eTwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJhcmlhLWRpc2FibGVkIiBhcmlhLWRpc2FibGVkPSJm
YWxzZSI+RGlzYWJsZWQ8L2J1dHRvbj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1yZWFkb25seSIgYXJp
YS1yZWFkb25seT0iZmFsc2UiPlJlYWRvbmx5PC9idXR0b24+CisgIDxidXR0b24gaWQ9ImFyaWEt
cmVxdWlyZWQiIGFyaWEtcmVxdWlyZWQ9ImZhbHNlIj5SZXF1aXJlZDwvYnV0dG9uPgorPC9kaXY+
CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IGEgY2hhbmdlIHRvIGFueSBBUklBIGF0dHJpYnV0ZSwgbm90IGp1
c3QgYSBzdGF0ZSwgc2VuZHMgYSBub3RpZmljYXRpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1
bmN0aW9uIGFjY2Vzc2libGVFbGVtZW50QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAg
ICB3aW5kb3cuc3VjY2Vzc0NvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90
aWZpY2F0aW9uKCkgeworICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nl
c3NDb3VudCAhPSA0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwg
bm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnYXJpYS1idXN5JykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsK
KyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLWRpc2FibGVkJykucmVtb3ZlTm90
aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlh
LXJlYWRvbmx5JykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdhcmlhLXJlcXVpcmVkJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIoKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuaGlk
ZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCdhcmlhLWJ1c3knKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmlj
YXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmlj
YXRpb24gb24gYXJpYS1idXN5Jyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24o
KTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJpYS1idXN5Jykuc2V0
QXR0cmlidXRlKCdhcmlhLWJ1c3knLCAndHJ1ZScpOworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCdhcmlhLWRpc2FibGVkJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90
aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90
aWZpY2F0aW9uIG9uIGFyaWEtZGlzYWJsZWQnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlm
aWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcmlhLWRp
c2FibGVkJykuc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTsKKworICAgIGFj
Y2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1yZWFkb25seScpLmFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3Rp
ZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBhcmlhLXJlYWRvbmx5Jyk7CisgICAgICAgIGdv
dFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYXJpYS1yZWFkb25seScpLnNldEF0dHJpYnV0ZSgnYXJpYS1yZWFkb25seScsICd0
cnVlJyk7CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtcmVxdWlyZWQnKS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVi
dWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1yZXF1aXJl
ZCcpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtcmVxdWlyZWQnKS5zZXRBdHRyaWJ1dGUoJ2Fy
aWEtcmVxdWlyZWQnLCAndHJ1ZScpOworCisgICAgZGVidWcoJycpOworfQorCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RpdGxlLW9yLWRlc2NyaXB0aW9uLWNoYW5n
ZS1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS90aXRsZS1vci1kZXNjcmlwdGlvbi1jaGFuZ2Utbm90aWZpY2F0aW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjkwMDk0ZGE3ZThmOGExMmNmZjhkODFhYjk3NmU0
OTI2ZDkyM2ZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS90aXRsZS1vci1kZXNjcmlwdGlvbi1jaGFuZ2Utbm90aWZpY2F0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEg
Y2hhbmdlIHRvIGFuIGVsZW1lbnQncyB0aXRsZSBvciBkZXNjcmlwdGlvbiwgZXZlbiBpZiBpbmRp
cmVjdCwgc2VuZHMgYSBub3RpZmljYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
R290IFRpdGxlT3JEZXNjcmlwdGlvbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtbGFiZWwK
K0dvdCBUaXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aXRsZQorR290
IFRpdGxlT3JEZXNjcmlwdGlvbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGxhYmVsbGVkYnkKK0dv
dCBUaXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGVkCitBbGwg
bm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRp
b24tY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS90aXRsZS1vci1kZXNjcmlwdGlvbi1jaGFuZ2Utbm90aWZpY2F0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWU4YzY4ODZkY2Y0NGEyYWIzNTdjN2Q0YThjODY4ZWY2MzAyOTU3
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRpb24tY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCkBA
IC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGJ1dHRvbiBpZD0i
YXJpYS1sYWJlbCIgYXJpYS1sYWJlbD0iQXJpYSBMYWJlbCI+Q29udGVudDwvYnV0dG9uPgorICA8
YnV0dG9uIGlkPSJ0aXRsZSIgdGl0bGU9IlRpdGxlIj5Db250ZW50PC9idXR0b24+CisgIDxidXR0
b24gaWQ9ImxhYmVsbGVkYnkiIGFyaWEtbGFiZWxsZWRieT0ibGFiZWwxIj5Db250ZW50PC9idXR0
b24+CisgIDxidXR0b24gaWQ9ImxhYmVsZWQiPkNvbnRlbnQ8L2J1dHRvbj4KKworICA8bGFiZWwg
aWQ9ImxhYmVsMSI+TGFiZWwxPC9sYWJlbD4KKyAgPGxhYmVsIGlkPSJsYWJlbDIiPkxhYmVsMjwv
bGFiZWw+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFuZ2UgdG8gYW4gZWxlbWVudCdz
IHRpdGxlIG9yIGRlc2NyaXB0aW9uLCBldmVuIGlmIGluZGlyZWN0LCBzZW5kcyBhIG5vdGlmaWNh
dGlvbi4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZnVuY3Rpb24gYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KGlkKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoaWQpOworICAgIH0KKworICAgIHdpbmRvdy5zdWNjZXNzQ291bnQgPSAwOwor
ICAgIGZ1bmN0aW9uIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKSB7CisgICAgICAgIHN1Y2Nl
c3NDb3VudCsrOworICAgICAgICBpZiAoc3VjY2Vzc0NvdW50ICE9IDQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZGVidWcoJ0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nl
c3NmdWxseS4nKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLWxhYmVsJyku
cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCd0aXRsZScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnbGFiZWxsZWRieScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVy
KCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnbGFiZWxlZCcpLnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpLmhpZGRlbiA9IHRydWU7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnYXJpYS1sYWJlbCcpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1
bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRp
b24gKyAnIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWxhYmVsJyk7CisgICAgICAgIGdvdFN1Y2Nlc3Nm
dWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YXJpYS1sYWJlbCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdOZXcgYXJpYS1sYWJlbCcp
OworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0aXRsZScpLmFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBu
b3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiB0aXRsZScpOworICAgICAgICBnb3RTdWNj
ZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RpdGxlJykudGl0bGUgPSAnTmV3IHRpdGxlJzsKKworICAgIGFjY2Vzc2libGVFbGVtZW50
QnlJZCgnbGFiZWxsZWRieScpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlm
aWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlm
aWNhdGlvbiBvbiBsYWJlbGxlZGJ5Jyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRp
b24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxsZWRieScp
LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgJ2xhYmVsMicpOworCisgICAgYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdsYWJlbGVkJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rp
b24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiAr
ICcgbm90aWZpY2F0aW9uIG9uIGxhYmVsZWQnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlm
aWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbDEn
KS5zZXRBdHRyaWJ1dGUoJ2ZvcicsICdsYWJlbGVkJyk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170082</attachid>
            <date>2012-10-23 01:35:20 -0700</date>
            <delta_ts>2012-10-23 11:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99547-20121023013357.patch</filename>
            <type>text/plain</type>
            <size>52048</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY2ZTEyMmViZGI1NTlm
ZjE1MjZlYzYwZDVjN2QyMGJmZjlkOWZiMi4uMGMxZDUwMDhjNDU5MDU2NWMxYmJkYzIwZDAwZmJl
NDhkMTE0NDIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEwLTIyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIEFsc28gbW92ZXMgaGFuZGxpbmcgb2YgYXR0cmli
dXRlIGNoYW5nZXMgdG8gQVhPYmplY3RDYWNoZSwgYW5kIHNlbmRzCisgICAgICAgIG5vdGlmaWNh
dGlvbnMgZm9yIHNvbWUgYXR0cmlidXRlIGNoYW5nZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2ls
ZW50LiBPbgorICAgICAgICBDaHJvbWl1bSwgYWxsIGNoYW5nZXMgdG8gYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QncyBhdHRyaWJ1dGVzIHNob3VsZAorICAgICAgICByZXN1bHQgaW4gc29tZSBub3Rp
ZmljYXRpb24uCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKKyAgICAgICAgICAg
ICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUt
Y2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RpdGxlLW9yLWRlc2NyaXB0aW9uLWNoYW5nZS1ub3RpZmlj
YXRpb24uaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoQVhPYmplY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y29udGVudENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhY2hlZElzSWdub3JlZFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6c2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlP
YmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6Omlz
RGF0YVRhYmxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0Q2Fj
aGVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVsZXRl
TGluZUJveFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFuZEFw
cGVuZFJvb3RJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEyLTEwLTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBT
dXBwb3J0IGZ1bGwgbW9udGggbmFtZXMgaW4gRGF0ZVRpbWVFZGl0RWxlbWVudCwgYW5kIHVzZSB0
aGVtIGluIGlucHV0W3R5cGU9bW9udGhdIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYjQ5ZTY0MTY2ODA4MDJmMGY0ZWI1NWRlZjBhY2NjNTg3M2JhYTVhYi4uNTU5MzA3
M2QyOTIxZDk1YTgxNjk2NzJhMWZkYzY3MTU4ZDFhMDQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yMiAgRG9taW5pYyBNYXp6b25pICA8ZG1h
enpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBWDogTm90aWZpY2F0aW9uIHNob3VsZCBiZSBz
ZW50IHdoZW4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTU0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbmV3IGFjY2Vzc2liaWxpdHkgbm90
aWZpY2F0aW9ucy4KKworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uLmg6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorCiAyMDEyLTEw
LTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdXBwb3J0
IGZ1bGwgbW9udGggbmFtZXMgaW4gRGF0ZVRpbWVFZGl0RWxlbWVudCwgYW5kIHVzZSB0aGVtIGlu
IGlucHV0W3R5cGU9bW9udGhdIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDY2NWFiYzA4NzZjMjQ3OTAzZDc4Mjc0YjFk
YzEwZDhlOTNmYTc4Y2MuLjA1OWE0YWQ4ZDJjYWU1NDM3Nzc4NjQ0Mjc3ZTEzZTBmZmQ5OGJlMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApA
QCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lmIEVO
QUJMRShWSURFTykKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgpAQCAtMTU3LDYg
KzE1OCw4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVs
ZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgaWYgKG9iai0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQogICAgICAgICBvYmogPSBvYmotPnBhcmVudE9iamVjdFVuaWdub3JlZCgp
OwogCisgICAgb2JqLT5zZXRDYWNoZWRJc0lnbm9yZWRWYWx1ZShvYmotPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSk7CisKICAgICByZXR1cm4gb2JqOwogfQogCkBAIC0zMzMsNiArMzM2LDcgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9k
ZSkKICAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPmF4T2JqZWN0SUQo
KSk7CiAgICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQoKSwgbmV3T2JqKTsKICAg
ICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CisgICAgCiAgICAgcmV0dXJuIG5ld09iai5n
ZXQoKTsKIH0KIApAQCAtMzUxLDYgKzM1NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2Jq
ZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgbV9yZW5k
ZXJPYmplY3RNYXBwaW5nLnNldChyZW5kZXJlciwgbmV3T2JqLT5heE9iamVjdElEKCkpOwogICAg
IG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5ld09iaik7CiAgICAgYXR0YWNo
V3JhcHBlcihuZXdPYmouZ2V0KCkpOworICAgIAogICAgIHJldHVybiBuZXdPYmouZ2V0KCk7CiB9
CiAgICAgCkBAIC01MjksMTQgKzUzNCwyNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFY
SUQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNv
bnRlbnRDaGFuZ2VkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCA9IGdldE9yQ3JlYXRlKG5vZGUpKQotICAgICAgICBvYmplY3QtPmNvbnRlbnRDaGFu
Z2VkKCk7IAorICAgIGNvbnRlbnRDaGFuZ2VkKGdldE9yQ3JlYXRlKG5vZGUpKTsKIH0KIAogdm9p
ZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
ewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBnZXRPckNyZWF0ZShyZW5k
ZXJlcikpCi0gICAgICAgIG9iamVjdC0+Y29udGVudENoYW5nZWQoKTsgCisgICAgY29udGVudENo
YW5nZWQoZ2V0T3JDcmVhdGUocmVuZGVyZXIpKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpj
b250ZW50Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit7CisgICAgaWYgKCFvYmop
CisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgcGFyZW50QWxyZWFkeUV4aXN0cyA9IG9iai0+
cGFyZW50T2JqZWN0SWZFeGlzdHMoKTsKKyAgICBvYmotPmNvbnRlbnRDaGFuZ2VkKCk7CisgICAg
cG9zdE5vdGlmaWNhdGlvbihvYmosIG9iai0+ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhU
aXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkLCB0cnVlKTsKKyAgICBpZiAocGFyZW50QWxyZWFkeUV4
aXN0cykKKyAgICAgICAgb2JqLT5ub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKTsKIH0KIAog
dm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNoZWQoTm9kZSog
bm9kZSkKQEAgLTU0OCwxNCArNTYzLDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2Fj
aGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
Y2hpbGRyZW5DaGFuZ2VkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaiA9IGdldChub2RlKSkKLSAgICAgICAgb2JqLT5jaGlsZHJlbkNoYW5nZWQoKTsKKyAg
ICBjaGlsZHJlbkNoYW5nZWQoZ2V0KG5vZGUpKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpj
aGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqID0gZ2V0KHJlbmRlcmVyKSkKLSAgICAgICAgb2JqLT5jaGlsZHJl
bkNoYW5nZWQoKTsKKyAgICBjaGlsZHJlbkNoYW5nZWQoZ2V0KHJlbmRlcmVyKSk7Cit9CisKK3Zv
aWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
aikKK3sKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuOworCisgICAgb2JqLT5jaGlsZHJl
bkNoYW5nZWQoKTsKKworICAgIGlmIChvYmotPnBhcmVudE9iamVjdElmRXhpc3RzKCkgJiYgb2Jq
LT5jYWNoZWRJc0lnbm9yZWRWYWx1ZSgpICE9IG9iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
KQorICAgICAgICBjaGlsZHJlbkNoYW5nZWQob2JqLT5wYXJlbnRPYmplY3QoKSk7CiB9CiAgICAg
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKFRpbWVyPEFY
T2JqZWN0Q2FjaGU+KikKQEAgLTcwNiw4ICs3MzAsNTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChOb2RlKiBub2RlKQogCiB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZChOb2RlKiBub2RlKQogewotICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXRPckNyZWF0ZShub2RlKSkKKyAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqID0gZ2V0T3JDcmVhdGUobm9kZSkpIHsKICAgICAgICAgb2JqLT51
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpOworICAgICAgICBvYmotPm5vdGlmeUlmSWdub3JlZFZh
bHVlQ2hhbmdlZCgpOworICAgIH0KK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW50KiBlbGVt
ZW50KQoreworICAgIGlmIChhdHRyTmFtZSA9PSByb2xlQXR0cikKKyAgICAgICAgaGFuZGxlQXJp
YVJvbGVDaGFuZ2VkKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFsdEF0dHIg
fHwgYXR0ck5hbWUgPT0gdGl0bGVBdHRyKQorICAgICAgICBjb250ZW50Q2hhbmdlZChlbGVtZW50
KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBmb3JBdHRyICYmIGVsZW1lbnQtPmhhc1RhZ05h
bWUobGFiZWxUYWcpKQorICAgICAgICBsYWJlbENoYW5nZWQoZWxlbWVudCk7CisKKyAgICBpZiAo
IWF0dHJOYW1lLmxvY2FsTmFtZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIikpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChhdHRyTmFtZSA9PSBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRB
dHRyKQorICAgICAgICBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChlbGVtZW50KTsKKyAg
ICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3ZhbHVlbm93QXR0ciB8fCBhdHRyTmFtZSA9PSBh
cmlhX3ZhbHVldGV4dEF0dHIpCisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhP
YmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOworICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGFyaWFfbGFiZWxBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFfbGFiZWxlZGJ5QXR0ciB8fCBh
dHRyTmFtZSA9PSBhcmlhX2xhYmVsbGVkYnlBdHRyKQorICAgICAgICBjb250ZW50Q2hhbmdlZChl
bGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NoZWNrZWRBdHRyKQorICAg
ICAgICBjaGVja2VkU3RhdGVDaGFuZ2VkKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGFyaWFfc2VsZWN0ZWRBdHRyKQorICAgICAgICBzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChl
bGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2V4cGFuZGVkQXR0cikKKyAg
ICAgICAgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IGFyaWFfaGlkZGVuQXR0cikKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGVsZW1l
bnQtPnBhcmVudE5vZGUoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9pbnZhbGlk
QXR0cikKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpB
WEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIHBvc3ROb3Rp
ZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhPdGhlckFyaWFBdHRyaWJ1dGVDaGFu
Z2VkLCB0cnVlKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpsYWJlbENoYW5nZWQoRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzVGFnTmFtZShsYWJlbFRhZykp
OworICAgIEhUTUxFbGVtZW50KiBjb3JyZXNwb25kaW5nQ29udHJvbCA9IHN0YXRpY19jYXN0PEhU
TUxMYWJlbEVsZW1lbnQqPihlbGVtZW50KS0+Y29udHJvbCgpOworICAgIGNvbnRlbnRDaGFuZ2Vk
KGNvcnJlc3BvbmRpbmdDb250cm9sKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1
dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqID0gZ2V0KHJlbmRlcmVyKSkKKyAgICAgICAgb2JqLT5ub3RpZnlJZkln
bm9yZWRWYWx1ZUNoYW5nZWQoKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6
OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
a2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
aW5kZXggZmRmZDVhZmJmOGFlYzBjYjM4NjAxOGVhYTFmMjE4OWJjNzAyMmI0MS4uOTUwODRjYWUy
OWYzNTUxMTVkMTExMjBjODRlMzY4ZjMwZDMyODdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVj
dCopOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAg
ICB2b2lkIGNoZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGls
ZHJlbkNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVu
ZGVyT2JqZWN0Kik7CkBAIC0xMDUsNiArMTA2LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxl
QXJpYUV4cGFuZGVkQ2hhbmdlKE5vZGUqKTsKICAgICB2b2lkIGhhbmRsZVNjcm9sbGJhclVwZGF0
ZShTY3JvbGxWaWV3Kik7CiAKKyAgICB2b2lkIGhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlY29tcHV0ZUlz
SWdub3JlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKTsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElU
WSkKICAgICBzdGF0aWMgdm9pZCBlbmFibGVBY2Nlc3NpYmlsaXR5KCkgeyBnQWNjZXNzaWJpbGl0
eUVuYWJsZWQgPSB0cnVlOyB9CiAgICAgLy8gRW5oYW5jZWQgdXNlciBpbnRlcmZhY2UgYWNjZXNz
aWJpbGl0eSBjYW4gYmUgdG9nZ2xlZCBieSB0aGUgYXNzaXN0aXZlIHRlY2hub2xvZ3kuCkBAIC0x
NTIsNiArMTU2LDggQEAgcHVibGljOgogICAgICAgICBBWFJvd0NvbGxhcHNlZCwKICAgICAgICAg
QVhSb3dFeHBhbmRlZCwKICAgICAgICAgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCwKKyAgICAgICAg
QVhUaXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkLAorICAgICAgICBBWE90aGVyQXJpYUF0dHJpYnV0
ZUNoYW5nZWQKICAgICB9OwogCiAgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKFJlbmRlck9iamVj
dCosIEFYTm90aWZpY2F0aW9uLCBib29sIHBvc3RUb0VsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFz
eW5jaHJvbm91c2x5KTsKQEAgLTE4MCw2ICsxODYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
b3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0
aW9uKTsKICAgICB2b2lkIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNz
aWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KTsKKyAgICB2b2lkIGNvbnRlbnRDaGFu
Z2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGxhYmVsQ2hhbmdlZChFbGVtZW50
Kik7CiAKICAgICAvLyBUaGlzIGlzIGEgd2VhayByZWZlcmVuY2UgY2FjaGUgZm9yIGtub3dpbmcg
aWYgTm9kZXMgdXNlZCBieSBUZXh0TWFya2VycyBhcmUgdmFsaWQuCiAgICAgdm9pZCBzZXROb2Rl
SW5Vc2UoTm9kZSogbikgeyBtX3RleHRNYXJrZXJOb2Rlcy5hZGQobik7IH0KQEAgLTIzMiw4ICsy
NDAsMTAgQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3Np
YmlsaXR5T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2VkU3Rh
dGVDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVu
Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNo
aWxkcmVuQ2hhbmdlZChOb2RlKikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGls
ZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6Y29udGVudENoYW5nZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChOb2RlKikgeyB9CitpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNoZWQoTm9k
ZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGV0YWNoV3JhcHBlcihBY2Nlc3Np
YmlsaXR5T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRp
bmdFdmVudE5vdGlmaWNhdGlvbihGcmFtZSosIEFYTG9hZGluZ0V2ZW50KSB7IH0KQEAgLTI0Myw2
ICsyNTMsOCBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRD
aGFuZ2UoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYVJv
bGVDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZv
Y3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqLCBOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpoYW5kbGVTY3JvbGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopIHsgfQoraW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRWxlbWVudCopIHsgfQoraW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVjb21w
dXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNo
ZTo6aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiwgQVhUZXh0Q2hh
bmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmlu
ZGV4IGVkMDcxZTIxNjJhMjQ4NzMwMmY3YjQ0MDRiMzVhYzNmMzEyZjk1YjIuLjU0OGFhOTc0Y2Ix
MTJhNDM1YjA4YmE4YTVlNTczN2M2Njc4ZWRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNzIsNiArNzIsNyBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KCkKICAgICA6IG1faWQo
MCkKICAgICAsIG1faGF2ZUNoaWxkcmVuKGZhbHNlKQogICAgICwgbV9yb2xlKFVua25vd25Sb2xl
KQorICAgICwgbV9jYWNoZWRJc0lnbm9yZWRWYWx1ZShEZWZhdWx0QmVoYXZpb3IpCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgICwgbV93cmFwcGVyKDApCiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkK
QEAgLTE3NzEsNiArMTc3MiwyOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRv
R2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvaW50KSBjb25zdAogICAgIH0KIH0K
IAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYWNoZWRJc0lnbm9yZWRWYWx1ZSgpCit7Cisg
ICAgaWYgKG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPT0gRGVmYXVsdEJlaGF2aW9yKQorICAgICAg
ICBtX2NhY2hlZElzSWdub3JlZFZhbHVlID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpID8gSWdu
b3JlT2JqZWN0IDogSW5jbHVkZU9iamVjdDsKKworICAgIHJldHVybiBtX2NhY2hlZElzSWdub3Jl
ZFZhbHVlID09IElnbm9yZU9iamVjdDsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
ZXRDYWNoZWRJc0lnbm9yZWRWYWx1ZShib29sIGlzSWdub3JlZCkKK3sKKyAgICBtX2NhY2hlZElz
SWdub3JlZFZhbHVlID0gaXNJZ25vcmVkID8gSWdub3JlT2JqZWN0IDogSW5jbHVkZU9iamVjdDsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5n
ZWQoKQoreworICAgIGJvb2wgaXNJZ25vcmVkID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwor
ICAgIGlmIChjYWNoZWRJc0lnbm9yZWRWYWx1ZSgpICE9IGlzSWdub3JlZCkgeworICAgICAgICBh
eE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChwYXJlbnRPYmplY3QoKSk7CisgICAgICAg
IHNldENhY2hlZElzSWdub3JlZFZhbHVlKGlzSWdub3JlZCk7CisgICAgfQorfQorCiBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFQcmVzc2VkSXNQcmVzZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gIWdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRBdHRyKS5pc0VtcHR5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4
IDg3M2E1YzZlZjNmZTE0ZGJiYjM5ZmQ0MjZhYTlmMDBmNzdhMzhhODYuLjI4NTc2YWMxNTEwMGY3
MDkwMTBkNWFhZGVmZTg2MDgyNjJiYjEwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC03MjksNiArNzI5LDEyIEBAIHB1
YmxpYzoKICAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9i
YWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAorICAgIGJvb2wg
Y2FjaGVkSXNJZ25vcmVkVmFsdWUoKTsKKyAgICB2b2lkIHNldENhY2hlZElzSWdub3JlZFZhbHVl
KGJvb2wpOworCisgICAgLy8gRmlyZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBv
biB0aGUgcGFyZW50IGlmIHRoZSBpc0lnbm9yZWQgdmFsdWUgY2hhbmdlZC4KKyAgICB2b2lkIG5v
dGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpOworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQog
I2lmIFBMQVRGT1JNKEdUSykKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBl
cigpIGNvbnN0OwpAQCAtNzY3LDYgKzc3Myw3IEBAIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hp
bGRyZW47CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlOworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gbV9jYWNoZWRJc0lnbm9yZWRWYWx1ZTsKICAgICAKICAgICAvLyBJZiB0
aGlzIG9iamVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJuIGl0cyBTY3JvbGxhYmxlQXJlYS4KICAg
ICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDY4NzcxNmM1NDBj
ZjgyZWEwYWNlMDIwZjJkZWUwY2MwNDdmMDRhMmIuLjE3ZGMwYTJiNjIwN2RjNGQzNWNiMzkxZmQy
ZDI1Y2YyYWU4ODA2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTA5NCw4ICsxMDk0LDgg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QKICAgICAvLyBOT1RFOiBCUnMgYWx3YXlzIGhhdmUgdGV4dCBib3hlcyBub3csIHNv
IHRoZSB0ZXh0IGJveCBjaGVjayBoZXJlIGNhbiBiZSByZW1vdmVkCiAgICAgaWYgKG1fcmVuZGVy
ZXItPmlzVGV4dCgpKSB7CiAgICAgICAgIC8vIHN0YXRpYyB0ZXh0IGJlbmVhdGggTWVudUl0ZW1z
IGFuZCBNZW51QnV0dG9ucyBhcmUganVzdCByZXBvcnRlZCBhbG9uZyB3aXRoIHRoZSBtZW51IGl0
ZW0sIHNvIGl0J3MgaWdub3JlZCBvbiBhbiBpbmRpdmlkdWFsIGxldmVsCi0gICAgICAgIGlmIChw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51SXRlbVJv
bGUKLSAgICAgICAgICAgIHx8IHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IE1lbnVCdXR0b25Sb2xlKQorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICAgICAgaWYgKHBhcmVudCAmJiAo
cGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9sZSB8fCBwYXJlbnQtPmFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUJ1dHRvblJvbGUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIFJlbmRlclRleHQqIHJlbmRlclRleHQgPSB0b1JlbmRlclRleHQobV9y
ZW5kZXJlcik7CiAgICAgICAgIGlmIChtX3JlbmRlcmVyLT5pc0JSKCkgfHwgIXJlbmRlclRleHQt
PmZpcnN0VGV4dEJveCgpKQpAQCAtMjIxMiw2ICsyMjEyLDEwIEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFi
ZWxFbGVtCiAgICAgSFRNTEVsZW1lbnQqIGNvcnJlc3BvbmRpbmdDb250cm9sID0gbGFiZWxFbGVt
ZW50LT5jb250cm9sKCk7CiAgICAgaWYgKCFjb3JyZXNwb25kaW5nQ29udHJvbCkKICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbCBp
c24ndCBhIGRlc2NlbmRhbnQgb2YgdGhpcyBsYWJlbCB0aGF0J3MgaW4gdGhlIG1pZGRsZSBvZiBi
ZWluZyBkZXN0cm95ZWQuCisgICAgaWYgKGNvcnJlc3BvbmRpbmdDb250cm9sLT5yZW5kZXJlcigp
ICYmICFjb3JyZXNwb25kaW5nQ29udHJvbC0+cmVuZGVyZXIoKS0+cGFyZW50KCkpCisgICAgICAg
IHJldHVybiAwOwogICAgIAogICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KGNvcnJlc3BvbmRpbmdDb250cm9sKTsgICAgIAogfQpAQCAtMjY3MiwxMiArMjY3NiwxNiBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKCkKICAgICAg
ICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBGaW5kIG91dCB3aGVy
ZSB0aGUgbGFzdCByZW5kZXIgc2libGluZyBpcyBsb2NhdGVkIHdpdGhpbiBtX2NoaWxkcmVuLgog
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmplY3QgPSBheE9iamVjdENh
Y2hlKCktPmdldChjaGlsZC0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBpZiAoY2hpbGRPYmpl
Y3QgJiYgY2hpbGRPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewotICAgICAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IGNoaWxkT2JqZWN0
LT5jaGlsZHJlbigpOwotICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5zaXplKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGNoaWxkT2JqZWN0ID0gY2hpbGRyZW4ubGFzdCgpLmdldCgpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRPYmplY3QgPSAwOwor
ICAgICAgICAgICAgaWYgKGNoaWxkT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0ln
bm9yZWQgPSBjaGlsZE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOworICAgICAgICAg
ICAgICAgIGNoaWxkT2JqZWN0LT5zZXRDYWNoZWRJc0lnbm9yZWRWYWx1ZShpc0lnbm9yZWQpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0lnbm9yZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY2hpbGRPYmplY3QtPmNoaWxkcmVu
KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5zaXplKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZE9iamVjdCA9IGNoaWxkcmVuLmxhc3QoKS5nZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRPYmplY3Qg
PSAwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGNoaWxkT2JqZWN0KQpAQCAtMjcwOCw4ICsyNzE2LDI1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgIGlmICghY2FuSGF2ZUNoaWxkcmVuKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBvYmogPSBmaXJzdENoaWxkKCk7IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZygpKQotICAg
ICAgICBhZGRDaGlsZChvYmouZ2V0KCkpOworICAgIC8vIGFkZCBhbGwgdW5pZ25vcmVkIGFjYyBj
aGlsZHJlbgorICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGZpcnN0
Q2hpbGQoKTsgb2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgLy8gSWYg
dGhlIHBhcmVudCBpcyBhc2tpbmcgZm9yIHRoaXMgY2hpbGQncyBjaGlsZHJlbiwgdGhlbiBlaXRo
ZXIgaXQncyB0aGUgZmlyc3QgdGltZSAoYW5kIGNsZWFyaW5nIGlzIGEgbm8tb3ApLCAKKyAgICAg
ICAgLy8gb3IgaXRzIHZpc2liaWxpdHkgaGFzIGNoYW5nZWQuIEluIHRoZSBsYXR0ZXIgY2FzZSwg
dGhpcyBjaGlsZCBtYXkgaGF2ZSBhIHN0YWxlIGNoaWxkIGNhY2hlZC4gCisgICAgICAgIC8vIFRo
aXMgY2FuIHByZXZlbnQgYXJpYS1oaWRkZW4gY2hhbmdlcyBmcm9tIHdvcmtpbmcgY29ycmVjdGx5
LiBIZW5jZSwgd2hlbmV2ZXIgYSBwYXJlbnQgaXMgZ2V0dGluZyBjaGlsZHJlbiwgZW5zdXJlIGRh
dGEgaXMgbm90IHN0YWxlLgorICAgICAgICBvYmotPmNsZWFyQ2hpbGRyZW4oKTsKKworICAgICAg
ICBib29sIGlzSWdub3JlZCA9IG9iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOworICAgICAg
ICBvYmotPnNldENhY2hlZElzSWdub3JlZFZhbHVlKGlzSWdub3JlZCk7CisgICAgICAgIGlmIChp
c0lnbm9yZWQpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGls
ZHJlbiA9IG9iai0+Y2hpbGRyZW4oKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNo
aWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKKyAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZHJlbltpXSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQob2JqLT5wYXJlbnRPYmplY3Qo
KSA9PSB0aGlzKTsKKyAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKG9iaik7CisgICAgICAg
IH0KKyAgICB9CiAgICAgCiAgICAgYWRkSGlkZGVuQ2hpbGRyZW4oKTsKICAgICBhZGRBdHRhY2ht
ZW50Q2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBiMWQxNTVkNDJiMjZkNzgwZDgzZDEzOGNlNTJjOTA1
ODRkNzE4ZTBjLi5hNmRhYjI1NDY5YTYxNDcwNjRhMmVhNjAwNWRjZDQyNjUzNWRhNTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCkBAIC0xMzAsNiArMTMwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRh
YmxlKCkgY29uc3QKICAgICAKICAgICAvLyBnbyB0aHJvdWdoIHRoZSBjZWxsJ3MgYW5kIGNoZWNr
IGZvciB0ZWxsLXRhbGUgc2lnbnMgb2YgImRhdGEiIHRhYmxlIHN0YXR1cwogICAgIC8vIGNlbGxz
IGhhdmUgYm9yZGVycywgb3IgdXNlIGF0dHJpYnV0ZXMgbGlrZSBoZWFkZXJzLCBhYmJyLCBzY29w
ZSBvciBheGlzCisgICAgdGFibGUtPnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKICAgICBSZW5k
ZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9keSA9IHRhYmxlLT5maXJzdEJvZHkoKTsKICAgICBpZiAo
IWZpcnN0Qm9keSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21p
dW0uY3BwCmluZGV4IGE5NWUwNDQxOGNjZDQ5OGQyODZkYzg3YTgwOGFiYjMzMTAyZTBhNzAuLjlh
Mzk4MzUxYzk5NDY2MzRhYjhmOGRmNjdlYTgzNmY0ZjdkZGYxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0Q2Fj
aGVDaHJvbWl1bS5jcHAKQEAgLTg2LDE5ICs4NiwyMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBv
c3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZp
YwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhDaGlsZHJlbkNo
YW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkOgorICAgIGNhc2UgQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZDoKICAgICBjYXNlIEFYTGF5b3V0Q29tcGxldGU6CiAgICAgY2Fz
ZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhMb2FkQ29tcGxldGU6CiAgICAgY2Fz
ZSBBWE1lbnVMaXN0SXRlbVNlbGVjdGVkOgogICAgIGNhc2UgQVhNZW51TGlzdFZhbHVlQ2hhbmdl
ZDoKKyAgICBjYXNlIEFYT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYUm93
Q29sbGFwc2VkOgogICAgIGNhc2UgQVhSb3dDb3VudENoYW5nZWQ6CiAgICAgY2FzZSBBWFJvd0V4
cGFuZGVkOgogICAgIGNhc2UgQVhTY3JvbGxlZFRvQW5jaG9yOgogICAgIGNhc2UgQVhTZWxlY3Rl
ZENoaWxkcmVuQ2hhbmdlZDoKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKKyAgICBj
YXNlIEFYVGl0bGVPckRlc2NyaXB0aW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2Vk
OgotICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZTg0NTZmNzA0MGM3MjFhZGVmNGQyNDIxNjUz
OGJiYjcyNGNmNTI3MC4uZWNhY2UxZTEyZTQyZjJiMzJmMDA3OGY0OTgxMzJiZmY3MmJkYWFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzIyLDMxICs3MjIsOCBAQCB2b2lkIEVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZQogCiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzSW5BbmNlc3RvcnMoJm5h
bWUsIHRoaXMpOwogCi0gICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobmFtZSA9PSBhcmlhX2FjdGl2ZWRlc2Nl
bmRhbnRBdHRyKSB7Ci0gICAgICAgIC8vIGFueSBjaGFuZ2UgdG8gYXJpYS1hY3RpdmVkZXNjZW5k
YW50IGF0dHJpYnV0ZSB0cmlnZ2VycyBhY2Nlc3NpYmlsaXR5IGZvY3VzIGNoYW5nZSwgYnV0IGRv
Y3VtZW50IGZvY3VzIHJlbWFpbnMgaW50YWN0Ci0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQodGhpcyk7Ci0gICAgfSBlbHNl
IGlmIChuYW1lID09IHJvbGVBdHRyKSB7Ci0gICAgICAgIC8vIHRoZSByb2xlIGF0dHJpYnV0ZSBj
YW4gY2hhbmdlIGF0IGFueSB0aW1lLCBhbmQgdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgbXVzdCBw
aWNrIHVwIHRoZXNlIGNoYW5nZXMKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgp
LT5oYW5kbGVBcmlhUm9sZUNoYW5nZWQodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IGFy
aWFfdmFsdWVub3dBdHRyKSB7Ci0gICAgICAgIC8vIElmIHRoZSB2YWx1ZW5vdyBhdHRyaWJ1dGUg
Y2hhbmdlcywgQVggY2xpZW50cyBuZWVkIHRvIGJlIG5vdGlmaWVkLgotICAgICAgICBkb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgQVhPYmplY3RDYWNo
ZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhcmlhX2xh
YmVsQXR0ciB8fCBuYW1lID09IGFyaWFfbGFiZWxlZGJ5QXR0ciB8fCBuYW1lID09IGFsdEF0dHIg
fHwgbmFtZSA9PSB0aXRsZUF0dHIpIHsKLSAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgb2YgYW4g
ZWxlbWVudCBjaGFuZ2VzIGR1ZSB0byBhbiBhdHRyaWJ1dGUgY2hhbmdlLCBub3RpZnkgYWNjZXNz
aWJpbGl0eS4KLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jb250ZW50Q2hh
bmdlZCh0aGlzKTsKLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9jaGVja2VkQXR0cikKLSAg
ICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jaGVja2VkU3RhdGVDaGFuZ2VkKHRo
aXMpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9zZWxlY3RlZEF0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQodGhpcyk7
Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBhcmlhX2V4cGFuZGVkQXR0cikKLSAgICAgICAgZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UodGhpcyk7Ci0g
ICAgZWxzZSBpZiAobmFtZSA9PSBhcmlhX2hpZGRlbkF0dHIpCi0gICAgICAgIGRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwotICAgIGVsc2UgaWYgKG5h
bWUgPT0gYXJpYV9pbnZhbGlkQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6OkFYSW52YWxpZFN0YXR1
c0NoYW5nZWQsIHRydWUpOworICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQorICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUF0dHJp
YnV0ZUNoYW5nZWQobmFtZSwgdGhpcyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCBmMjBiMGIyMmY4NzNlNjhlYjE0MzM5NWVkMjA4YThkNzE4ZGJl
ZDYyLi4wZWM2OTg4YTBhY2E3OWRiMTlhYTE0ZjlkN2Q0MDY2NThkMzIxYzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCisjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNvbHVtbkluZm8uaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTEwMTEsNiArMTAxMiw4IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmRlbGV0ZUxpbmVCb3hUcmVlKCkKICAgICAgICAgfQogICAgIH0KICAgICBtX2xp
bmVCb3hlcy5kZWxldGVMaW5lQm94VHJlZShyZW5kZXJBcmVuYSgpKTsKKyAgICBpZiAoVU5MSUtF
TFkoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkpCisgICAgICAgIGRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cmVjb21wdXRlSXNJZ25vcmVkKHRoaXMpOwogfQogCiBS
b290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlUm9vdElubGluZUJveCgpIApAQCAtMTAy
Miw2ICsxMDI1LDEwIEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVBbmRBcHBl
bmRSb290SW5saW5lQm94KCkKIHsKICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0gY3JlYXRl
Um9vdElubGluZUJveCgpOwogICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3gocm9vdEJveCk7
CisKKyAgICBpZiAoVU5MSUtFTFkoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQo
KSkgJiYgbV9saW5lQm94ZXMuZmlyc3RMaW5lQm94KCkgPT0gcm9vdEJveCkKKyAgICAgICAgZG9j
dW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yZWNvbXB1dGVJc0lnbm9yZWQodGhpcyk7CisKICAg
ICByZXR1cm4gcm9vdEJveDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCAzMThhMTQ5N2UwMDYyN2Q4YzRiMmU4ODdhZjVkOThlOWE5YTBiYzU2Li5l
NDgzN2EyY2U4N2ViM2Q2NWI3Y2ViYWEwYTIwMmY2N2NhN2RkNTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTgyMiw3ICsxODIyLDcgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRBbm5vdGF0
ZWRSZWdpb25zRGlydHkodHJ1ZSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5
Q2hhbmdlZCAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQotICAgICAg
ICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHRo
aXMpOworICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRy
ZW5DaGFuZ2VkKHBhcmVudCgpKTsKIAogICAgICAgICAgICAgLy8gS2VlcCBsYXllciBoaWVyYXJj
aHkgdmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRhdGUgaWYgdmlzaWJpbGl0eSBjaGFuZ2VzLgogICAg
ICAgICAgICAgaWYgKG1fc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBuZXdTdHlsZS0+dmlzaWJpbGl0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgKaW5kZXggZGU2OGQzN2IwNDM4ZDUyMDY3MTcx
YmQ2YTRmMWE0ZTZmNTczYWI0MS4uYzcwMjUzNDMxY2UxZmZlOWU5ODQ3NTc5ODA5OTRjODMwYjE4
MDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaApAQCAtNTQsMTEgKzU0LDggQEAgZW51bSBX
ZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIHsKICAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uUm93Q29sbGFwc2VkLAogICAgIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Sb3dF
eHBhbmRlZCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSW52YWxpZFN0YXR1c0No
YW5nZWQsCi0KLSAgICAvLyBGSVhNRTogbm93IHRoYXQgd2UncmUgdXNpbmcgQXNzZXJ0TWF0Y2hp
bmdFbnVtcywgd2UgZG9uJ3QgbmVlZCBhCi0gICAgLy8gY2F0Y2gtYWxsICJpbnZhbGlkIiBub3Rp
ZmljYXRpb24gZW51bS4gUmVtb3ZlIHRoaXMgb25jZSBpdCdzIGJlZW4KLSAgICAvLyByZW1vdmVk
IGZyb20gQ2hyb21pdW0uCi0gICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkludmFsaWQs
CisgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblRpdGxlT3JEZXNjcmlwdGlvbkNoYW5n
ZWQsCisgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbk90aGVyQXJpYUF0dHJpYnV0ZUNo
YW5nZWQKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA5NWU4YjYwN2QyMjhm
OGJlODVjZGNlOWEzMWIxODkzNzExM2Q1MmJmLi5iYTU3Nzc0MzIxMGIwZGUzNWJiZGU4ODFkZDAw
OGI1NmIzZGNiNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcApAQCAtMTUzLDYgKzE1Myw4IEBAIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblJvd0NvdW50Q2hhbmdlZCwg
QVhPYmplCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25Sb3dDb2xsYXBzZWQsIEFYT2JqZWN0Q2FjaGU6OkFYUm93Q29sbGFwc2VkKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblJv
d0V4cGFuZGVkLCBBWE9iamVjdENhY2hlOjpBWFJvd0V4cGFuZGVkKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkludmFsaWRTdGF0dXND
aGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblRpdGxlT3JE
ZXNjcmlwdGlvbkNoYW5nZWQsIEFYT2JqZWN0Q2FjaGU6OkFYVGl0bGVPckRlc2NyaXB0aW9uQ2hh
bmdlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25PdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWE90aGVy
QXJpYUF0dHJpYnV0ZUNoYW5nZWQpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkFjY2Vzc2liaWxpdHlSb2xlVW5rbm93biwgVW5rbm93blJvbGUpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUJ1dHRvbiwgQnV0dG9uUm9sZSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzM5N2U0
NmFlZmVmMjFjNWE0OWIxNTJmOWRmMjc0NmEzOGFlNjBmMS4uODJiNTRjZTQzYzk0MzlhMWI5ZGEw
YWZiNWNkZGUyZDNkYjg1N2E0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTIyICBEb21pbmljIE1henpv
bmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmljYXRpb24gc2hv
dWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFkZGl0aW9uYWwgYWNj
ZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvc3RBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uKToKKwogMjAxMi0xMC0yMyAgU2ltb24gUGVuYSAgPHNwZW5hQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2VsZiBhcyBjb21taXR0
ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5k
ZXggMTg0MjJkYjU4ZTU5YTQxOThhODJiNjBiODVhNmU5MWM4NDZlYTIzMi4uYzcyZDFmNDUxYzZi
YThlNmRhMTgzYmI4ZTViNTdjZjk5ZWExMjRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNjk2LDYgKzY5NiwxMiBAQCB2b2lkIFdlYlZp
ZXdIb3N0Ojpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYgogICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkludmFs
aWRTdGF0dXNDaGFuZ2VkOgogICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkludmFsaWRTdGF0
dXNDaGFuZ2VkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uVGl0bGVPckRlc2NyaXB0aW9uQ2hhbmdlZDoKKyAgICAgICAgbm90aWZpY2F0aW9u
TmFtZSA9ICJUaXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdl
ZDoKKyAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJPdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2Vk
IjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbm90aWZpY2F0aW9uTmFt
ZSA9ICJVbmtub3duTm90aWZpY2F0aW9uIjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzkxNTBj
ODkzYWU1NTJiYzExOTU2MGU4ZDBkM2E1NDZlNTkyNzQzMy4uMzU3NzY1M2Y5MzRiMTdjMzUxZDcy
OWY0MTEzYmRiNjI4MWUzMTRhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTIyICBE
b21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3Rp
ZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5n
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyAz
IG5ldyB0ZXN0IHRvIGVuc3VyZToKKyAgICAgICAgMS4gQSAiY2hpbGRyZW4gY2hhbmdlZCIgbm90
aWZpY2F0aW9uIGlzIGZpcmVkIG9uIHRoZSBwYXJlbnQgb2JqZWN0IHdoZW4gYW4KKyAgICAgICAg
ICAgb2JqZWN0IHRoYXQgd2FzIHByZXZpb3VzbHkgaWdub3JlZCBiZWNvbWVzIHVuaWdub3JlZC4K
KyAgICAgICAgMi4gQSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFuIGVsZW1lbnQncyB0aXRs
ZSBvciBsYWJlbCBjaGFuZ2VzLgorICAgICAgICAzLiBBIG5vdGlmaWNhdGlvbiBpcyBzZW50IHdo
ZW4gYW5vdGhlciBBUklBIGF0dHJpYnV0ZSBjaGFuZ2VzLgorCisgICAgICAgIE1vZGlmaWVzIGFk
ZC10by1tZW51LWxpc3QtY3Jhc2hlcyBiZWNhdXNlIGl0IHdhcyB0b28gYnJpdHRsZTsgaXQgd2Fz
CisgICAgICAgICAgICByZWZlcmVuY2luZyBhIHN0YWxlIG9iamVjdCByYXRoZXIgdGhhbiByZXRy
aWV2aW5nIGl0cyBsYXRlc3QgaGFuZGxlLgorICAgICAgICBNb2RpZmllcyBhcmlhLWNoZWNrYm94
LXNlbmRzLW5vdGlmaWNhdGlvbiB0byBsaXN0ZW4gb24gdGhlIGNvcnJlY3QKKyAgICAgICAgICAg
IG9iamVjdCBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICBTaW1wbGlmaWVzIG5vdGlmaWNhdGlv
bi1saXN0ZW5lcnMgc28gaXQgZG9lc24ndCBnZW5lcmF0ZSBhZGRpdGlvbmFsCisgICAgICAgICAg
ICBub3RpZmljYXRpb25zIHRoYXQgYXJlIGluY29uc2lzdGVudCBiZXR3ZWVuIHBsYXRmb3JtcyBu
b3cuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZp
Y2F0aW9uLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVu
ZXJzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQt
dG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLmh0bWw6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1z
ZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNh
dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90aXRsZS1vci1k
ZXNjcmlwdGlvbi1jaGFuZ2Utbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90aXRsZS1vci1kZXNjcmlwdGlv
bi1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTIzICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdXBwb3J0IGZ1bGwgbW9udGgg
bmFtZXMgaW4gRGF0ZVRpbWVFZGl0RWxlbWVudCwgYW5kIHVzZSB0aGVtIGluIGlucHV0W3R5cGU9
bW9udGhdIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbAppbmRleCA0ZjZj
NjBlYzliZjkyNGQ2YzkyMTZhMzRlOTRiZjJiZGNkYWJhZTJjLi5mNzk5MTEyMjg0MmNhMjBjZjFl
ZmNhZmYyNjY1ZTMwNzUwY2JhMDczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCkBA
IC03LDE1ICs3LDEzIEBACiAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IAogICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGNoZWNraW5nIG9mIGFuIGFy
aWEgY2hlY2tib3ggc2VuZHMgYSBub3RpZmljYXRpb24uIik7Ci0gICAgICAgIHdpbmRvdy5yb290
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQ7Ci0gICAgICAgIHdpbmRvdy5i
b2R5ID0gcm9vdC5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgdmFyIGFjY2Vzc2libGVDaGVj
a2JveCA9IGJvZHkuY2hpbGRBdEluZGV4KDApOworICAgICAgICB2YXIgYWNjZXNzaWJsZUNoZWNr
Ym94ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjaGVj
a2JveDEiKTsKICAgICAgICAgdmFyIG5vdGlmaWNhdGlvbkNvdW50ID0gMDsKIAogICAgICAgICBm
dW5jdGlvbiBsaXN0ZW5lcihub3RpZmljYXRpb24pIHsKLSAgICAgICAgaWYgKG5vdGlmaWNhdGlv
biA9PSAiQ2hlY2tlZFN0YXRlQ2hhbmdlZCIpCi0gICAgICAgICAgICBub3RpZmljYXRpb25Db3Vu
dCsrOworICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAiQ2hlY2tlZFN0YXRlQ2hhbmdl
ZCIpCisgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uQ291bnQrKzsKIAogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgKz0gIkdvdCBub3Rp
ZmljYXRpb246ICIgKyBub3RpZmljYXRpb24gKyAiXG4iOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sCmluZGV4IDNkZDg4
ODg0NGQwYzRhNjBmYzk0ZTljMjJkZmY2MmQyNmJhYWViNjMuLjYyNmM1ZWI4ZmVkY2ZiYTkxYzhh
YjBhMGE2Y2NhMTYwMjU4NjgyN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sCkBAIC03LDcgKzcsNyBAQAogCiA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KIAotPHNlbGVjdCBpZD0ic2VsZWN0IiB2YWx1ZT0iU2VsZWN0
Ij48b3B0aW9uPkE8b3B0aW9uPkI8L3NlbGVjdD4KKzxzZWxlY3QgaWQ9InNlbGVjdCIgdmFsdWU9
IlNlbGVjdCI+PC9zZWxlY3Q+CiAKIDxkaXYgaWQ9InNsaWRlciIgdGFiaW5kZXg9IjAiIHJvbGU9
InNsaWRlciIgYXJpYS12YWx1ZW5vdz0iNSI+U2xpZGVyPC9kaXY+CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlz
dC1jcmFzaGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVkLnR4dAppbmRleCA4
OWZhNDI0NjJkNWFkZTAzMjIwODg3YzU4MWYwN2QwYTdhODZjYmU3Li5jOTYyZWEzZjFhMzEzZjIz
Y2FlMjBkODdhZjBhYjAzMjk3YjlhMmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9h
ZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhZGRpbmcgYSBzZWxlY3RlZCBvcHRpb24gdG8gYSBtZW51
IGxpc3QgdmlhIGFuIHVudXN1YWwgcm91dGUgKGRvY3VtZW50LndyaXRlIGZyb20gYW4gZXh0ZXJu
YWwgc2NyaXB0KSBkb2Vzbid0IHRyaWdnZXIgYSBjcmFzaCB3aGVuIGRpZFVwZGF0ZUFjdGl2ZU9w
dGlvbiBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjaGlsZHJlbiBhcmUgdXBkYXRlZC4KIAotUEFTUyBh
Y2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCBpcyAxCi1QQVNTIGFjY2Vzc2libGVQb3B1cC5j
aGlsZHJlbkNvdW50IGlzIDIKLVBBU1MgYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQgaXMg
MQorUEFTUyBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQg
aXMgMQorUEFTUyBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291
bnQgaXMgMgorUEFTUyBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVu
Q291bnQgaXMgMQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMuaHRtbAppbmRl
eCA3NTEwMzM4ZmZjNTJkYThhOGM1OGFiMWExZDE5OWFiOTdmM2E2MTVhLi5hZWNiNGU1YTBkMGU3
NWUyYjRjOGYwYzlkNzgxMzBmN2M5ZGRhNjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRv
LW1lbnUtbGlzdC1jcmFzaGVzLmh0bWwKQEAgLTE5LDE5ICsxOSwxOCBAQAogICAgICAgICBtZW51
bGlzdC5mb2N1cygpOwogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZU1l
bnVsaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAg
ICAgICB3aW5kb3cuYWNjZXNzaWJsZVBvcHVwID0gYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJ
bmRleCgwKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5D
b3VudCIsICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU1lbnVsaXN0LmNo
aWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKICAgICAgICAgfQogICAgIDwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxkb2N1bWVudC53cml0
ZSgnPG9wdGlvbiBzZWxlY3RlZD4yJyk7Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0PgogICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KQotICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50Iiwg
IjIiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdElu
ZGV4KDApLmNoaWxkcmVuQ291bnQiLCAiMiIpOwogICAgIDwvc2NyaXB0PgogICAgIDxzY3JpcHQ+
CiAgICAgICAgIG1lbnVsaXN0LnJlbW92ZUNoaWxkKG1lbnVsaXN0LnNlbGVjdGVkT3B0aW9uc1sw
XSk7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCi0gICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVBvcHVwLmNoaWxk
cmVuQ291bnQiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVNZW51bGlz
dC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCIsICIxIik7CiAgICAgPC9zY3JpcHQ+CiA8
L3NlbGVjdD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25v
cmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBk
YmRjNmRiNTdhOWE0YzMxZTZmMGMzMTgzOGVlZTQ0YThkNzAzN2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQt
Y2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
IGZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdoaWRkZW5EaXZDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdoaWRkZW5EaXYnKSAhPSBudWxsIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVF
bGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQQVNT
IGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2JykgIT0gbnVsbCBpcyBmYWxzZQor
UEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykgIT0gbnVsbCBp
cyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXYnKSAhPSBudWxsIGlz
IGZhbHNlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWlu
ZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRo
b3V0Um9sZScpICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdk
aXZXaXRob3V0TGFiZWxDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWwnKSAhPSBudWxsIGlzIGZhbHNlCisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorR290IENoaWxkcmVu
Q2hhbmdlZCBub3RpZmljYXRpb24gb24gaGlkZGVuRGl2Q29udGFpbmVyCitQQVNTIGFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCBpcyAxCitH
b3QgQ2hpbGRyZW5DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBpbnZpc2libGVEaXZDb250YWluZXIK
K1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKS5jaGls
ZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGVtcHR5
RGl2Q29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWlu
ZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9u
IG9uIGRpdldpdGhvdXRSb2xlQ29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgn
ZGl2V2l0aG91dFJvbGVDb250YWluZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJl
bkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGRpdldpdGhvdXRMYWJlbENvbnRhaW5lcgorUEFTUyBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpLmNoaWxkcmVu
Q291bnQgaXMgMQorQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lz
LWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3Rp
ZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDY1OTcwYjZkZmY5NGFjZDI2ZDU4ZTZmZDMzZDAz
ZGZkZTM1ZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRt
bApAQCAtMCwwICsxLDEzMSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorCisgIDxkaXYg
aWQ9ImhpZGRlbkRpdkNvbnRhaW5lciIgYXJpYS1sYWJlbD0iaGlkZGVuRGl2Q29udGFpbmVyIj4K
KyAgICA8ZGl2IGlkPSJoaWRkZW5EaXYiIGhpZGRlbj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxi
dXR0b24+QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+
CisKKyAgPGRpdiBpZD0iaW52aXNpYmxlRGl2Q29udGFpbmVyIiBhcmlhLWxhYmVsPSJpbnZpc2li
bGVEaXZDb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImludmlzaWJsZURpdiIgc3R5bGU9InZpc2li
aWxpdHk6IGhpZGRlbiI+CisgICAgICA8ZGl2PgorICAgICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0
dG9uPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImVt
cHR5RGl2Q29udGFpbmVyIiBhcmlhLWxhYmVsPSJlbXB0eURpdkNvbnRhaW5lciI+CisgICAgPGRp
diBpZD0iZW1wdHlEaXYiPjwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGlkPSJkaXZXaXRob3V0
Um9sZUNvbnRhaW5lciIgYXJpYS1sYWJlbD0iZGl2V2l0aG91dFJvbGVDb250YWluZXIiPgorICAg
IDxkaXYgaWQ9ImRpdldpdGhvdXRSb2xlIj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+
QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAg
PGRpdiBpZD0iZGl2V2l0aG91dExhYmVsQ29udGFpbmVyIiBhcmlhLWxhYmVsPSJkaXZXaXRob3V0
TGFiZWxDb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImRpdldpdGhvdXRMYWJlbCI+CisgICAgICA8
ZGl2PgorICAgICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgorICAgICAgPC9kaXY+CisgICAg
PC9kaXY+CisgIDwvZGl2PgorCis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFuZ2UgdG8g
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCBmaXJlcyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0
aW9uIG9uIHRoZSBwYXJlbnQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9uIGFjY2Vzc2li
bGVFbGVtZW50QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5kb3cuc3VjY2Vz
c0NvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCkgewor
ICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3VudCAhPSA1KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZpY2F0aW9ucyBy
ZWNlaXZlZCBzdWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgn
aGlkZGVuRGl2Q29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAg
ICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKS5yZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2Vt
cHR5RGl2Q29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAg
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLnJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2
V2l0aG91dExhYmVsQ29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmhpZGRlbiA9IHRydWU7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXYnKSAhPSBudWxsIik7CisgICAgYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5hZGROb3RpZmljYXRpb25M
aXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsg
bm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gaGlkZGVuRGl2Q29udGFpbmVyJyk7Cisg
ICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5l
cicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0
aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicp
LmhpZGRlbiA9IGZhbHNlOworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdicpICE9IG51bGwiKTsKKyAgICBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNh
dGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290
ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBpbnZpc2libGVEaXZDb250YWlu
ZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxl
RGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nlc3Nm
dWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW52aXNpYmxlRGl2Jykuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsKKworICAgIHNob3Vs
ZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpICE9IG51
bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2
JykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWlu
ZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAg
ICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gZW1w
dHlEaXZDb250YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnZW1wdHlEaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290
U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2VtcHR5RGl2JykuaW5uZXJUZXh0ID0gJ05vdCBlbXB0eSBhbnltb3JlLic7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtcHR5RGl2Jykub2Zmc2V0TGVmdDsKKworICAg
IHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRh
aW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2RpdldpdGhvdXRSb2xlJykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5j
dGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9u
ICsgJyBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dFJvbGVDb250YWluZXInKTsKKyAgICAgICAg
c2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXIn
KS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlv
bigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9s
ZScpLnNldEF0dHJpYnV0ZSgncm9sZScsICdoZWFkaW5nJyk7CisKKyAgICBzaG91bGRCZVRydWUo
ImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJykgIT0gbnVs
bCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91
dExhYmVsJykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91
dExhYmVsQ29udGFpbmVyJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZp
Y2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZp
Y2F0aW9uIG9uIGRpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgi
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKS5jaGlsZHJl
bkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAg
IH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWwnKS5zZXRB
dHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnTGFiZWwnKTsKKworICAgIGRlYnVnKCcnKTsKK30KKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJp
YnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hh
bmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkNmU5NjI0
MDk0YzQxODg2MTY0N2Y1NjE0YzQwNThmNzY2NTYzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1
dGUtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBA
QAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbnkgQVJJQSBhdHRyaWJ1dGUs
IG5vdCBqdXN0IGEgc3RhdGUsIHNlbmRzIGEgbm90aWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK0dvdCBPdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBv
biBhcmlhLWJ1c3kKK0dvdCBPdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBv
biBhcmlhLWRpc2FibGVkCitHb3QgT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZCBub3RpZmljYXRp
b24gb24gYXJpYS1yZWFkb25seQorR290IE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQgbm90aWZp
Y2F0aW9uIG9uIGFyaWEtcmVxdWlyZWQKK0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nl
c3NmdWxseS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVy
LWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMWI4MDE3ZWY1MGU1MmQ2ZGZlYjY3NGE1Zjk3YmY4MDZmYzdlNjA2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1h
cmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw3
NSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8YnV0dG9uIGlkPSJhcmlhLWJ1c3ki
IGFyaWEtYnVzeT0iZmFsc2UiPkJ1c3k8L2J1dHRvbj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1kaXNh
YmxlZCIgYXJpYS1kaXNhYmxlZD0iZmFsc2UiPkRpc2FibGVkPC9idXR0b24+CisgIDxidXR0b24g
aWQ9ImFyaWEtcmVhZG9ubHkiIGFyaWEtcmVhZG9ubHk9ImZhbHNlIj5SZWFkb25seTwvYnV0dG9u
PgorICA8YnV0dG9uIGlkPSJhcmlhLXJlcXVpcmVkIiBhcmlhLXJlcXVpcmVkPSJmYWxzZSI+UmVx
dWlyZWQ8L2J1dHRvbj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbnkg
QVJJQSBhdHRyaWJ1dGUsIG5vdCBqdXN0IGEgc3RhdGUsIHNlbmRzIGEgbm90aWZpY2F0aW9uLiIp
OworCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKKyAgICBmdW5jdGlvbiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpIHsK
KyAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZChpZCk7CisgICAgfQorCisgICAgd2luZG93LnN1Y2Nlc3NDb3VudCA9IDA7CisgICAgZnVu
Y3Rpb24gZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc0NvdW50
Kys7CisgICAgICAgIGlmIChzdWNjZXNzQ291bnQgIT0gNCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBkZWJ1ZygnQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5
LicpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtYnVzeScpLnJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJp
YS1kaXNhYmxlZCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnYXJpYS1yZWFkb25seScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3Rl
bmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1yZXF1aXJlZCcpLnJl
bW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnRhaW5lcicpLmhpZGRlbiA9IHRydWU7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKwor
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1idXN5JykuYWRkTm90aWZpY2F0aW9uTGlz
dGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5v
dGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGFyaWEtYnVzeScpOworICAgICAgICBnb3RT
dWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FyaWEtYnVzeScpLnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5JywgJ3RydWUnKTsKKwor
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxlZCcpLmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcg
KyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWRpc2FibGVkJyk7CisgICAg
ICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxlZCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxl
ZCcsICd0cnVlJyk7CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHkn
KS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAg
ICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1y
ZWFkb25seScpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHknKS5zZXRBdHRyaWJ1
dGUoJ2FyaWEtcmVhZG9ubHknLCAndHJ1ZScpOworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdhcmlhLXJlcXVpcmVkJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZp
Y2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZp
Y2F0aW9uIG9uIGFyaWEtcmVxdWlyZWQnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNh
dGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcmlhLXJlcXVp
cmVkJykuc2V0QXR0cmlidXRlKCdhcmlhLXJlcXVpcmVkJywgJ3RydWUnKTsKKworICAgIGRlYnVn
KCcnKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90aXRs
ZS1vci1kZXNjcmlwdGlvbi1jaGFuZ2Utbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRp
b24tY2hhbmdlLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5MDA5NGRh
N2U4ZjhhMTJjZmY4ZDgxYWI5NzZlNDkyNmQ5MjNmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRp
b24tY2hhbmdlLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbiBlbGVtZW50J3MgdGl0bGUgb3IgZGVz
Y3JpcHRpb24sIGV2ZW4gaWYgaW5kaXJlY3QsIHNlbmRzIGEgbm90aWZpY2F0aW9uLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK0dvdCBUaXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkIG5vdGlm
aWNhdGlvbiBvbiBhcmlhLWxhYmVsCitHb3QgVGl0bGVPckRlc2NyaXB0aW9uQ2hhbmdlZCBub3Rp
ZmljYXRpb24gb24gdGl0bGUKK0dvdCBUaXRsZU9yRGVzY3JpcHRpb25DaGFuZ2VkIG5vdGlmaWNh
dGlvbiBvbiBsYWJlbGxlZGJ5CitHb3QgVGl0bGVPckRlc2NyaXB0aW9uQ2hhbmdlZCBub3RpZmlj
YXRpb24gb24gbGFiZWxlZAorQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3RpdGxlLW9yLWRlc2NyaXB0aW9uLWNoYW5nZS1ub3RpZmljYXRpb24uaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGl0bGUtb3ItZGVzY3JpcHRp
b24tY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllOGM2ODg2ZGNmNDRhMmFi
MzU3YzdkNGE4Yzg2OGVmNjMwMjk1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RpdGxlLW9yLWRlc2NyaXB0aW9uLWNoYW5n
ZS1ub3RpZmljYXRpb24uaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRh
aW5lciI+CisgIDxidXR0b24gaWQ9ImFyaWEtbGFiZWwiIGFyaWEtbGFiZWw9IkFyaWEgTGFiZWwi
PkNvbnRlbnQ8L2J1dHRvbj4KKyAgPGJ1dHRvbiBpZD0idGl0bGUiIHRpdGxlPSJUaXRsZSI+Q29u
dGVudDwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJsYWJlbGxlZGJ5IiBhcmlhLWxhYmVsbGVkYnk9
ImxhYmVsMSI+Q29udGVudDwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJsYWJlbGVkIj5Db250ZW50
PC9idXR0b24+CisKKyAgPGxhYmVsIGlkPSJsYWJlbDEiPkxhYmVsMTwvbGFiZWw+CisgIDxsYWJl
bCBpZD0ibGFiZWwyIj5MYWJlbDI8L2xhYmVsPgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEg
Y2hhbmdlIHRvIGFuIGVsZW1lbnQncyB0aXRsZSBvciBkZXNjcmlwdGlvbiwgZXZlbiBpZiBpbmRp
cmVjdCwgc2VuZHMgYSBub3RpZmljYXRpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAm
JiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9u
IGFjY2Vzc2libGVFbGVtZW50QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5k
b3cuc3VjY2Vzc0NvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0
aW9uKCkgeworICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3Vu
dCAhPSA0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZp
Y2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnYXJpYS1sYWJlbCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAg
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0bGUnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5yZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2xhYmVsZWQnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5oaWRkZW4gPSB0cnVlOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVi
dWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1sYWJlbCcp
OworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFi
ZWwnLCAnTmV3IGFyaWEtbGFiZWwnKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0
bGUnKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAg
ICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gdGl0
bGUnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aXRsZScpLnRpdGxlID0gJ05ldyB0aXRsZSc7CisK
KyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5hZGROb3RpZmljYXRpb25M
aXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsg
bm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gbGFiZWxsZWRieScpOworICAgICAgICBn
b3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICds
YWJlbDInKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnbGFiZWxlZCcpLmFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1Zygn
R290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGVkJyk7CisgICAg
ICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbGFiZWwxJykuc2V0QXR0cmlidXRlKCdmb3InLCAnbGFiZWxlZCcpOwor
CisgICAgZGVidWcoJycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170197</attachid>
            <date>2012-10-23 11:07:51 -0700</date>
            <delta_ts>2012-10-23 13:37:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99547-20121023110628.patch</filename>
            <type>text/plain</type>
            <size>56761</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY2ZTEyMmViZGI1NTlm
ZjE1MjZlYzYwZDVjN2QyMGJmZjlkOWZiMi4uYTgyZmU1NTU2ZjdlZTg3ZTJhN2E1ZDQ0MjQ0M2Q0
MWM0MzE0M2JjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTEwLTIzICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIEFsc28gbW92ZXMgaGFuZGxpbmcgb2YgYXR0cmli
dXRlIGNoYW5nZXMgdG8gQVhPYmplY3RDYWNoZSwgYW5kIHNlbmRzCisgICAgICAgIG5vdGlmaWNh
dGlvbnMgZm9yIHNvbWUgYXR0cmlidXRlIGNoYW5nZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2ls
ZW50LiBPbgorICAgICAgICBDaHJvbWl1bSwgYWxsIGNoYW5nZXMgdG8gYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QncyBhdHRyaWJ1dGVzIHNob3VsZAorICAgICAgICByZXN1bHQgaW4gc29tZSBub3Rp
ZmljYXRpb24uCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKKyAgICAgICAgICAg
ICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUt
Y2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYVJvbGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgIChBWE9iamVjdENhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNhY2hlZElzSWdub3JlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0Q2FjaGVkSXNJZ25vcmVkVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bm90aWZ5SWZJZ25v
cmVkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRDaGFu
Z2VkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250
cm9sRm9yTGFiZWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlm
aWNhdGlvbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZWxldGVMaW5lQm94VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5kQXBwZW5kUm9vdElu
bGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2V0
VGV4dCk6CisKIDIwMTItMTAtMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFN1cHBvcnQgZnVsbCBtb250aCBuYW1lcyBpbiBEYXRlVGltZUVkaXRFbGVtZW50
LCBhbmQgdXNlIHRoZW0gaW4gaW5wdXRbdHlwZT1tb250aF0gYnkgZGVmYXVsdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBiNDllNjQxNjY4MDgwMmYwZjRlYjU1ZGVmMGFjY2M1ODczYmFh
NWFiLi41NTkzMDczZDI5MjFkOTVhODE2OTY3MmExZmRjNjcxNThkMWEwNDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTIyICBEb21pbmljIE1h
enpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmljYXRpb24g
c2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgYWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb25zLgorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6
CisKIDIwMTItMTAtMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFN1cHBvcnQgZnVsbCBtb250aCBuYW1lcyBpbiBEYXRlVGltZUVkaXRFbGVtZW50LCBhbmQg
dXNlIHRoZW0gaW4gaW5wdXRbdHlwZT1tb250aF0gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNjY1YWJjMDg3NmMyNDc5
MDNkNzgyNzRiMWRjMTBkOGU5M2ZhNzhjYy4uYzkyODk1NzgyZDY2YWI0MzkzZGQ0OWU5NmNkMTE1
NWJhNTdhYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaWYgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgi
CkBAIC0xNTcsNiArMTU4LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6
Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKICAgICBpZiAob2JqLT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIG9iaiA9IG9iai0+cGFyZW50T2JqZWN0
VW5pZ25vcmVkKCk7CiAKKyAgICBvYmotPnNldENhY2hlZElzSWdub3JlZFZhbHVlKG9iai0+YWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKKwogICAgIHJldHVybiBvYmo7CiB9CiAKQEAgLTMzMyw2
ICszMzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0
ZShOb2RlKiBub2RlKQogICAgIG1fbm9kZU9iamVjdE1hcHBpbmcuc2V0KG5vZGUsIG5ld09iai0+
YXhPYmplY3RJRCgpKTsKICAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmplY3RJRCgpLCBu
ZXdPYmopOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsKKyAgICAKICAgICByZXR1
cm4gbmV3T2JqLmdldCgpOwogfQogCkBAIC0zNTEsNiArMzU1LDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICBtX3JlbmRlck9iamVjdE1hcHBpbmcuc2V0KHJlbmRlcmVyLCBuZXdPYmotPmF4T2JqZWN0
SUQoKSk7CiAgICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQoKSwgbmV3T2JqKTsK
ICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CisgICAgCiAgICAgcmV0dXJuIG5ld09i
ai5nZXQoKTsKIH0KICAgICAKQEAgLTUyNywxNiArNTMyLDI2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cmVtb3ZlQVhJRChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgbV9pZHNJblVz
ZS5yZW1vdmUob2JqSUQpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2Vk
KE5vZGUqIG5vZGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKE5vZGUqIG5vZGUp
CiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGdldE9yQ3JlYXRlKG5v
ZGUpKQotICAgICAgICBvYmplY3QtPmNvbnRlbnRDaGFuZ2VkKCk7IAorICAgIHRleHRDaGFuZ2Vk
KGdldE9yQ3JlYXRlKG5vZGUpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hh
bmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0Q2hh
bmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QgPSBnZXRPckNyZWF0ZShyZW5kZXJlcikpCi0gICAgICAgIG9iamVjdC0+Y29u
dGVudENoYW5nZWQoKTsgCisgICAgdGV4dENoYW5nZWQoZ2V0T3JDcmVhdGUocmVuZGVyZXIpKTsK
K30KKwordm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmopCit7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgcGFy
ZW50QWxyZWFkeUV4aXN0cyA9IG9iai0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKTsKKyAgICBvYmot
PnRleHRDaGFuZ2VkKCk7CisgICAgcG9zdE5vdGlmaWNhdGlvbihvYmosIG9iai0+ZG9jdW1lbnQo
KSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0Q2hhbmdlZCwgdHJ1ZSk7CisgICAgaWYgKHBhcmVudEFs
cmVhZHlFeGlzdHMpCisgICAgICAgIG9iai0+bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7
CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVk
KE5vZGUqIG5vZGUpCkBAIC01NDgsMTQgKzU2MywyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVw
ZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBub2RlKQogCiB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKiBub2RlKQogewotICAgIGlmIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBnZXQobm9kZSkpCi0gICAgICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2Vk
KCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChub2RlKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdldChyZW5kZXJlcikpCi0gICAgICAgIG9iai0+
Y2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJlcikpOwor
fQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmopCit7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybjsKKworICAgIG9iai0+
Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAob2JqLT5wYXJlbnRPYmplY3RJZkV4aXN0cygp
ICYmIG9iai0+Y2FjaGVkSXNJZ25vcmVkVmFsdWUoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKG9iai0+cGFyZW50T2JqZWN0KCkpOwog
fQogICAgIAogdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZChU
aW1lcjxBWE9iamVjdENhY2hlPiopCkBAIC03MDYsOCArNzMwLDU1IEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoTm9kZSogbm9kZSkKIAogdm9pZCBB
WE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0T3JDcmVhdGUobm9kZSkpCisgICAgaWYg
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdldE9yQ3JlYXRlKG5vZGUpKSB7CiAgICAgICAg
IG9iai0+dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKTsKKyAgICAgICAgb2JqLT5ub3RpZnlJZkln
bm9yZWRWYWx1ZUNoYW5nZWQoKTsKKyAgICB9Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBpZiAoYXR0ck5hbWUgPT0gcm9sZUF0dHIpCisgICAgICAgIGhh
bmRsZUFyaWFSb2xlQ2hhbmdlZChlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBh
bHRBdHRyIHx8IGF0dHJOYW1lID09IHRpdGxlQXR0cikKKyAgICAgICAgdGV4dENoYW5nZWQoZWxl
bWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gZm9yQXR0ciAmJiBlbGVtZW50LT5oYXNU
YWdOYW1lKGxhYmVsVGFnKSkKKyAgICAgICAgbGFiZWxDaGFuZ2VkKGVsZW1lbnQpOworCisgICAg
aWYgKCFhdHRyTmFtZS5sb2NhbE5hbWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5k
YW50QXR0cikKKyAgICAgICAgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoZWxlbWVudCk7
CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV92YWx1ZW5vd0F0dHIgfHwgYXR0ck5hbWUg
PT0gYXJpYV92YWx1ZXRleHRBdHRyKQorICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQs
IEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKKyAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSBhcmlhX2xhYmVsQXR0ciB8fCBhdHRyTmFtZSA9PSBhcmlhX2xhYmVsZWRieUF0dHIg
fHwgYXR0ck5hbWUgPT0gYXJpYV9sYWJlbGxlZGJ5QXR0cikKKyAgICAgICAgdGV4dENoYW5nZWQo
ZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9jaGVja2VkQXR0cikKKyAg
ICAgICAgY2hlY2tlZFN0YXRlQ2hhbmdlZChlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBhcmlhX3NlbGVjdGVkQXR0cikKKyAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQo
ZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCisg
ICAgICAgIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShlbGVtZW50KTsKKyAgICBlbHNlIGlmIChh
dHRyTmFtZSA9PSBhcmlhX2hpZGRlbkF0dHIpCisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChlbGVt
ZW50LT5wYXJlbnROb2RlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxp
ZEF0dHIpCisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6
QVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCwgdHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBwb3N0Tm90
aWZpY2F0aW9uKGVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYT3RoZXJBcmlhQXR0cmlidXRlQ2hh
bmdlZCwgdHJ1ZSk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2VkKEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUobGFiZWxUYWcp
KTsKKyAgICBIVE1MRWxlbWVudCogY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBzdGF0aWNfY2FzdDxI
VE1MTGFiZWxFbGVtZW50Kj4oZWxlbWVudCktPmNvbnRyb2woKTsKKyAgICB0ZXh0Q2hhbmdlZChj
b3JyZXNwb25kaW5nQ29udHJvbCk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRl
SXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iaiA9IGdldChyZW5kZXJlcikpCisgICAgICAgIG9iai0+bm90aWZ5SWZJZ25v
cmVkVmFsdWVDaGFuZ2VkKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtl
ckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmlu
ZGV4IGZkZmQ1YWZiZjhhZWMwY2IzODYwMThlYWExZjIxODliYzcwMjJiNDEuLjlkNDkzZjg5OTNl
MjIxNjhmNmE5MGM5NWFhYTE3OTdiMGNmNWI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC04OSwxMiArODksMTMgQEAgcHVibGljOgogICAg
IHZvaWQgYXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVj
dCopOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAg
ICB2b2lkIGNoZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGls
ZHJlbkNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVu
ZGVyT2JqZWN0Kik7CiAgICAgLy8gQ2FsbGVkIGJ5IGEgbm9kZSB3aGVuIHRleHQgb3IgYSB0ZXh0
IGVxdWl2YWxlbnQgKGUuZy4gYWx0KSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLSAgICB2b2lkIGNv
bnRlbnRDaGFuZ2VkKE5vZGUqKTsKLSAgICB2b2lkIGNvbnRlbnRDaGFuZ2VkKFJlbmRlck9iamVj
dCopOworICAgIHZvaWQgdGV4dENoYW5nZWQoTm9kZSopOworICAgIHZvaWQgdGV4dENoYW5nZWQo
UmVuZGVyT2JqZWN0Kik7CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBub2RlIGhhcyBqdXN0IGJlZW4g
YXR0YWNoZWQsIHNvIHdlIGNhbiBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgc3ViY2xhc3Mg
b2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KICAgICB2b2lkIHVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNB
dHRhY2hlZChOb2RlKik7CiAKQEAgLTEwNSw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBo
YW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Nyb2xsYmFy
VXBkYXRlKFNjcm9sbFZpZXcqKTsKIAorICAgIHZvaWQgaGFuZGxlQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudCopOworICAgIHZvaWQgcmVjb21w
dXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpOworCiAjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKQogICAgIHN0YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxpdHkoKSB7IGdBY2Nlc3Np
YmlsaXR5RW5hYmxlZCA9IHRydWU7IH0KICAgICAvLyBFbmhhbmNlZCB1c2VyIGludGVyZmFjZSBh
Y2Nlc3NpYmlsaXR5IGNhbiBiZSB0b2dnbGVkIGJ5IHRoZSBhc3Npc3RpdmUgdGVjaG5vbG9neS4K
QEAgLTE1Miw2ICsxNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFYUm93Q29sbGFwc2VkLAogICAg
ICAgICBBWFJvd0V4cGFuZGVkLAogICAgICAgICBBWEludmFsaWRTdGF0dXNDaGFuZ2VkLAorICAg
ICAgICBBWFRleHRDaGFuZ2VkLAorICAgICAgICBBWE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQK
ICAgICB9OwogCiAgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKFJlbmRlck9iamVjdCosIEFYTm90
aWZpY2F0aW9uLCBib29sIHBvc3RUb0VsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91
c2x5KTsKQEAgLTE4MCw2ICsxODYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwb3N0UGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKICAg
ICB2b2lkIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KTsKKyAgICB2b2lkIHRleHRDaGFuZ2VkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGxhYmVsQ2hhbmdlZChFbGVtZW50Kik7CiAKICAgICAv
LyBUaGlzIGlzIGEgd2VhayByZWZlcmVuY2UgY2FjaGUgZm9yIGtub3dpbmcgaWYgTm9kZXMgdXNl
ZCBieSBUZXh0TWFya2VycyBhcmUgdmFsaWQuCiAgICAgdm9pZCBzZXROb2RlSW5Vc2UoTm9kZSog
bikgeyBtX3RleHRNYXJrZXJOb2Rlcy5hZGQobik7IH0KQEAgLTIzMiw4ICsyNDAsMTAgQEAgaW5s
aW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0
KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2VkU3RhdGVDaGFuZ2VkKE5v
ZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5k
ZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdl
ZChOb2RlKikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChS
ZW5kZXJPYmplY3QqKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFu
Z2VkKE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdl
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjp0
ZXh0Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnRleHRDaGFuZ2VkKE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRD
aGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9u
KEZyYW1lKiwgQVhMb2FkaW5nRXZlbnQpIHsgfQpAQCAtMjQzLDYgKzI1Myw4IEBAIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKikgeyB9CiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNoYW5nZWQoTm9kZSopIHsg
fQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5n
ZWQoTm9kZSosIE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVNj
cm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFbGVtZW50Kikg
eyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVy
T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRv
QW5jaG9yKGNvbnN0IE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVU
ZXh0Q2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkLCBjb25z
dCBTdHJpbmcmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdl
UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwg
dW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA0OWI4M2Vh
NmQyMzZkNzk3MmE0NWI3YjM0OWJjZDZhMGZlYmE4NTZkLi5jZjQ4M2M2OGJkOWU4ZTUyYTE5OTcz
MTg4ODkwMWU4MTcxZDkwMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMzE0LDcgKzMxNCw5IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omluc2VydENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkLCB1bnNpZ25lZCBpCiAgICAgLy8gVGhpcyBjYW4gcHJldmVudCBhcmlhLWhp
ZGRlbiBjaGFuZ2VzIGZyb20gd29ya2luZyBjb3JyZWN0bHkuIEhlbmNlLCB3aGVuZXZlciBhIHBh
cmVudCBpcyBnZXR0aW5nIGNoaWxkcmVuLCBlbnN1cmUgZGF0YSBpcyBub3Qgc3RhbGUuCiAgICAg
Y2hpbGQtPmNsZWFyQ2hpbGRyZW4oKTsKICAgICAKLSAgICBpZiAoY2hpbGQtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkgeworICAgIGJvb2wgaXNJZ25vcmVkID0gY2hpbGQtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKTsKKyAgICBjaGlsZC0+c2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoaXNJZ25v
cmVkKTsKKyAgICBpZiAoaXNJZ25vcmVkKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBjaGlsZHJlbiA9IGNoaWxkLT5jaGlsZHJlbigpOwogICAgICAgICBzaXplX3QgbGVu
Z3RoID0gY2hpbGRyZW4uc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZWQwNzFlMjE2MmEyNDg3MzAyZjdiNDQwNGIzNWFjM2Yz
MTJmOTViMi4uNTQ4YWE5NzRjYjExMmE0MzViMDhiYThhNWU1NzM3YzY2NzhlZGVmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC03Miw2ICs3Miw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlP
YmplY3QoKQogICAgIDogbV9pZCgwKQogICAgICwgbV9oYXZlQ2hpbGRyZW4oZmFsc2UpCiAgICAg
LCBtX3JvbGUoVW5rbm93blJvbGUpCisgICAgLCBtX2NhY2hlZElzSWdub3JlZFZhbHVlKERlZmF1
bHRCZWhhdmlvcikKICNpZiBQTEFURk9STShHVEspCiAgICAgLCBtX3dyYXBwZXIoMCkKICNlbGlm
IFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTc3MSw2ICsxNzcyLDI4IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9p
bnQpIGNvbnN0CiAgICAgfQogfQogCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhY2hlZElz
SWdub3JlZFZhbHVlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJc0lnbm9yZWRWYWx1ZSA9PSBEZWZh
dWx0QmVoYXZpb3IpCisgICAgICAgIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworCisgICAgcmV0
dXJuIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPT0gSWdub3JlT2JqZWN0OworfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldENhY2hlZElzSWdub3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVk
KQoreworICAgIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVPYmpl
Y3QgOiBJbmNsdWRlT2JqZWN0OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlm
eUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpCit7CisgICAgYm9vbCBpc0lnbm9yZWQgPSBhY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCk7CisgICAgaWYgKGNhY2hlZElzSWdub3JlZFZhbHVlKCkgIT0gaXNJ
Z25vcmVkKSB7CisgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHBhcmVu
dE9iamVjdCgpKTsKKyAgICAgICAgc2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoaXNJZ25vcmVkKTsK
KyAgICB9Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVByZXNzZWRJc1ByZXNl
bnQoKSBjb25zdAogewogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIp
LmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggODczYTVjNmVmM2ZlMTRkYmJiMzlmZDQyNmFhOWYwMGY3N2Ez
OGE4Ni4uNjBiYzkyZDBkYjc5NDFiMjRiNTM0ODI2NTA1MTRhODYzYWRlNDQwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAg
LTYxMCw3ICs2MTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBjb250ZW50Q2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hhbmdlZCgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIHsgfQogICAg
IGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSB7IH0KQEAgLTcyOSw2ICs3MjksMTIgQEAgcHVibGljOgog
ICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29y
ZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
VG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCisgICAgYm9vbCBjYWNoZWRJ
c0lnbm9yZWRWYWx1ZSgpOworICAgIHZvaWQgc2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoYm9vbCk7
CisKKyAgICAvLyBGaXJlcyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRoZSBw
YXJlbnQgaWYgdGhlIGlzSWdub3JlZCB2YWx1ZSBjaGFuZ2VkLgorICAgIHZvaWQgbm90aWZ5SWZJ
Z25vcmVkVmFsdWVDaGFuZ2VkKCk7CisKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29u
c3Q7CkBAIC03NjcsNiArNzczLDcgQEAgcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBtX2NoaWxkcmVuOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJlbjsK
ICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiBtX2NhY2hlZElzSWdub3JlZFZhbHVlOwogICAgIAogICAgIC8vIElmIHRoaXMgb2Jq
ZWN0IGl0c2VsZiBzY3JvbGxzLCByZXR1cm4gaXRzIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1
YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNjg3NzE2YzU0MGNmODJlYTBh
Y2UwMjBmMmRlZTBjYzA0N2YwNGEyYi4uMGQ3MDI2ZDQ2ZTA0NjNkM2UxOWQ4ZWMyNmIxOWQ2YTdj
NzE0M2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDk0LDggKzEwOTQsOCBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIC8vIE5PVEU6IEJScyBhbHdheXMgaGF2ZSB0ZXh0IGJveGVzIG5vdywgc28gdGhlIHRl
eHQgYm94IGNoZWNrIGhlcmUgY2FuIGJlIHJlbW92ZWQKICAgICBpZiAobV9yZW5kZXJlci0+aXNU
ZXh0KCkpIHsKICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1l
bnVCdXR0b25zIGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28g
aXQncyBpZ25vcmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgaWYgKHBhcmVudE9i
amVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9sZQotICAg
ICAgICAgICAgfHwgcGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRlKCkg
PT0gTWVudUJ1dHRvblJvbGUpCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQt
PmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUl0ZW1Sb2xlIHx8IHBhcmVudC0+YXJpYVJvbGVB
dHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9uUm9sZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChtX3JlbmRlcmVy
KTsKICAgICAgICAgaWYgKG1fcmVuZGVyZXItPmlzQlIoKSB8fCAhcmVuZGVyVGV4dC0+Zmlyc3RU
ZXh0Qm94KCkpCkBAIC0yMjEyLDYgKzIyMTIsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW0K
ICAgICBIVE1MRWxlbWVudCogY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBsYWJlbEVsZW1lbnQtPmNv
bnRyb2woKTsKICAgICBpZiAoIWNvcnJlc3BvbmRpbmdDb250cm9sKQogICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sIGlzbid0IGEg
ZGVzY2VuZGFudCBvZiB0aGlzIGxhYmVsIHRoYXQncyBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nIGRl
c3Ryb3llZC4KKyAgICBpZiAoY29ycmVzcG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCkgJiYgIWNv
cnJlc3BvbmRpbmdDb250cm9sLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJu
IDA7CiAgICAgCiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY29ycmVz
cG9uZGluZ0NvbnRyb2wpOyAgICAgCiB9CkBAIC0yNTI4LDcgKzI1MzIsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdAog
ICAgIHJldHVybiBpc1RleHRDb250cm9sKCk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y29udGVudENoYW5nZWQoKQordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp0ZXh0Q2hhbmdlZCgpCiB7CiAgICAgLy8gSWYgdGhpcyBlbGVtZW50IHN1cHBvcnRzIEFSSUEg
bGl2ZSByZWdpb25zLCBvciBpcyBwYXJ0IG9mIGEgcmVnaW9uIHdpdGggYW4gQVJJQSBlZGl0YWJs
ZSByb2xlLAogICAgIC8vIHRoZW4gbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgpAQCAtMjY3Miwx
MiArMjY3NiwxNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlbkNo
aWxkcmVuKCkKICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAv
LyBGaW5kIG91dCB3aGVyZSB0aGUgbGFzdCByZW5kZXIgc2libGluZyBpcyBsb2NhdGVkIHdpdGhp
biBtX2NoaWxkcmVuLgogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGRPYmpl
Y3QgPSBheE9iamVjdENhY2hlKCktPmdldChjaGlsZC0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAg
ICBpZiAoY2hpbGRPYmplY3QgJiYgY2hpbGRPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSkgewotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJl
biA9IGNoaWxkT2JqZWN0LT5jaGlsZHJlbigpOwotICAgICAgICAgICAgICAgIGlmIChjaGlsZHJl
bi5zaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkT2JqZWN0ID0gY2hpbGRyZW4ubGFz
dCgpLmdldCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRPYmplY3QgPSAwOworICAgICAgICAgICAgaWYgKGNoaWxkT2JqZWN0KSB7CisgICAgICAgICAg
ICAgICAgYm9vbCBpc0lnbm9yZWQgPSBjaGlsZE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpOworICAgICAgICAgICAgICAgIGNoaWxkT2JqZWN0LT5zZXRDYWNoZWRJc0lnbm9yZWRWYWx1
ZShpc0lnbm9yZWQpOworICAgICAgICAgICAgICAgIGlmIChpc0lnbm9yZWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY2hpbGRP
YmplY3QtPmNoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5zaXpl
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE9iamVjdCA9IGNoaWxkcmVuLmxhc3Qo
KS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgY2hpbGRPYmplY3QgPSAwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGNoaWxkT2JqZWN0KQpAQCAtMjcwOCw2ICsyNzE2LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgaWYgKCFjYW5IYXZl
Q2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIC8vIGFkZCBhbGwgdW5pZ25v
cmVkIGFjYyBjaGlsZHJlbgogICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9i
aiA9IGZpcnN0Q2hpbGQoKTsgb2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5nKCkpCiAgICAgICAg
IGFkZENoaWxkKG9iai5nZXQoKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IGIxNzUyZDNm
MTdmNDQyNDJmZGEzMzk3NmFjZDE5YWZiMGNiNjVkODEuLmFiMDkyNDAxNzljNTZiMDdiMzAyYmJh
MGRhZjQyOWI1MjRkYzE0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0xNjUsNyArMTY1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1YWwg
dm9pZCBjb250ZW50Q2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hhbmdlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZl
Q2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBiMWQxNTVkNDJiMjZkNzgwZDgz
ZDEzOGNlNTJjOTA1ODRkNzE4ZTBjLi5hNmRhYjI1NDY5YTYxNDcwNjRhMmVhNjAwNWRjZDQyNjUz
NWRhNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCkBAIC0xMzAsNiArMTMwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICAKICAgICAvLyBnbyB0aHJvdWdoIHRoZSBjZWxs
J3MgYW5kIGNoZWNrIGZvciB0ZWxsLXRhbGUgc2lnbnMgb2YgImRhdGEiIHRhYmxlIHN0YXR1cwog
ICAgIC8vIGNlbGxzIGhhdmUgYm9yZGVycywgb3IgdXNlIGF0dHJpYnV0ZXMgbGlrZSBoZWFkZXJz
LCBhYmJyLCBzY29wZSBvciBheGlzCisgICAgdGFibGUtPnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQo
KTsKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9keSA9IHRhYmxlLT5maXJzdEJvZHko
KTsKICAgICBpZiAoIWZpcnN0Qm9keSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVj
dENhY2hlQ2hyb21pdW0uY3BwCmluZGV4IGE5NWUwNDQxOGNjZDQ5OGQyODZkYzg3YTgwOGFiYjMz
MTAyZTBhNzAuLjM4NjYyMGI5YjExOWUzZDZkM2ZlYmU2ZDE1YWNmYzdjMTk3OTAyMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNo
ZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVt
L0FYT2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHAKQEAgLTg2LDE5ICs4NiwyMSBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmosIEFYTm90aWZpYwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2Ug
QVhDaGlsZHJlbkNoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkOgor
ICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKICAgICBjYXNlIEFYTGF5b3V0Q29tcGxl
dGU6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhMb2FkQ29tcGxl
dGU6CiAgICAgY2FzZSBBWE1lbnVMaXN0SXRlbVNlbGVjdGVkOgogICAgIGNhc2UgQVhNZW51TGlz
dFZhbHVlQ2hhbmdlZDoKKyAgICBjYXNlIEFYT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZDoKICAg
ICBjYXNlIEFYUm93Q29sbGFwc2VkOgogICAgIGNhc2UgQVhSb3dDb3VudENoYW5nZWQ6CiAgICAg
Y2FzZSBBWFJvd0V4cGFuZGVkOgogICAgIGNhc2UgQVhTY3JvbGxlZFRvQW5jaG9yOgogICAgIGNh
c2UgQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZDoKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hh
bmdlZDoKKyAgICBjYXNlIEFYVGV4dENoYW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoK
LSAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGU4NDU2ZjcwNDBjNzIxYWRlZjRkMjQyMTY1Mzhi
YmI3MjRjZjUyNzAuLmVjYWNlMWUxMmU0MmYyYjMyZjAwNzhmNDk4MTMyYmZmNzJiZGFhZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTcyMiwzMSArNzIyLDggQEAgdm9pZCBFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmUKIAogICAgIGludmFsaWRhdGVOb2RlTGlzdENhY2hlc0luQW5jZXN0b3JzKCZuYW1l
LCB0aGlzKTsKIAotICAgIGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5k
YW50QXR0cikgewotICAgICAgICAvLyBhbnkgY2hhbmdlIHRvIGFyaWEtYWN0aXZlZGVzY2VuZGFu
dCBhdHRyaWJ1dGUgdHJpZ2dlcnMgYWNjZXNzaWJpbGl0eSBmb2N1cyBjaGFuZ2UsIGJ1dCBkb2N1
bWVudCBmb2N1cyByZW1haW5zIGludGFjdAotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCktPmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSByb2xlQXR0cikgewotICAgICAgICAvLyB0aGUgcm9sZSBhdHRyaWJ1dGUgY2Fu
IGNoYW5nZSBhdCBhbnkgdGltZSwgYW5kIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IG11c3QgcGlj
ayB1cCB0aGVzZSBjaGFuZ2VzCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
aGFuZGxlQXJpYVJvbGVDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhcmlh
X3ZhbHVlbm93QXR0cikgewotICAgICAgICAvLyBJZiB0aGUgdmFsdWVub3cgYXR0cmlidXRlIGNo
YW5nZXMsIEFYIGNsaWVudHMgbmVlZCB0byBiZSBub3RpZmllZC4KLSAgICAgICAgZG9jdW1lbnQo
KS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6
OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9sYWJl
bEF0dHIgfHwgbmFtZSA9PSBhcmlhX2xhYmVsZWRieUF0dHIgfHwgbmFtZSA9PSBhbHRBdHRyIHx8
IG5hbWUgPT0gdGl0bGVBdHRyKSB7Ci0gICAgICAgIC8vIElmIHRoZSBjb250ZW50IG9mIGFuIGVs
ZW1lbnQgY2hhbmdlcyBkdWUgdG8gYW4gYXR0cmlidXRlIGNoYW5nZSwgbm90aWZ5IGFjY2Vzc2li
aWxpdHkuCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y29udGVudENoYW5n
ZWQodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IGFyaWFfY2hlY2tlZEF0dHIpCi0gICAg
ICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tlZFN0YXRlQ2hhbmdlZCh0aGlz
KTsKLSAgICBlbHNlIGlmIChuYW1lID09IGFyaWFfc2VsZWN0ZWRBdHRyKQotICAgICAgICBkb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwot
ICAgIGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKHRoaXMpOwotICAg
IGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9oaWRkZW5BdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKLSAgICBlbHNlIGlmIChuYW1l
ID09IGFyaWFfaW52YWxpZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXND
aGFuZ2VkLCB0cnVlKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1
dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggZjIwYjBiMjJmODczZTY4ZWIxNDMzOTVlZDIwOGE4ZDcxOGRiZWQ2
Mi4uMGVjNjk4OGEwYWNhNzlkYjE5YWExNGY5ZDdkNDA2NjU4ZDMyMWMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKIAorI2luY2x1ZGUgIkFYT2Jq
ZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEwMTIsOCBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpkZWxldGVMaW5lQm94VHJlZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgbV9saW5l
Qm94ZXMuZGVsZXRlTGluZUJveFRyZWUocmVuZGVyQXJlbmEoKSk7CisgICAgaWYgKFVOTElLRUxZ
KEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpKQorICAgICAgICBkb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPnJlY29tcHV0ZUlzSWdub3JlZCh0aGlzKTsKIH0KIAogUm9v
dElubGluZUJveCogUmVuZGVyQmxvY2s6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKSAKQEAgLTEwMjIs
NiArMTAyNSwxMCBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5kQXBwZW5k
Um9vdElubGluZUJveCgpCiB7CiAgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IGNyZWF0ZVJv
b3RJbmxpbmVCb3goKTsKICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KHJvb3RCb3gpOwor
CisgICAgaWYgKFVOTElLRUxZKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkp
ICYmIG1fbGluZUJveGVzLmZpcnN0TGluZUJveCgpID09IHJvb3RCb3gpCisgICAgICAgIGRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cmVjb21wdXRlSXNJZ25vcmVkKHRoaXMpOworCiAgICAg
cmV0dXJuIHJvb3RCb3g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKaW5kZXggMzE4YTE0OTdlMDA2MjdkOGM0YjJlODg3YWY1ZDk4ZTlhOWEwYmM1Ni4uZTQ4
MzdhMmNlODdlYjNkNjViN2NlYmFhMGEyMDJmNjdjYTdkZDUxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MjIsNyArMTgyMiw3IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBuZXdTCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0QW5ub3RhdGVk
UmVnaW9uc0RpcnR5KHRydWUpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAodmlzaWJpbGl0eUNo
YW5nZWQgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAg
ICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCh0aGlz
KTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVu
Q2hhbmdlZChwYXJlbnQoKSk7CiAKICAgICAgICAgICAgIC8vIEtlZXAgbGF5ZXIgaGllcmFyY2h5
IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRlIGlmIHZpc2liaWxpdHkgY2hhbmdlcy4KICAgICAg
ICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUtPnZpc2liaWxpdHko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDlhMDc3YmYz
MGZmZWI3NjFmNDZhYjkyNWE4NTI1Yzk1MmEwMjQ2NmYuLjNmOGQ3MTVlYWU4NjRlZTkxOGU4ZGE1
ZjY3ZGVlZDNkNWM2NzAzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKQEAgLTE0NjYsNyArMTQ2Niw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2V0VGV4dChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHRleHQsIGJvb2wgZm9yY2UpCiAgICAgCiAgICAgQVhPYmplY3RDYWNo
ZSogYXhPYmplY3RDYWNoZSA9IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAo
YXhPYmplY3RDYWNoZS0+YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgYXhPYmplY3RD
YWNoZS0+Y29udGVudENoYW5nZWQodGhpcyk7CisgICAgICAgIGF4T2JqZWN0Q2FjaGUtPnRleHRD
aGFuZ2VkKHRoaXMpOwogfQogCiBTdHJpbmcgUmVuZGVyVGV4dDo6dGV4dFdpdGhvdXRUcmFuc2Nv
ZGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgKaW5kZXggZGU2OGQzN2IwNDM4ZDUy
MDY3MTcxYmQ2YTRmMWE0ZTZmNTczYWI0MS4uZDY4ZDg3NjI0Zjk4YWE1NjE5YjkxY2MzYmFiYmIx
ZmM3NDM5YTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaApAQCAtNTQsMTEgKzU0LDggQEAg
ZW51bSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIHsKICAgICBXZWJBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uUm93Q29sbGFwc2VkLAogICAgIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25Sb3dFeHBhbmRlZCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSW52YWxpZFN0
YXR1c0NoYW5nZWQsCi0KLSAgICAvLyBGSVhNRTogbm93IHRoYXQgd2UncmUgdXNpbmcgQXNzZXJ0
TWF0Y2hpbmdFbnVtcywgd2UgZG9uJ3QgbmVlZCBhCi0gICAgLy8gY2F0Y2gtYWxsICJpbnZhbGlk
IiBub3RpZmljYXRpb24gZW51bS4gUmVtb3ZlIHRoaXMgb25jZSBpdCdzIGJlZW4KLSAgICAvLyBy
ZW1vdmVkIGZyb20gQ2hyb21pdW0uCi0gICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbklu
dmFsaWQsCisgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblRleHRDaGFuZ2VkLAorICAg
IFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggOTVlOGI2MDdkMjI4ZjhiZTg1Y2Rj
ZTlhMzFiMTg5MzcxMTNkNTJiZi4uOWZlOWNiODZkYWFkMjJkMjcwZjAzNmE0NGY5MjNmMTk2NTRj
YThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKQEAgLTE1Myw2ICsxNTMsOCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Sb3dDb3VudENoYW5nZWQsIEFYT2JqZQog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
Um93Q29sbGFwc2VkLCBBWE9iamVjdENhY2hlOjpBWFJvd0NvbGxhcHNlZCk7CiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Sb3dFeHBhbmRl
ZCwgQVhPYmplY3RDYWNoZTo6QVhSb3dFeHBhbmRlZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25JbnZhbGlkU3RhdHVzQ2hhbmdlZCwg
QVhPYmplY3RDYWNoZTo6QVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25UZXh0Q2hhbmdlZCwgQVhP
YmplY3RDYWNoZTo6QVhUZXh0Q2hhbmdlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkLCBB
WE9iamVjdENhY2hlOjpBWE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQpOwogCiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlVW5rbm93biwgVW5rbm93blJv
bGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUJ1
dHRvbiwgQnV0dG9uUm9sZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMzM5N2U0NmFlZmVmMjFjNWE0OWIxNTJmOWRmMjc0NmEzOGFlNjBmMS4u
OTBiZjA4YmY2MTJmYjJlNTM2MjU3ZDAzMTM5MDgzNzAxYmE1M2JiNSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTEwLTIzICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAg
IEFYOiBOb3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk5NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKToKKwogMjAxMi0xMC0yMyAg
U2ltb24gUGVuYSAgPHNwZW5hQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRk
aW5nIG15c2VsZiBhcyBjb21taXR0ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMTg0MjJkYjU4ZTU5YTQxOThhODJiNjBiODVhNmU5MWM4
NDZlYTIzMi4uMzA1MjE0ZjMwMTUwNDYzOTQzMDE4MDI4ZmE4NjM3MmMzZTc2NTRkOSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNjk2LDYg
KzY5NiwxMiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bihjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYgogICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkludmFsaWRTdGF0dXNDaGFuZ2VkOgogICAgICAgICBub3RpZmljYXRp
b25OYW1lID0gIkludmFsaWRTdGF0dXNDaGFuZ2VkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uVGV4dENoYW5nZWQ6CisgICAgICAgIG5vdGlm
aWNhdGlvbk5hbWUgPSAiVGV4dENoYW5nZWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkOgorICAg
ICAgICBub3RpZmljYXRpb25OYW1lID0gIk90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQiOworICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIlVu
a25vd25Ob3RpZmljYXRpb24iOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzOTE1MGM4OTNhZTU1
MmJjMTE5NTYwZThkMGQzYTU0NmU1OTI3NDMzLi4zMWUzZWU5ZjBmMjQwZGMyMDVmMTZiYmM1MWRj
ZjIyZDkxMjg2ZDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMTAtMjMgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQVg6IE5vdGlmaWNhdGlv
biBzaG91bGQgYmUgc2VudCB3aGVuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY2hhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk1NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIDMgbmV3IHRl
c3QgdG8gZW5zdXJlOgorICAgICAgICAxLiBBICJjaGlsZHJlbiBjaGFuZ2VkIiBub3RpZmljYXRp
b24gaXMgZmlyZWQgb24gdGhlIHBhcmVudCBvYmplY3Qgd2hlbiBhbgorICAgICAgICAgICBvYmpl
Y3QgdGhhdCB3YXMgcHJldmlvdXNseSBpZ25vcmVkIGJlY29tZXMgdW5pZ25vcmVkLgorICAgICAg
ICAyLiBBIG5vdGlmaWNhdGlvbiBpcyBzZW50IHdoZW4gYW4gZWxlbWVudCdzIHRleHQgKGluY2wu
IHRpdGxlIG9yIGxhYmVsKSBjaGFuZ2VzLgorICAgICAgICAzLiBBIG5vdGlmaWNhdGlvbiBpcyBz
ZW50IHdoZW4gYW5vdGhlciBBUklBIGF0dHJpYnV0ZSBjaGFuZ2VzLgorCisgICAgICAgIE1vZGlm
aWVzIGFkZC10by1tZW51LWxpc3QtY3Jhc2hlcyBiZWNhdXNlIGl0IHdhcyB0b28gYnJpdHRsZTsg
aXQgd2FzCisgICAgICAgICAgICByZWZlcmVuY2luZyBhIHN0YWxlIG9iamVjdCByYXRoZXIgdGhh
biByZXRyaWV2aW5nIGl0cyBsYXRlc3QgaGFuZGxlLgorICAgICAgICBNb2RpZmllcyBhcmlhLWNo
ZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbiB0byBsaXN0ZW4gb24gdGhlIGNvcnJlY3QKKyAgICAg
ICAgICAgIG9iamVjdCBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICBTaW1wbGlmaWVzIG5vdGlm
aWNhdGlvbi1saXN0ZW5lcnMgc28gaXQgZG9lc24ndCBnZW5lcmF0ZSBhZGRpdGlvbmFsCisgICAg
ICAgICAgICBub3RpZmljYXRpb25zIHRoYXQgYXJlIGluY29uc2lzdGVudCBiZXR3ZWVuIHBsYXRm
b3JtcyBub3cuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMt
bm90aWZpY2F0aW9uLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24t
bGlzdGVuZXJzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLmh0bWw6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNo
YW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5v
dGlmaWNhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0
LWNoYW5nZS1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1s
OiBBZGRlZC4KKwogMjAxMi0xMC0yMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgU3VwcG9ydCBmdWxsIG1vbnRoIG5hbWVzIGluIERhdGVUaW1lRWRpdEVsZW1l
bnQsIGFuZCB1c2UgdGhlbSBpbiBpbnB1dFt0eXBlPW1vbnRoXSBieSBkZWZhdWx0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZp
Y2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2Vu
ZHMtbm90aWZpY2F0aW9uLmh0bWwKaW5kZXggNGY2YzYwZWM5YmY5MjRkNmM5MjE2YTM0ZTk0YmYy
YmRjZGFiYWUyYy4uZjc5OTExMjI4NDJjYTIwY2YxZWZjYWZmMjY2NWUzMDc1MGNiYTA3MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5v
dGlmaWNhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVj
a2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApAQCAtNywxNSArNywxMyBAQAogICAgICAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCBjaGVja2luZyBvZiBhbiBhcmlhIGNoZWNrYm94IHNlbmRzIGEgbm90aWZp
Y2F0aW9uLiIpOwotICAgICAgICB3aW5kb3cucm9vdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LnJvb3RFbGVtZW50OwotICAgICAgICB3aW5kb3cuYm9keSA9IHJvb3QuY2hpbGRBdEluZGV4KDAp
OwogCi0gICAgICAgIHZhciBhY2Nlc3NpYmxlQ2hlY2tib3ggPSBib2R5LmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgdmFyIGFjY2Vzc2libGVDaGVja2JveCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2hlY2tib3gxIik7CiAgICAgICAgIHZhciBub3Rp
ZmljYXRpb25Db3VudCA9IDA7CiAKICAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobm90aWZpY2F0
aW9uKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gIkNoZWNrZWRTdGF0ZUNoYW5nZWQi
KQotICAgICAgICAgICAgbm90aWZpY2F0aW9uQ291bnQrKzsKKyAgICAgICAgICAgIGlmIChub3Rp
ZmljYXRpb24gPT0gIkNoZWNrZWRTdGF0ZUNoYW5nZWQiKQorICAgICAgICAgICAgICAgIG5vdGlm
aWNhdGlvbkNvdW50Kys7CiAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJUZXh0ICs9ICJHb3Qgbm90aWZpY2F0aW9uOiAiICsgbm90aWZpY2F0aW9u
ICsgIlxuIjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3RpZmlj
YXRpb24tbGlzdGVuZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vdGlmaWNh
dGlvbi1saXN0ZW5lcnMuaHRtbAppbmRleCAzZGQ4ODg4NDRkMGM0YTYwZmM5NGU5YzIyZGZmNjJk
MjZiYWFlYjYzLi42MjZjNWViOGZlZGNmYmE5MWM4YWIwYTBhNmNjYTE2MDI1ODY4MjdhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5l
cnMuaHRtbApAQCAtNyw3ICs3LDcgQEAKIAogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiAKLTxz
ZWxlY3QgaWQ9InNlbGVjdCIgdmFsdWU9IlNlbGVjdCI+PG9wdGlvbj5BPG9wdGlvbj5CPC9zZWxl
Y3Q+Cis8c2VsZWN0IGlkPSJzZWxlY3QiIHZhbHVlPSJTZWxlY3QiPjwvc2VsZWN0PgogCiA8ZGl2
IGlkPSJzbGlkZXIiIHRhYmluZGV4PSIwIiByb2xlPSJzbGlkZXIiIGFyaWEtdmFsdWVub3c9IjUi
PlNsaWRlcjwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUt
bXVsdGlwbGUtZmllbGRzL2RhdGUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90
aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS1tdWx0
aXBsZS1maWVsZHMvZGF0ZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmlj
YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGEwNmIzYzQzY2YzZDExYjBiZDVmMTU0ZDI5MDMyNjFm
MWFlOWZiNDUuLmQ0ZmM4YWU1NDQ1MDYxYTgwZTU4OGM2NzdkMWNhZTY2MTczYTI0ZGIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS1tdWx0aXBsZS1maWVsZHMvZGF0ZS1t
dWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS1tdWx0aXBsZS1maWVsZHMvZGF0ZS1t
dWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0
CkBAIC03LDYgKzcsOCBAQCBGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCBBWEhlbHA6IE1vbnRoPUFY
VmFsdWVEZXNjcmlwdGlvbjogMTAKIEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkIEFYSGVscDogRGF5
PUFYVmFsdWVEZXNjcmlwdGlvbjogMDkKIEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkIEFYSGVscDog
WWVhcj1BWFZhbHVlRGVzY3JpcHRpb246IDIwMTIKIFZhbHVlQ2hhbmdlZCBBWEhlbHA6IERheT1B
WFZhbHVlRGVzY3JpcHRpb246IDA0CitWYWx1ZUNoYW5nZWQgQVhIZWxwOiBEYXk9QVhWYWx1ZURl
c2NyaXB0aW9uOiAwNAorVmFsdWVDaGFuZ2VkIEFYSGVscDogWWVhcj1BWFZhbHVlRGVzY3JpcHRp
b246IDIwMTMKIFZhbHVlQ2hhbmdlZCBBWEhlbHA6IFllYXI9QVhWYWx1ZURlc2NyaXB0aW9uOiAy
MDEzCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVs
ZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1h
eC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggOWU2ZTZkMjcz
MTQ1NDljZmI4MzNkZTYwZTNlODViZTMxMDRkMjc1ZS4uMmU1ZWQ5YmRhNjMyMmZkMTU2ZWE0NTFl
OTEzODdjZjM4MjgwMjRkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1l
LW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5v
dGlmaWNhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1l
LW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5v
dGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw4IEBAIEZvY3VzZWRVSUVsZW1lbnRD
aGFuZ2VkIEFYSGVscDogSG91cnM9QVhWYWx1ZURlc2NyaXB0aW9uOiAxMgogRm9jdXNlZFVJRWxl
bWVudENoYW5nZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMzQKIFZhbHVl
Q2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAwNQogVmFsdWVDaGFu
Z2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246IDA1CitWYWx1ZUNoYW5nZWQg
QVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMDUKK1ZhbHVlQ2hhbmdlZCBBWEhl
bHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAwNQogCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlz
dC1jcmFzaGVzLWV4cGVjdGVkLnR4dAppbmRleCA4OWZhNDI0NjJkNWFkZTAzMjIwODg3YzU4MWYw
N2QwYTdhODZjYmU3Li5jOTYyZWEzZjFhMzEzZjIzY2FlMjBkODdhZjBhYjAzMjk3YjlhMmE0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2Fk
ZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhZGRp
bmcgYSBzZWxlY3RlZCBvcHRpb24gdG8gYSBtZW51IGxpc3QgdmlhIGFuIHVudXN1YWwgcm91dGUg
KGRvY3VtZW50LndyaXRlIGZyb20gYW4gZXh0ZXJuYWwgc2NyaXB0KSBkb2Vzbid0IHRyaWdnZXIg
YSBjcmFzaCB3aGVuIGRpZFVwZGF0ZUFjdGl2ZU9wdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHRoZSBj
aGlsZHJlbiBhcmUgdXBkYXRlZC4KIAotUEFTUyBhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3Vu
dCBpcyAxCi1QQVNTIGFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IGlzIDIKLVBBU1MgYWNj
ZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQgaXMgMQorUEFTUyBhY2Nlc3NpYmxlTWVudWxpc3Qu
Y2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQgaXMgMQorUEFTUyBhY2Nlc3NpYmxlTWVudWxp
c3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQgaXMgMgorUEFTUyBhY2Nlc3NpYmxlTWVu
dWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQgaXMgMQogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hl
cy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQt
dG8tbWVudS1saXN0LWNyYXNoZXMuaHRtbAppbmRleCA3NTEwMzM4ZmZjNTJkYThhOGM1OGFiMWEx
ZDE5OWFiOTdmM2E2MTVhLi5hZWNiNGU1YTBkMGU3NWUyYjRjOGYwYzlkNzgxMzBmN2M5ZGRhNjUx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLmh0bWwKQEAg
LTE5LDE5ICsxOSwxOCBAQAogICAgICAgICBtZW51bGlzdC5mb2N1cygpOwogICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAg
ICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZU1lbnVsaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZVBvcHVw
ID0gYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50
IiwgIjEiKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJkYXRh
OnRleHQvamF2YXNjcmlwdCxkb2N1bWVudC53cml0ZSgnPG9wdGlvbiBzZWxlY3RlZD4yJyk7Ij48
L3NjcmlwdD4KICAgICA8c2NyaXB0PgogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYg
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAgICAgICAgc2hvdWxkQmUoImFj
Y2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQiLCAiMiIp
OwogICAgIDwvc2NyaXB0PgogICAgIDxzY3JpcHQ+CiAgICAgICAgIG1lbnVsaXN0LnJlbW92ZUNo
aWxkKG1lbnVsaXN0LnNlbGVjdGVkT3B0aW9uc1swXSk7CiAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgICAgICBz
aG91bGRCZSgiYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5D
b3VudCIsICIxIik7CiAgICAgPC9zY3JpcHQ+CiA8L3NlbGVjdD4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5n
ZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkYmRjNmRiNTdhOWE0YzMxZTZmMGMzMTgzOGVl
ZTQ0YThkNzAzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNo
YW5nZSB0byBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGZpcmVzIGEgY2hpbGRyZW4gY2hhbmdlZCBu
b3RpZmljYXRpb24gb24gdGhlIHBhcmVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKSAhPSBu
dWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXYnKSAhPSBu
dWxsIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29u
dGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52
aXNpYmxlRGl2JykgIT0gbnVsbCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2VtcHR5RGl2Q29udGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnZW1wdHlEaXYnKSAhPSBudWxsIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1Mg
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZScpICE9IG51bGwgaXMgZmFsc2UK
K1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKSAh
PSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFi
ZWwnKSAhPSBudWxsIGlzIGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorR290IENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb24gb24gaGlk
ZGVuRGl2Q29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29u
dGFpbmVyJykuY2hpbGRyZW5Db3VudCBpcyAxCitHb3QgQ2hpbGRyZW5DaGFuZ2VkIG5vdGlmaWNh
dGlvbiBvbiBpbnZpc2libGVEaXZDb250YWluZXIKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdpbnZpc2libGVEaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJl
bkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGVtcHR5RGl2Q29udGFpbmVyCitQQVNTIGFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0dv
dCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGRpdldpdGhvdXRSb2xlQ29udGFpbmVy
CitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKS5j
aGlsZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGRp
dldpdGhvdXRMYWJlbENvbnRhaW5lcgorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2Rpdldp
dGhvdXRMYWJlbENvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQgaXMgMQorQWxsIG5vdGlmaWNhdGlv
bnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlm
aWNhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MDY1OTcwYjZkZmY5NGFjZDI2ZDU4ZTZmZDMzZDAzZGZkZTM1ZTU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVk
LWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApAQCAtMCwwICsxLDEzMSBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8
ZGl2IGlkPSJjb250YWluZXIiPgorCisgIDxkaXYgaWQ9ImhpZGRlbkRpdkNvbnRhaW5lciIgYXJp
YS1sYWJlbD0iaGlkZGVuRGl2Q29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJoaWRkZW5EaXYiIGhp
ZGRlbj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0dG9uPC9idXR0b24+CisgICAg
ICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAgPGRpdiBpZD0iaW52aXNpYmxlRGl2
Q29udGFpbmVyIiBhcmlhLWxhYmVsPSJpbnZpc2libGVEaXZDb250YWluZXIiPgorICAgIDxkaXYg
aWQ9ImludmlzaWJsZURpdiIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbiI+CisgICAgICA8ZGl2
PgorICAgICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgorICAgICAgPC9kaXY+CisgICAgPC9k
aXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImVtcHR5RGl2Q29udGFpbmVyIiBhcmlhLWxhYmVs
PSJlbXB0eURpdkNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZW1wdHlEaXYiPjwvZGl2PgorICA8
L2Rpdj4KKworICA8ZGl2IGlkPSJkaXZXaXRob3V0Um9sZUNvbnRhaW5lciIgYXJpYS1sYWJlbD0i
ZGl2V2l0aG91dFJvbGVDb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImRpdldpdGhvdXRSb2xlIj4K
KyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAgPGRpdiBpZD0iZGl2V2l0aG91dExhYmVsQ29u
dGFpbmVyIiBhcmlhLWxhYmVsPSJkaXZXaXRob3V0TGFiZWxDb250YWluZXIiPgorICAgIDxkaXYg
aWQ9ImRpdldpdGhvdXRMYWJlbCI+CisgICAgICA8ZGl2PgorICAgICAgICA8YnV0dG9uPkJ1dHRv
bjwvYnV0dG9uPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCis8L2Rpdj4K
KworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFuZ2UgdG8gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBmaXJl
cyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRoZSBwYXJlbnQuIik7CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKworICAgIGZ1bmN0aW9uIGFjY2Vzc2libGVFbGVtZW50QnlJZChpZCkgeworICAgICAg
ICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlk
KTsKKyAgICB9CisKKyAgICB3aW5kb3cuc3VjY2Vzc0NvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBn
b3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCkgeworICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAg
ICAgICAgaWYgKHN1Y2Nlc3NDb3VudCAhPSA1KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGRlYnVnKCdBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuJyk7Cisg
ICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykucmVtb3Zl
Tm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdp
bnZpc2libGVEaXZDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAg
ICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykucmVtb3ZlTm90
aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZX
aXRob3V0Um9sZUNvbnRhaW5lcicpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAg
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJykucmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpLmhpZGRlbiA9IHRydWU7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAg
IHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXIn
KSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdo
aWRkZW5EaXYnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5E
aXZDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRp
b24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRp
b24gb24gaGlkZGVuRGl2Q29udGFpbmVyJyk7CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOwor
ICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicpLmhpZGRlbiA9IGZhbHNlOworCisgICAgc2hv
dWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicp
ICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2lu
dmlzaWJsZURpdicpICE9IG51bGwiKTsKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlz
aWJsZURpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlm
aWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlm
aWNhdGlvbiBvbiBpbnZpc2libGVEaXZDb250YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFj
Y2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3Vu
dCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Jykuc3R5bGUudmlzaWJp
bGl0eSA9ICd2aXNpYmxlJzsKKworICAgIHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCdlbXB0eURpdkNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2JykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5l
cihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZp
Y2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gZW1wdHlEaXZDb250YWluZXInKTsKKyAgICAgICAg
c2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5jaGls
ZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOwor
ICAgIH0pOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtcHR5RGl2JykuaW5uZXJU
ZXh0ID0gJ05vdCBlbXB0eSBhbnltb3JlLic7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VtcHR5RGl2Jykub2Zmc2V0TGVmdDsKKworICAgIHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlJykgIT0gbnVs
bCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXIn
KS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAg
ICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gZGl2V2l0
aG91dFJvbGVDb250YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50
QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAg
ICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZScpLnNldEF0dHJpYnV0ZSgncm9sZScsICdo
ZWFkaW5nJyk7CisKKyAgICBzaG91bGRCZVRydWUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2
V2l0aG91dExhYmVsQ29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFj
Y2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsJykgIT0gbnVsbCIpOworICAgIGFj
Y2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJykuYWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdH
b3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGRpdldpdGhvdXRMYWJlbENv
bnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZX
aXRob3V0TGFiZWxDb250YWluZXInKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290
U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkaXZXaXRob3V0TGFiZWwnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnTGFi
ZWwnKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkNmU5NjI0MDk0YzQxODg2MTY0N2Y1NjE0YzQwNThmNzY2
NTYzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBh
IGNoYW5nZSB0byBhbnkgQVJJQSBhdHRyaWJ1dGUsIG5vdCBqdXN0IGEgc3RhdGUsIHNlbmRzIGEg
bm90aWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0dvdCBPdGhlckFyaWFB
dHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWJ1c3kKK0dvdCBPdGhlckFyaWFB
dHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWRpc2FibGVkCitHb3QgT3RoZXJB
cmlhQXR0cmlidXRlQ2hhbmdlZCBub3RpZmljYXRpb24gb24gYXJpYS1yZWFkb25seQorR290IE90
aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtcmVxdWlyZWQKK0Fs
bCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJp
YnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5k
cy1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWI4MDE3ZWY1MGU1MmQ2ZGZlYjY3NGE1
Zjk3YmY4MDZmYzdlNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMt
bm90aWZpY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorICA8YnV0dG9uIGlkPSJhcmlhLWJ1c3kiIGFyaWEtYnVzeT0iZmFsc2UiPkJ1c3k8L2J1
dHRvbj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1kaXNhYmxlZCIgYXJpYS1kaXNhYmxlZD0iZmFsc2Ui
PkRpc2FibGVkPC9idXR0b24+CisgIDxidXR0b24gaWQ9ImFyaWEtcmVhZG9ubHkiIGFyaWEtcmVh
ZG9ubHk9ImZhbHNlIj5SZWFkb25seTwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJhcmlhLXJlcXVp
cmVkIiBhcmlhLXJlcXVpcmVkPSJmYWxzZSI+UmVxdWlyZWQ8L2J1dHRvbj4KKzwvZGl2PgorCis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbnkgQVJJQSBhdHRyaWJ1dGUsIG5vdCBqdXN0IGEg
c3RhdGUsIHNlbmRzIGEgbm90aWZpY2F0aW9uLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBmdW5jdGlv
biBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpIHsKKyAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZChpZCk7CisgICAgfQorCisgICAgd2lu
ZG93LnN1Y2Nlc3NDb3VudCA9IDA7CisgICAgZnVuY3Rpb24gZ290U3VjY2Vzc2Z1bE5vdGlmaWNh
dGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc0NvdW50Kys7CisgICAgICAgIGlmIChzdWNjZXNzQ291
bnQgIT0gNCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkZWJ1ZygnQWxsIG5vdGlm
aWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LicpOworICAgICAgICBhY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ2FyaWEtYnVzeScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAg
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxlZCcpLnJlbW92ZU5vdGlmaWNh
dGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1yZWFk
b25seScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVF
bGVtZW50QnlJZCgnYXJpYS1yZXF1aXJlZCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7
CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmhpZGRlbiA9
IHRydWU7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgn
YXJpYS1idXN5JykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9u
KSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9u
IG9uIGFyaWEtYnVzeScpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7Cisg
ICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtYnVzeScpLnNldEF0dHJp
YnV0ZSgnYXJpYS1idXN5JywgJ3RydWUnKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgn
YXJpYS1kaXNhYmxlZCcpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNh
dGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNh
dGlvbiBvbiBhcmlhLWRpc2FibGVkJyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRp
b24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxl
ZCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7CisKKyAgICBhY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHknKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihm
dW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0
aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1yZWFkb25seScpOworICAgICAgICBnb3RTdWNj
ZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FyaWEtcmVhZG9ubHknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcmVhZG9ubHknLCAndHJ1ZScp
OworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLXJlcXVpcmVkJykuYWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdH
b3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGFyaWEtcmVxdWlyZWQnKTsK
KyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhcmlhLXJlcXVpcmVkJykuc2V0QXR0cmlidXRlKCdhcmlhLXJl
cXVpcmVkJywgJ3RydWUnKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0
LWNoYW5nZS1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiYmE5NzFkNTJm
MjFjYTRlNzVjZWQ0Zjk2NTBlODA3NDIzNWUwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNh
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhh
dCBhIGNoYW5nZSB0byBhbiBlbGVtZW50J3MgYWNjZXNzaWJsZSB0ZXh0LCBldmVuIGlmIGluZGly
ZWN0LCBzZW5kcyBhIG5vdGlmaWNhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitH
b3QgVGV4dENoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtbGFiZWwKK0dvdCBUZXh0Q2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGl0bGUKK0dvdCBUZXh0Q2hhbmdlZCBub3RpZmljYXRpb24gb24g
bGFiZWxsZWRieQorR290IFRleHRDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGVkCitBbGwg
bm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGV4dC1jaGFuZ2Utbm90aWZp
Y2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNWRiMGE1NTkwYmIy
ZDgwZjY3OGUzOThmMTZjMmZhYWE3NzNmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlv
bi5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGJ1
dHRvbiBpZD0iYXJpYS1sYWJlbCIgYXJpYS1sYWJlbD0iQXJpYSBMYWJlbCI+Q29udGVudDwvYnV0
dG9uPgorICA8YnV0dG9uIGlkPSJ0aXRsZSIgdGl0bGU9IlRpdGxlIj5Db250ZW50PC9idXR0b24+
CisgIDxidXR0b24gaWQ9ImxhYmVsbGVkYnkiIGFyaWEtbGFiZWxsZWRieT0ibGFiZWwxIj5Db250
ZW50PC9idXR0b24+CisgIDxidXR0b24gaWQ9ImxhYmVsZWQiPkNvbnRlbnQ8L2J1dHRvbj4KKwor
ICA8bGFiZWwgaWQ9ImxhYmVsMSI+TGFiZWwxPC9sYWJlbD4KKyAgPGxhYmVsIGlkPSJsYWJlbDIi
PkxhYmVsMjwvbGFiZWw+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFuZ2UgdG8gYW4g
ZWxlbWVudCdzIGFjY2Vzc2libGUgdGV4dCwgZXZlbiBpZiBpbmRpcmVjdCwgc2VuZHMgYSBub3Rp
ZmljYXRpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9uIGFjY2Vzc2libGVFbGVtZW50
QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5kb3cuc3VjY2Vzc0NvdW50ID0g
MDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCkgeworICAgICAgICBz
dWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3VudCAhPSA0KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBz
dWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1sYWJl
bCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgndGl0bGUnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsZWQnKS5yZW1vdmVO
b3RpZmljYXRpb25MaXN0ZW5lcigpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKS5oaWRkZW4gPSB0cnVlOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5hZGROb3RpZmljYXRpb25MaXN0ZW5l
cihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZp
Y2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1sYWJlbCcpOworICAgICAgICBnb3RTdWNj
ZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FyaWEtbGFiZWwnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnTmV3IGFyaWEtbGFi
ZWwnKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0bGUnKS5hZGROb3RpZmljYXRp
b25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAn
ICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gdGl0bGUnKTsKKyAgICAgICAgZ290
U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0aXRsZScpLnRpdGxlID0gJ05ldyB0aXRsZSc7CisKKyAgICBhY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihu
b3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBu
b3RpZmljYXRpb24gb24gbGFiZWxsZWRieScpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZp
Y2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhYmVsbGVk
YnknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICdsYWJlbDInKTsKKworICAgIGFj
Y2Vzc2libGVFbGVtZW50QnlJZCgnbGFiZWxlZCcpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1
bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRp
b24gKyAnIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGVkJyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxO
b3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFi
ZWwxJykuc2V0QXR0cmlidXRlKCdmb3InLCAnbGFiZWxlZCcpOworCisgICAgZGVidWcoJycpOwor
fQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170221</attachid>
            <date>2012-10-23 13:37:19 -0700</date>
            <delta_ts>2012-10-25 11:56:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99547-20121023133555.patch</filename>
            <type>text/plain</type>
            <size>61111</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY2ZTEyMmViZGI1NTlm
ZjE1MjZlYzYwZDVjN2QyMGJmZjlkOWZiMi4uMWVjYmYxYTdjOTg4OWZhNTZjOWZjNGFmNGJhZmQ1
OWUwZjhkNjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTEwLTIzICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIEFsc28gbW92ZXMgaGFuZGxpbmcgb2YgYXR0cmli
dXRlIGNoYW5nZXMgdG8gQVhPYmplY3RDYWNoZSwgYW5kIHNlbmRzCisgICAgICAgIG5vdGlmaWNh
dGlvbnMgZm9yIHNvbWUgYXR0cmlidXRlIGNoYW5nZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2ls
ZW50LiBPbgorICAgICAgICBDaHJvbWl1bSwgYWxsIGNoYW5nZXMgdG8gYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QncyBhdHRyaWJ1dGVzIHNob3VsZAorICAgICAgICByZXN1bHQgaW4gc29tZSBub3Rp
ZmljYXRpb24uCisKKyAgICAgICAgU29tZSB0ZXN0cyB3b3VsZCBoYXZlIGJyb2tlbiBiZWNhdXNl
IGFuIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IHdhcyBjcmVhdGVkCisgICAgICAgIGFuZCBob2xk
aW5nIGEgcmVmZXJlbmNlIHRvIGEgU2Nyb2xsVmlldyBmb3IgYW4gaWZyYW1lIGFmdGVyIGl0IHdh
cyBkZWxldGVkLAorICAgICAgICBzbyB0aGlzIGNoYW5nZSBzd2l0Y2hlcyBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyB0byBob2xkIGEgd2VhayByZWZlcmVuY2UKKyAgICAgICAgdG8gU2Nyb2xsVmll
dyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisgICAgICAgICAg
ICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRl
LWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24uaHRtbAorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoQVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpjYWNoZWRJc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldENhY2hlZElzSWdub3JlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdu
b3JlZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphZGRIaWRkZW5DaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojppc0F0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxi
YXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVh
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVt
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9j
dW1lbnRGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnBhcmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxUbyk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbFZpZXcpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZWxldGVMaW5l
Qm94VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5kQXBwZW5k
Um9vdElubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6c2V0VGV4dCk6CisKIDIwMTItMTAtMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFN1cHBvcnQgZnVsbCBtb250aCBuYW1lcyBpbiBEYXRlVGltZUVkaXRF
bGVtZW50LCBhbmQgdXNlIHRoZW0gaW4gaW5wdXRbdHlwZT1tb250aF0gYnkgZGVmYXVsdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiNDllNjQxNjY4MDgwMmYwZjRlYjU1ZGVmMGFjY2M1
ODczYmFhNWFiLi41NTkzMDczZDI5MjFkOTVhODE2OTY3MmExZmRjNjcxNThkMWEwNDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTIyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcg
YWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLgorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHA6CisKIDIwMTItMTAtMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFN1cHBvcnQgZnVsbCBtb250aCBuYW1lcyBpbiBEYXRlVGltZUVkaXRFbGVtZW50
LCBhbmQgdXNlIHRoZW0gaW4gaW5wdXRbdHlwZT1tb250aF0gYnkgZGVmYXVsdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNjY1YWJjMDg3
NmMyNDc5MDNkNzgyNzRiMWRjMTBkOGU5M2ZhNzhjYy4uZGI4MThjMTA2MjU3ZTRiZTY0NWRlZjlk
MDEyNzFlZTQxMTlkMGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaWYgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1l
bnRzLmgiCkBAIC0zMzMsNiArMzM0LDkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RD
YWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKICAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNl
dChub2RlLCBuZXdPYmotPmF4T2JqZWN0SUQoKSk7CiAgICAgbV9vYmplY3RzLnNldChuZXdPYmot
PmF4T2JqZWN0SUQoKSwgbmV3T2JqKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7
CisKKyAgICBuZXdPYmotPnNldENhY2hlZElzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKTsKKwogICAgIHJldHVybiBuZXdPYmouZ2V0KCk7CiB9CiAKQEAgLTM1
MSw2ICszNTUsOSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNy
ZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5z
ZXQocmVuZGVyZXIsIG5ld09iai0+YXhPYmplY3RJRCgpKTsKICAgICBtX29iamVjdHMuc2V0KG5l
d09iai0+YXhPYmplY3RJRCgpLCBuZXdPYmopOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdl
dCgpKTsKKworICAgIG5ld09iai0+c2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUobmV3T2JqLT5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpOworCiAgICAgcmV0dXJuIG5ld09iai5nZXQoKTsKIH0KICAg
ICAKQEAgLTUyNywxNiArNTM0LDI2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlQVhJRChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiAgICAgbV9pZHNJblVzZS5yZW1vdmUob2JqSUQp
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKE5vZGUqIG5vZGUpCit2
b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGdldE9yQ3JlYXRlKG5vZGUpKQotICAgICAgICBv
YmplY3QtPmNvbnRlbnRDaGFuZ2VkKCk7IAorICAgIHRleHRDaGFuZ2VkKGdldE9yQ3JlYXRlKG5v
ZGUpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQordm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0Q2hhbmdlZChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBn
ZXRPckNyZWF0ZShyZW5kZXJlcikpCi0gICAgICAgIG9iamVjdC0+Y29udGVudENoYW5nZWQoKTsg
CisgICAgdGV4dENoYW5nZWQoZ2V0T3JDcmVhdGUocmVuZGVyZXIpKTsKK30KKwordm9pZCBBWE9i
amVjdENhY2hlOjp0ZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit7CisgICAg
aWYgKCFvYmopCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgcGFyZW50QWxyZWFkeUV4aXN0
cyA9IG9iai0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKTsKKyAgICBvYmotPnRleHRDaGFuZ2VkKCk7
CisgICAgcG9zdE5vdGlmaWNhdGlvbihvYmosIG9iai0+ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNo
ZTo6QVhUZXh0Q2hhbmdlZCwgdHJ1ZSk7CisgICAgaWYgKHBhcmVudEFscmVhZHlFeGlzdHMpCisg
ICAgICAgIG9iai0+bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCkBA
IC01NDgsMTQgKzU2NSwyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hlQWZ0ZXJO
b2RlSXNBdHRhY2hlZChOb2RlKiBub2RlKQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVu
Q2hhbmdlZChOb2RlKiBub2RlKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmog
PSBnZXQobm9kZSkpCi0gICAgICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgY2hpbGRy
ZW5DaGFuZ2VkKGdldChub2RlKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5D
aGFuZ2VkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiA9IGdldChyZW5kZXJlcikpCi0gICAgICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2Vk
KCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJlcikpOworfQorCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit7Cisg
ICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybjsKKworICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2Vk
KCk7CisKKyAgICBpZiAob2JqLT5wYXJlbnRPYmplY3RJZkV4aXN0cygpICYmIG9iai0+Y2FjaGVk
SXNJZ25vcmVkVmFsdWUoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkKG9iai0+cGFyZW50T2JqZWN0KCkpOwogfQogICAgIAogdm9pZCBB
WE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZChUaW1lcjxBWE9iamVjdENh
Y2hlPiopCkBAIC03MDYsOCArNzMyLDU1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0
aXZlRGVzY2VuZGFudENoYW5nZWQoTm9kZSogbm9kZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVBcmlhUm9sZUNoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqID0gZ2V0T3JDcmVhdGUobm9kZSkpCisgICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiA9IGdldE9yQ3JlYXRlKG5vZGUpKSB7CiAgICAgICAgIG9iai0+dXBkYXRlQWNj
ZXNzaWJpbGl0eVJvbGUoKTsKKyAgICAgICAgb2JqLT5ub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5n
ZWQoKTsKKyAgICB9Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBpZiAoYXR0ck5hbWUgPT0gcm9sZUF0dHIpCisgICAgICAgIGhhbmRsZUFyaWFSb2xlQ2hh
bmdlZChlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhbHRBdHRyIHx8IGF0dHJO
YW1lID09IHRpdGxlQXR0cikKKyAgICAgICAgdGV4dENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gZm9yQXR0ciAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKGxhYmVsVGFn
KSkKKyAgICAgICAgbGFiZWxDaGFuZ2VkKGVsZW1lbnQpOworCisgICAgaWYgKCFhdHRyTmFtZS5s
b2NhbE5hbWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikKKyAgICAg
ICAgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gYXJpYV92YWx1ZW5vd0F0dHIgfHwgYXR0ck5hbWUgPT0gYXJpYV92YWx1ZXRl
eHRBdHRyKQorICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6
OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2xh
YmVsQXR0ciB8fCBhdHRyTmFtZSA9PSBhcmlhX2xhYmVsZWRieUF0dHIgfHwgYXR0ck5hbWUgPT0g
YXJpYV9sYWJlbGxlZGJ5QXR0cikKKyAgICAgICAgdGV4dENoYW5nZWQoZWxlbWVudCk7CisgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9jaGVja2VkQXR0cikKKyAgICAgICAgY2hlY2tlZFN0
YXRlQ2hhbmdlZChlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NlbGVj
dGVkQXR0cikKKyAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoZWxlbWVudCk7CisgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCisgICAgICAgIGhhbmRsZUFy
aWFFeHBhbmRlZENoYW5nZShlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlh
X2hpZGRlbkF0dHIpCisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChlbGVtZW50LT5wYXJlbnROb2Rl
KCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCisgICAgICAg
IHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhJbnZhbGlkU3RhdHVz
Q2hhbmdlZCwgdHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1l
bnQsIEFYT2JqZWN0Q2FjaGU6OkFYT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZCwgdHJ1ZSk7Cit9
CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2VkKEVsZW1lbnQqIGVsZW1lbnQpCit7
CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUobGFiZWxUYWcpKTsKKyAgICBIVE1MRWxl
bWVudCogY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MTGFiZWxFbGVtZW50
Kj4oZWxlbWVudCktPmNvbnRyb2woKTsKKyAgICB0ZXh0Q2hhbmdlZChjb3JyZXNwb25kaW5nQ29u
dHJvbCk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IGdldChyZW5kZXJlcikpCisgICAgICAgIG9iai0+bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2Vk
KCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25G
b3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGZkZmQ1YWZiZjhh
ZWMwY2IzODYwMThlYWExZjIxODliYzcwMjJiNDEuLjlkNDkzZjg5OTNlMjIxNjhmNmE5MGM5NWFh
YTE3OTdiMGNmNWI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCkBAIC04OSwxMiArODksMTMgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNoV3Jh
cHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoTm9k
ZSopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopOworICAgIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAgICB2b2lkIGNoZWNrZWRT
dGF0ZUNoYW5nZWQoTm9kZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoTm9k
ZSopOwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0Kik7CiAg
ICAgLy8gQ2FsbGVkIGJ5IGEgbm9kZSB3aGVuIHRleHQgb3IgYSB0ZXh0IGVxdWl2YWxlbnQgKGUu
Zy4gYWx0KSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLSAgICB2b2lkIGNvbnRlbnRDaGFuZ2VkKE5v
ZGUqKTsKLSAgICB2b2lkIGNvbnRlbnRDaGFuZ2VkKFJlbmRlck9iamVjdCopOworICAgIHZvaWQg
dGV4dENoYW5nZWQoTm9kZSopOworICAgIHZvaWQgdGV4dENoYW5nZWQoUmVuZGVyT2JqZWN0Kik7
CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBub2RlIGhhcyBqdXN0IGJlZW4gYXR0YWNoZWQsIHNvIHdl
IGNhbiBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0
eU9iamVjdC4KICAgICB2b2lkIHVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKik7
CiAKQEAgLTEwNSw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVBcmlhRXhwYW5k
ZWRDaGFuZ2UoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Nyb2xsYmFyVXBkYXRlKFNjcm9sbFZp
ZXcqKTsKIAorICAgIHZvaWQgaGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSwgRWxlbWVudCopOworICAgIHZvaWQgcmVjb21wdXRlSXNJZ25vcmVkKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpOworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgIHN0
YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxpdHkoKSB7IGdBY2Nlc3NpYmlsaXR5RW5hYmxlZCA9
IHRydWU7IH0KICAgICAvLyBFbmhhbmNlZCB1c2VyIGludGVyZmFjZSBhY2Nlc3NpYmlsaXR5IGNh
biBiZSB0b2dnbGVkIGJ5IHRoZSBhc3Npc3RpdmUgdGVjaG5vbG9neS4KQEAgLTE1Miw2ICsxNTYs
OCBAQCBwdWJsaWM6CiAgICAgICAgIEFYUm93Q29sbGFwc2VkLAogICAgICAgICBBWFJvd0V4cGFu
ZGVkLAogICAgICAgICBBWEludmFsaWRTdGF0dXNDaGFuZ2VkLAorICAgICAgICBBWFRleHRDaGFu
Z2VkLAorICAgICAgICBBWE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQKICAgICB9OwogCiAgICAg
dm9pZCBwb3N0Tm90aWZpY2F0aW9uKFJlbmRlck9iamVjdCosIEFYTm90aWZpY2F0aW9uLCBib29s
IHBvc3RUb0VsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKQEAgLTE4MCw2
ICsxODYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTm90aWZpY2F0aW9uKTsKICAgICB2b2lkIG5vZGVUZXh0
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENo
YW5nZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGZyYW1lTG9h
ZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTG9h
ZGluZ0V2ZW50KTsKKyAgICB2b2lkIHRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsK
KyAgICB2b2lkIGxhYmVsQ2hhbmdlZChFbGVtZW50Kik7CiAKICAgICAvLyBUaGlzIGlzIGEgd2Vh
ayByZWZlcmVuY2UgY2FjaGUgZm9yIGtub3dpbmcgaWYgTm9kZXMgdXNlZCBieSBUZXh0TWFya2Vy
cyBhcmUgdmFsaWQuCiAgICAgdm9pZCBzZXROb2RlSW5Vc2UoTm9kZSogbikgeyBtX3RleHRNYXJr
ZXJOb2Rlcy5hZGQobik7IH0KQEAgLTIzMiw4ICsyNDAsMTAgQEAgaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CiBpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2RlKikgeyB9Ci1p
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7
IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKE5vZGUqKSB7IH0K
K2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5
T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0Q2hhbmdlZChSZW5k
ZXJPYmplY3QqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKE5v
ZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hl
QWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKEZyYW1lKiwgQVhMb2Fk
aW5nRXZlbnQpIHsgfQpAQCAtMjQzLDYgKzI1Myw4IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNoYW5nZWQoTm9kZSopIHsgfQogaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSosIE5vZGUq
KSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGJhclVwZGF0ZShT
Y3JvbGxWaWV3KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFbGVtZW50KikgeyB9CitpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5v
ZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlTm90aWZp
Y2F0aW9uKE5vZGUqLCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0
IFN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZWQwNzFlMjE2MmEyNDg3MzAyZjdiNDQwNGIzNWFj
M2YzMTJmOTViMi4uNTQ4YWE5NzRjYjExMmE0MzViMDhiYThhNWU1NzM3YzY2NzhlZGVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCkBAIC03Miw2ICs3Miw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlPYmplY3QoKQogICAgIDogbV9pZCgwKQogICAgICwgbV9oYXZlQ2hpbGRyZW4oZmFsc2UpCiAg
ICAgLCBtX3JvbGUoVW5rbm93blJvbGUpCisgICAgLCBtX2NhY2hlZElzSWdub3JlZFZhbHVlKERl
ZmF1bHRCZWhhdmlvcikKICNpZiBQTEFURk9STShHVEspCiAgICAgLCBtX3dyYXBwZXIoMCkKICNl
bGlmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTc3MSw2ICsxNzcyLDI4IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9pbnQpIGNvbnN0CiAgICAgfQogfQogCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhY2hl
ZElzSWdub3JlZFZhbHVlKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJc0lnbm9yZWRWYWx1ZSA9PSBE
ZWZhdWx0QmVoYXZpb3IpCisgICAgICAgIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworCisgICAg
cmV0dXJuIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPT0gSWdub3JlT2JqZWN0OworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldENhY2hlZElzSWdub3JlZFZhbHVlKGJvb2wgaXNJZ25v
cmVkKQoreworICAgIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVP
YmplY3QgOiBJbmNsdWRlT2JqZWN0OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5v
dGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpCit7CisgICAgYm9vbCBpc0lnbm9yZWQgPSBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCk7CisgICAgaWYgKGNhY2hlZElzSWdub3JlZFZhbHVlKCkgIT0g
aXNJZ25vcmVkKSB7CisgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHBh
cmVudE9iamVjdCgpKTsKKyAgICAgICAgc2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoaXNJZ25vcmVk
KTsKKyAgICB9Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVByZXNzZWRJc1By
ZXNlbnQoKSBjb25zdAogewogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0
dHIpLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggODczYTVjNmVmM2ZlMTRkYmJiMzlmZDQyNmFhOWYwMGY3
N2EzOGE4Ni4uNjBiYzkyZDBkYjc5NDFiMjRiNTM0ODI2NTA1MTRhODYzYWRlNDQwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
QEAgLTYxMCw3ICs2MTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgp
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hhbmdl
ZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIHsgfQog
ICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oKTsKICAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSB7IH0KQEAgLTcyOSw2ICs3MjksMTIgQEAgcHVibGlj
OgogICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBj
b29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCisgICAgYm9vbCBjYWNo
ZWRJc0lnbm9yZWRWYWx1ZSgpOworICAgIHZvaWQgc2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoYm9v
bCk7CisKKyAgICAvLyBGaXJlcyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRo
ZSBwYXJlbnQgaWYgdGhlIGlzSWdub3JlZCB2YWx1ZSBjaGFuZ2VkLgorICAgIHZvaWQgbm90aWZ5
SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CisKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkg
Y29uc3Q7CkBAIC03NjcsNiArNzczLDcgQEAgcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJl
bjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbiBtX2NhY2hlZElzSWdub3JlZFZhbHVlOwogICAgIAogICAgIC8vIElmIHRoaXMg
b2JqZWN0IGl0c2VsZiBzY3JvbGxzLCByZXR1cm4gaXRzIFNjcm9sbGFibGVBcmVhLgogICAgIHZp
cnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29u
c3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNjg3NzE2YzU0MGNmODJl
YTBhY2UwMjBmMmRlZTBjYzA0N2YwNGEyYi4uMDJlNzY5OGI4NmUyZjUyZWIxOTNkODkwYjYxYjVh
NzliNjE3NjFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDk0LDggKzEwOTQsOCBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogICAgIC8vIE5PVEU6IEJScyBhbHdheXMgaGF2ZSB0ZXh0IGJveGVzIG5vdywgc28gdGhl
IHRleHQgYm94IGNoZWNrIGhlcmUgY2FuIGJlIHJlbW92ZWQKICAgICBpZiAobV9yZW5kZXJlci0+
aXNUZXh0KCkpIHsKICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5k
IE1lbnVCdXR0b25zIGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwg
c28gaXQncyBpZ25vcmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKLSAgICAgICAgaWYgKHBhcmVu
dE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9sZQot
ICAgICAgICAgICAgfHwgcGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRl
KCkgPT0gTWVudUJ1dHRvblJvbGUpCisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBpZiAocGFyZW50ICYmIChwYXJl
bnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUl0ZW1Sb2xlIHx8IHBhcmVudC0+YXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9uUm9sZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChtX3JlbmRl
cmVyKTsKICAgICAgICAgaWYgKG1fcmVuZGVyZXItPmlzQlIoKSB8fCAhcmVuZGVyVGV4dC0+Zmly
c3RUZXh0Qm94KCkpCkBAIC0yMjEyLDYgKzIyMTIsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVs
ZW0KICAgICBIVE1MRWxlbWVudCogY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBsYWJlbEVsZW1lbnQt
PmNvbnRyb2woKTsKICAgICBpZiAoIWNvcnJlc3BvbmRpbmdDb250cm9sKQogICAgICAgICByZXR1
cm4gMDsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sIGlzbid0
IGEgZGVzY2VuZGFudCBvZiB0aGlzIGxhYmVsIHRoYXQncyBpbiB0aGUgbWlkZGxlIG9mIGJlaW5n
IGRlc3Ryb3llZC4KKyAgICBpZiAoY29ycmVzcG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCkgJiYg
IWNvcnJlc3BvbmRpbmdDb250cm9sLT5yZW5kZXJlcigpLT5wYXJlbnQoKSkKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgCiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY29y
cmVzcG9uZGluZ0NvbnRyb2wpOyAgICAgCiB9CkBAIC0yNTI4LDcgKzI1MzIsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25z
dAogICAgIHJldHVybiBpc1RleHRDb250cm9sKCk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Y29udGVudENoYW5nZWQoKQordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp0ZXh0Q2hhbmdlZCgpCiB7CiAgICAgLy8gSWYgdGhpcyBlbGVtZW50IHN1cHBvcnRzIEFS
SUEgbGl2ZSByZWdpb25zLCBvciBpcyBwYXJ0IG9mIGEgcmVnaW9uIHdpdGggYW4gQVJJQSBlZGl0
YWJsZSByb2xlLAogICAgIC8vIHRoZW4gbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAppbmRleCBiMTc1MmQzZjE3ZjQ0MjQyZmRhMzM5NzZhY2QxOWFmYjBjYjY1ZDgxLi5h
YjA5MjQwMTc5YzU2YjA3YjMwMmJiYTBkYWY0MjliNTI0ZGMxNDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2goKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dENoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCmluZGV4IDZkMTNhYWQwNjE3OGYxMWQ2ODIzYWIyM2U3YmNlMDE3NWI4YTYwMzguLjEy
ZTViNGJmMzc5OWVlMzEwMzZkOTY1ODc4YzJjZmE4M2Q3ZWZjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CkBAIC00Myw2ICs0MywxNyBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyogdmlldykKIHsKIH0KIAorQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCit7CisgICAgQVNTRVJUKGlzRGV0YWNo
ZWQoKSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRldGFjaCgpCit7Cisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoKCk7CisgICAgbV9zY3JvbGxWaWV3ID0gMDsK
K30KKwogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4gQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmNyZWF0ZShTY3JvbGxWaWV3KiB2aWV3KQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcodmlldykpOwpAQCAtNjcsMTIgKzc4LDEyIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxCYXIo
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uCiAvLyBJbiBXZWJLaXQyLCB0aGUgU2Nyb2xsVmlldyBv
YmplY3Qgd2lsbCByZXR1cm4gdGhlIEFYIGluZm9ybWF0aW9uIChiZWNhdXNlIHRoZXJlIGFyZSBu
byBwbGF0Zm9ybSB3aWRnZXRzKS4KIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmlzQXR0
YWNobWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRn
ZXQoKTsKKyAgICByZXR1cm4gbV9zY3JvbGxWaWV3ICYmIG1fc2Nyb2xsVmlldy0+cGxhdGZvcm1X
aWRnZXQoKTsKIH0KIAogV2lkZ2V0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdAogewotICAgIHJldHVybiBtX3Njcm9sbFZpZXcuZ2V0KCk7
CisgICAgcmV0dXJuIG1fc2Nyb2xsVmlldzsKIH0KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKQpAQCAtODgsNiArOTksOSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkK
IAogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycygpCiB7Cisg
ICAgaWYgKCFtX3Njcm9sbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3Njcm9s
bFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAhbV9ob3Jpem9udGFsU2Nyb2xsYmFyKQog
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBhZGRDaGlsZFNjcm9sbGJhcihtX3Njcm9s
bFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSk7CiAgICAgZWxzZSBpZiAoIW1fc2Nyb2xsVmll
dy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAt
MTUzLDEwICsxNjcsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRy
ZW4oKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2Vi
QXJlYU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3
KCkpCisgICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXco
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19j
YXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldy5nZXQoKSktPmZyYW1lKCktPmRvY3VtZW50KCk7
CisgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmll
dyktPmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2MgfHwgIWRvYy0+cmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE3OSwyMyArMTkzLDI2IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQb2luCiAKIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVsZW1l
bnRSZWN0KCkgY29uc3QKIHsKKyAgICBpZiAoIW1fc2Nyb2xsVmlldykKKyAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKKwogICAgIHJldHVybiBtX3Njcm9sbFZpZXctPmZyYW1lUmVjdCgpOwog
fQogCiBGcmFtZVZpZXcqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudEZyYW1lVmll
dygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAg
aWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1f
c2Nyb2xsVmlldy5nZXQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1f
c2Nyb2xsVmlldyk7CiB9ICAgIAogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmll
dy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3
LT5pc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3
LmdldCgpKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldyktPmZyYW1l
KCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob3duZXIpOwogCkBA
IC0yMDQsMTAgKzIyMSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgaWYgKCFtX3Njcm9s
bFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgCi0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KG1fc2Nyb2xsVmlldy5nZXQoKSktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwor
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcq
PihtX3Njcm9sbFZpZXcpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKICAgICBpZiAob3duZXIg
JiYgb3duZXItPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdl
dChvd25lcik7CiAgICAgCkBAIC0yMTYsMTIgKzIzMywxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAog
CiBTY3JvbGxhYmxlQXJlYSogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVB
cmVhSWZTY3JvbGxhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgp
OworICAgIHJldHVybiBtX3Njcm9sbFZpZXc7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OnNjcm9sbFRvKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBtX3Nj
cm9sbFZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHBvaW50KTsKKyAgICBpZiAobV9zY3JvbGxWaWV3
KQorICAgICAgICBtX3Njcm9sbFZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHBvaW50KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA5OTUzMTY0ZGYyZWUx
NzYwNTU5NzE3YjQzNDgxZTM4OGEzMWM3ZDY0Li40ZmY4YTIyM2ZkODc5YjZiNTYxNGFlNTRlYjM1
MTQ2Nzc3NGQwOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC0zOCw3ICszOCwxMCBAQCBjbGFzcyBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4gY3JlYXRl
KFNjcm9sbFZpZXcqKTsgICAgCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxBcmVhUm9sZTsgfQotICAgIFNjcm9sbFZpZXcqIHNj
cm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFZpZXcuZ2V0KCk7IH0KKyAgICBTY3Jv
bGxWaWV3KiBzY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3OyB9CisKKyAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpOworICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2goKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNj
cm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7CkBAIC03Miw3ICs3NSw3IEBAIHByaXZh
dGU6CiAgICAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogYWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAgICAgdm9pZCByZW1vdmVDaGlsZFNjcm9sbGJhcihBY2Nlc3NpYmlsaXR5T2JqZWN0
Kik7CiAgICAgCi0gICAgUmVmUHRyPFNjcm9sbFZpZXc+IG1fc2Nyb2xsVmlldzsKKyAgICBTY3Jv
bGxWaWV3KiBtX3Njcm9sbFZpZXc7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1f
aG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV92
ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5EaXJ0eTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBi
MWQxNTVkNDJiMjZkNzgwZDgzZDEzOGNlNTJjOTA1ODRkNzE4ZTBjLi5hNmRhYjI1NDY5YTYxNDcw
NjRhMmVhNjAwNWRjZDQyNjUzNWRhNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0xMzAsNiArMTMwLDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICAKICAgICAvLyBn
byB0aHJvdWdoIHRoZSBjZWxsJ3MgYW5kIGNoZWNrIGZvciB0ZWxsLXRhbGUgc2lnbnMgb2YgImRh
dGEiIHRhYmxlIHN0YXR1cwogICAgIC8vIGNlbGxzIGhhdmUgYm9yZGVycywgb3IgdXNlIGF0dHJp
YnV0ZXMgbGlrZSBoZWFkZXJzLCBhYmJyLCBzY29wZSBvciBheGlzCisgICAgdGFibGUtPnJlY2Fs
Y1NlY3Rpb25zSWZOZWVkZWQoKTsKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9keSA9
IHRhYmxlLT5maXJzdEJvZHkoKTsKICAgICBpZiAoIWZpcnN0Qm9keSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1
bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwCmluZGV4IGE5NWUwNDQxOGNjZDQ5
OGQyODZkYzg3YTgwOGFiYjMzMTAyZTBhNzAuLjM4NjYyMGI5YjExOWUzZDZkM2ZlYmU2ZDE1YWNm
YzdjMTk3OTAyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hy
b21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHAKQEAgLTg2LDE5ICs4
NiwyMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVD
aGFuZ2VkOgogICAgIGNhc2UgQVhDaGlsZHJlbkNoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRV
SUVsZW1lbnRDaGFuZ2VkOgorICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKICAgICBj
YXNlIEFYTGF5b3V0Q29tcGxldGU6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAg
IGNhc2UgQVhMb2FkQ29tcGxldGU6CiAgICAgY2FzZSBBWE1lbnVMaXN0SXRlbVNlbGVjdGVkOgog
ICAgIGNhc2UgQVhNZW51TGlzdFZhbHVlQ2hhbmdlZDoKKyAgICBjYXNlIEFYT3RoZXJBcmlhQXR0
cmlidXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYUm93Q29sbGFwc2VkOgogICAgIGNhc2UgQVhSb3dD
b3VudENoYW5nZWQ6CiAgICAgY2FzZSBBWFJvd0V4cGFuZGVkOgogICAgIGNhc2UgQVhTY3JvbGxl
ZFRvQW5jaG9yOgogICAgIGNhc2UgQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZDoKICAgICBjYXNl
IEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKKyAgICBjYXNlIEFYVGV4dENoYW5nZWQ6CiAgICAgY2Fz
ZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGU4NDU2ZjcwNDBj
NzIxYWRlZjRkMjQyMTY1MzhiYmI3MjRjZjUyNzAuLmVjYWNlMWUxMmU0MmYyYjMyZjAwNzhmNDk4
MTMyYmZmNzJiZGFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTcyMiwzMSArNzIyLDgg
QEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKIAogICAgIGludmFsaWRhdGVOb2RlTGlzdENhY2hl
c0luQW5jZXN0b3JzKCZuYW1lLCB0aGlzKTsKIAotICAgIGlmICghQVhPYmplY3RDYWNoZTo6YWNj
ZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG5hbWUgPT0g
YXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikgewotICAgICAgICAvLyBhbnkgY2hhbmdlIHRvIGFy
aWEtYWN0aXZlZGVzY2VuZGFudCBhdHRyaWJ1dGUgdHJpZ2dlcnMgYWNjZXNzaWJpbGl0eSBmb2N1
cyBjaGFuZ2UsIGJ1dCBkb2N1bWVudCBmb2N1cyByZW1haW5zIGludGFjdAotICAgICAgICBkb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKHRo
aXMpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSByb2xlQXR0cikgewotICAgICAgICAvLyB0aGUg
cm9sZSBhdHRyaWJ1dGUgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSwgYW5kIHRoZSBBY2Nlc3NpYmls
aXR5T2JqZWN0IG11c3QgcGljayB1cCB0aGVzZSBjaGFuZ2VzCi0gICAgICAgIGRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYVJvbGVDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxz
ZSBpZiAobmFtZSA9PSBhcmlhX3ZhbHVlbm93QXR0cikgewotICAgICAgICAvLyBJZiB0aGUgdmFs
dWVub3cgYXR0cmlidXRlIGNoYW5nZXMsIEFYIGNsaWVudHMgbmVlZCB0byBiZSBub3RpZmllZC4K
LSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRo
aXMsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKLSAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gYXJpYV9sYWJlbEF0dHIgfHwgbmFtZSA9PSBhcmlhX2xhYmVsZWRieUF0dHIgfHwg
bmFtZSA9PSBhbHRBdHRyIHx8IG5hbWUgPT0gdGl0bGVBdHRyKSB7Ci0gICAgICAgIC8vIElmIHRo
ZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgY2hhbmdlcyBkdWUgdG8gYW4gYXR0cmlidXRlIGNoYW5n
ZSwgbm90aWZ5IGFjY2Vzc2liaWxpdHkuCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+Y29udGVudENoYW5nZWQodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IGFyaWFf
Y2hlY2tlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Y2hlY2tl
ZFN0YXRlQ2hhbmdlZCh0aGlzKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGFyaWFfc2VsZWN0ZWRB
dHRyKQotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnNlbGVjdGVkQ2hpbGRy
ZW5DaGFuZ2VkKHRoaXMpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIp
Ci0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYUV4cGFuZGVk
Q2hhbmdlKHRoaXMpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9oaWRkZW5BdHRyKQotICAg
ICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsK
LSAgICBlbHNlIGlmIChuYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCi0gICAgICAgIGRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBBWE9iamVjdENhY2hl
OjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0cnVlKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6
YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZjIwYjBiMjJmODczZTY4ZWIxNDMz
OTVlZDIwOGE4ZDcxOGRiZWQ2Mi4uMGVjNjk4OGEwYWNhNzlkYjE5YWExNGY5ZDdkNDA2NjU4ZDMy
MWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIK
IAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC0xMDExLDYgKzEw
MTIsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpkZWxldGVMaW5lQm94VHJlZSgpCiAgICAgICAgIH0K
ICAgICB9CiAgICAgbV9saW5lQm94ZXMuZGVsZXRlTGluZUJveFRyZWUocmVuZGVyQXJlbmEoKSk7
CisgICAgaWYgKFVOTElLRUxZKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkp
KQorICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlY29tcHV0ZUlzSWdub3Jl
ZCh0aGlzKTsKIH0KIAogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNyZWF0ZVJvb3RJbmxp
bmVCb3goKSAKQEAgLTEwMjIsNiArMTAyNSwxMCBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9j
azo6Y3JlYXRlQW5kQXBwZW5kUm9vdElubGluZUJveCgpCiB7CiAgICAgUm9vdElubGluZUJveCog
cm9vdEJveCA9IGNyZWF0ZVJvb3RJbmxpbmVCb3goKTsKICAgICBtX2xpbmVCb3hlcy5hcHBlbmRM
aW5lQm94KHJvb3RCb3gpOworCisgICAgaWYgKFVOTElLRUxZKEFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpICYmIG1fbGluZUJveGVzLmZpcnN0TGluZUJveCgpID09IHJvb3RC
b3gpCisgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cmVjb21wdXRlSXNJZ25v
cmVkKHRoaXMpOworCiAgICAgcmV0dXJuIHJvb3RCb3g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMzE4YTE0OTdlMDA2MjdkOGM0YjJlODg3YWY1
ZDk4ZTlhOWEwYmM1Ni4uZTQ4MzdhMmNlODdlYjNkNjViN2NlYmFhMGEyMDJmNjdjYTdkZDUxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MjIsNyAr
MTgyMiw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQoKS0+c2V0QW5ub3RhdGVkUmVnaW9uc0RpcnR5KHRydWUpOwogI2VuZGlmCiAgICAgICAgICAg
ICBpZiAodmlzaWJpbGl0eUNoYW5nZWQgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVu
YWJsZWQoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNo
aWxkcmVuQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5heE9iamVj
dENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChwYXJlbnQoKSk7CiAKICAgICAgICAgICAgIC8vIEtl
ZXAgbGF5ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRlIGlmIHZpc2liaWxp
dHkgY2hhbmdlcy4KICAgICAgICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3
U3R5bGUtPnZpc2liaWxpdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCmluZGV4IDlhMDc3YmYzMGZmZWI3NjFmNDZhYjkyNWE4NTI1Yzk1MmEwMjQ2NmYuLjNmOGQ3
MTVlYWU4NjRlZTkxOGU4ZGE1ZjY3ZGVlZDNkNWM2NzAzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE0NjYsNyArMTQ2Niw3IEBAIHZvaWQgUmVuZGVyVGV4
dDo6c2V0VGV4dChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRleHQsIGJvb2wgZm9yY2UpCiAgICAg
CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSA9IGRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKTsKICAgICBpZiAoYXhPYmplY3RDYWNoZS0+YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkK
LSAgICAgICAgYXhPYmplY3RDYWNoZS0+Y29udGVudENoYW5nZWQodGhpcyk7CisgICAgICAgIGF4
T2JqZWN0Q2FjaGUtPnRleHRDaGFuZ2VkKHRoaXMpOwogfQogCiBTdHJpbmcgUmVuZGVyVGV4dDo6
dGV4dFdpdGhvdXRUcmFuc2NvZGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgKaW5k
ZXggZGU2OGQzN2IwNDM4ZDUyMDY3MTcxYmQ2YTRmMWE0ZTZmNTczYWI0MS4uZDY4ZDg3NjI0Zjk4
YWE1NjE5YjkxY2MzYmFiYmIxZmM3NDM5YTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaApA
QCAtNTQsMTEgKzU0LDggQEAgZW51bSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIHsKICAg
ICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uUm93Q29sbGFwc2VkLAogICAgIFdlYkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25Sb3dFeHBhbmRlZCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSW52YWxpZFN0YXR1c0NoYW5nZWQsCi0KLSAgICAvLyBGSVhNRTogbm93IHRoYXQg
d2UncmUgdXNpbmcgQXNzZXJ0TWF0Y2hpbmdFbnVtcywgd2UgZG9uJ3QgbmVlZCBhCi0gICAgLy8g
Y2F0Y2gtYWxsICJpbnZhbGlkIiBub3RpZmljYXRpb24gZW51bS4gUmVtb3ZlIHRoaXMgb25jZSBp
dCdzIGJlZW4KLSAgICAvLyByZW1vdmVkIGZyb20gQ2hyb21pdW0uCi0gICAgV2ViQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkludmFsaWQsCisgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
blRleHRDaGFuZ2VkLAorICAgIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFB
dHRyaWJ1dGVDaGFuZ2VkCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggOTVl
OGI2MDdkMjI4ZjhiZTg1Y2RjZTlhMzFiMTg5MzcxMTNkNTJiZi4uOWZlOWNiODZkYWFkMjJkMjcw
ZjAzNmE0NGY5MjNmMTk2NTRjYThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTE1Myw2ICsxNTMsOCBAQCBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Sb3dDb3Vu
dENoYW5nZWQsIEFYT2JqZQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uUm93Q29sbGFwc2VkLCBBWE9iamVjdENhY2hlOjpBWFJvd0NvbGxh
cHNlZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25Sb3dFeHBhbmRlZCwgQVhPYmplY3RDYWNoZTo6QVhSb3dFeHBhbmRlZCk7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25JbnZh
bGlkU3RhdHVzQ2hhbmdlZCwgQVhPYmplY3RDYWNoZTo6QVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25UZXh0Q2hhbmdlZCwgQVhPYmplY3RDYWNoZTo6QVhUZXh0Q2hhbmdlZCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFB
dHRyaWJ1dGVDaGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5n
ZWQpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xl
VW5rbm93biwgVW5rbm93blJvbGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJB
Y2Nlc3NpYmlsaXR5Um9sZUJ1dHRvbiwgQnV0dG9uUm9sZSk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzM5N2U0NmFlZmVmMjFjNWE0OWIxNTJm
OWRmMjc0NmEzOGFlNjBmMS4uOTBiZjA4YmY2MTJmYjJlNTM2MjU3ZDAzMTM5MDgzNzAxYmE1M2Ji
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTEwLTIzICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29n
bGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBh
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBub3RpZmlj
YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
KToKKwogMjAxMi0xMC0yMyAgU2ltb24gUGVuYSAgPHNwZW5hQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gQWRkaW5nIG15c2VsZiBhcyBjb21taXR0ZXIuCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMTg0MjJkYjU4ZTU5YTQx
OThhODJiNjBiODVhNmU5MWM4NDZlYTIzMi4uMzA1MjE0ZjMwMTUwNDYzOTQzMDE4MDI4ZmE4NjM3
MmMzZTc2NTRkOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcApAQCAtNjk2LDYgKzY5NiwxMiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpwb3N0QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYgogICAg
IGNhc2UgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkludmFsaWRTdGF0dXNDaGFuZ2VkOgog
ICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkludmFsaWRTdGF0dXNDaGFuZ2VkIjsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uVGV4dENoYW5n
ZWQ6CisgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiVGV4dENoYW5nZWQiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25PdGhlckFyaWFBdHRy
aWJ1dGVDaGFuZ2VkOgorICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIk90aGVyQXJpYUF0dHJp
YnV0ZUNoYW5nZWQiOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBub3Rp
ZmljYXRpb25OYW1lID0gIlVua25vd25Ob3RpZmljYXRpb24iOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAzOTE1MGM4OTNhZTU1MmJjMTE5NTYwZThkMGQzYTU0NmU1OTI3NDMzLi4zMWUzZWU5ZjBm
MjQwZGMyMDVmMTZiYmM1MWRjZjIyZDkxMjg2ZDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MTItMTAtMjMgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgQVg6IE5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2VudCB3aGVuIGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk1NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIDMgbmV3IHRlc3QgdG8gZW5zdXJlOgorICAgICAgICAxLiBBICJjaGlsZHJlbiBj
aGFuZ2VkIiBub3RpZmljYXRpb24gaXMgZmlyZWQgb24gdGhlIHBhcmVudCBvYmplY3Qgd2hlbiBh
bgorICAgICAgICAgICBvYmplY3QgdGhhdCB3YXMgcHJldmlvdXNseSBpZ25vcmVkIGJlY29tZXMg
dW5pZ25vcmVkLgorICAgICAgICAyLiBBIG5vdGlmaWNhdGlvbiBpcyBzZW50IHdoZW4gYW4gZWxl
bWVudCdzIHRleHQgKGluY2wuIHRpdGxlIG9yIGxhYmVsKSBjaGFuZ2VzLgorICAgICAgICAzLiBB
IG5vdGlmaWNhdGlvbiBpcyBzZW50IHdoZW4gYW5vdGhlciBBUklBIGF0dHJpYnV0ZSBjaGFuZ2Vz
LgorCisgICAgICAgIE1vZGlmaWVzIGFkZC10by1tZW51LWxpc3QtY3Jhc2hlcyBiZWNhdXNlIGl0
IHdhcyB0b28gYnJpdHRsZTsgaXQgd2FzCisgICAgICAgICAgICByZWZlcmVuY2luZyBhIHN0YWxl
IG9iamVjdCByYXRoZXIgdGhhbiByZXRyaWV2aW5nIGl0cyBsYXRlc3QgaGFuZGxlLgorICAgICAg
ICBNb2RpZmllcyBhcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbiB0byBsaXN0ZW4gb24g
dGhlIGNvcnJlY3QKKyAgICAgICAgICAgIG9iamVjdCBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAg
ICBTaW1wbGlmaWVzIG5vdGlmaWNhdGlvbi1saXN0ZW5lcnMgc28gaXQgZG9lc24ndCBnZW5lcmF0
ZSBhZGRpdGlvbmFsCisgICAgICAgICAgICBub3RpZmljYXRpb25zIHRoYXQgYXJlIGluY29uc2lz
dGVudCBiZXR3ZWVuIHBsYXRmb3JtcyBub3cuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtY2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUt
bGlzdC1jcmFzaGVzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9y
ZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1z
ZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5k
cy1ub3RpZmljYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdl
LW5vdGlmaWNhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0yMyAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3VwcG9ydCBmdWxsIG1vbnRoIG5hbWVzIGlu
IERhdGVUaW1lRWRpdEVsZW1lbnQsIGFuZCB1c2UgdGhlbSBpbiBpbnB1dFt0eXBlPW1vbnRoXSBi
eSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY2hl
Y2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKaW5kZXggNGY2YzYwZWM5YmY5
MjRkNmM5MjE2YTM0ZTk0YmYyYmRjZGFiYWUyYy4uZjc5OTExMjI4NDJjYTIwY2YxZWZjYWZmMjY2
NWUzMDc1MGNiYTA3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApAQCAtNywxNSAr
NywxMyBAQAogICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBjaGVja2luZyBvZiBhbiBhcmlhIGNoZWNr
Ym94IHNlbmRzIGEgbm90aWZpY2F0aW9uLiIpOwotICAgICAgICB3aW5kb3cucm9vdCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50OwotICAgICAgICB3aW5kb3cuYm9keSA9IHJv
b3QuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgIHZhciBhY2Nlc3NpYmxlQ2hlY2tib3ggPSBi
b2R5LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgdmFyIGFjY2Vzc2libGVDaGVja2JveCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2hlY2tib3gxIik7
CiAgICAgICAgIHZhciBub3RpZmljYXRpb25Db3VudCA9IDA7CiAKICAgICAgICAgZnVuY3Rpb24g
bGlzdGVuZXIobm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gIkNo
ZWNrZWRTdGF0ZUNoYW5nZWQiKQotICAgICAgICAgICAgbm90aWZpY2F0aW9uQ291bnQrKzsKKyAg
ICAgICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gIkNoZWNrZWRTdGF0ZUNoYW5nZWQiKQorICAg
ICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkNvdW50Kys7CiAKICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ICs9ICJHb3Qgbm90aWZpY2F0aW9u
OiAiICsgbm90aWZpY2F0aW9uICsgIlxuIjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRtbAppbmRleCAzZGQ4ODg4NDRkMGM0
YTYwZmM5NGU5YzIyZGZmNjJkMjZiYWFlYjYzLi42MjZjNWViOGZlZGNmYmE5MWM4YWIwYTBhNmNj
YTE2MDI1ODY4MjdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vdGlm
aWNhdGlvbi1saXN0ZW5lcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25v
dGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRtbApAQCAtNyw3ICs3LDcgQEAKIAogPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+CiAKLTxzZWxlY3QgaWQ9InNlbGVjdCIgdmFsdWU9IlNlbGVjdCI+PG9wdGlv
bj5BPG9wdGlvbj5CPC9zZWxlY3Q+Cis8c2VsZWN0IGlkPSJzZWxlY3QiIHZhbHVlPSJTZWxlY3Qi
Pjwvc2VsZWN0PgogCiA8ZGl2IGlkPSJzbGlkZXIiIHRhYmluZGV4PSIwIiByb2xlPSJzbGlkZXIi
IGFyaWEtdmFsdWVub3c9IjUiPlNsaWRlcjwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2RhdGUtbXVsdGlwbGUtZmllbGRzL2RhdGUtbXVsdGlwbGUtZmllbGRzLWF4
LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZGF0ZS1tdWx0aXBsZS1maWVsZHMvZGF0ZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFs
dWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGEwNmIzYzQzY2YzZDEx
YjBiZDVmMTU0ZDI5MDMyNjFmMWFlOWZiNDUuLmQ0ZmM4YWU1NDQ1MDYxYTgwZTU4OGM2NzdkMWNh
ZTY2MTczYTI0ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS1tdWx0
aXBsZS1maWVsZHMvZGF0ZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmlj
YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS1tdWx0
aXBsZS1maWVsZHMvZGF0ZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmlj
YXRpb24tZXhwZWN0ZWQudHh0CkBAIC03LDYgKzcsOCBAQCBGb2N1c2VkVUlFbGVtZW50Q2hhbmdl
ZCBBWEhlbHA6IE1vbnRoPUFYVmFsdWVEZXNjcmlwdGlvbjogMTAKIEZvY3VzZWRVSUVsZW1lbnRD
aGFuZ2VkIEFYSGVscDogRGF5PUFYVmFsdWVEZXNjcmlwdGlvbjogMDkKIEZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkIEFYSGVscDogWWVhcj1BWFZhbHVlRGVzY3JpcHRpb246IDIwMTIKIFZhbHVlQ2hh
bmdlZCBBWEhlbHA6IERheT1BWFZhbHVlRGVzY3JpcHRpb246IDA0CitWYWx1ZUNoYW5nZWQgQVhI
ZWxwOiBEYXk9QVhWYWx1ZURlc2NyaXB0aW9uOiAwNAorVmFsdWVDaGFuZ2VkIEFYSGVscDogWWVh
cj1BWFZhbHVlRGVzY3JpcHRpb246IDIwMTMKIFZhbHVlQ2hhbmdlZCBBWEhlbHA6IFllYXI9QVhW
YWx1ZURlc2NyaXB0aW9uOiAyMDEzCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMv
dGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1l
LW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50
eHQKaW5kZXggOWU2ZTZkMjczMTQ1NDljZmI4MzNkZTYwZTNlODViZTMxMDRkMjc1ZS4uMmU1ZWQ5
YmRhNjMyMmZkMTU2ZWE0NTFlOTEzODdjZjM4MjgwMjRkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1h
eC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1h
eC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw4IEBA
IEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkIEFYSGVscDogSG91cnM9QVhWYWx1ZURlc2NyaXB0aW9u
OiAxMgogRm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNj
cmlwdGlvbjogMzQKIFZhbHVlQ2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0
aW9uOiAwNQogVmFsdWVDaGFuZ2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246
IDA1CitWYWx1ZUNoYW5nZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMDUK
K1ZhbHVlQ2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAwNQogCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVkLnR4dAppbmRleCA4OWZhNDI0NjJk
NWFkZTAzMjIwODg3YzU4MWYwN2QwYTdhODZjYmU3Li5jOTYyZWEzZjFhMzEzZjIzY2FlMjBkODdh
ZjBhYjAzMjk3YjlhMmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVu
dS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCBhZGRpbmcgYSBzZWxlY3RlZCBvcHRpb24gdG8gYSBtZW51IGxpc3Qgdmlh
IGFuIHVudXN1YWwgcm91dGUgKGRvY3VtZW50LndyaXRlIGZyb20gYW4gZXh0ZXJuYWwgc2NyaXB0
KSBkb2Vzbid0IHRyaWdnZXIgYSBjcmFzaCB3aGVuIGRpZFVwZGF0ZUFjdGl2ZU9wdGlvbiBpcyBj
YWxsZWQgYmVmb3JlIHRoZSBjaGlsZHJlbiBhcmUgdXBkYXRlZC4KIAotUEFTUyBhY2Nlc3NpYmxl
UG9wdXAuY2hpbGRyZW5Db3VudCBpcyAxCi1QQVNTIGFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNv
dW50IGlzIDIKLVBBU1MgYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQgaXMgMQorUEFTUyBh
Y2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQgaXMgMQorUEFT
UyBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQgaXMgMgor
UEFTUyBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQgaXMg
MQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10
by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMuaHRtbAppbmRleCA3NTEwMzM4
ZmZjNTJkYThhOGM1OGFiMWExZDE5OWFiOTdmM2E2MTVhLi5hZWNiNGU1YTBkMGU3NWUyYjRjOGYw
YzlkNzgxMzBmN2M5ZGRhNjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlz
dC1jcmFzaGVzLmh0bWwKQEAgLTE5LDE5ICsxOSwxOCBAQAogICAgICAgICBtZW51bGlzdC5mb2N1
cygpOwogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CiAgICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZU1lbnVsaXN0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgICAgICB3aW5k
b3cuYWNjZXNzaWJsZVBvcHVwID0gYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCIsICIx
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRl
eCgwKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxkb2N1bWVudC53cml0ZSgnPG9wdGlv
biBzZWxlY3RlZD4yJyk7Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0PgogICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAg
ICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNo
aWxkcmVuQ291bnQiLCAiMiIpOwogICAgIDwvc2NyaXB0PgogICAgIDxzY3JpcHQ+CiAgICAgICAg
IG1lbnVsaXN0LnJlbW92ZUNoaWxkKG1lbnVsaXN0LnNlbGVjdGVkT3B0aW9uc1swXSk7CiAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQi
LCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0
SW5kZXgoMCkuY2hpbGRyZW5Db3VudCIsICIxIik7CiAgICAgPC9zY3JpcHQ+CiA8L3NlbGVjdD4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5n
ZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkYmRjNmRiNTdh
OWE0YzMxZTZmMGMzMTgzOGVlZTQ0YThkNzAzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNl
bmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorVGhpcyB0ZXN0
IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGZpcmVzIGEg
Y2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5E
aXZDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdoaWRkZW5EaXYnKSAhPSBudWxsIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnaW52aXNpYmxlRGl2Q29udGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2JykgIT0gbnVsbCBpcyBmYWxzZQorUEFTUyBhY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQ
QVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXYnKSAhPSBudWxsIGlzIGZhbHNlCitQ
QVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKSAhPSBu
dWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZScp
ICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0
TGFiZWxDb250YWluZXInKSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCdkaXZXaXRob3V0TGFiZWwnKSAhPSBudWxsIGlzIGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorR290IENoaWxkcmVuQ2hhbmdlZCBu
b3RpZmljYXRpb24gb24gaGlkZGVuRGl2Q29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50
QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCBpcyAxCitHb3QgQ2hpbGRy
ZW5DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBpbnZpc2libGVEaXZDb250YWluZXIKK1BBU1MgYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50
IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGVtcHR5RGl2Q29udGFp
bmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5jaGls
ZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGRpdldp
dGhvdXRSb2xlQ29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91
dFJvbGVDb250YWluZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQg
bm90aWZpY2F0aW9uIG9uIGRpdldpdGhvdXRMYWJlbENvbnRhaW5lcgorUEFTUyBhY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQgaXMg
MQorQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQt
Y2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MDY1OTcwYjZkZmY5NGFjZDI2ZDU4ZTZmZDMzZDAzZGZkZTM1ZTU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApAQCAtMCww
ICsxLDEzMSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorCisgIDxkaXYgaWQ9ImhpZGRl
bkRpdkNvbnRhaW5lciIgYXJpYS1sYWJlbD0iaGlkZGVuRGl2Q29udGFpbmVyIj4KKyAgICA8ZGl2
IGlkPSJoaWRkZW5EaXYiIGhpZGRlbj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0
dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAgPGRp
diBpZD0iaW52aXNpYmxlRGl2Q29udGFpbmVyIiBhcmlhLWxhYmVsPSJpbnZpc2libGVEaXZDb250
YWluZXIiPgorICAgIDxkaXYgaWQ9ImludmlzaWJsZURpdiIgc3R5bGU9InZpc2liaWxpdHk6IGhp
ZGRlbiI+CisgICAgICA8ZGl2PgorICAgICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgorICAg
ICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImVtcHR5RGl2Q29u
dGFpbmVyIiBhcmlhLWxhYmVsPSJlbXB0eURpdkNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZW1w
dHlEaXYiPjwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGlkPSJkaXZXaXRob3V0Um9sZUNvbnRh
aW5lciIgYXJpYS1sYWJlbD0iZGl2V2l0aG91dFJvbGVDb250YWluZXIiPgorICAgIDxkaXYgaWQ9
ImRpdldpdGhvdXRSb2xlIj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0dG9uPC9i
dXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAgPGRpdiBpZD0i
ZGl2V2l0aG91dExhYmVsQ29udGFpbmVyIiBhcmlhLWxhYmVsPSJkaXZXaXRob3V0TGFiZWxDb250
YWluZXIiPgorICAgIDxkaXYgaWQ9ImRpdldpdGhvdXRMYWJlbCI+CisgICAgICA8ZGl2PgorICAg
ICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cisg
IDwvZGl2PgorCis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFuZ2UgdG8gYWNjZXNzaWJp
bGl0eUlzSWdub3JlZCBmaXJlcyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRo
ZSBwYXJlbnQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9uIGFjY2Vzc2libGVFbGVtZW50
QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5kb3cuc3VjY2Vzc0NvdW50ID0g
MDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCkgeworICAgICAgICBz
dWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3VudCAhPSA1KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBz
dWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2
Q29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRp
b25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29u
dGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExh
YmVsQ29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmhpZGRlbiA9IHRydWU7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KKworICAgIHNob3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdo
aWRkZW5EaXZDb250YWluZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXYnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihm
dW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0
aW9uICsgJyBub3RpZmljYXRpb24gb24gaGlkZGVuRGl2Q29udGFpbmVyJyk7CisgICAgICAgIHNo
b3VsZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpLmNoaWxk
cmVuQ291bnQiLCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7Cisg
ICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicpLmhpZGRlbiA9
IGZhbHNlOworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlz
aWJsZURpdkNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdicpICE9IG51bGwiKTsKKyAgICBhY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3Rp
ZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBpbnZpc2libGVEaXZDb250YWluZXInKTsKKyAg
ICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFp
bmVyJykuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmlj
YXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxl
RGl2Jykuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsKKworICAgIHNob3VsZEJlVHJ1ZSgi
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2JykgIT0gbnVs
bCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVi
dWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gZW1wdHlEaXZDb250
YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlE
aXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1
bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VtcHR5RGl2JykuaW5uZXJUZXh0ID0gJ05vdCBlbXB0eSBhbnltb3JlLic7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VtcHR5RGl2Jykub2Zmc2V0TGVmdDsKKworICAgIHNob3VsZEJl
VHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpICE9
IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2Rpdldp
dGhvdXRSb2xlJykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0
aG91dFJvbGVDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3Rp
ZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3Rp
ZmljYXRpb24gb24gZGl2V2l0aG91dFJvbGVDb250YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUo
ImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKS5jaGlsZHJl
bkNvdW50IiwgIjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAg
IH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZScpLnNldEF0
dHJpYnV0ZSgncm9sZScsICdoZWFkaW5nJyk7CisKKyAgICBzaG91bGRCZVRydWUoImFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJykgIT0gbnVsbCIpOworICAg
IHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsJykg
IT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29u
dGFpbmVyJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7
CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9u
IGRpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKS5jaGlsZHJlbkNvdW50Iiwg
IjEiKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWwnKS5zZXRBdHRyaWJ1dGUo
J2FyaWEtbGFiZWwnLCAnTGFiZWwnKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworPC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFu
Z2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdlLXNlbmRz
LW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkNmU5NjI0MDk0YzQxODg2
MTY0N2Y1NjE0YzQwNThmNzY2NTYzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdl
LXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbnkgQVJJQSBhdHRyaWJ1dGUsIG5vdCBqdXN0
IGEgc3RhdGUsIHNlbmRzIGEgbm90aWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK0dvdCBPdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWJ1
c3kKK0dvdCBPdGhlckFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWRp
c2FibGVkCitHb3QgT3RoZXJBcmlhQXR0cmlidXRlQ2hhbmdlZCBub3RpZmljYXRpb24gb24gYXJp
YS1yZWFkb25seQorR290IE90aGVyQXJpYUF0dHJpYnV0ZUNoYW5nZWQgbm90aWZpY2F0aW9uIG9u
IGFyaWEtcmVxdWlyZWQKK0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0
cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWI4MDE3
ZWY1MGU1MmQ2ZGZlYjY3NGE1Zjk3YmY4MDZmYzdlNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJp
YnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8YnV0dG9uIGlkPSJhcmlhLWJ1c3kiIGFyaWEtYnVz
eT0iZmFsc2UiPkJ1c3k8L2J1dHRvbj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1kaXNhYmxlZCIgYXJp
YS1kaXNhYmxlZD0iZmFsc2UiPkRpc2FibGVkPC9idXR0b24+CisgIDxidXR0b24gaWQ9ImFyaWEt
cmVhZG9ubHkiIGFyaWEtcmVhZG9ubHk9ImZhbHNlIj5SZWFkb25seTwvYnV0dG9uPgorICA8YnV0
dG9uIGlkPSJhcmlhLXJlcXVpcmVkIiBhcmlhLXJlcXVpcmVkPSJmYWxzZSI+UmVxdWlyZWQ8L2J1
dHRvbj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbnkgQVJJQSBhdHRy
aWJ1dGUsIG5vdCBqdXN0IGEgc3RhdGUsIHNlbmRzIGEgbm90aWZpY2F0aW9uLiIpOworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKKyAgICBmdW5jdGlvbiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpIHsKKyAgICAgICAg
cmV0dXJuIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZChpZCk7
CisgICAgfQorCisgICAgd2luZG93LnN1Y2Nlc3NDb3VudCA9IDA7CisgICAgZnVuY3Rpb24gZ290
U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc0NvdW50Kys7CisgICAg
ICAgIGlmIChzdWNjZXNzQ291bnQgIT0gNCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBkZWJ1ZygnQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LicpOworICAg
ICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtYnVzeScpLnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxl
ZCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnYXJpYS1yZWFkb25seScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7Cisg
ICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1yZXF1aXJlZCcpLnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpLmhpZGRlbiA9IHRydWU7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnYXJpYS1idXN5JykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVu
Y3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlv
biArICcgbm90aWZpY2F0aW9uIG9uIGFyaWEtYnVzeScpOworICAgICAgICBnb3RTdWNjZXNzZnVs
Tm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fy
aWEtYnVzeScpLnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5JywgJ3RydWUnKTsKKworICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxlZCcpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVy
KGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmlj
YXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWRpc2FibGVkJyk7CisgICAgICAgIGdvdFN1
Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYXJpYS1kaXNhYmxlZCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVl
Jyk7CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHknKS5hZGROb3Rp
ZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWco
J0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1yZWFkb25seScp
OworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEt
cmVhZG9ubHknLCAndHJ1ZScpOworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLXJl
cXVpcmVkJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7
CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9u
IGFyaWEtcmVxdWlyZWQnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOwor
ICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcmlhLXJlcXVpcmVkJykuc2V0
QXR0cmlidXRlKCdhcmlhLXJlcXVpcmVkJywgJ3RydWUnKTsKKworICAgIGRlYnVnKCcnKTsKK30K
KworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1u
b3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiYmE5NzFkNTJmMjFjYTRlNzVjZWQ0Zjk2NTBlODA3NDIzNWUwOTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Rl
eHQtY2hhbmdlLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbiBlbGVtZW50J3MgYWNjZXNzaWJsZSB0
ZXh0LCBldmVuIGlmIGluZGlyZWN0LCBzZW5kcyBhIG5vdGlmaWNhdGlvbi4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCitHb3QgVGV4dENoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtbGFi
ZWwKK0dvdCBUZXh0Q2hhbmdlZCBub3RpZmljYXRpb24gb24gdGl0bGUKK0dvdCBUZXh0Q2hhbmdl
ZCBub3RpZmljYXRpb24gb24gbGFiZWxsZWRieQorR290IFRleHRDaGFuZ2VkIG5vdGlmaWNhdGlv
biBvbiBsYWJlbGVkCitBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
dGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZkNWRiMGE1NTkwYmIyZDgwZjY3OGUzOThmMTZjMmZhYWE3NzNmOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQt
Y2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0i
Y29udGFpbmVyIj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1sYWJlbCIgYXJpYS1sYWJlbD0iQXJpYSBM
YWJlbCI+Q29udGVudDwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJ0aXRsZSIgdGl0bGU9IlRpdGxl
Ij5Db250ZW50PC9idXR0b24+CisgIDxidXR0b24gaWQ9ImxhYmVsbGVkYnkiIGFyaWEtbGFiZWxs
ZWRieT0ibGFiZWwxIj5Db250ZW50PC9idXR0b24+CisgIDxidXR0b24gaWQ9ImxhYmVsZWQiPkNv
bnRlbnQ8L2J1dHRvbj4KKworICA8bGFiZWwgaWQ9ImxhYmVsMSI+TGFiZWwxPC9sYWJlbD4KKyAg
PGxhYmVsIGlkPSJsYWJlbDIiPkxhYmVsMjwvbGFiZWw+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgYSBjaGFuZ2UgdG8gYW4gZWxlbWVudCdzIGFjY2Vzc2libGUgdGV4dCwgZXZlbiBpZiBpbmRp
cmVjdCwgc2VuZHMgYSBub3RpZmljYXRpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAm
JiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9u
IGFjY2Vzc2libGVFbGVtZW50QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5k
b3cuc3VjY2Vzc0NvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0
aW9uKCkgeworICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3Vu
dCAhPSA0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZp
Y2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnYXJpYS1sYWJlbCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAg
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0bGUnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5yZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2xhYmVsZWQnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5oaWRkZW4gPSB0cnVlOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVi
dWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1sYWJlbCcp
OworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFi
ZWwnLCAnTmV3IGFyaWEtbGFiZWwnKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0
bGUnKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAg
ICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gdGl0
bGUnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aXRsZScpLnRpdGxlID0gJ05ldyB0aXRsZSc7CisK
KyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5hZGROb3RpZmljYXRpb25M
aXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsg
bm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gbGFiZWxsZWRieScpOworICAgICAgICBn
b3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICds
YWJlbDInKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnbGFiZWxlZCcpLmFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1Zygn
R290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGVkJyk7CisgICAg
ICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbGFiZWwxJykuc2V0QXR0cmlidXRlKCdmb3InLCAnbGFiZWxlZCcpOwor
CisgICAgZGVidWcoJycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170704</attachid>
            <date>2012-10-25 11:57:00 -0700</date>
            <delta_ts>2012-10-26 14:16:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99547-20121025115533.patch</filename>
            <type>text/plain</type>
            <size>61125</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM3MGUzYmE4M2EyMjgz
MDQ4ODlmMTQ1NGM4ZTQwNjE1ODI5NDE3Yi4uZDA4YjAyYjRkMmE2ZDYzYTliZTdjNDE3OTFjZDBl
MDVkMDI4NTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTEwLTI0ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIEFsc28gbW92ZXMgaGFuZGxpbmcgb2YgYXR0cmli
dXRlIGNoYW5nZXMgdG8gQVhPYmplY3RDYWNoZSwgYW5kIHNlbmRzCisgICAgICAgIG5vdGlmaWNh
dGlvbnMgZm9yIHNvbWUgYXR0cmlidXRlIGNoYW5nZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2ls
ZW50LiBPbgorICAgICAgICBDaHJvbWl1bSwgYWxsIGNoYW5nZXMgdG8gYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QncyBhdHRyaWJ1dGVzIHNob3VsZAorICAgICAgICByZXN1bHQgaW4gc29tZSBub3Rp
ZmljYXRpb24uCisKKyAgICAgICAgU29tZSB0ZXN0cyB3b3VsZCBoYXZlIGJyb2tlbiBiZWNhdXNl
IGFuIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IHdhcyBjcmVhdGVkCisgICAgICAgIGFuZCBob2xk
aW5nIGEgcmVmZXJlbmNlIHRvIGEgU2Nyb2xsVmlldyBmb3IgYW4gaWZyYW1lIGFmdGVyIGl0IHdh
cyBkZWxldGVkLAorICAgICAgICBzbyB0aGlzIGNoYW5nZSBzd2l0Y2hlcyBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyB0byBob2xkIGEgd2VhayByZWZlcmVuY2UKKyAgICAgICAgdG8gU2Nyb2xsVmll
dyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisgICAgICAgICAg
ICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRl
LWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24uaHRtbAorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoQVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpjYWNoZWRJc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldENhY2hlZElzSWdub3JlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdu
b3JlZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphZGRIaWRkZW5DaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojppc0F0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxi
YXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVh
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVt
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9j
dW1lbnRGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnBhcmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxUbyk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbFZpZXcpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZWxldGVMaW5l
Qm94VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5kQXBwZW5k
Um9vdElubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6c2V0VGV4dCk6CisKIDIwMTItMTAtMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBHZXQgcmlkIG9mIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyRm9yTmF2aWdh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMGVkYzViNmM1OTM5NzBlNzJkZThj
MjIyMDI0OTMwZDgyOGUzYWE1Li5iMWQ1OTQ2ZDlhYTg0ZTYxZDVlYmI5N2E2ZTA1Nzc2NmUxZjQ4
ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEw
LTI0ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFY
OiBOb3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAg
QWRkcyBuZXcgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLgorCisgICAgICAgICogcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHA6CisKIDIwMTItMTAtMjIgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBzdXBwb3J0TXVsdGlwbGVX
aW5kb3dzIHNldHRpbmcsIG5lZWRlZCBmb3IgQW5kcm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNjY1YWJjMDg3NmMyNDc5MDNkNzgy
NzRiMWRjMTBkOGU5M2ZhNzhjYy4uY2VhYzk0YmY1Y2ZlOThkODFlMGNhN2YxM2NiMjQ3NjdmNjIy
NjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aWYgRU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCkBAIC0z
MzMsNiArMzM0LDkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JD
cmVhdGUoTm9kZSogbm9kZSkKICAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdP
YmotPmF4T2JqZWN0SUQoKSk7CiAgICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQo
KSwgbmV3T2JqKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CisKKyAgICBuZXdP
YmotPnNldENhY2hlZElzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpKTsKKwogICAgIHJldHVybiBuZXdPYmouZ2V0KCk7CiB9CiAKQEAgLTM1MSw2ICszNTUsOSBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQocmVuZGVyZXIs
IG5ld09iai0+YXhPYmplY3RJRCgpKTsKICAgICBtX29iamVjdHMuc2V0KG5ld09iai0+YXhPYmpl
Y3RJRCgpLCBuZXdPYmopOwogICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsKKworICAg
IG5ld09iai0+c2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUobmV3T2JqLT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpOworCiAgICAgcmV0dXJuIG5ld09iai5nZXQoKTsKIH0KICAgICAKQEAgLTUyNywx
NiArNTM0LDI2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlQVhJRChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QpCiAgICAgbV9pZHNJblVzZS5yZW1vdmUob2JqSUQpOwogfQogCi12b2lk
IEFYT2JqZWN0Q2FjaGU6OmNvbnRlbnRDaGFuZ2VkKE5vZGUqIG5vZGUpCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OnRleHRDaGFuZ2VkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCA9IGdldE9yQ3JlYXRlKG5vZGUpKQotICAgICAgICBvYmplY3QtPmNvbnRl
bnRDaGFuZ2VkKCk7IAorICAgIHRleHRDaGFuZ2VkKGdldE9yQ3JlYXRlKG5vZGUpKTsKIH0KIAot
dm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQordm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0Q2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBnZXRPckNyZWF0ZShy
ZW5kZXJlcikpCi0gICAgICAgIG9iamVjdC0+Y29udGVudENoYW5nZWQoKTsgCisgICAgdGV4dENo
YW5nZWQoZ2V0T3JDcmVhdGUocmVuZGVyZXIpKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjp0
ZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit7CisgICAgaWYgKCFvYmopCisg
ICAgICAgIHJldHVybjsKKworICAgIGJvb2wgcGFyZW50QWxyZWFkeUV4aXN0cyA9IG9iai0+cGFy
ZW50T2JqZWN0SWZFeGlzdHMoKTsKKyAgICBvYmotPnRleHRDaGFuZ2VkKCk7CisgICAgcG9zdE5v
dGlmaWNhdGlvbihvYmosIG9iai0+ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0Q2hh
bmdlZCwgdHJ1ZSk7CisgICAgaWYgKHBhcmVudEFscmVhZHlFeGlzdHMpCisgICAgICAgIG9iai0+
bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCkBAIC01NDgsMTQgKzU2
NSwyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hl
ZChOb2RlKiBub2RlKQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChOb2Rl
KiBub2RlKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXQobm9kZSkp
Ci0gICAgICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGdl
dChub2RlKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IGdldChyZW5kZXJlcikpCi0gICAgICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgY2hp
bGRyZW5DaGFuZ2VkKGdldChyZW5kZXJlcikpOworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNo
aWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit7CisgICAgaWYgKCFvYmop
CisgICAgICAgIHJldHVybjsKKworICAgIG9iai0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBp
ZiAob2JqLT5wYXJlbnRPYmplY3RJZkV4aXN0cygpICYmIG9iai0+Y2FjaGVkSXNJZ25vcmVkVmFs
dWUoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgY2hpbGRyZW5D
aGFuZ2VkKG9iai0+cGFyZW50T2JqZWN0KCkpOwogfQogICAgIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZChUaW1lcjxBWE9iamVjdENhY2hlPiopCkBAIC03
MDYsOCArNzMyLDU1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFu
dENoYW5nZWQoTm9kZSogbm9kZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9s
ZUNoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ID0gZ2V0T3JDcmVhdGUobm9kZSkpCisgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IGdldE9yQ3JlYXRlKG5vZGUpKSB7CiAgICAgICAgIG9iai0+dXBkYXRlQWNjZXNzaWJpbGl0eVJv
bGUoKTsKKyAgICAgICAgb2JqLT5ub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoYXR0
ck5hbWUgPT0gcm9sZUF0dHIpCisgICAgICAgIGhhbmRsZUFyaWFSb2xlQ2hhbmdlZChlbGVtZW50
KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhbHRBdHRyIHx8IGF0dHJOYW1lID09IHRpdGxl
QXR0cikKKyAgICAgICAgdGV4dENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gZm9yQXR0ciAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKGxhYmVsVGFnKSkKKyAgICAgICAg
bGFiZWxDaGFuZ2VkKGVsZW1lbnQpOworCisgICAgaWYgKCFhdHRyTmFtZS5sb2NhbE5hbWUoKS5z
dHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
YXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikKKyAgICAgICAgaGFuZGxlQWN0
aXZlRGVzY2VuZGFudENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
YXJpYV92YWx1ZW5vd0F0dHIgfHwgYXR0ck5hbWUgPT0gYXJpYV92YWx1ZXRleHRBdHRyKQorICAg
ICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFu
Z2VkLCB0cnVlKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2xhYmVsQXR0ciB8fCBh
dHRyTmFtZSA9PSBhcmlhX2xhYmVsZWRieUF0dHIgfHwgYXR0ck5hbWUgPT0gYXJpYV9sYWJlbGxl
ZGJ5QXR0cikKKyAgICAgICAgdGV4dENoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gYXJpYV9jaGVja2VkQXR0cikKKyAgICAgICAgY2hlY2tlZFN0YXRlQ2hhbmdlZChl
bGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NlbGVjdGVkQXR0cikKKyAg
ICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gYXJpYV9leHBhbmRlZEF0dHIpCisgICAgICAgIGhhbmRsZUFyaWFFeHBhbmRlZENo
YW5nZShlbGVtZW50KTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2hpZGRlbkF0dHIp
CisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChlbGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCisgICAgICAgIHBvc3ROb3RpZmlj
YXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCwgdHJ1
ZSk7CisgICAgZWxzZQorICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYT2JqZWN0
Q2FjaGU6OkFYQXJpYUF0dHJpYnV0ZUNoYW5nZWQsIHRydWUpOworfQorCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OmxhYmVsQ2hhbmdlZChFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVt
ZW50LT5oYXNUYWdOYW1lKGxhYmVsVGFnKSk7CisgICAgSFRNTEVsZW1lbnQqIGNvcnJlc3BvbmRp
bmdDb250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTExhYmVsRWxlbWVudCo+KGVsZW1lbnQpLT5jb250
cm9sKCk7CisgICAgdGV4dENoYW5nZWQoY29ycmVzcG9uZGluZ0NvbnRyb2wpOworfQorCit2b2lk
IEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQoreworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXQocmVuZGVyZXIpKQor
ICAgICAgICBvYmotPm5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpOwogfQogCiBWaXNpYmxl
UG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEo
VGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBmZGZkNWFmYmY4YWVjMGNiMzg2MDE4ZWFhMWYy
MTg5YmM3MDIyYjQxLi40ZWRmODE1MDNlMWVlNDM2MjY5MGI5ZGYzMDgyOWNiMWI3OTM4OWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtODks
MTIgKzg5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0
eU9iamVjdCopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKE5vZGUqKTsKICAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUq
KTsKICAgICB2b2lkIHNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqKTsKICAgICB2b2lkIHNl
bGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopOwogICAgIC8vIENhbGxlZCBieSBh
IG5vZGUgd2hlbiB0ZXh0IG9yIGEgdGV4dCBlcXVpdmFsZW50IChlLmcuIGFsdCkgYXR0cmlidXRl
IGlzIGNoYW5nZWQuCi0gICAgdm9pZCBjb250ZW50Q2hhbmdlZChOb2RlKik7Ci0gICAgdm9pZCBj
b250ZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIHRleHRDaGFuZ2VkKE5vZGUq
KTsKKyAgICB2b2lkIHRleHRDaGFuZ2VkKFJlbmRlck9iamVjdCopOwogICAgIC8vIENhbGxlZCB3
aGVuIGEgbm9kZSBoYXMganVzdCBiZWVuIGF0dGFjaGVkLCBzbyB3ZSBjYW4gbWFrZSBzdXJlIHdl
IGhhdmUgdGhlIHJpZ2h0IHN1YmNsYXNzIG9mIEFjY2Vzc2liaWxpdHlPYmplY3QuCiAgICAgdm9p
ZCB1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNoZWQoTm9kZSopOwogCkBAIC0xMDUsNiArMTA2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKE5vZGUqKTsK
ICAgICB2b2lkIGhhbmRsZVNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3Kik7CiAKKyAgICB2b2lk
IGhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVs
ZW1lbnQqKTsKKyAgICB2b2lkIHJlY29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKTsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICBzdGF0aWMgdm9pZCBlbmFibGVB
Y2Nlc3NpYmlsaXR5KCkgeyBnQWNjZXNzaWJpbGl0eUVuYWJsZWQgPSB0cnVlOyB9CiAgICAgLy8g
RW5oYW5jZWQgdXNlciBpbnRlcmZhY2UgYWNjZXNzaWJpbGl0eSBjYW4gYmUgdG9nZ2xlZCBieSB0
aGUgYXNzaXN0aXZlIHRlY2hub2xvZ3kuCkBAIC0xNTIsNiArMTU2LDggQEAgcHVibGljOgogICAg
ICAgICBBWFJvd0NvbGxhcHNlZCwKICAgICAgICAgQVhSb3dFeHBhbmRlZCwKICAgICAgICAgQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCwKKyAgICAgICAgQVhUZXh0Q2hhbmdlZCwKKyAgICAgICAgQVhB
cmlhQXR0cmlidXRlQ2hhbmdlZAogICAgIH07CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24o
UmVuZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIGJvb2wgcG9zdFRvRWxlbWVudCwgUG9zdFR5
cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwpAQCAtMTgwLDYgKzE4Niw4IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
QVhOb3RpZmljYXRpb24pOwogICAgIHZvaWQgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlm
aWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhMb2FkaW5nRXZlbnQpOworICAgIHZvaWQg
dGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZvaWQgbGFiZWxDaGFuZ2Vk
KEVsZW1lbnQqKTsKIAogICAgIC8vIFRoaXMgaXMgYSB3ZWFrIHJlZmVyZW5jZSBjYWNoZSBmb3Ig
a25vd2luZyBpZiBOb2RlcyB1c2VkIGJ5IFRleHRNYXJrZXJzIGFyZSB2YWxpZC4KICAgICB2b2lk
IHNldE5vZGVJblVzZShOb2RlKiBuKSB7IG1fdGV4dE1hcmtlck5vZGVzLmFkZChuKTsgfQpAQCAt
MjMyLDggKzI0MCwxMCBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVy
KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNo
ZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKE5vZGUqKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmNvbnRlbnRDaGFuZ2VkKFJlbmRlck9iamVjdCopIHsgfQotaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6Y29udGVudENoYW5nZWQoTm9kZSopIHsgfQoraW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KK2lubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKFJlbmRlck9iamVjdCopIHsgfQoraW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQoTm9kZSopIHsgfQoraW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogaW5s
aW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5v
ZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQWNjZXNz
aWJpbGl0eU9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2Fk
aW5nRXZlbnROb3RpZmljYXRpb24oRnJhbWUqLCBBWExvYWRpbmdFdmVudCkgeyB9CkBAIC0yNDMs
NiArMjUzLDggQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYUV4cGFuZGVk
Q2hhbmdlKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFS
b2xlQ2hhbmdlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVG
b2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiwgTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsYmFyVXBkYXRlKFNjcm9sbFZpZXcqKSB7IH0KK2lubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIEVsZW1lbnQqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29t
cHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSopIHsgfQogaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24oTm9kZSosIEFYVGV4dENo
YW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApp
bmRleCA3NGM4ZDlmMGQ1NGZlNDU1NDY2MTFkYTU4ODNjZmM0YTViNWZiYzNmLi5lNjc1YmUyZjM4
ZTI3NWM3ZGVjOWE0ZDVlZTlmOTk2YjkxZGE0NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTcyLDYgKzcyLDcg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCgpCiAgICAgOiBtX2lk
KDApCiAgICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKICAgICAsIG1fcm9sZShVbmtub3duUm9s
ZSkKKyAgICAsIG1fY2FjaGVkSXNJZ25vcmVkVmFsdWUoRGVmYXVsdEJlaGF2aW9yKQogI2lmIFBM
QVRGT1JNKEdUSykKICAgICAsIG1fd3JhcHBlcigwKQogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0p
CkBAIC0xNzcwLDYgKzE3NzEsMjggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxU
b0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2ludCkgY29uc3QKICAgICB9CiB9
CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FjaGVkSXNJZ25vcmVkVmFsdWUoKQorewor
ICAgIGlmIChtX2NhY2hlZElzSWdub3JlZFZhbHVlID09IERlZmF1bHRCZWhhdmlvcikKKyAgICAg
ICAgbV9jYWNoZWRJc0lnbm9yZWRWYWx1ZSA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSA/IEln
bm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3Q7CisKKyAgICByZXR1cm4gbV9jYWNoZWRJc0lnbm9y
ZWRWYWx1ZSA9PSBJZ25vcmVPYmplY3Q7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoYm9vbCBpc0lnbm9yZWQpCit7CisgICAgbV9jYWNoZWRJ
c0lnbm9yZWRWYWx1ZSA9IGlzSWdub3JlZCA/IElnbm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3Q7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFu
Z2VkKCkKK3sKKyAgICBib29sIGlzSWdub3JlZCA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsK
KyAgICBpZiAoY2FjaGVkSXNJZ25vcmVkVmFsdWUoKSAhPSBpc0lnbm9yZWQpIHsKKyAgICAgICAg
YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQocGFyZW50T2JqZWN0KCkpOworICAgICAg
ICBzZXRDYWNoZWRJc0lnbm9yZWRWYWx1ZShpc0lnbm9yZWQpOworICAgIH0KK30KKwogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUHJlc3NlZElzUHJlc2VudCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICFnZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0cikuaXNFbXB0eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRl
eCA4NzNhNWM2ZWYzZmUxNGRiYmIzOWZkNDI2YWE5ZjAwZjc3YTM4YTg2Li42MGJjOTJkMGRiNzk0
MWIyNGI1MzQ4MjY1MDUxNGE4NjNhZGU0NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNjEwLDcgKzYxMCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2Vk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkgeyB9CiAgICAgY29uc3QgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJl
bigpIHsgfQpAQCAtNzI5LDYgKzcyOSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsIHRoaXMg
b2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0b3At
bGV2ZWwgd2luZG93LgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CiAKKyAgICBib29sIGNhY2hlZElzSWdub3JlZFZhbHVlKCk7Cisg
ICAgdm9pZCBzZXRDYWNoZWRJc0lnbm9yZWRWYWx1ZShib29sKTsKKworICAgIC8vIEZpcmVzIGEg
Y2hpbGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25v
cmVkIHZhbHVlIGNoYW5nZWQuCisgICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQo
KTsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNpZiBQTEFURk9STShHVEspCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKQEAgLTc2Nyw2ICs3NzMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fY2hpbGRy
ZW47CiAgICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVuOwogICAgIEFjY2Vzc2liaWxpdHlS
b2xlIG1fcm9sZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIG1fY2FjaGVkSXNJ
Z25vcmVkVmFsdWU7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMs
IHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAppbmRleCA2ODc3MTZjNTQwY2Y4MmVhMGFjZTAyMGYyZGVlMGNjMDQ3ZjA0
YTJiLi4wMmU3Njk4Yjg2ZTJmNTJlYjE5M2Q4OTBiNjFiNWE3OWI2MTc2MWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKQEAgLTEwOTQsOCArMTA5NCw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgLy8gTk9URTogQlJz
IGFsd2F5cyBoYXZlIHRleHQgYm94ZXMgbm93LCBzbyB0aGUgdGV4dCBib3ggY2hlY2sgaGVyZSBj
YW4gYmUgcmVtb3ZlZAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1RleHQoKSkgewogICAgICAgICAv
LyBzdGF0aWMgdGV4dCBiZW5lYXRoIE1lbnVJdGVtcyBhbmQgTWVudUJ1dHRvbnMgYXJlIGp1c3Qg
cmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgbWVudSBpdGVtLCBzbyBpdCdzIGlnbm9yZWQgb24gYW4g
aW5kaXZpZHVhbCBsZXZlbAotICAgICAgICBpZiAocGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUl0ZW1Sb2xlCi0gICAgICAgICAgICB8fCBwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKS0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9uUm9sZSkK
KyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7CisgICAgICAgIGlmIChwYXJlbnQgJiYgKHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBNZW51SXRlbVJvbGUgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVC
dXR0b25Sb2xlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBSZW5kZXJUZXh0
KiByZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0KG1fcmVuZGVyZXIpOwogICAgICAgICBpZiAobV9y
ZW5kZXJlci0+aXNCUigpIHx8ICFyZW5kZXJUZXh0LT5maXJzdFRleHRCb3goKSkKQEAgLTIyMTIs
NiArMjIxMiwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbQogICAgIEhUTUxFbGVtZW50KiBj
b3JyZXNwb25kaW5nQ29udHJvbCA9IGxhYmVsRWxlbWVudC0+Y29udHJvbCgpOwogICAgIGlmICgh
Y29ycmVzcG9uZGluZ0NvbnRyb2wpCiAgICAgICAgIHJldHVybiAwOworCisgICAgLy8gTWFrZSBz
dXJlIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2wgaXNuJ3QgYSBkZXNjZW5kYW50IG9mIHRoaXMg
bGFiZWwgdGhhdCdzIGluIHRoZSBtaWRkbGUgb2YgYmVpbmcgZGVzdHJveWVkLgorICAgIGlmIChj
b3JyZXNwb25kaW5nQ29udHJvbC0+cmVuZGVyZXIoKSAmJiAhY29ycmVzcG9uZGluZ0NvbnRyb2wt
PnJlbmRlcmVyKCktPnBhcmVudCgpKQorICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICByZXR1
cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjb3JyZXNwb25kaW5nQ29udHJvbCk7ICAg
ICAKIH0KQEAgLTI1MjgsNyArMjUzMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIGlzVGV4dENv
bnRyb2woKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250ZW50Q2hh
bmdlZCgpCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRDaGFuZ2VkKCkKIHsK
ICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgc3VwcG9ydHMgQVJJQSBsaXZlIHJlZ2lvbnMsIG9yIGlz
IHBhcnQgb2YgYSByZWdpb24gd2l0aCBhbiBBUklBIGVkaXRhYmxlIHJvbGUsCiAgICAgLy8gdGhl
biBub3RpZnkgdGhlIEFUIG9mIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IGIxNzUyZDNm
MTdmNDQyNDJmZGEzMzk3NmFjZDE5YWZiMGNiNjVkODEuLmFiMDkyNDAxNzljNTZiMDdiMzAyYmJh
MGRhZjQyOWI1MjRkYzE0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0xNjUsNyArMTY1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1YWwg
dm9pZCBjb250ZW50Q2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hhbmdlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZl
Q2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggNmQxM2FhZDA2
MTc4ZjExZDY4MjNhYjIzZTdiY2UwMTc1YjhhNjAzOC4uMTJlNWI0YmYzNzk5ZWUzMTAzNmQ5NjU4
NzhjMmNmYTgzZDdlZmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTQzLDYgKzQzLDE3IEBAIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3
KiB2aWV3KQogewogfQogCitBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkKK3sKKyAgICBBU1NFUlQoaXNEZXRhY2hlZCgpKTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoKCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpkZXRhY2goKTsKKyAgICBtX3Njcm9sbFZpZXcgPSAwOworfQorCiBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3PiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y3JlYXRlKFNjcm9s
bFZpZXcqIHZpZXcpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldyh2aWV3KSk7CkBAIC02NywxMiArNzgsMTIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24KIC8vIEluIFdlYktpdDIsIHRoZSBTY3JvbGxWaWV3IG9iamVjdCB3aWxsIHJldHVybiB0aGUg
QVggaW5mb3JtYXRpb24gKGJlY2F1c2UgdGhlcmUgYXJlIG5vIHBsYXRmb3JtIHdpZGdldHMpLgog
Ym9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIHJldHVybiBtX3Nj
cm9sbFZpZXcgJiYgbV9zY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpOwogfQogCiBXaWRnZXQq
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQoKTsKKyAgICByZXR1cm4gbV9zY3JvbGxW
aWV3OwogfQogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6dXBkYXRlQ2hpbGRy
ZW5JZk5lY2Vzc2FyeSgpCkBAIC04OCw2ICs5OSw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCkKIHsKKyAgICBpZiAoIW1fc2Nyb2xsVmlldykK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fc2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9s
bGJhcigpICYmICFtX2hvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgIG1faG9yaXpvbnRhbFNj
cm9sbGJhciA9IGFkZENoaWxkU2Nyb2xsYmFyKG1fc2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9s
bGJhcigpKTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFy
KCkgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CkBAIC0xNTMsMTAgKzE2NywxMCBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiAKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIW1fc2Nyb2xs
VmlldyB8fCAhbV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICAKLSAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3Jv
bGxWaWV3LmdldCgpKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jID0g
c3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS0+ZG9jdW1lbnQo
KTsKICAgICBpZiAoIWRvYyB8fCAhZG9jLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gMDsK
IApAQCAtMTc5LDIzICsxOTMsMjYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW4KIAogTGF5b3V0
UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogeworICAg
IGlmICghbV9zY3JvbGxWaWV3KQorICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworCiAgICAg
cmV0dXJuIG1fc2Nyb2xsVmlldy0+ZnJhbWVSZWN0KCk7CiB9CiAKIEZyYW1lVmlldyogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAh
bV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3KTsKIH0gICAgCiAK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmpl
Y3QoKSBjb25zdAogewotICAgIGlmICghbV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKQorICAg
IGlmICghbV9zY3JvbGxWaWV3IHx8ICFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIAotICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBz
dGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3Njcm9sbFZpZXcuZ2V0KCkpLT5mcmFtZSgpLT5vd25l
ckVsZW1lbnQoKTsKKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3RhdGljX2Nh
c3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiAg
ICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvd25lcik7CiAKQEAgLTIwNCwxMCArMjIxLDEwIEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3Qo
KSBjb25zdAogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmll
dy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3
LT5pc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3
LmdldCgpKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldyktPmZyYW1l
KCktPm93bmVyRWxlbWVudCgpOwogICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KG93bmVyKTsKICAgICAKQEAgLTIx
NiwxMiArMjMzLDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0CiAKIFNjcm9sbGFibGVBcmVhKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25z
dAogewotICAgIHJldHVybiBtX3Njcm9sbFZpZXcuZ2V0KCk7CisgICAgcmV0dXJuIG1fc2Nyb2xs
VmlldzsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIG1fc2Nyb2xsVmlldy0+c2V0U2Nyb2xsUG9z
aXRpb24ocG9pbnQpOworICAgIGlmIChtX3Njcm9sbFZpZXcpCisgICAgICAgIG1fc2Nyb2xsVmll
dy0+c2V0U2Nyb2xsUG9zaXRpb24ocG9pbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oCmluZGV4IDk5NTMxNjRkZjJlZTE3NjA1NTk3MTdiNDM0ODFlMzg4YTMx
YzdkNjQuLjRmZjhhMjIzZmQ4NzliNmI1NjE0YWU1NGViMzUxNDY3Nzc0ZDA5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmgKQEAgLTM4LDcgKzM4LDEwIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IDog
cHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOyAgICAKICAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNj
cm9sbEFyZWFSb2xlOyB9Ci0gICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsVmlldy5nZXQoKTsgfQorICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbFZpZXc7IH0KKworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFi
bGUoKSBjb25zdDsKQEAgLTcyLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyKiBhZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2b2lkIHJlbW92
ZUNoaWxkU2Nyb2xsYmFyKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAgICAKLSAgICBSZWZQdHI8
U2Nyb2xsVmlldz4gbV9zY3JvbGxWaWV3OworICAgIFNjcm9sbFZpZXcqIG1fc2Nyb2xsVmlldzsK
ICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwog
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAg
IGJvb2wgbV9jaGlsZHJlbkRpcnR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGIxZDE1NWQ0MmIyNmQ3ODBkODNkMTM4
Y2U1MmM5MDU4NGQ3MThlMGMuLmE2ZGFiMjU0NjlhNjE0NzA2NGEyZWE2MDA1ZGNkNDI2NTM1ZGE1
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKQEAgLTEzMCw2ICsxMzAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNEYXRhVGFibGUoKSBjb25zdAogICAgIAogICAgIC8vIGdvIHRocm91Z2ggdGhlIGNlbGwncyBh
bmQgY2hlY2sgZm9yIHRlbGwtdGFsZSBzaWducyBvZiAiZGF0YSIgdGFibGUgc3RhdHVzCiAgICAg
Ly8gY2VsbHMgaGF2ZSBib3JkZXJzLCBvciB1c2UgYXR0cmlidXRlcyBsaWtlIGhlYWRlcnMsIGFi
YnIsIHNjb3BlIG9yIGF4aXMKKyAgICB0YWJsZS0+cmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwog
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogZmlyc3RCb2R5ID0gdGFibGUtPmZpcnN0Qm9keSgpOwog
ICAgIGlmICghZmlyc3RCb2R5KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0Q2FjaGVDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0Q2Fj
aGVDaHJvbWl1bS5jcHAKaW5kZXggYTk1ZTA0NDE4Y2NkNDk4ZDI4NmRjODdhODA4YWJiMzMxMDJl
MGE3MC4uZjY4YTU5MTgyMzIyYmU2MDhhMmJkNTQ4ZWY4ZjUyNDk4N2NlNDkyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhP
YmplY3RDYWNoZUNocm9taXVtLmNwcApAQCAtODIsMTAgKzgyLDEyIEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwg
QVhOb3RpZmljCiAgICAgICAgIC8vIGRlc2NlbmRhbnQgYW5kIHNlbmQgdGhlIEFYRm9jdXNlZFVJ
RWxlbWVudENoYW5nZWQgbm90aWZpY2F0aW9uLgogICAgICAgICBoYW5kbGVGb2N1c2VkVUlFbGVt
ZW50Q2hhbmdlZCgwLCBvYmotPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFYQXJpYUF0dHJpYnV0ZUNoYW5nZWQ6CiAgICAgY2FzZSBBWEF1dG9j
b3JyZWN0aW9uT2NjdXJlZDoKICAgICBjYXNlIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBj
YXNlIEFYQ2hpbGRyZW5DaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdl
ZDoKKyAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6CiAgICAgY2FzZSBBWExheW91dENv
bXBsZXRlOgogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTG9hZENv
bXBsZXRlOgpAQCAtOTcsOCArOTksOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwogICAgIGNh
c2UgQVhTY3JvbGxlZFRvQW5jaG9yOgogICAgIGNhc2UgQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdl
ZDoKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKKyAgICBjYXNlIEFYVGV4dENoYW5n
ZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0No
YW5nZWQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGU4NDU2ZjcwNDBjNzIxYWRlZjRkMjQyMTY1MzhiYmI3MjRjZjUyNzAuLmVjYWNlMWUxMmU0MmYy
YjMyZjAwNzhmNDk4MTMyYmZmNzJiZGFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTcy
MiwzMSArNzIyLDggQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKIAogICAgIGludmFsaWRhdGVO
b2RlTGlzdENhY2hlc0luQW5jZXN0b3JzKCZuYW1lLCB0aGlzKTsKIAotICAgIGlmICghQVhPYmpl
Y3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKG5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikgewotICAgICAgICAvLyBhbnkg
Y2hhbmdlIHRvIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBhdHRyaWJ1dGUgdHJpZ2dlcnMgYWNjZXNz
aWJpbGl0eSBmb2N1cyBjaGFuZ2UsIGJ1dCBkb2N1bWVudCBmb2N1cyByZW1haW5zIGludGFjdAot
ICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFjdGl2ZURlc2NlbmRh
bnRDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSByb2xlQXR0cikgewotICAg
ICAgICAvLyB0aGUgcm9sZSBhdHRyaWJ1dGUgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSwgYW5kIHRo
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IG11c3QgcGljayB1cCB0aGVzZSBjaGFuZ2VzCi0gICAgICAg
IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXJpYVJvbGVDaGFuZ2VkKHRoaXMp
OwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhcmlhX3ZhbHVlbm93QXR0cikgewotICAgICAgICAv
LyBJZiB0aGUgdmFsdWVub3cgYXR0cmlidXRlIGNoYW5nZXMsIEFYIGNsaWVudHMgbmVlZCB0byBi
ZSBub3RpZmllZC4KLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKLSAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9sYWJlbEF0dHIgfHwgbmFtZSA9PSBhcmlhX2xhYmVs
ZWRieUF0dHIgfHwgbmFtZSA9PSBhbHRBdHRyIHx8IG5hbWUgPT0gdGl0bGVBdHRyKSB7Ci0gICAg
ICAgIC8vIElmIHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgY2hhbmdlcyBkdWUgdG8gYW4gYXR0
cmlidXRlIGNoYW5nZSwgbm90aWZ5IGFjY2Vzc2liaWxpdHkuCi0gICAgICAgIGRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKS0+Y29udGVudENoYW5nZWQodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChu
YW1lID09IGFyaWFfY2hlY2tlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+Y2hlY2tlZFN0YXRlQ2hhbmdlZCh0aGlzKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGFy
aWFfc2VsZWN0ZWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnNl
bGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9l
eHBhbmRlZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxl
QXJpYUV4cGFuZGVkQ2hhbmdlKHRoaXMpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gYXJpYV9oaWRk
ZW5BdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hh
bmdlZCh0aGlzKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGFyaWFfaW52YWxpZEF0dHIpCi0gICAg
ICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBB
WE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2VkLCB0cnVlKTsKKyAgICBpZiAoQVhP
YmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwogfQog
CiB2b2lkIEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZGFkNGVjMDdm
NWI5MjIwYjQyOTc4NzExOGRiMGFkMDEzMzg4MjRkMS4uMTIxODZkMWU4NjZjNTQ4MjQ2NmM1M2M2
NDNkNTE3MzI4MmZmYmI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQmxvY2suaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDb2x1
bW5JbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBA
IC0xMDExLDYgKzEwMTIsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpkZWxldGVMaW5lQm94VHJlZSgp
CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9saW5lQm94ZXMuZGVsZXRlTGluZUJveFRyZWUocmVu
ZGVyQXJlbmEoKSk7CisgICAgaWYgKFVOTElLRUxZKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxp
dHlFbmFibGVkKCkpKQorICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlY29t
cHV0ZUlzSWdub3JlZCh0aGlzKTsKIH0KIAogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNy
ZWF0ZVJvb3RJbmxpbmVCb3goKSAKQEAgLTEwMjIsNiArMTAyNSwxMCBAQCBSb290SW5saW5lQm94
KiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5kQXBwZW5kUm9vdElubGluZUJveCgpCiB7CiAgICAgUm9v
dElubGluZUJveCogcm9vdEJveCA9IGNyZWF0ZVJvb3RJbmxpbmVCb3goKTsKICAgICBtX2xpbmVC
b3hlcy5hcHBlbmRMaW5lQm94KHJvb3RCb3gpOworCisgICAgaWYgKFVOTElLRUxZKEFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpICYmIG1fbGluZUJveGVzLmZpcnN0TGluZUJv
eCgpID09IHJvb3RCb3gpCisgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cmVj
b21wdXRlSXNJZ25vcmVkKHRoaXMpOworCiAgICAgcmV0dXJuIHJvb3RCb3g7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZTdlZWVlMTgzZTViYzRm
YjhiNGI2NTE5NDE5YTk0NzVmMGQwNTUyYS4uYmY2OGM3NjM3ZDdkYzQ1YzM4YThhMjRjNjBjMzFi
MmFjMjZkZmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTE4MjksNyArMTgyOSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0QW5ub3RhdGVkUmVnaW9uc0RpcnR5KHRydWUpOwogI2VuZGlm
CiAgICAgICAgICAgICBpZiAodmlzaWJpbGl0eUNoYW5nZWQgJiYgQVhPYmplY3RDYWNoZTo6YWNj
ZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5heE9iamVj
dENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChwYXJlbnQoKSk7CiAKICAgICAg
ICAgICAgIC8vIEtlZXAgbGF5ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRl
IGlmIHZpc2liaWxpdHkgY2hhbmdlcy4KICAgICAgICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmls
aXR5KCkgIT0gbmV3U3R5bGUtPnZpc2liaWxpdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCmluZGV4IDlhMDc3YmYzMGZmZWI3NjFmNDZhYjkyNWE4NTI1Yzk1MmEw
MjQ2NmYuLjNmOGQ3MTVlYWU4NjRlZTkxOGU4ZGE1ZjY3ZGVlZDNkNWM2NzAzOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE0NjYsNyArMTQ2Niw3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6c2V0VGV4dChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRleHQsIGJvb2wg
Zm9yY2UpCiAgICAgCiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSA9IGRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoYXhPYmplY3RDYWNoZS0+YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSkKLSAgICAgICAgYXhPYmplY3RDYWNoZS0+Y29udGVudENoYW5nZWQodGhpcyk7
CisgICAgICAgIGF4T2JqZWN0Q2FjaGUtPnRleHRDaGFuZ2VkKHRoaXMpOwogfQogCiBTdHJpbmcg
UmVuZGVyVGV4dDo6dGV4dFdpdGhvdXRUcmFuc2NvZGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uLmgKaW5kZXggZGU2OGQzN2IwNDM4ZDUyMDY3MTcxYmQ2YTRmMWE0ZTZmNTczYWI0MS4u
NjI5ZDk4OGY1NDM5N2RjZTMyM2MzZmM1ZmUwNzA4ZTU0MTU5YTczMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb24uaApAQCAtNTQsMTEgKzU0LDggQEAgZW51bSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uIHsKICAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uUm93Q29sbGFwc2VkLAog
ICAgIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25Sb3dFeHBhbmRlZCwKICAgICBXZWJBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSW52YWxpZFN0YXR1c0NoYW5nZWQsCi0KLSAgICAvLyBGSVhN
RTogbm93IHRoYXQgd2UncmUgdXNpbmcgQXNzZXJ0TWF0Y2hpbmdFbnVtcywgd2UgZG9uJ3QgbmVl
ZCBhCi0gICAgLy8gY2F0Y2gtYWxsICJpbnZhbGlkIiBub3RpZmljYXRpb24gZW51bS4gUmVtb3Zl
IHRoaXMgb25jZSBpdCdzIGJlZW4KLSAgICAvLyByZW1vdmVkIGZyb20gQ2hyb21pdW0uCi0gICAg
V2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkludmFsaWQsCisgICAgV2ViQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvblRleHRDaGFuZ2VkLAorICAgIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25BcmlhQXR0cmlidXRlQ2hhbmdlZAogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmlu
ZGV4IDk1ZThiNjA3ZDIyOGY4YmU4NWNkY2U5YTMxYjE4OTM3MTEzZDUyYmYuLjAyNTcyNzliYWQ3
MTAyOTUwNTllZTRhMTc2YjU0NDU0OTg3MGM4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC0xNTMsNiArMTUzLDggQEAg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
Um93Q291bnRDaGFuZ2VkLCBBWE9iamUKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblJvd0NvbGxhcHNlZCwgQVhPYmplY3RDYWNoZTo6QVhS
b3dDb2xsYXBzZWQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uUm93RXhwYW5kZWQsIEFYT2JqZWN0Q2FjaGU6OkFYUm93RXhwYW5kZWQp
OwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSW52YWxpZFN0YXR1c0NoYW5nZWQsIEFYT2JqZWN0Q2FjaGU6OkFYSW52YWxpZFN0YXR1c0No
YW5nZWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uVGV4dENoYW5nZWQsIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dENoYW5nZWQpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uQXJp
YUF0dHJpYnV0ZUNoYW5nZWQsIEFYT2JqZWN0Q2FjaGU6OkFYQXJpYUF0dHJpYnV0ZUNoYW5nZWQp
OwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlVW5r
bm93biwgVW5rbm93blJvbGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nl
c3NpYmlsaXR5Um9sZUJ1dHRvbiwgQnV0dG9uUm9sZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjExMDEyOGIyOTExZTIxNDI4MDljMjIzZmMw
MDk1MDI3YTBkNjVkZC4uMDk3MTgxMDExMGI4NzlkMDBkMjE4OTcxMTUxNzBlZDEwNGQ4OGRmYyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTEwLTI0ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUu
Y29tPgorCisgICAgICAgIEFYOiBOb3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxl
aXphY2guCisKKyAgICAgICAgQWRkIGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRp
b25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKToK
KwogMjAxMi0xMC0yNSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIG15IGNvbnRhY3QgaW5mby4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBkMzc2
MjJkYjk5NTg4Zjc5MTViMjQ0ZWY5Y2I3ZDA1ZTIxMmZjNzMxLi4yOWFjY2VlZDBmZDllZjI4NDQx
OGE3ZjNjZjc1MmZiMmRkY2E2OWJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC02OTYsNiArNjk2LDEyIEBAIHZvaWQgV2ViVmlld0hvc3Q6
OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iCiAgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSW52YWxpZFN0YXR1
c0NoYW5nZWQ6CiAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiSW52YWxpZFN0YXR1c0NoYW5n
ZWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25UZXh0Q2hhbmdlZDoKKyAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJUZXh0Q2hhbmdlZCI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkFy
aWFBdHRyaWJ1dGVDaGFuZ2VkOgorICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFyaWFBdHRy
aWJ1dGVDaGFuZ2VkIjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbm90
aWZpY2F0aW9uTmFtZSA9ICJVbmtub3duTm90aWZpY2F0aW9uIjsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNTMzM2FiNDJmZDhlYmExODRkNzU5ZGFlMDI2NTk4ZTE2NWY0YTQyOC4uYmIwNTBmYjBi
OTAwNDQ2ZTJlOTIxM2M4NmFjZTk3NmJiNjY0NmEwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDEyLTEwLTI0ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAg
ICAgIEFYOiBOb3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAg
ICAgICAgQWRkcyAzIG5ldyB0ZXN0IHRvIGVuc3VyZToKKyAgICAgICAgMS4gQSAiY2hpbGRyZW4g
Y2hhbmdlZCIgbm90aWZpY2F0aW9uIGlzIGZpcmVkIG9uIHRoZSBwYXJlbnQgb2JqZWN0IHdoZW4g
YW4KKyAgICAgICAgICAgb2JqZWN0IHRoYXQgd2FzIHByZXZpb3VzbHkgaWdub3JlZCBiZWNvbWVz
IHVuaWdub3JlZC4KKyAgICAgICAgMi4gQSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFuIGVs
ZW1lbnQncyB0ZXh0IChpbmNsLiB0aXRsZSBvciBsYWJlbCkgY2hhbmdlcy4KKyAgICAgICAgMy4g
QSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFub3RoZXIgQVJJQSBhdHRyaWJ1dGUgY2hhbmdl
cy4KKworICAgICAgICBNb2RpZmllcyBhZGQtdG8tbWVudS1saXN0LWNyYXNoZXMgYmVjYXVzZSBp
dCB3YXMgdG9vIGJyaXR0bGU7IGl0IHdhcworICAgICAgICAgICAgcmVmZXJlbmNpbmcgYSBzdGFs
ZSBvYmplY3QgcmF0aGVyIHRoYW4gcmV0cmlldmluZyBpdHMgbGF0ZXN0IGhhbmRsZS4KKyAgICAg
ICAgTW9kaWZpZXMgYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24gdG8gbGlzdGVuIG9u
IHRoZSBjb3JyZWN0CisgICAgICAgICAgICBvYmplY3Qgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAg
ICAgU2ltcGxpZmllcyBub3RpZmljYXRpb24tbGlzdGVuZXJzIHNvIGl0IGRvZXNuJ3QgZ2VuZXJh
dGUgYWRkaXRpb25hbAorICAgICAgICAgICAgbm90aWZpY2F0aW9ucyB0aGF0IGFyZSBpbmNvbnNp
c3RlbnQgYmV0d2VlbiBwbGF0Zm9ybXMgbm93LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
cmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51
LWxpc3QtY3Jhc2hlcy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25v
cmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Ut
c2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2Vu
ZHMtbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvdGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5n
ZS1ub3RpZmljYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMjUgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLCBza2lwIGZhaWxpbmcgdGVzdHMgdG8gc3BlZWR1cCB0ZXN0aW5nLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5v
dGlmaWNhdGlvbi5odG1sCmluZGV4IDRmNmM2MGVjOWJmOTI0ZDZjOTIxNmEzNGU5NGJmMmJkY2Rh
YmFlMmMuLmY3OTkxMTIyODQyY2EyMGNmMWVmY2FmZjI2NjVlMzA3NTBjYmEwNzMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmlj
YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gt
c2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKQEAgLTcsMTUgKzcsMTMgQEAKICAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgY2hlY2tpbmcgb2YgYW4gYXJpYSBjaGVja2JveCBzZW5kcyBhIG5vdGlmaWNhdGlv
bi4iKTsKLSAgICAgICAgd2luZG93LnJvb3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290
RWxlbWVudDsKLSAgICAgICAgd2luZG93LmJvZHkgPSByb290LmNoaWxkQXRJbmRleCgwKTsKIAot
ICAgICAgICB2YXIgYWNjZXNzaWJsZUNoZWNrYm94ID0gYm9keS5jaGlsZEF0SW5kZXgoMCk7Cisg
ICAgICAgIHZhciBhY2Nlc3NpYmxlQ2hlY2tib3ggPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNoZWNrYm94MSIpOwogICAgICAgICB2YXIgbm90aWZpY2F0
aW9uQ291bnQgPSAwOwogCiAgICAgICAgIGZ1bmN0aW9uIGxpc3RlbmVyKG5vdGlmaWNhdGlvbikg
ewotICAgICAgICBpZiAobm90aWZpY2F0aW9uID09ICJDaGVja2VkU3RhdGVDaGFuZ2VkIikKLSAg
ICAgICAgICAgIG5vdGlmaWNhdGlvbkNvdW50Kys7CisgICAgICAgICAgICBpZiAobm90aWZpY2F0
aW9uID09ICJDaGVja2VkU3RhdGVDaGFuZ2VkIikKKyAgICAgICAgICAgICAgICBub3RpZmljYXRp
b25Db3VudCsrOwogCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVyVGV4dCArPSAiR290IG5vdGlmaWNhdGlvbjogIiArIG5vdGlmaWNhdGlvbiArICJc
biI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9u
LWxpc3RlbmVycy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24t
bGlzdGVuZXJzLmh0bWwKaW5kZXggM2RkODg4ODQ0ZDBjNGE2MGZjOTRlOWMyMmRmZjYyZDI2YmFh
ZWI2My4uNjI2YzVlYjhmZWRjZmJhOTFjOGFiMGEwYTZjY2ExNjAyNTg2ODI3YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJzLmh0
bWwKQEAgLTcsNyArNyw3IEBACiAKIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogCi08c2VsZWN0
IGlkPSJzZWxlY3QiIHZhbHVlPSJTZWxlY3QiPjxvcHRpb24+QTxvcHRpb24+Qjwvc2VsZWN0Pgor
PHNlbGVjdCBpZD0ic2VsZWN0IiB2YWx1ZT0iU2VsZWN0Ij48L3NlbGVjdD4KIAogPGRpdiBpZD0i
c2xpZGVyIiB0YWJpbmRleD0iMCIgcm9sZT0ic2xpZGVyIiBhcmlhLXZhbHVlbm93PSI1Ij5TbGlk
ZXI8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlLW11bHRp
cGxlLWZpZWxkcy9kYXRlLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNh
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUtbXVsdGlwbGUt
ZmllbGRzL2RhdGUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9u
LWV4cGVjdGVkLnR4dAppbmRleCBhMDZiM2M0M2NmM2QxMWIwYmQ1ZjE1NGQyOTAzMjYxZjFhZTlm
YjQ1Li5kNGZjOGFlNTQ0NTA2MWE4MGU1ODhjNjc3ZDFjYWU2NjE3M2EyNGRiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUtbXVsdGlwbGUtZmllbGRzL2RhdGUtbXVsdGlw
bGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUtbXVsdGlwbGUtZmllbGRzL2RhdGUtbXVsdGlw
bGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAt
Nyw2ICs3LDggQEAgRm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBNb250aD1BWFZhbHVl
RGVzY3JpcHRpb246IDEwCiBGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCBBWEhlbHA6IERheT1BWFZh
bHVlRGVzY3JpcHRpb246IDA5CiBGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCBBWEhlbHA6IFllYXI9
QVhWYWx1ZURlc2NyaXB0aW9uOiAyMDEyCiBWYWx1ZUNoYW5nZWQgQVhIZWxwOiBEYXk9QVhWYWx1
ZURlc2NyaXB0aW9uOiAwNAorVmFsdWVDaGFuZ2VkIEFYSGVscDogRGF5PUFYVmFsdWVEZXNjcmlw
dGlvbjogMDQKK1ZhbHVlQ2hhbmdlZCBBWEhlbHA6IFllYXI9QVhWYWx1ZURlc2NyaXB0aW9uOiAy
MDEzCiBWYWx1ZUNoYW5nZWQgQVhIZWxwOiBZZWFyPUFYVmFsdWVEZXNjcmlwdGlvbjogMjAxMwog
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4
LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFs
dWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDllNmU2ZDI3MzE0NTQ5
Y2ZiODMzZGU2MGUzZTg1YmUzMTA0ZDI3NWUuLjJlNWVkOWJkYTYzMjJmZDE1NmVhNDUxZTkxMzg3
Y2YzODI4MDI0ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0
aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmlj
YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0
aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmlj
YXRpb24tZXhwZWN0ZWQudHh0CkBAIC03LDYgKzcsOCBAQCBGb2N1c2VkVUlFbGVtZW50Q2hhbmdl
ZCBBWEhlbHA6IEhvdXJzPUFYVmFsdWVEZXNjcmlwdGlvbjogMTIKIEZvY3VzZWRVSUVsZW1lbnRD
aGFuZ2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246IDM0CiBWYWx1ZUNoYW5n
ZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMDUKIFZhbHVlQ2hhbmdlZCBB
WEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAwNQorVmFsdWVDaGFuZ2VkIEFYSGVs
cDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246IDA1CitWYWx1ZUNoYW5nZWQgQVhIZWxwOiBN
aW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMDUKIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jh
c2hlcy1leHBlY3RlZC50eHQKaW5kZXggODlmYTQyNDYyZDVhZGUwMzIyMDg4N2M1ODFmMDdkMGE3
YTg2Y2JlNy4uYzk2MmVhM2YxYTMxM2YyM2NhZTIwZDg3YWYwYWIwMzI5N2I5YTJhNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8t
bWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVk
LnR4dApAQCAtMSw4ICsxLDggQEAKIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYWRkaW5nIGEg
c2VsZWN0ZWQgb3B0aW9uIHRvIGEgbWVudSBsaXN0IHZpYSBhbiB1bnVzdWFsIHJvdXRlIChkb2N1
bWVudC53cml0ZSBmcm9tIGFuIGV4dGVybmFsIHNjcmlwdCkgZG9lc24ndCB0cmlnZ2VyIGEgY3Jh
c2ggd2hlbiBkaWRVcGRhdGVBY3RpdmVPcHRpb24gaXMgY2FsbGVkIGJlZm9yZSB0aGUgY2hpbGRy
ZW4gYXJlIHVwZGF0ZWQuCiAKLVBBU1MgYWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQgaXMg
MQotUEFTUyBhY2Nlc3NpYmxlUG9wdXAuY2hpbGRyZW5Db3VudCBpcyAyCi1QQVNTIGFjY2Vzc2li
bGVQb3B1cC5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1MgYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxk
QXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IGlzIDEKK1BBU1MgYWNjZXNzaWJsZU1lbnVsaXN0LmNo
aWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IGlzIDIKK1BBU1MgYWNjZXNzaWJsZU1lbnVsaXN0
LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1l
bnUtbGlzdC1jcmFzaGVzLmh0bWwKaW5kZXggNzUxMDMzOGZmYzUyZGE4YThjNThhYjFhMWQxOTlh
Yjk3ZjNhNjE1YS4uYWVjYjRlNWEwZDBlNzVlMmI0YzhmMGM5ZDc4MTMwZjdjOWRkYTY1MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQt
dG8tbWVudS1saXN0LWNyYXNoZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy5odG1sCkBAIC0xOSwx
OSArMTksMTggQEAKICAgICAgICAgbWVudWxpc3QuZm9jdXMoKTsKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAg
ICAgICAgd2luZG93LmFjY2Vzc2libGVNZW51bGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OwotICAgICAgICAgICAgd2luZG93LmFjY2Vzc2libGVQb3B1cCA9IGFj
Y2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
YWNjZXNzaWJsZVBvcHVwLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCIsICIx
Iik7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iZGF0YTp0ZXh0
L2phdmFzY3JpcHQsZG9jdW1lbnQud3JpdGUoJzxvcHRpb24gc2VsZWN0ZWQ+MicpOyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKLSAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3Np
YmxlUG9wdXAuY2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNj
ZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IiwgIjIiKTsKICAg
ICA8L3NjcmlwdD4KICAgICA8c2NyaXB0PgogICAgICAgICBtZW51bGlzdC5yZW1vdmVDaGlsZCht
ZW51bGlzdC5zZWxlY3RlZE9wdGlvbnNbMF0pOwogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQotICAgICAgICAgICAgc2hvdWxk
QmUoImFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQi
LCAiMSIpOwogICAgIDwvc2NyaXB0PgogPC9zZWxlY3Q+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2Vu
ZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGJkYzZkYjU3YTlhNGMzMWU2ZjBjMzE4MzhlZWU0NGE4
ZDcwMzdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFuZ2Ug
dG8gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBmaXJlcyBhIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZp
Y2F0aW9uIG9uIHRoZSBwYXJlbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykgIT0gbnVsbCBp
cyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2JykgIT0gbnVsbCBp
cyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5l
cicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJs
ZURpdicpICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0
eURpdkNvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2VtcHR5RGl2JykgIT0gbnVsbCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGUnKSAhPSBudWxsIGlzIGZhbHNlCitQQVNT
IGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJykgIT0gbnVs
bCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsJykg
IT0gbnVsbCBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGhpZGRlbkRp
dkNvbnRhaW5lcgorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5l
cicpLmNoaWxkcmVuQ291bnQgaXMgMQorR290IENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb24g
b24gaW52aXNpYmxlRGl2Q29udGFpbmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52
aXNpYmxlRGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCBpcyAxCitHb3QgQ2hpbGRyZW5DaGFu
Z2VkIG5vdGlmaWNhdGlvbiBvbiBlbXB0eURpdkNvbnRhaW5lcgorUEFTUyBhY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCBpcyAxCitHb3QgQ2hp
bGRyZW5DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBkaXZXaXRob3V0Um9sZUNvbnRhaW5lcgorUEFT
UyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykuY2hpbGRy
ZW5Db3VudCBpcyAxCitHb3QgQ2hpbGRyZW5DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBkaXZXaXRo
b3V0TGFiZWxDb250YWluZXIKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0
TGFiZWxDb250YWluZXInKS5jaGlsZHJlbkNvdW50IGlzIDEKK0FsbCBub3RpZmljYXRpb25zIHJl
Y2VpdmVkIHN1Y2Nlc3NmdWxseS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1pZ25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMt
aWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA2NTk3
MGI2ZGZmOTRhY2QyNmQ1OGU2ZmQzM2QwM2RmZGUzNWU1OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaXMtaWdub3JlZC1jaGFu
Z2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBp
ZD0iY29udGFpbmVyIj4KKworICA8ZGl2IGlkPSJoaWRkZW5EaXZDb250YWluZXIiIGFyaWEtbGFi
ZWw9ImhpZGRlbkRpdkNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iaGlkZGVuRGl2IiBoaWRkZW4+
CisgICAgICA8ZGl2PgorICAgICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgorICAgICAgPC9k
aXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImludmlzaWJsZURpdkNvbnRh
aW5lciIgYXJpYS1sYWJlbD0iaW52aXNpYmxlRGl2Q29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJp
bnZpc2libGVEaXYiIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW4iPgorICAgICAgPGRpdj4KKyAg
ICAgICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
ICA8L2Rpdj4KKworICA8ZGl2IGlkPSJlbXB0eURpdkNvbnRhaW5lciIgYXJpYS1sYWJlbD0iZW1w
dHlEaXZDb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImVtcHR5RGl2Ij48L2Rpdj4KKyAgPC9kaXY+
CisKKyAgPGRpdiBpZD0iZGl2V2l0aG91dFJvbGVDb250YWluZXIiIGFyaWEtbGFiZWw9ImRpdldp
dGhvdXRSb2xlQ29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJkaXZXaXRob3V0Um9sZSI+CisgICAg
ICA8ZGl2PgorICAgICAgICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgorICAgICAgPC9kaXY+Cisg
ICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImRpdldpdGhvdXRMYWJlbENvbnRhaW5l
ciIgYXJpYS1sYWJlbD0iZGl2V2l0aG91dExhYmVsQ29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJk
aXZXaXRob3V0TGFiZWwiPgorICAgICAgPGRpdj4KKyAgICAgICAgPGJ1dHRvbj5CdXR0b248L2J1
dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKworPC9kaXY+CisKKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IGEgY2hhbmdlIHRvIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgZmlyZXMgYSBj
aGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50LiIpOworCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisKKyAgICBmdW5jdGlvbiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpIHsKKyAgICAgICAgcmV0
dXJuIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZChpZCk7Cisg
ICAgfQorCisgICAgd2luZG93LnN1Y2Nlc3NDb3VudCA9IDA7CisgICAgZnVuY3Rpb24gZ290U3Vj
Y2Vzc2Z1bE5vdGlmaWNhdGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc0NvdW50Kys7CisgICAgICAg
IGlmIChzdWNjZXNzQ291bnQgIT0gNSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBk
ZWJ1ZygnQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LicpOworICAgICAg
ICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpLnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNp
YmxlRGl2Q29udGFpbmVyJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAg
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpLnJlbW92ZU5vdGlmaWNh
dGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91
dFJvbGVDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpLnJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5oaWRkZW4gPSB0cnVlOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICBzaG91
bGRCZVRydWUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29udGFpbmVyJykgIT0g
bnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVu
RGl2JykgIT0gbnVsbCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVuRGl2Q29u
dGFpbmVyJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7
CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9u
IGhpZGRlbkRpdkNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAg
ICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdoaWRkZW5EaXYnKS5oaWRkZW4gPSBmYWxzZTsKKworICAgIHNob3VsZEJl
VHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKSAhPSBu
dWxsIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2li
bGVEaXYnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVE
aXZDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRp
b24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRp
b24gb24gaW52aXNpYmxlRGl2Q29udGFpbmVyJyk7CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAi
MSIpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdicpLnN0eWxlLnZpc2liaWxpdHkg
PSAndmlzaWJsZSc7CisKKyAgICBzaG91bGRCZVRydWUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgn
ZW1wdHlEaXZDb250YWluZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdicpICE9IG51bGwiKTsKKyAgICBhY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVu
Y3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlv
biArICcgbm90aWZpY2F0aW9uIG9uIGVtcHR5RGl2Q29udGFpbmVyJyk7CisgICAgICAgIHNob3Vs
ZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFpbmVyJykuY2hpbGRyZW5D
b3VudCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbXB0eURpdicpLmlubmVyVGV4dCA9
ICdOb3QgZW1wdHkgYW55bW9yZS4nOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbXB0
eURpdicpLm9mZnNldExlZnQ7CisKKyAgICBzaG91bGRCZVRydWUoImFjY2Vzc2libGVFbGVtZW50
QnlJZCgnZGl2V2l0aG91dFJvbGVDb250YWluZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZScpICE9IG51bGwiKTsK
KyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykuYWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRl
YnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGRpdldpdGhvdXRS
b2xlQ29udGFpbmVyJyk7CisgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2RpdldpdGhvdXRSb2xlQ29udGFpbmVyJykuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAg
IGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGUnKS5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnaGVhZGlu
ZycpOworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhv
dXRMYWJlbENvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbCcpICE9IG51bGwiKTsKKyAgICBhY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcg
KyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBkaXZXaXRob3V0TGFiZWxDb250YWlu
ZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91
dExhYmVsQ29udGFpbmVyJykuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nl
c3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGl2V2l0aG91dExhYmVsJykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0xhYmVsJyk7
CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvb3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJlNzA3ZTZkNDc2NWMyMzJiZGU2NmU1MGVjMTg3YTc5ZmVhOWVkZWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSBjaGFu
Z2UgdG8gYW55IEFSSUEgYXR0cmlidXRlLCBub3QganVzdCBhIHN0YXRlLCBzZW5kcyBhIG5vdGlm
aWNhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitHb3QgQXJpYUF0dHJpYnV0ZUNo
YW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtYnVzeQorR290IEFyaWFBdHRyaWJ1dGVDaGFuZ2Vk
IG5vdGlmaWNhdGlvbiBvbiBhcmlhLWRpc2FibGVkCitHb3QgQXJpYUF0dHJpYnV0ZUNoYW5nZWQg
bm90aWZpY2F0aW9uIG9uIGFyaWEtcmVhZG9ubHkKK0dvdCBBcmlhQXR0cmlidXRlQ2hhbmdlZCBu
b3RpZmljYXRpb24gb24gYXJpYS1yZXF1aXJlZAorQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQg
c3VjY2Vzc2Z1bGx5LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmlj
YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
b3RoZXItYXJpYS1hdHRyaWJ1dGUtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmExYjgwMTdlZjUwZTUyZDZkZmViNjc0YTVmOTdiZjgwNmZjN2U2MDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290
aGVyLWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApAQCAtMCww
ICsxLDc1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxidXR0b24gaWQ9ImFyaWEt
YnVzeSIgYXJpYS1idXN5PSJmYWxzZSI+QnVzeTwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJhcmlh
LWRpc2FibGVkIiBhcmlhLWRpc2FibGVkPSJmYWxzZSI+RGlzYWJsZWQ8L2J1dHRvbj4KKyAgPGJ1
dHRvbiBpZD0iYXJpYS1yZWFkb25seSIgYXJpYS1yZWFkb25seT0iZmFsc2UiPlJlYWRvbmx5PC9i
dXR0b24+CisgIDxidXR0b24gaWQ9ImFyaWEtcmVxdWlyZWQiIGFyaWEtcmVxdWlyZWQ9ImZhbHNl
Ij5SZXF1aXJlZDwvYnV0dG9uPgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgY2hhbmdlIHRv
IGFueSBBUklBIGF0dHJpYnV0ZSwgbm90IGp1c3QgYSBzdGF0ZSwgc2VuZHMgYSBub3RpZmljYXRp
b24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9uIGFjY2Vzc2libGVFbGVtZW50QnlJZChp
ZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5kb3cuc3VjY2Vzc0NvdW50ID0gMDsKKyAg
ICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCkgeworICAgICAgICBzdWNjZXNz
Q291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3VudCAhPSA0KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNz
ZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1idXN5JykucmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdhcmlhLWRpc2FibGVkJykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAg
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLXJlYWRvbmx5JykucmVtb3ZlTm90aWZpY2F0aW9u
TGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLXJlcXVpcmVk
JykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29udGFpbmVyJykuaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fQorCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLWJ1c3knKS5hZGROb3RpZmljYXRp
b25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAn
ICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1idXN5Jyk7CisgICAgICAg
IGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYXJpYS1idXN5Jykuc2V0QXR0cmlidXRlKCdhcmlhLWJ1c3knLCAndHJ1ZScp
OworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLWRpc2FibGVkJykuYWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdH
b3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGFyaWEtZGlzYWJsZWQnKTsK
KyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhcmlhLWRpc2FibGVkJykuc2V0QXR0cmlidXRlKCdhcmlhLWRp
c2FibGVkJywgJ3RydWUnKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1yZWFk
b25seScpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgewor
ICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBh
cmlhLXJlYWRvbmx5Jyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAg
ICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJpYS1yZWFkb25seScpLnNldEF0
dHJpYnV0ZSgnYXJpYS1yZWFkb25seScsICd0cnVlJyk7CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoJ2FyaWEtcmVxdWlyZWQnKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihu
b3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBu
b3RpZmljYXRpb24gb24gYXJpYS1yZXF1aXJlZCcpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90
aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEt
cmVxdWlyZWQnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcmVxdWlyZWQnLCAndHJ1ZScpOworCisgICAg
ZGVidWcoJycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJiYTk3MWQ1MmYyMWNhNGU3NWNlZDRmOTY1MGU4MDc0MjM1
ZTA5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgY2hhbmdlIHRvIGFuIGVsZW1lbnQn
cyBhY2Nlc3NpYmxlIHRleHQsIGV2ZW4gaWYgaW5kaXJlY3QsIHNlbmRzIGEgbm90aWZpY2F0aW9u
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0dvdCBUZXh0Q2hhbmdlZCBub3RpZmljYXRp
b24gb24gYXJpYS1sYWJlbAorR290IFRleHRDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aXRsZQor
R290IFRleHRDaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGxlZGJ5CitHb3QgVGV4dENoYW5n
ZWQgbm90aWZpY2F0aW9uIG9uIGxhYmVsZWQKK0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1
Y2Nlc3NmdWxseS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvdGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmQ1ZGIwYTU1OTBiYjJkODBmNjc4ZTM5OGYxNmMyZmFhYTc3M2Y5
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvdGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw3OCBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8YnV0dG9uIGlkPSJhcmlhLWxhYmVsIiBhcmlh
LWxhYmVsPSJBcmlhIExhYmVsIj5Db250ZW50PC9idXR0b24+CisgIDxidXR0b24gaWQ9InRpdGxl
IiB0aXRsZT0iVGl0bGUiPkNvbnRlbnQ8L2J1dHRvbj4KKyAgPGJ1dHRvbiBpZD0ibGFiZWxsZWRi
eSIgYXJpYS1sYWJlbGxlZGJ5PSJsYWJlbDEiPkNvbnRlbnQ8L2J1dHRvbj4KKyAgPGJ1dHRvbiBp
ZD0ibGFiZWxlZCI+Q29udGVudDwvYnV0dG9uPgorCisgIDxsYWJlbCBpZD0ibGFiZWwxIj5MYWJl
bDE8L2xhYmVsPgorICA8bGFiZWwgaWQ9ImxhYmVsMiI+TGFiZWwyPC9sYWJlbD4KKzwvZGl2Pgor
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbiBlbGVtZW50J3MgYWNjZXNzaWJsZSB0ZXh0
LCBldmVuIGlmIGluZGlyZWN0LCBzZW5kcyBhIG5vdGlmaWNhdGlvbi4iKTsKKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CisgICAgZnVuY3Rpb24gYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKSB7CisgICAgICAgIHJldHVy
biBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOworICAg
IH0KKworICAgIHdpbmRvdy5zdWNjZXNzQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGdvdFN1Y2Nl
c3NmdWxOb3RpZmljYXRpb24oKSB7CisgICAgICAgIHN1Y2Nlc3NDb3VudCsrOworICAgICAgICBp
ZiAoc3VjY2Vzc0NvdW50ICE9IDQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVi
dWcoJ0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4nKTsKKyAgICAgICAg
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLWxhYmVsJykucmVtb3ZlTm90aWZpY2F0aW9uTGlz
dGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0aXRsZScpLnJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnbGFi
ZWxsZWRieScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnbGFiZWxlZCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmhpZGRlbiA9IHRy
dWU7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJp
YS1sYWJlbCcpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikg
eworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBv
biBhcmlhLWxhYmVsJyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAg
ICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJpYS1sYWJlbCcpLnNldEF0dHJp
YnV0ZSgnYXJpYS1sYWJlbCcsICdOZXcgYXJpYS1sYWJlbCcpOworCisgICAgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCd0aXRsZScpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlm
aWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlm
aWNhdGlvbiBvbiB0aXRsZScpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7
CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpdGxlJykudGl0bGUgPSAn
TmV3IHRpdGxlJzsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnbGFiZWxsZWRieScpLmFk
ZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBk
ZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGxlZGJ5
Jyk7CisgICAgICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxsZWRieScpLnNldEF0dHJpYnV0ZSgnYXJpYS1s
YWJlbGxlZGJ5JywgJ2xhYmVsMicpOworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdsYWJl
bGVkJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7Cisg
ICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGxh
YmVsZWQnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbDEnKS5zZXRBdHRyaWJ1dGUoJ2Zvcics
ICdsYWJlbGVkJyk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171004</attachid>
            <date>2012-10-26 14:16:55 -0700</date>
            <delta_ts>2012-10-26 14:58:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99547-20121026141527.patch</filename>
            <type>text/plain</type>
            <size>61225</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U5YmE0ODM2NWQzMjZk
YTQ2MTg4OTU0Njg5OWE0MGZiMTY0MTk0Ni4uNTE1M2I0NmVjOTNmNDVjYzZmNDQ0YWIyNTAxYmZk
NDUzNDI5MTVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTEwLTI0ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBOb3RpZmlj
YXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgQWRkcyBhIG5l
dyBmbGFnIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgdGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgbW9z
dCByZWNlbnQKKyAgICAgICAgdmFsdWUgb2YgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLiBBZnRl
ciBjZXJ0YWluIGV2ZW50cyBzdWNoIGFzIGFuIEFSSUEKKyAgICAgICAgYXR0cmlidXRlIGNoYW5n
ZSBvciBjb250ZW50IGNoYW5nZSwgY2hlY2tzIHRoZSBuZXcgdmFsdWUgb2YKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGFuZCBwb3N0cyBhICJjaGlsZHJlbiBjaGFuZ2VkIiBub3Rp
ZmljYXRpb24gb24gdGhlCisgICAgICAgIHBhcmVudCBub2RlIGlmIGl0IGNoYW5nZWQsIG1ha2lu
ZyBzdXJlIHRoZSBwYXJlbnQgcmVjb21wdXRlcyBpdHMgdmVjdG9yIG9mCisgICAgICAgICh1bmln
bm9yZWQpIGNoaWxkcmVuLgorCisgICAgICAgIEFsc28gbW92ZXMgaGFuZGxpbmcgb2YgYXR0cmli
dXRlIGNoYW5nZXMgdG8gQVhPYmplY3RDYWNoZSwgYW5kIHNlbmRzCisgICAgICAgIG5vdGlmaWNh
dGlvbnMgZm9yIHNvbWUgYXR0cmlidXRlIGNoYW5nZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc2ls
ZW50LiBPbgorICAgICAgICBDaHJvbWl1bSwgYWxsIGNoYW5nZXMgdG8gYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QncyBhdHRyaWJ1dGVzIHNob3VsZAorICAgICAgICByZXN1bHQgaW4gc29tZSBub3Rp
ZmljYXRpb24uCisKKyAgICAgICAgU29tZSB0ZXN0cyB3b3VsZCBoYXZlIGJyb2tlbiBiZWNhdXNl
IGFuIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IHdhcyBjcmVhdGVkCisgICAgICAgIGFuZCBob2xk
aW5nIGEgcmVmZXJlbmNlIHRvIGEgU2Nyb2xsVmlldyBmb3IgYW4gaWZyYW1lIGFmdGVyIGl0IHdh
cyBkZWxldGVkLAorICAgICAgICBzbyB0aGlzIGNoYW5nZSBzd2l0Y2hlcyBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyB0byBob2xkIGEgd2VhayByZWZlcmVuY2UKKyAgICAgICAgdG8gU2Nyb2xsVmll
dyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCisgICAgICAgICAg
ICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0cmlidXRl
LWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24uaHRtbAorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoQVhPYmplY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpjYWNoZWRJc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldENhY2hlZElzSWdub3JlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdu
b3JlZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0Q2hh
bmdlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29u
dHJvbEZvckxhYmVsRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp0ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphZGRIaWRkZW5DaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojppc0F0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxi
YXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVh
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVt
ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9j
dW1lbnRGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnBhcmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxUbyk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbFZpZXcpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZWxldGVMaW5l
Qm94VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5kQXBwZW5k
Um9vdElubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dDo6c2V0VGV4dCk6CisKIDIwMTItMTAtMjYgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUu
Y29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gQmxvY2sgY2hpbGRyZW4gaGF2ZSBpbmNv
cnJlY3Qgb2Zmc2V0IHdoZW4gc2hhcGUtaW5zaWRlIGVsZW1lbnQgbGF5cyBvdXQgYmVsb3cgb3Ro
ZXIgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTg4ODViZTQ0MmVkZmJh
MWE1MDZmNTdiMDQ0OGNiY2QxM2Y5ZDQzNy4uZGJhMmQzYTQ3ZWZhOTgzMzZjZWQ0NGQ4YzY3Y2Jm
MTA0OTBjMTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0xMC0yNCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBBWDogTm90aWZpY2F0aW9uIHNob3VsZCBiZSBzZW50IHdoZW4gYWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTU0NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisg
ICAgICAgIEFkZHMgbmV3IGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9ucy4KKworICAgICAgICAq
IHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmg6CisgICAgICAgICogc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwOgorCiAyMDEyLTEwLTI2ICBUaGlhZ28gTWFyY29zIFAuIFNh
bnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIEFkZCBmZWF0dXJlIGZs
YWdzIGZvciBDU1MgRGV2aWNlIEFkYXB0YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDY2NWFiYzA4NzZjMjQ3OTAzZDc4Mjc0YjFk
YzEwZDhlOTNmYTc4Y2MuLmNlYWM5NGJmNWNmZTk4ZDgxZTBjYTdmMTNjYjI0NzY3ZjYyMjY1M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApA
QCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lmIEVO
QUJMRShWSURFTykKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgpAQCAtMzMzLDYg
KzMzNCw5IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRl
KE5vZGUqIG5vZGUpCiAgICAgbV9ub2RlT2JqZWN0TWFwcGluZy5zZXQobm9kZSwgbmV3T2JqLT5h
eE9iamVjdElEKCkpOwogICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5heE9iamVjdElEKCksIG5l
d09iaik7CiAgICAgYXR0YWNoV3JhcHBlcihuZXdPYmouZ2V0KCkpOworCisgICAgbmV3T2JqLT5z
ZXRDYWNoZWRJc0lnbm9yZWRWYWx1ZShuZXdPYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSk7
CisKICAgICByZXR1cm4gbmV3T2JqLmdldCgpOwogfQogCkBAIC0zNTEsNiArMzU1LDkgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICBtX3JlbmRlck9iamVjdE1hcHBpbmcuc2V0KHJlbmRlcmVyLCBuZXdP
YmotPmF4T2JqZWN0SUQoKSk7CiAgICAgbV9vYmplY3RzLnNldChuZXdPYmotPmF4T2JqZWN0SUQo
KSwgbmV3T2JqKTsKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CisKKyAgICBuZXdP
YmotPnNldENhY2hlZElzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpKTsKKwogICAgIHJldHVybiBuZXdPYmouZ2V0KCk7CiB9CiAgICAgCkBAIC01MjcsMTYgKzUz
NCwyNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFYSUQoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KQogICAgIG1faWRzSW5Vc2UucmVtb3ZlKG9iaklEKTsKIH0KIAotdm9pZCBBWE9i
amVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChOb2RlKiBub2RlKQordm9pZCBBWE9iamVjdENhY2hl
Ojp0ZXh0Q2hhbmdlZChOb2RlKiBub2RlKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QgPSBnZXRPckNyZWF0ZShub2RlKSkKLSAgICAgICAgb2JqZWN0LT5jb250ZW50Q2hh
bmdlZCgpOyAKKyAgICB0ZXh0Q2hhbmdlZChnZXRPckNyZWF0ZShub2RlKSk7CiB9CiAKLXZvaWQg
QVhPYmplY3RDYWNoZTo6Y29udGVudENoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3Zv
aWQgQVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsK
LSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gZ2V0T3JDcmVhdGUocmVuZGVy
ZXIpKQotICAgICAgICBvYmplY3QtPmNvbnRlbnRDaGFuZ2VkKCk7IAorICAgIHRleHRDaGFuZ2Vk
KGdldE9yQ3JlYXRlKHJlbmRlcmVyKSk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dENo
YW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQoreworICAgIGlmICghb2JqKQorICAgICAg
ICByZXR1cm47CisKKyAgICBib29sIHBhcmVudEFscmVhZHlFeGlzdHMgPSBvYmotPnBhcmVudE9i
amVjdElmRXhpc3RzKCk7CisgICAgb2JqLT50ZXh0Q2hhbmdlZCgpOworICAgIHBvc3ROb3RpZmlj
YXRpb24ob2JqLCBvYmotPmRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dENoYW5nZWQs
IHRydWUpOworICAgIGlmIChwYXJlbnRBbHJlYWR5RXhpc3RzKQorICAgICAgICBvYmotPm5vdGlm
eUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0
ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKiBub2RlKQpAQCAtNTQ4LDE0ICs1NjUsMjMg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNoZWQoTm9k
ZSogbm9kZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoTm9kZSogbm9k
ZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0KG5vZGUpKQotICAg
ICAgICBvYmotPmNoaWxkcmVuQ2hhbmdlZCgpOworICAgIGNoaWxkcmVuQ2hhbmdlZChnZXQobm9k
ZSkpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXQo
cmVuZGVyZXIpKQotICAgICAgICBvYmotPmNoaWxkcmVuQ2hhbmdlZCgpOworICAgIGNoaWxkcmVu
Q2hhbmdlZChnZXQocmVuZGVyZXIpKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJl
bkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQoreworICAgIGlmICghb2JqKQorICAg
ICAgICByZXR1cm47CisKKyAgICBvYmotPmNoaWxkcmVuQ2hhbmdlZCgpOworCisgICAgaWYgKG9i
ai0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSAmJiBvYmotPmNhY2hlZElzSWdub3JlZFZhbHVlKCkg
IT0gb2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgIGNoaWxkcmVuQ2hhbmdl
ZChvYmotPnBhcmVudE9iamVjdCgpKTsKIH0KICAgICAKIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90
aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQoVGltZXI8QVhPYmplY3RDYWNoZT4qKQpAQCAtNzA2LDgg
KzczMiw1NSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkKE5vZGUqIG5vZGUpCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYVJvbGVDaGFu
Z2VkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdl
dE9yQ3JlYXRlKG5vZGUpKQorICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXRP
ckNyZWF0ZShub2RlKSkgewogICAgICAgICBvYmotPnVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCk7
CisgICAgICAgIG9iai0+bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CisgICAgfQorfQor
Cit2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKGF0dHJOYW1l
ID09IHJvbGVBdHRyKQorICAgICAgICBoYW5kbGVBcmlhUm9sZUNoYW5nZWQoZWxlbWVudCk7Cisg
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYWx0QXR0ciB8fCBhdHRyTmFtZSA9PSB0aXRsZUF0dHIp
CisgICAgICAgIHRleHRDaGFuZ2VkKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IGZvckF0dHIgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShsYWJlbFRhZykpCisgICAgICAgIGxhYmVs
Q2hhbmdlZChlbGVtZW50KTsKKworICAgIGlmICghYXR0ck5hbWUubG9jYWxOYW1lKCkuc3RyaW5n
KCkuc3RhcnRzV2l0aCgiYXJpYS0iKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF0dHJO
YW1lID09IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpCisgICAgICAgIGhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFf
dmFsdWVub3dBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFfdmFsdWV0ZXh0QXR0cikKKyAgICAgICAg
cG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwg
dHJ1ZSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9sYWJlbEF0dHIgfHwgYXR0ck5h
bWUgPT0gYXJpYV9sYWJlbGVkYnlBdHRyIHx8IGF0dHJOYW1lID09IGFyaWFfbGFiZWxsZWRieUF0
dHIpCisgICAgICAgIHRleHRDaGFuZ2VkKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGFyaWFfY2hlY2tlZEF0dHIpCisgICAgICAgIGNoZWNrZWRTdGF0ZUNoYW5nZWQoZWxlbWVu
dCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9zZWxlY3RlZEF0dHIpCisgICAgICAg
IHNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKGVsZW1lbnQpOworICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGFyaWFfZXhwYW5kZWRBdHRyKQorICAgICAgICBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2Uo
ZWxlbWVudCk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9oaWRkZW5BdHRyKQorICAg
ICAgICBjaGlsZHJlbkNoYW5nZWQoZWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKKyAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBhcmlhX2ludmFsaWRBdHRyKQorICAgICAgICBwb3N0Tm90aWZpY2F0aW9u
KGVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYSW52YWxpZFN0YXR1c0NoYW5nZWQsIHRydWUpOwor
ICAgIGVsc2UKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hl
OjpBWEFyaWFBdHRyaWJ1dGVDaGFuZ2VkLCB0cnVlKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hl
OjpsYWJlbENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+
aGFzVGFnTmFtZShsYWJlbFRhZykpOworICAgIEhUTUxFbGVtZW50KiBjb3JyZXNwb25kaW5nQ29u
dHJvbCA9IHN0YXRpY19jYXN0PEhUTUxMYWJlbEVsZW1lbnQqPihlbGVtZW50KS0+Y29udHJvbCgp
OworICAgIHRleHRDaGFuZ2VkKGNvcnJlc3BvbmRpbmdDb250cm9sKTsKK30KKwordm9pZCBBWE9i
amVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sK
KyAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0KHJlbmRlcmVyKSkKKyAgICAg
ICAgb2JqLT5ub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKTsKIH0KIAogVmlzaWJsZVBvc2l0
aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRN
YXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKaW5kZXggZmRmZDVhZmJmOGFlYzBjYjM4NjAxOGVhYTFmMjE4OWJj
NzAyMmI0MS4uNGVkZjgxNTAzZTFlZTQzNjI2OTBiOWRmMzA4MjljYjFiNzkzODliOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTg5LDEyICs4
OSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNz
aWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAg
ICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBzZWxlY3Rl
ZENoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqKTsKICAgICAvLyBDYWxsZWQgYnkgYSBub2Rl
IHdoZW4gdGV4dCBvciBhIHRleHQgZXF1aXZhbGVudCAoZS5nLiBhbHQpIGF0dHJpYnV0ZSBpcyBj
aGFuZ2VkLgotICAgIHZvaWQgY29udGVudENoYW5nZWQoTm9kZSopOwotICAgIHZvaWQgY29udGVu
dENoYW5nZWQoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCB0ZXh0Q2hhbmdlZChOb2RlKik7Cisg
ICAgdm9pZCB0ZXh0Q2hhbmdlZChSZW5kZXJPYmplY3QqKTsKICAgICAvLyBDYWxsZWQgd2hlbiBh
IG5vZGUgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZCwgc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSBoYXZl
IHRoZSByaWdodCBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5T2JqZWN0LgogICAgIHZvaWQgdXBk
YXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqKTsKIApAQCAtMTA1LDYgKzEwNiw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKik7CiAgICAg
dm9pZCBoYW5kbGVTY3JvbGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopOwogCisgICAgdm9pZCBoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW50
Kik7CisgICAgdm9pZCByZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcik7
CisKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgc3RhdGljIHZvaWQgZW5hYmxlQWNjZXNz
aWJpbGl0eSgpIHsgZ0FjY2Vzc2liaWxpdHlFbmFibGVkID0gdHJ1ZTsgfQogICAgIC8vIEVuaGFu
Y2VkIHVzZXIgaW50ZXJmYWNlIGFjY2Vzc2liaWxpdHkgY2FuIGJlIHRvZ2dsZWQgYnkgdGhlIGFz
c2lzdGl2ZSB0ZWNobm9sb2d5LgpAQCAtMTUyLDYgKzE1Niw4IEBAIHB1YmxpYzoKICAgICAgICAg
QVhSb3dDb2xsYXBzZWQsCiAgICAgICAgIEFYUm93RXhwYW5kZWQsCiAgICAgICAgIEFYSW52YWxp
ZFN0YXR1c0NoYW5nZWQsCisgICAgICAgIEFYVGV4dENoYW5nZWQsCisgICAgICAgIEFYQXJpYUF0
dHJpYnV0ZUNoYW5nZWQKICAgICB9OwogCiAgICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKFJlbmRl
ck9iamVjdCosIEFYTm90aWZpY2F0aW9uLCBib29sIHBvc3RUb0VsZW1lbnQsIFBvc3RUeXBlID0g
UG9zdEFzeW5jaHJvbm91c2x5KTsKQEAgLTE4MCw2ICsxODYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTm90
aWZpY2F0aW9uKTsKICAgICB2b2lkIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KTsKKyAgICB2b2lkIHRleHRD
aGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGxhYmVsQ2hhbmdlZChFbGVt
ZW50Kik7CiAKICAgICAvLyBUaGlzIGlzIGEgd2VhayByZWZlcmVuY2UgY2FjaGUgZm9yIGtub3dp
bmcgaWYgTm9kZXMgdXNlZCBieSBUZXh0TWFya2VycyBhcmUgdmFsaWQuCiAgICAgdm9pZCBzZXRO
b2RlSW5Vc2UoTm9kZSogbikgeyBtX3RleHRNYXJrZXJOb2Rlcy5hZGQobik7IH0KQEAgLTIzMiw4
ICsyNDAsMTAgQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nl
c3NpYmlsaXR5T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2Vk
U3RhdGVDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxk
cmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmNoaWxkcmVuQ2hhbmdlZChOb2RlKikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpj
b250ZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmNvbnRlbnRDaGFuZ2VkKE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjp0ZXh0Q2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KK2lubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxp
dHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2
ZW50Tm90aWZpY2F0aW9uKEZyYW1lKiwgQVhMb2FkaW5nRXZlbnQpIHsgfQpAQCAtMjQzLDYgKzI1
Myw4IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5n
ZShOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNo
YW5nZWQoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNl
ZFVJRWxlbWVudENoYW5nZWQoTm9kZSosIE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZVNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3KikgeyB9CitpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBFbGVtZW50KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJ
c0lnbm9yZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRDaGFuZ2Us
IHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCos
IEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
NzRjOGQ5ZjBkNTRmZTQ1NTQ2NjExZGE1ODgzY2ZjNGE1YjVmYmMzZi4uZTY3NWJlMmYzOGUyNzVj
N2RlYzlhNGQ1ZWU5Zjk5NmI5MWRhNDZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC03Miw2ICs3Miw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlPYmplY3QoKQogICAgIDogbV9pZCgwKQog
ICAgICwgbV9oYXZlQ2hpbGRyZW4oZmFsc2UpCiAgICAgLCBtX3JvbGUoVW5rbm93blJvbGUpCisg
ICAgLCBtX2NhY2hlZElzSWdub3JlZFZhbHVlKERlZmF1bHRCZWhhdmlvcikKICNpZiBQTEFURk9S
TShHVEspCiAgICAgLCBtX3dyYXBwZXIoMCkKICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAt
MTc3MCw2ICsxNzcxLDI4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9i
YWxQb2ludChjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9pbnQpIGNvbnN0CiAgICAgfQogfQogCiti
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhY2hlZElzSWdub3JlZFZhbHVlKCkKK3sKKyAgICBp
ZiAobV9jYWNoZWRJc0lnbm9yZWRWYWx1ZSA9PSBEZWZhdWx0QmVoYXZpb3IpCisgICAgICAgIG1f
Y2FjaGVkSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgPyBJZ25vcmVP
YmplY3QgOiBJbmNsdWRlT2JqZWN0OworCisgICAgcmV0dXJuIG1fY2FjaGVkSXNJZ25vcmVkVmFs
dWUgPT0gSWdub3JlT2JqZWN0OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldENh
Y2hlZElzSWdub3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVkKQoreworICAgIG1fY2FjaGVkSXNJZ25v
cmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgp
Cit7CisgICAgYm9vbCBpc0lnbm9yZWQgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CisgICAg
aWYgKGNhY2hlZElzSWdub3JlZFZhbHVlKCkgIT0gaXNJZ25vcmVkKSB7CisgICAgICAgIGF4T2Jq
ZWN0Q2FjaGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKHBhcmVudE9iamVjdCgpKTsKKyAgICAgICAgc2V0
Q2FjaGVkSXNJZ25vcmVkVmFsdWUoaXNJZ25vcmVkKTsKKyAgICB9Cit9CisKIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYVByZXNzZWRJc1ByZXNlbnQoKSBjb25zdAogewogICAgIHJldHVy
biAhZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIpLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggODcz
YTVjNmVmM2ZlMTRkYmJiMzlmZDQyNmFhOWYwMGY3N2EzOGE4Ni4uNjBiYzkyZDBkYjc5NDFiMjRi
NTM0ODI2NTA1MTRhODYzYWRlNDQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTYxMCw3ICs2MTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIHsgfQogICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSB7
IH0KQEAgLTcyOSw2ICs3MjksMTIgQEAgcHVibGljOgogICAgIC8vIFNjcm9sbCB0aGlzIG9iamVj
dCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVs
IHdpbmRvdy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OwogCisgICAgYm9vbCBjYWNoZWRJc0lnbm9yZWRWYWx1ZSgpOworICAgIHZv
aWQgc2V0Q2FjaGVkSXNJZ25vcmVkVmFsdWUoYm9vbCk7CisKKyAgICAvLyBGaXJlcyBhIGNoaWxk
cmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRoZSBwYXJlbnQgaWYgdGhlIGlzSWdub3JlZCB2
YWx1ZSBjaGFuZ2VkLgorICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CisK
ICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7CkBAIC03NjcsNiArNzczLDcgQEAg
cHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwog
ICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJlbjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBt
X3JvbGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBtX2NhY2hlZElzSWdub3Jl
ZFZhbHVlOwogICAgIAogICAgIC8vIElmIHRoaXMgb2JqZWN0IGl0c2VsZiBzY3JvbGxzLCByZXR1
cm4gaXRzIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNj
cm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKaW5kZXggNjg3NzE2YzU0MGNmODJlYTBhY2UwMjBmMmRlZTBjYzA0N2YwNGEyYi4u
MDJlNzY5OGI4NmUyZjUyZWIxOTNkODkwYjYxYjVhNzliNjE3NjFkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xMDk0LDggKzEwOTQsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIC8vIE5PVEU6IEJScyBhbHdh
eXMgaGF2ZSB0ZXh0IGJveGVzIG5vdywgc28gdGhlIHRleHQgYm94IGNoZWNrIGhlcmUgY2FuIGJl
IHJlbW92ZWQKICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkpIHsKICAgICAgICAgLy8gc3Rh
dGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVCdXR0b25zIGFyZSBqdXN0IHJlcG9y
dGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQncyBpZ25vcmVkIG9uIGFuIGluZGl2
aWR1YWwgbGV2ZWwKLSAgICAgICAgaWYgKHBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5hcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IE1lbnVJdGVtUm9sZQotICAgICAgICAgICAgfHwgcGFyZW50T2JqZWN0
VW5pZ25vcmVkKCktPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUJ1dHRvblJvbGUpCisgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgp
OworICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
TWVudUl0ZW1Sb2xlIHx8IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9u
Um9sZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgUmVuZGVyVGV4dCogcmVu
ZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChtX3JlbmRlcmVyKTsKICAgICAgICAgaWYgKG1fcmVuZGVy
ZXItPmlzQlIoKSB8fCAhcmVuZGVyVGV4dC0+Zmlyc3RUZXh0Qm94KCkpCkBAIC0yMjEyLDYgKzIy
MTIsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW0KICAgICBIVE1MRWxlbWVudCogY29ycmVz
cG9uZGluZ0NvbnRyb2wgPSBsYWJlbEVsZW1lbnQtPmNvbnRyb2woKTsKICAgICBpZiAoIWNvcnJl
c3BvbmRpbmdDb250cm9sKQogICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIE1ha2Ugc3VyZSB0
aGUgY29ycmVzcG9uZGluZyBjb250cm9sIGlzbid0IGEgZGVzY2VuZGFudCBvZiB0aGlzIGxhYmVs
IHRoYXQncyBpbiB0aGUgbWlkZGxlIG9mIGJlaW5nIGRlc3Ryb3llZC4KKyAgICBpZiAoY29ycmVz
cG9uZGluZ0NvbnRyb2wtPnJlbmRlcmVyKCkgJiYgIWNvcnJlc3BvbmRpbmdDb250cm9sLT5yZW5k
ZXJlcigpLT5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgcmV0dXJuIGF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY29ycmVzcG9uZGluZ0NvbnRyb2wpOyAgICAgCiB9
CkBAIC0yNTI4LDcgKzI1MzIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNh
blNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdAogICAgIHJldHVybiBpc1RleHRDb250cm9s
KCk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29udGVudENoYW5nZWQo
KQordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0Q2hhbmdlZCgpCiB7CiAgICAg
Ly8gSWYgdGhpcyBlbGVtZW50IHN1cHBvcnRzIEFSSUEgbGl2ZSByZWdpb25zLCBvciBpcyBwYXJ0
IG9mIGEgcmVnaW9uIHdpdGggYW4gQVJJQSBlZGl0YWJsZSByb2xlLAogICAgIC8vIHRoZW4gbm90
aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCBiMTc1MmQzZjE3ZjQ0
MjQyZmRhMzM5NzZhY2QxOWFmYjBjYjY1ZDgxLi5hYjA5MjQwMTc5YzU2YjA3YjMwMmJiYTBkYWY0
MjliNTI0ZGMxNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29udGVudENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dENoYW5nZWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDZkMTNhYWQwNjE3OGYx
MWQ2ODIzYWIyM2U3YmNlMDE3NWI4YTYwMzguLjEyZTViNGJmMzc5OWVlMzEwMzZkOTY1ODc4YzJj
ZmE4M2Q3ZWZjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC00Myw2ICs0MywxNyBAQCBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyogdmll
dykKIHsKIH0KIAorQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldygpCit7CisgICAgQVNTRVJUKGlzRGV0YWNoZWQoKSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmRldGFjaCgpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0
YWNoKCk7CisgICAgbV9zY3JvbGxWaWV3ID0gMDsKK30KKwogUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldz4gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNyZWF0ZShTY3JvbGxWaWV3
KiB2aWV3KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcodmlldykpOwpAQCAtNjcsMTIgKzc4LDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uCiAv
LyBJbiBXZWJLaXQyLCB0aGUgU2Nyb2xsVmlldyBvYmplY3Qgd2lsbCByZXR1cm4gdGhlIEFYIGlu
Zm9ybWF0aW9uIChiZWNhdXNlIHRoZXJlIGFyZSBubyBwbGF0Zm9ybSB3aWRnZXRzKS4KIGJvb2wg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmlzQXR0YWNobWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKTsKKyAgICByZXR1cm4gbV9zY3JvbGxW
aWV3ICYmIG1fc2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKTsKIH0KIAogV2lkZ2V0KiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3Njcm9sbFZpZXcuZ2V0KCk7CisgICAgcmV0dXJuIG1fc2Nyb2xsVmlldzsK
IH0KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZUNoaWxkcmVuSWZO
ZWNlc3NhcnkoKQpAQCAtODgsNiArOTksOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Ojp1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6dXBkYXRlU2Nyb2xsYmFycygpCiB7CisgICAgaWYgKCFtX3Njcm9sbFZpZXcpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChtX3Njcm9sbFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIo
KSAmJiAhbV9ob3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXIgPSBhZGRDaGlsZFNjcm9sbGJhcihtX3Njcm9sbFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIo
KSk7CiAgICAgZWxzZSBpZiAoIW1fc2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYm
IG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMTUzLDEwICsxNjcsMTAgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgaWYgKCFtX3Njcm9sbFZpZXcg
fHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ci0gICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmll
dy5nZXQoKSktPmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldyktPmZyYW1lKCktPmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2MgfHwgIWRvYy0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTE3OSwyMyArMTkzLDI2IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2luCiAKIExheW91dFJlY3Qg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVsZW1lbnRSZWN0KCkgY29uc3QKIHsKKyAgICBpZiAo
IW1fc2Nyb2xsVmlldykKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKKwogICAgIHJldHVy
biBtX3Njcm9sbFZpZXctPmZyYW1lUmVjdCgpOwogfQogCiBGcmFtZVZpZXcqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojpkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Nj
cm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Ny
b2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldy5nZXQoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldyk7CiB9ICAgIAogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAo
IW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICAKLSAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3RhdGlj
X2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3LmdldCgpKS0+ZnJhbWUoKS0+b3duZXJFbGVt
ZW50KCk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KG1fc2Nyb2xsVmlldyktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogICAgIGlm
IChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUob3duZXIpOwogCkBAIC0yMDQsMTAgKzIyMSwxMCBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29u
c3QKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpw
YXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXctPmlz
RnJhbWVWaWV3KCkpCisgICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNG
cmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldy5nZXQo
KSktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXIgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3Njcm9sbFZpZXcpLT5mcmFtZSgpLT5v
d25lckVsZW1lbnQoKTsKICAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldChvd25lcik7CiAgICAgCkBAIC0yMTYsMTIg
KzIzMywxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAogCiBTY3JvbGxhYmxlQXJlYSogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOworICAgIHJldHVybiBtX3Njcm9sbFZpZXc7
CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbFRvKGNvbnN0IEludFBv
aW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBtX3Njcm9sbFZpZXctPnNldFNjcm9sbFBvc2l0aW9u
KHBvaW50KTsKKyAgICBpZiAobV9zY3JvbGxWaWV3KQorICAgICAgICBtX3Njcm9sbFZpZXctPnNl
dFNjcm9sbFBvc2l0aW9uKHBvaW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuaAppbmRleCA5OTUzMTY0ZGYyZWUxNzYwNTU5NzE3YjQzNDgxZTM4OGEzMWM3ZDY0
Li40ZmY4YTIyM2ZkODc5YjZiNTYxNGFlNTRlYjM1MTQ2Nzc3NGQwOWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5o
CkBAIC0zOCw3ICszOCwxMCBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyA6IHB1Ymxp
YyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4gY3JlYXRlKFNjcm9sbFZpZXcqKTsgICAgCiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxB
cmVhUm9sZTsgfQotICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbFZpZXcuZ2V0KCk7IH0KKyAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxWaWV3OyB9CisKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldygpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkg
Y29uc3Q7CkBAIC03Miw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVNjcm9s
bGJhciogYWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdm9pZCByZW1vdmVDaGls
ZFNjcm9sbGJhcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgCi0gICAgUmVmUHRyPFNjcm9s
bFZpZXc+IG1fc2Nyb2xsVmlldzsKKyAgICBTY3JvbGxWaWV3KiBtX3Njcm9sbFZpZXc7CiAgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29s
IG1fY2hpbGRyZW5EaXJ0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBiMWQxNTVkNDJiMjZkNzgwZDgzZDEzOGNlNTJj
OTA1ODRkNzE4ZTBjLi5hNmRhYjI1NDY5YTYxNDcwNjRhMmVhNjAwNWRjZDQyNjUzNWRhNTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwCkBAIC0xMzAsNiArMTMwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0
YVRhYmxlKCkgY29uc3QKICAgICAKICAgICAvLyBnbyB0aHJvdWdoIHRoZSBjZWxsJ3MgYW5kIGNo
ZWNrIGZvciB0ZWxsLXRhbGUgc2lnbnMgb2YgImRhdGEiIHRhYmxlIHN0YXR1cwogICAgIC8vIGNl
bGxzIGhhdmUgYm9yZGVycywgb3IgdXNlIGF0dHJpYnV0ZXMgbGlrZSBoZWFkZXJzLCBhYmJyLCBz
Y29wZSBvciBheGlzCisgICAgdGFibGUtPnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKICAgICBS
ZW5kZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9keSA9IHRhYmxlLT5maXJzdEJvZHkoKTsKICAgICBp
ZiAoIWZpcnN0Qm9keSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hy
b21pdW0uY3BwCmluZGV4IGE5NWUwNDQxOGNjZDQ5OGQyODZkYzg3YTgwOGFiYjMzMTAyZTBhNzAu
LmY2OGE1OTE4MjMyMmJlNjA4YTJiZDU0OGVmOGY1MjQ5ODdjZTQ5MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FYT2JqZWN0
Q2FjaGVDaHJvbWl1bS5jcHAKQEAgLTgyLDEwICs4MiwxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90
aWZpYwogICAgICAgICAvLyBkZXNjZW5kYW50IGFuZCBzZW5kIHRoZSBBWEZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkIG5vdGlmaWNhdGlvbi4KICAgICAgICAgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENo
YW5nZWQoMCwgb2JqLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBWEFyaWFBdHRyaWJ1dGVDaGFuZ2VkOgogICAgIGNhc2UgQVhBdXRvY29ycmVj
dGlvbk9jY3VyZWQ6CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CiAgICAgY2FzZSBB
WENoaWxkcmVuQ2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Cisg
ICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgogICAgIGNhc2UgQVhMYXlvdXRDb21wbGV0
ZToKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExvYWRDb21wbGV0
ZToKQEAgLTk3LDggKzk5LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWMKICAgICBjYXNlIEFY
U2Nyb2xsZWRUb0FuY2hvcjoKICAgICBjYXNlIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQ6CiAg
ICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6CisgICAgY2FzZSBBWFRleHRDaGFuZ2VkOgog
ICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2Vk
OgogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlODY3
ODcyZDlhYTcxMTgxMjcyNWY3MzkzNGIzMGM4OGU3ZTk1Mjk3Li40Y2M0NzBlMDg4YTQ2ZjY5NTk4
MDQyNWY5NTNlNTlkNTc4NjRjMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03MjgsMzEg
KzcyOCw4IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5lCiAKICAgICBpbnZhbGlkYXRlTm9kZUxp
c3RDYWNoZXNJbkFuY2VzdG9ycygmbmFtZSwgdGhpcyk7CiAKLSAgICBpZiAoIUFYT2JqZWN0Q2Fj
aGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChu
YW1lID09IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpIHsKLSAgICAgICAgLy8gYW55IGNoYW5n
ZSB0byBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgYXR0cmlidXRlIHRyaWdnZXJzIGFjY2Vzc2liaWxp
dHkgZm9jdXMgY2hhbmdlLCBidXQgZG9jdW1lbnQgZm9jdXMgcmVtYWlucyBpbnRhY3QKLSAgICAg
ICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZCh0aGlzKTsKLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcm9sZUF0dHIpIHsKLSAgICAgICAg
Ly8gdGhlIHJvbGUgYXR0cmlidXRlIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUsIGFuZCB0aGUgQWNj
ZXNzaWJpbGl0eU9iamVjdCBtdXN0IHBpY2sgdXAgdGhlc2UgY2hhbmdlcwotICAgICAgICBkb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCh0aGlzKTsKLSAg
ICB9IGVsc2UgaWYgKG5hbWUgPT0gYXJpYV92YWx1ZW5vd0F0dHIpIHsKLSAgICAgICAgLy8gSWYg
dGhlIHZhbHVlbm93IGF0dHJpYnV0ZSBjaGFuZ2VzLCBBWCBjbGllbnRzIG5lZWQgdG8gYmUgbm90
aWZpZWQuCi0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNh
dGlvbih0aGlzLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7Ci0gICAgfSBl
bHNlIGlmIChuYW1lID09IGFyaWFfbGFiZWxBdHRyIHx8IG5hbWUgPT0gYXJpYV9sYWJlbGVkYnlB
dHRyIHx8IG5hbWUgPT0gYWx0QXR0ciB8fCBuYW1lID09IHRpdGxlQXR0cikgewotICAgICAgICAv
LyBJZiB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IGNoYW5nZXMgZHVlIHRvIGFuIGF0dHJpYnV0
ZSBjaGFuZ2UsIG5vdGlmeSBhY2Nlc3NpYmlsaXR5LgotICAgICAgICBkb2N1bWVudCgpLT5heE9i
amVjdENhY2hlKCktPmNvbnRlbnRDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBhcmlhX2NoZWNrZWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCkt
PmNoZWNrZWRTdGF0ZUNoYW5nZWQodGhpcyk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBhcmlhX3Nl
bGVjdGVkQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5zZWxlY3Rl
ZENoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGFyaWFfZXhwYW5k
ZWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUFyaWFF
eHBhbmRlZENoYW5nZSh0aGlzKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGFyaWFfaGlkZGVuQXR0
cikKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQo
dGhpcyk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBhcmlhX2ludmFsaWRBdHRyKQotICAgICAgICBk
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgQVhPYmpl
Y3RDYWNoZTo6QVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCwgdHJ1ZSk7CisgICAgaWYgKEFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCisgICAgICAgIGRvY3VtZW50KCktPmF4T2Jq
ZWN0Q2FjaGUoKS0+aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChuYW1lLCB0aGlzKTsKIH0KIAogdm9p
ZCBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDMxNGJjYjUzZmJkNGFk
MmE1ZWJiZmMyYTlhYjU2M2ZiMjcxODIyMjUuLmNkYTlkNDI3YmQ5NGJkOTdkNDhhNGI4ZjMxN2Y3
OTA4M2EwNzllMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJs
b2NrLmgiCiAKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ29sdW1uSW5m
by5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtMTAx
MSw2ICsxMDEyLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6ZGVsZXRlTGluZUJveFRyZWUoKQogICAg
ICAgICB9CiAgICAgfQogICAgIG1fbGluZUJveGVzLmRlbGV0ZUxpbmVCb3hUcmVlKHJlbmRlckFy
ZW5hKCkpOworICAgIGlmIChVTkxJS0VMWShBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yZWNvbXB1dGVJ
c0lnbm9yZWQodGhpcyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVS
b290SW5saW5lQm94KCkgCkBAIC0xMDIyLDYgKzEwMjUsMTAgQEAgUm9vdElubGluZUJveCogUmVu
ZGVyQmxvY2s6OmNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKQogewogICAgIFJvb3RJbmxp
bmVCb3gqIHJvb3RCb3ggPSBjcmVhdGVSb290SW5saW5lQm94KCk7CiAgICAgbV9saW5lQm94ZXMu
YXBwZW5kTGluZUJveChyb290Qm94KTsKKworICAgIGlmIChVTkxJS0VMWShBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSAmJiBtX2xpbmVCb3hlcy5maXJzdExpbmVCb3goKSA9
PSByb290Qm94KQorICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlY29tcHV0
ZUlzSWdub3JlZCh0aGlzKTsKKwogICAgIHJldHVybiByb290Qm94OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDU4ZDM2OWNlZGZkMjM1YzY2NTk3
OTQ3ZGZmYTlhNzAzYjc0MjI1ODEuLjk4ZDBjM2RkZjY0YzQ3ZGQxZjQ4N2QyNTQwZWViYTdjOGQ3
YWQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0x
ODI5LDcgKzE4MjksNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICAgICAgICAg
IGRvY3VtZW50KCktPnNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0cnVlKTsKICNlbmRpZgogICAg
ICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5jaGlsZHJlbkNoYW5nZWQodGhpcyk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQocGFyZW50KCkpOwogCiAgICAgICAgICAg
ICAvLyBLZWVwIGxheWVyIGhpZXJhcmNoeSB2aXNpYmlsaXR5IGJpdHMgdXAgdG8gZGF0ZSBpZiB2
aXNpYmlsaXR5IGNoYW5nZXMuCiAgICAgICAgICAgICBpZiAobV9zdHlsZS0+dmlzaWJpbGl0eSgp
ICE9IG5ld1N0eWxlLT52aXNpYmlsaXR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAppbmRleCA5YTA3N2JmMzBmZmViNzYxZjQ2YWI5MjVhODUyNWM5NTJhMDI0NjZm
Li4zZjhkNzE1ZWFlODY0ZWU5MThlOGRhNWY2N2RlZWQzZDVjNjcwMzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xNDY2LDcgKzE0NjYsNyBAQCB2b2lkIFJl
bmRlclRleHQ6OnNldFRleHQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0ZXh0LCBib29sIGZvcmNl
KQogICAgIAogICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCk7CiAgICAgaWYgKGF4T2JqZWN0Q2FjaGUtPmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkpCi0gICAgICAgIGF4T2JqZWN0Q2FjaGUtPmNvbnRlbnRDaGFuZ2VkKHRoaXMpOworICAg
ICAgICBheE9iamVjdENhY2hlLT50ZXh0Q2hhbmdlZCh0aGlzKTsKIH0KIAogU3RyaW5nIFJlbmRl
clRleHQ6OnRleHRXaXRob3V0VHJhbnNjb2RpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bi5oCmluZGV4IGRlNjhkMzdiMDQzOGQ1MjA2NzE3MWJkNmE0ZjFhNGU2ZjU3M2FiNDEuLjYyOWQ5
ODhmNTQzOTdkY2UzMjNjM2ZjNWZlMDcwOGU1NDE1OWE3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uLmgKQEAgLTU0LDExICs1NCw4IEBAIGVudW0gV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
biB7CiAgICAgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblJvd0NvbGxhcHNlZCwKICAgICBX
ZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uUm93RXhwYW5kZWQsCiAgICAgV2ViQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkludmFsaWRTdGF0dXNDaGFuZ2VkLAotCi0gICAgLy8gRklYTUU6IG5v
dyB0aGF0IHdlJ3JlIHVzaW5nIEFzc2VydE1hdGNoaW5nRW51bXMsIHdlIGRvbid0IG5lZWQgYQot
ICAgIC8vIGNhdGNoLWFsbCAiaW52YWxpZCIgbm90aWZpY2F0aW9uIGVudW0uIFJlbW92ZSB0aGlz
IG9uY2UgaXQncyBiZWVuCi0gICAgLy8gcmVtb3ZlZCBmcm9tIENocm9taXVtLgotICAgIFdlYkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25JbnZhbGlkLAorICAgIFdlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25UZXh0Q2hhbmdlZCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uQXJp
YUF0dHJpYnV0ZUNoYW5nZWQKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA5
NWU4YjYwN2QyMjhmOGJlODVjZGNlOWEzMWIxODkzNzExM2Q1MmJmLi4wMjU3Mjc5YmFkNzEwMjk1
MDU5ZWU0YTE3NmI1NDQ1NDk4NzBjOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtMTUzLDYgKzE1Myw4IEBAIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvblJvd0Nv
dW50Q2hhbmdlZCwgQVhPYmplCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25Sb3dDb2xsYXBzZWQsIEFYT2JqZWN0Q2FjaGU6OkFYUm93Q29s
bGFwc2VkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvblJvd0V4cGFuZGVkLCBBWE9iamVjdENhY2hlOjpBWFJvd0V4cGFuZGVkKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbklu
dmFsaWRTdGF0dXNDaGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWEludmFsaWRTdGF0dXNDaGFuZ2Vk
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvblRleHRDaGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWFRleHRDaGFuZ2VkKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkFyaWFBdHRy
aWJ1dGVDaGFuZ2VkLCBBWE9iamVjdENhY2hlOjpBWEFyaWFBdHRyaWJ1dGVDaGFuZ2VkKTsKIAog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZVVua25vd24s
IFVua25vd25Sb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNjZXNzaWJp
bGl0eVJvbGVCdXR0b24sIEJ1dHRvblJvbGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRiMjJiM2M5MjM4NWM0Yzc4N2FlMDAwODkxODRmNDAy
NTExNzkxNWEuLmJlNTBlM2JmYzgxYmE5ZDBkOTZiZGU2NzJlMjlhZDFkNTQ2YjBlNGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0xMC0yNCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4K
KworICAgICAgICBBWDogTm90aWZpY2F0aW9uIHNob3VsZCBiZSBzZW50IHdoZW4gYWNjZXNzaWJp
bGl0eUlzSWdub3JlZCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTU0NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNo
LgorCisgICAgICAgIEFkZCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9ucy4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdIb3N0Ojpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbik6CisKIDIw
MTItMTAtMjYgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBCdWlsZCBib3QgZ2l2ZXMgaW5jb3JyZWN0IGxpbmsgdG8gRVdTIGJ1aWxkIGZhaWx1cmUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBk
Mzc2MjJkYjk5NTg4Zjc5MTViMjQ0ZWY5Y2I3ZDA1ZTIxMmZjNzMxLi4yOWFjY2VlZDBmZDllZjI4
NDQxOGE3ZjNjZjc1MmZiMmRkY2E2OWJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC02OTYsNiArNjk2LDEyIEBAIHZvaWQgV2ViVmlld0hv
c3Q6OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iCiAgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSW52YWxpZFN0
YXR1c0NoYW5nZWQ6CiAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiSW52YWxpZFN0YXR1c0No
YW5nZWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25UZXh0Q2hhbmdlZDoKKyAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJUZXh0Q2hhbmdl
ZCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkFyaWFBdHRyaWJ1dGVDaGFuZ2VkOgorICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFyaWFB
dHRyaWJ1dGVDaGFuZ2VkIjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
bm90aWZpY2F0aW9uTmFtZSA9ICJVbmtub3duTm90aWZpY2F0aW9uIjsKICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMTEyYjA2MzAzZGY2NmIwNTU5MzI0NWM2YWY3ZDc0MTczMTIzNzI2Yy4uNmIzMmFk
OGRjYzFlMTcxNjg5ZjJkMzQ4Mzk0YjAxMjNiMmI1OWE5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDEyLTEwLTI0ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisg
ICAgICAgIEFYOiBOb3RpZmljYXRpb24gc2hvdWxkIGJlIHNlbnQgd2hlbiBhY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk5NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisK
KyAgICAgICAgQWRkcyAzIG5ldyB0ZXN0IHRvIGVuc3VyZToKKyAgICAgICAgMS4gQSAiY2hpbGRy
ZW4gY2hhbmdlZCIgbm90aWZpY2F0aW9uIGlzIGZpcmVkIG9uIHRoZSBwYXJlbnQgb2JqZWN0IHdo
ZW4gYW4KKyAgICAgICAgICAgb2JqZWN0IHRoYXQgd2FzIHByZXZpb3VzbHkgaWdub3JlZCBiZWNv
bWVzIHVuaWdub3JlZC4KKyAgICAgICAgMi4gQSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFu
IGVsZW1lbnQncyB0ZXh0IChpbmNsLiB0aXRsZSBvciBsYWJlbCkgY2hhbmdlcy4KKyAgICAgICAg
My4gQSBub3RpZmljYXRpb24gaXMgc2VudCB3aGVuIGFub3RoZXIgQVJJQSBhdHRyaWJ1dGUgY2hh
bmdlcy4KKworICAgICAgICBNb2RpZmllcyBhZGQtdG8tbWVudS1saXN0LWNyYXNoZXMgYmVjYXVz
ZSBpdCB3YXMgdG9vIGJyaXR0bGU7IGl0IHdhcworICAgICAgICAgICAgcmVmZXJlbmNpbmcgYSBz
dGFsZSBvYmplY3QgcmF0aGVyIHRoYW4gcmV0cmlldmluZyBpdHMgbGF0ZXN0IGhhbmRsZS4KKyAg
ICAgICAgTW9kaWZpZXMgYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24gdG8gbGlzdGVu
IG9uIHRoZSBjb3JyZWN0CisgICAgICAgICAgICBvYmplY3Qgb24gYWxsIHBsYXRmb3Jtcy4KKyAg
ICAgICAgU2ltcGxpZmllcyBub3RpZmljYXRpb24tbGlzdGVuZXJzIHNvIGl0IGRvZXNuJ3QgZ2Vu
ZXJhdGUgYWRkaXRpb25hbAorICAgICAgICAgICAgbm90aWZpY2F0aW9ucyB0aGF0IGFyZSBpbmNv
bnNpc3RlbnQgYmV0d2VlbiBwbGF0Zm9ybXMgbm93LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1t
ZW51LWxpc3QtY3Jhc2hlcy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pcy1p
Z25vcmVkLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFu
Z2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Ut
c2VuZHMtbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvdGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNo
YW5nZS1ub3RpZmljYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMjYgIEJlYXIgVHJhdmlz
ICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gQmxvY2sg
Y2hpbGRyZW4gaGF2ZSBpbmNvcnJlY3Qgb2Zmc2V0IHdoZW4gc2hhcGUtaW5zaWRlIGVsZW1lbnQg
bGF5cyBvdXQgYmVsb3cgb3RoZXIgZWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRt
bAppbmRleCA0ZjZjNjBlYzliZjkyNGQ2YzkyMTZhMzRlOTRiZjJiZGNkYWJhZTJjLi5mNzk5MTEy
Mjg0MmNhMjBjZjFlZmNhZmYyNjY1ZTMwNzUwY2JhMDczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNh
dGlvbi5odG1sCkBAIC03LDE1ICs3LDEzIEBACiAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIAogICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGNoZWNr
aW5nIG9mIGFuIGFyaWEgY2hlY2tib3ggc2VuZHMgYSBub3RpZmljYXRpb24uIik7Ci0gICAgICAg
IHdpbmRvdy5yb290ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQ7Ci0gICAg
ICAgIHdpbmRvdy5ib2R5ID0gcm9vdC5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgdmFyIGFj
Y2Vzc2libGVDaGVja2JveCA9IGJvZHkuY2hpbGRBdEluZGV4KDApOworICAgICAgICB2YXIgYWNj
ZXNzaWJsZUNoZWNrYm94ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjaGVja2JveDEiKTsKICAgICAgICAgdmFyIG5vdGlmaWNhdGlvbkNvdW50ID0gMDsK
IAogICAgICAgICBmdW5jdGlvbiBsaXN0ZW5lcihub3RpZmljYXRpb24pIHsKLSAgICAgICAgaWYg
KG5vdGlmaWNhdGlvbiA9PSAiQ2hlY2tlZFN0YXRlQ2hhbmdlZCIpCi0gICAgICAgICAgICBub3Rp
ZmljYXRpb25Db3VudCsrOworICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAiQ2hlY2tl
ZFN0YXRlQ2hhbmdlZCIpCisgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uQ291bnQrKzsKIAog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQg
Kz0gIkdvdCBub3RpZmljYXRpb246ICIgKyBub3RpZmljYXRpb24gKyAiXG4iOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L25vdGlmaWNhdGlvbi1saXN0ZW5lcnMuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1s
CmluZGV4IDNkZDg4ODg0NGQwYzRhNjBmYzk0ZTljMjJkZmY2MmQyNmJhYWViNjMuLjYyNmM1ZWI4
ZmVkY2ZiYTkxYzhhYjBhMGE2Y2NhMTYwMjU4NjgyN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbm90aWZpY2F0aW9uLWxpc3RlbmVycy5odG1sCkBAIC03LDcgKzcs
NyBAQAogCiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIAotPHNlbGVjdCBpZD0ic2VsZWN0IiB2
YWx1ZT0iU2VsZWN0Ij48b3B0aW9uPkE8b3B0aW9uPkI8L3NlbGVjdD4KKzxzZWxlY3QgaWQ9InNl
bGVjdCIgdmFsdWU9IlNlbGVjdCI+PC9zZWxlY3Q+CiAKIDxkaXYgaWQ9InNsaWRlciIgdGFiaW5k
ZXg9IjAiIHJvbGU9InNsaWRlciIgYXJpYS12YWx1ZW5vdz0iNSI+U2xpZGVyPC9kaXY+CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS1tdWx0aXBsZS1maWVsZHMvZGF0
ZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlLW11bHRpcGxlLWZpZWxkcy9kYXRlLW11
bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQK
aW5kZXggYTA2YjNjNDNjZjNkMTFiMGJkNWYxNTRkMjkwMzI2MWYxYWU5ZmI0NS4uZDRmYzhhZTU0
NDUwNjFhODBlNTg4YzY3N2QxY2FlNjYxNzNhMjRkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRlLW11bHRpcGxlLWZpZWxkcy9kYXRlLW11bHRpcGxlLWZpZWxkcy1heC12
YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRlLW11bHRpcGxlLWZpZWxkcy9kYXRlLW11bHRpcGxlLWZpZWxkcy1heC12
YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw4IEBAIEZv
Y3VzZWRVSUVsZW1lbnRDaGFuZ2VkIEFYSGVscDogTW9udGg9QVhWYWx1ZURlc2NyaXB0aW9uOiAx
MAogRm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBEYXk9QVhWYWx1ZURlc2NyaXB0aW9u
OiAwOQogRm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBZZWFyPUFYVmFsdWVEZXNjcmlw
dGlvbjogMjAxMgogVmFsdWVDaGFuZ2VkIEFYSGVscDogRGF5PUFYVmFsdWVEZXNjcmlwdGlvbjog
MDQKK1ZhbHVlQ2hhbmdlZCBBWEhlbHA6IERheT1BWFZhbHVlRGVzY3JpcHRpb246IDA0CitWYWx1
ZUNoYW5nZWQgQVhIZWxwOiBZZWFyPUFYVmFsdWVEZXNjcmlwdGlvbjogMjAxMwogVmFsdWVDaGFu
Z2VkIEFYSGVscDogWWVhcj1BWFZhbHVlRGVzY3JpcHRpb246IDIwMTMKIAogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2Vk
LW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUt
bXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90
aWZpY2F0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA5ZTZlNmQyNzMxNDU0OWNmYjgzM2RlNjBlM2U4
NWJlMzEwNGQyNzVlLi4yZTVlZDliZGE2MzIyZmQxNTZlYTQ1MWU5MTM4N2NmMzgyODAyNGRiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3Rp
bWUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3Rp
bWUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVk
LnR4dApAQCAtNyw2ICs3LDggQEAgRm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBIb3Vy
cz1BWFZhbHVlRGVzY3JpcHRpb246IDEyCiBGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCBBWEhlbHA6
IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAzNAogVmFsdWVDaGFuZ2VkIEFYSGVscDogTWlu
dXRlcz1BWFZhbHVlRGVzY3JpcHRpb246IDA1CiBWYWx1ZUNoYW5nZWQgQVhIZWxwOiBNaW51dGVz
PUFYVmFsdWVEZXNjcmlwdGlvbjogMDUKK1ZhbHVlQ2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhW
YWx1ZURlc2NyaXB0aW9uOiAwNQorVmFsdWVDaGFuZ2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVl
RGVzY3JpcHRpb246IDA1CiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQt
dG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDg5ZmE0MjQ2MmQ1YWRlMDMyMjA4ODdjNTgxZjA3ZDBhN2E4NmNiZTcuLmM5NjJl
YTNmMWEzMTNmMjNjYWUyMGQ4N2FmMGFiMDMyOTdiOWEyYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFz
aGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hlcy1leHBlY3RlZC50eHQKQEAgLTEsOCAr
MSw4IEBACiBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGFkZGluZyBhIHNlbGVjdGVkIG9wdGlv
biB0byBhIG1lbnUgbGlzdCB2aWEgYW4gdW51c3VhbCByb3V0ZSAoZG9jdW1lbnQud3JpdGUgZnJv
bSBhbiBleHRlcm5hbCBzY3JpcHQpIGRvZXNuJ3QgdHJpZ2dlciBhIGNyYXNoIHdoZW4gZGlkVXBk
YXRlQWN0aXZlT3B0aW9uIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGNoaWxkcmVuIGFyZSB1cGRhdGVk
LgogCi1QQVNTIGFjY2Vzc2libGVQb3B1cC5jaGlsZHJlbkNvdW50IGlzIDEKLVBBU1MgYWNjZXNz
aWJsZVBvcHVwLmNoaWxkcmVuQ291bnQgaXMgMgotUEFTUyBhY2Nlc3NpYmxlUG9wdXAuY2hpbGRy
ZW5Db3VudCBpcyAxCitQQVNTIGFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCkuY2hp
bGRyZW5Db3VudCBpcyAxCitQQVNTIGFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCku
Y2hpbGRyZW5Db3VudCBpcyAyCitQQVNTIGFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgo
MCkuY2hpbGRyZW5Db3VudCBpcyAxCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1jcmFzaGVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2FkZC10by1tZW51LWxpc3QtY3Jhc2hl
cy5odG1sCmluZGV4IDc1MTAzMzhmZmM1MmRhOGE4YzU4YWIxYTFkMTk5YWI5N2YzYTYxNWEuLmFl
Y2I0ZTVhMGQwZTc1ZTJiNGM4ZjBjOWQ3ODEzMGY3YzlkZGE2NTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvYWRkLXRvLW1lbnUtbGlzdC1j
cmFzaGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9hZGQtdG8tbWVudS1saXN0LWNyYXNoZXMuaHRtbApAQCAtMTksMTkgKzE5LDE4IEBACiAg
ICAgICAgIG1lbnVsaXN0LmZvY3VzKCk7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAm
JiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgIHdpbmRvdy5h
Y2Nlc3NpYmxlTWVudWxpc3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKLSAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxlUG9wdXAgPSBhY2Nlc3NpYmxlTWVudWxp
c3QuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVQb3B1
cC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxl
TWVudWxpc3QuY2hpbGRBdEluZGV4KDApLmNoaWxkcmVuQ291bnQiLCAiMSIpOwogICAgICAgICB9
CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGRv
Y3VtZW50LndyaXRlKCc8b3B0aW9uIHNlbGVjdGVkPjInKTsiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQ+CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCi0gICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVBvcHVwLmNoaWxk
cmVuQ291bnQiLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVNZW51bGlz
dC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRyZW5Db3VudCIsICIyIik7CiAgICAgPC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdD4KICAgICAgICAgbWVudWxpc3QucmVtb3ZlQ2hpbGQobWVudWxpc3Quc2VsZWN0
ZWRPcHRpb25zWzBdKTsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKLSAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxl
UG9wdXAuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNz
aWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgwKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKICAgICA8
L3NjcmlwdD4KIDwvc2VsZWN0PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGRiZGM2ZGI1N2E5YTRjMzFlNmYwYzMxODM4ZWVlNDRhOGQ3MDM3YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
aXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMxIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgY2hhbmdlIHRvIGFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgZmlyZXMgYSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUg
cGFyZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBh
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicpICE9IG51bGwgaXMgZmFsc2UKK1BBU1Mg
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXZDb250YWluZXInKSAhPSBudWxsIGlz
IHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdpbnZpc2libGVEaXYnKSAhPSBudWxs
IGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXIn
KSAhPSBudWxsIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0eURpdicp
ICE9IG51bGwgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0
Um9sZUNvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ2RpdldpdGhvdXRSb2xlJykgIT0gbnVsbCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5lcicpICE9IG51bGwgaXMgdHJ1ZQorUEFT
UyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbCcpICE9IG51bGwgaXMgZmFs
c2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitH
b3QgQ2hpbGRyZW5DaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiBoaWRkZW5EaXZDb250YWluZXIKK1BB
U1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5jaGlsZHJlbkNv
dW50IGlzIDEKK0dvdCBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGludmlzaWJsZURp
dkNvbnRhaW5lcgorUEFTUyBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRh
aW5lcicpLmNoaWxkcmVuQ291bnQgaXMgMQorR290IENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRp
b24gb24gZW1wdHlEaXZDb250YWluZXIKK1BBU1MgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0
eURpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQgaXMgMQorR290IENoaWxkcmVuQ2hhbmdlZCBu
b3RpZmljYXRpb24gb24gZGl2V2l0aG91dFJvbGVDb250YWluZXIKK1BBU1MgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQgaXMgMQor
R290IENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dExhYmVsQ29udGFp
bmVyCitQQVNTIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dExhYmVsQ29udGFpbmVy
JykuY2hpbGRyZW5Db3VudCBpcyAxCitBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNz
ZnVsbHkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvaXMtaWdub3JlZC1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdl
LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNjU5NzBiNmRmZjk0YWNkMjZk
NThlNmZkMzNkMDNkZmRlMzVlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lzLWlnbm9yZWQtY2hhbmdlLXNlbmRzLW5vdGlm
aWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+
CisKKyAgPGRpdiBpZD0iaGlkZGVuRGl2Q29udGFpbmVyIiBhcmlhLWxhYmVsPSJoaWRkZW5EaXZD
b250YWluZXIiPgorICAgIDxkaXYgaWQ9ImhpZGRlbkRpdiIgaGlkZGVuPgorICAgICAgPGRpdj4K
KyAgICAgICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2
PgorICA8L2Rpdj4KKworICA8ZGl2IGlkPSJpbnZpc2libGVEaXZDb250YWluZXIiIGFyaWEtbGFi
ZWw9ImludmlzaWJsZURpdkNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iaW52aXNpYmxlRGl2IiBz
dHlsZT0idmlzaWJpbGl0eTogaGlkZGVuIj4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+
QnV0dG9uPC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKyAg
PGRpdiBpZD0iZW1wdHlEaXZDb250YWluZXIiIGFyaWEtbGFiZWw9ImVtcHR5RGl2Q29udGFpbmVy
Ij4KKyAgICA8ZGl2IGlkPSJlbXB0eURpdiI+PC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9
ImRpdldpdGhvdXRSb2xlQ29udGFpbmVyIiBhcmlhLWxhYmVsPSJkaXZXaXRob3V0Um9sZUNvbnRh
aW5lciI+CisgICAgPGRpdiBpZD0iZGl2V2l0aG91dFJvbGUiPgorICAgICAgPGRpdj4KKyAgICAg
ICAgPGJ1dHRvbj5CdXR0b248L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8
L2Rpdj4KKworICA8ZGl2IGlkPSJkaXZXaXRob3V0TGFiZWxDb250YWluZXIiIGFyaWEtbGFiZWw9
ImRpdldpdGhvdXRMYWJlbENvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZGl2V2l0aG91dExhYmVs
Ij4KKyAgICAgIDxkaXY+CisgICAgICAgIDxidXR0b24+QnV0dG9uPC9idXR0b24+CisgICAgICA8
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+CisKKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBh
IGNoYW5nZSB0byBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGZpcmVzIGEgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudC4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZnVuY3Rp
b24gYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpOworICAgIH0KKworICAgIHdp
bmRvdy5zdWNjZXNzQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIGdvdFN1Y2Nlc3NmdWxOb3RpZmlj
YXRpb24oKSB7CisgICAgICAgIHN1Y2Nlc3NDb3VudCsrOworICAgICAgICBpZiAoc3VjY2Vzc0Nv
dW50ICE9IDUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVidWcoJ0FsbCBub3Rp
ZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4nKTsKKyAgICAgICAgYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdoaWRkZW5EaXZDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5l
cigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2ludmlzaWJsZURpdkNvbnRhaW5l
cicpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnZW1wdHlEaXZDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigp
OworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRSb2xlQ29udGFpbmVy
JykucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuaGlk
ZGVuID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpICE9IG51bGwiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdicpICE9IG51bGwi
KTsKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2hpZGRlbkRpdkNvbnRhaW5lcicpLmFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1
ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBoaWRkZW5EaXZDb250
YWluZXInKTsKKyAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaGlkZGVu
RGl2Q29udGFpbmVyJykuY2hpbGRyZW5Db3VudCIsICIxIik7CisgICAgICAgIGdvdFN1Y2Nlc3Nm
dWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aGlkZGVuRGl2JykuaGlkZGVuID0gZmFsc2U7CisKKyAgICBzaG91bGRCZVRydWUoImFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNo
b3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2JykgIT0gbnVs
bCIpOworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnaW52aXNpYmxlRGl2Q29udGFpbmVyJyku
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAg
IGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9uIGludmlzaWJs
ZURpdkNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdpbnZpc2libGVEaXZDb250YWluZXInKS5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAg
Z290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbnZpc2libGVEaXYnKS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOwor
CisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2VtcHR5RGl2Q29udGFp
bmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgnZW1wdHlEaXYnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdlbXB0
eURpdkNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNh
dGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNh
dGlvbiBvbiBlbXB0eURpdkNvbnRhaW5lcicpOworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdlbXB0eURpdkNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOwor
ICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlEaXYnKS5pbm5lclRleHQgPSAnTm90IGVtcHR5IGFu
eW1vcmUuJzsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlEaXYnKS5vZmZzZXRM
ZWZ0OworCisgICAgc2hvdWxkQmVUcnVlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhv
dXRSb2xlQ29udGFpbmVyJykgIT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoImFjY2Vzc2li
bGVFbGVtZW50QnlJZCgnZGl2V2l0aG91dFJvbGUnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicpLmFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBu
b3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBkaXZXaXRob3V0Um9sZUNvbnRhaW5lcicp
OworICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0Um9s
ZUNvbnRhaW5lcicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVs
Tm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rp
dldpdGhvdXRSb2xlJykuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2hlYWRpbmcnKTsKKworICAgIHNo
b3VsZEJlVHJ1ZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdkaXZXaXRob3V0TGFiZWxDb250YWlu
ZXInKSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdkaXZXaXRob3V0TGFiZWwnKSAhPSBudWxsIik7CisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdkaXZXaXRob3V0TGFiZWxDb250YWluZXInKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5j
dGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9u
ICsgJyBub3RpZmljYXRpb24gb24gZGl2V2l0aG91dExhYmVsQ29udGFpbmVyJyk7CisgICAgICAg
IHNob3VsZEJlKCJhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRMYWJlbENvbnRhaW5l
cicpLmNoaWxkcmVuQ291bnQiLCAiMSIpOworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0
aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdldpdGhvdXRM
YWJlbCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdMYWJlbCcpOworCisgICAgZGVidWco
JycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVy
LWFyaWEtYXR0cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0
dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZTcwN2U2ZDQ3NjVjMjMyYmRlNjZlNTBlYzE4N2E3OWZlYTllZGVjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1h
cmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgY2hhbmdlIHRvIGFueSBBUklB
IGF0dHJpYnV0ZSwgbm90IGp1c3QgYSBzdGF0ZSwgc2VuZHMgYSBub3RpZmljYXRpb24uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorR290IEFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNh
dGlvbiBvbiBhcmlhLWJ1c3kKK0dvdCBBcmlhQXR0cmlidXRlQ2hhbmdlZCBub3RpZmljYXRpb24g
b24gYXJpYS1kaXNhYmxlZAorR290IEFyaWFBdHRyaWJ1dGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBv
biBhcmlhLXJlYWRvbmx5CitHb3QgQXJpYUF0dHJpYnV0ZUNoYW5nZWQgbm90aWZpY2F0aW9uIG9u
IGFyaWEtcmVxdWlyZWQKK0FsbCBub3RpZmljYXRpb25zIHJlY2VpdmVkIHN1Y2Nlc3NmdWxseS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9vdGhlci1hcmlhLWF0dHJpYnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L290aGVyLWFyaWEtYXR0
cmlidXRlLWNoYW5nZS1zZW5kcy1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWI4MDE3
ZWY1MGU1MmQ2ZGZlYjY3NGE1Zjk3YmY4MDZmYzdlNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9vdGhlci1hcmlhLWF0dHJp
YnV0ZS1jaGFuZ2Utc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8YnV0dG9uIGlkPSJhcmlhLWJ1c3kiIGFyaWEtYnVz
eT0iZmFsc2UiPkJ1c3k8L2J1dHRvbj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1kaXNhYmxlZCIgYXJp
YS1kaXNhYmxlZD0iZmFsc2UiPkRpc2FibGVkPC9idXR0b24+CisgIDxidXR0b24gaWQ9ImFyaWEt
cmVhZG9ubHkiIGFyaWEtcmVhZG9ubHk9ImZhbHNlIj5SZWFkb25seTwvYnV0dG9uPgorICA8YnV0
dG9uIGlkPSJhcmlhLXJlcXVpcmVkIiBhcmlhLXJlcXVpcmVkPSJmYWxzZSI+UmVxdWlyZWQ8L2J1
dHRvbj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbnkgQVJJQSBhdHRy
aWJ1dGUsIG5vdCBqdXN0IGEgc3RhdGUsIHNlbmRzIGEgbm90aWZpY2F0aW9uLiIpOworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKKyAgICBmdW5jdGlvbiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoaWQpIHsKKyAgICAgICAg
cmV0dXJuIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZChpZCk7
CisgICAgfQorCisgICAgd2luZG93LnN1Y2Nlc3NDb3VudCA9IDA7CisgICAgZnVuY3Rpb24gZ290
U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpIHsKKyAgICAgICAgc3VjY2Vzc0NvdW50Kys7CisgICAg
ICAgIGlmIChzdWNjZXNzQ291bnQgIT0gNCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBkZWJ1ZygnQWxsIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgc3VjY2Vzc2Z1bGx5LicpOworICAg
ICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtYnVzeScpLnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxl
ZCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnYXJpYS1yZWFkb25seScpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7Cisg
ICAgICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnYXJpYS1yZXF1aXJlZCcpLnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpLmhpZGRlbiA9IHRydWU7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnYXJpYS1idXN5JykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVu
Y3Rpb24obm90aWZpY2F0aW9uKSB7CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlv
biArICcgbm90aWZpY2F0aW9uIG9uIGFyaWEtYnVzeScpOworICAgICAgICBnb3RTdWNjZXNzZnVs
Tm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fy
aWEtYnVzeScpLnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5JywgJ3RydWUnKTsKKworICAgIGFjY2Vz
c2libGVFbGVtZW50QnlJZCgnYXJpYS1kaXNhYmxlZCcpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVy
KGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1ZygnR290ICcgKyBub3RpZmlj
YXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBhcmlhLWRpc2FibGVkJyk7CisgICAgICAgIGdvdFN1
Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYXJpYS1kaXNhYmxlZCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVl
Jyk7CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHknKS5hZGROb3Rp
ZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWco
J0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1yZWFkb25seScp
OworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtcmVhZG9ubHknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEt
cmVhZG9ubHknLCAndHJ1ZScpOworCisgICAgYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdhcmlhLXJl
cXVpcmVkJykuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoZnVuY3Rpb24obm90aWZpY2F0aW9uKSB7
CisgICAgICAgIGRlYnVnKCdHb3QgJyArIG5vdGlmaWNhdGlvbiArICcgbm90aWZpY2F0aW9uIG9u
IGFyaWEtcmVxdWlyZWQnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOwor
ICAgIH0pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcmlhLXJlcXVpcmVkJykuc2V0
QXR0cmlidXRlKCdhcmlhLXJlcXVpcmVkJywgJ3RydWUnKTsKKworICAgIGRlYnVnKCcnKTsKK30K
KworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1u
b3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS90ZXh0LWNoYW5nZS1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiYmE5NzFkNTJmMjFjYTRlNzVjZWQ0Zjk2NTBlODA3NDIzNWUwOTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Rl
eHQtY2hhbmdlLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCBhIGNoYW5nZSB0byBhbiBlbGVtZW50J3MgYWNjZXNzaWJsZSB0
ZXh0LCBldmVuIGlmIGluZGlyZWN0LCBzZW5kcyBhIG5vdGlmaWNhdGlvbi4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCitHb3QgVGV4dENoYW5nZWQgbm90aWZpY2F0aW9uIG9uIGFyaWEtbGFi
ZWwKK0dvdCBUZXh0Q2hhbmdlZCBub3RpZmljYXRpb24gb24gdGl0bGUKK0dvdCBUZXh0Q2hhbmdl
ZCBub3RpZmljYXRpb24gb24gbGFiZWxsZWRieQorR290IFRleHRDaGFuZ2VkIG5vdGlmaWNhdGlv
biBvbiBsYWJlbGVkCitBbGwgbm90aWZpY2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
dGV4dC1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQtY2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZkNWRiMGE1NTkwYmIyZDgwZjY3OGUzOThmMTZjMmZhYWE3NzNmOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3RleHQt
Y2hhbmdlLW5vdGlmaWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0i
Y29udGFpbmVyIj4KKyAgPGJ1dHRvbiBpZD0iYXJpYS1sYWJlbCIgYXJpYS1sYWJlbD0iQXJpYSBM
YWJlbCI+Q29udGVudDwvYnV0dG9uPgorICA8YnV0dG9uIGlkPSJ0aXRsZSIgdGl0bGU9IlRpdGxl
Ij5Db250ZW50PC9idXR0b24+CisgIDxidXR0b24gaWQ9ImxhYmVsbGVkYnkiIGFyaWEtbGFiZWxs
ZWRieT0ibGFiZWwxIj5Db250ZW50PC9idXR0b24+CisgIDxidXR0b24gaWQ9ImxhYmVsZWQiPkNv
bnRlbnQ8L2J1dHRvbj4KKworICA8bGFiZWwgaWQ9ImxhYmVsMSI+TGFiZWwxPC9sYWJlbD4KKyAg
PGxhYmVsIGlkPSJsYWJlbDIiPkxhYmVsMjwvbGFiZWw+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgYSBjaGFuZ2UgdG8gYW4gZWxlbWVudCdzIGFjY2Vzc2libGUgdGV4dCwgZXZlbiBpZiBpbmRp
cmVjdCwgc2VuZHMgYSBub3RpZmljYXRpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAm
JiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGZ1bmN0aW9u
IGFjY2Vzc2libGVFbGVtZW50QnlJZChpZCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICB3aW5k
b3cuc3VjY2Vzc0NvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBnb3RTdWNjZXNzZnVsTm90aWZpY2F0
aW9uKCkgeworICAgICAgICBzdWNjZXNzQ291bnQrKzsKKyAgICAgICAgaWYgKHN1Y2Nlc3NDb3Vu
dCAhPSA0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlYnVnKCdBbGwgbm90aWZp
Y2F0aW9ucyByZWNlaXZlZCBzdWNjZXNzZnVsbHkuJyk7CisgICAgICAgIGFjY2Vzc2libGVFbGVt
ZW50QnlJZCgnYXJpYS1sYWJlbCcpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CisgICAg
ICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0bGUnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5yZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J2xhYmVsZWQnKS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5oaWRkZW4gPSB0cnVlOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9CisKKyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVi
dWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gYXJpYS1sYWJlbCcp
OworICAgICAgICBnb3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyaWEtbGFiZWwnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFi
ZWwnLCAnTmV3IGFyaWEtbGFiZWwnKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgndGl0
bGUnKS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAg
ICAgICAgZGVidWcoJ0dvdCAnICsgbm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gdGl0
bGUnKTsKKyAgICAgICAgZ290U3VjY2Vzc2Z1bE5vdGlmaWNhdGlvbigpOworICAgIH0pOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aXRsZScpLnRpdGxlID0gJ05ldyB0aXRsZSc7CisK
KyAgICBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5hZGROb3RpZmljYXRpb25M
aXN0ZW5lcihmdW5jdGlvbihub3RpZmljYXRpb24pIHsKKyAgICAgICAgZGVidWcoJ0dvdCAnICsg
bm90aWZpY2F0aW9uICsgJyBub3RpZmljYXRpb24gb24gbGFiZWxsZWRieScpOworICAgICAgICBn
b3RTdWNjZXNzZnVsTm90aWZpY2F0aW9uKCk7CisgICAgfSk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xhYmVsbGVkYnknKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICds
YWJlbDInKTsKKworICAgIGFjY2Vzc2libGVFbGVtZW50QnlJZCgnbGFiZWxlZCcpLmFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikgeworICAgICAgICBkZWJ1Zygn
R290ICcgKyBub3RpZmljYXRpb24gKyAnIG5vdGlmaWNhdGlvbiBvbiBsYWJlbGVkJyk7CisgICAg
ICAgIGdvdFN1Y2Nlc3NmdWxOb3RpZmljYXRpb24oKTsKKyAgICB9KTsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbGFiZWwxJykuc2V0QXR0cmlidXRlKCdmb3InLCAnbGFiZWxlZCcpOwor
CisgICAgZGVidWcoJycpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>